标题:
如何添加串口发送
[打印本页]
作者:
gujufeng
时间:
2018-5-14 22:28
标题:
如何添加串口发送
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^0;
sbit scl=P2^1;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
};
void delay() //5us
{;;}
void delay1(uint z)//1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
void display(uchar value)
{
uchar bai,shi,ge;
bai=value/100;
shi=value%100/10;
ge=value%100%10;
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay1(1);
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay1(1);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay1(1);
}
void start()
{
scl=1;
_nop_();
sda=1;
delay();
sda=0;
delay();
scl=0;
_nop_();
}
void stop()
{
scl=1;
_nop_();
sda=0;
delay();
sda=1;
delay();
}
void respons()
{
scl=1;
_nop_();
sda=0;
delay();
scl=0;
_nop_();
}
void norespons()
{
scl=1;
_nop_();
sda=1;
delay();
}
void init()
{
scl=1;
_nop_();
sda=1;
_nop_();
}
void write_byte(uchar dat)
{
uchar i,temp;
temp=dat;
for(i=0;i<8;i++)
{
scl=0;
_nop_();
if((temp&0x80)==0x80)
sda=1; //д1
else
sda=0; //д0
scl=1;
_nop_();
temp<<=1;
}
scl=0;
_nop_();
}
uchar read_byte()
{
uchar dat,i;
sda=1;
_nop_();
scl=0;
_nop_();
for(i=0;i<8;i++)
{
scl=1;
_nop_();
if(sda)
dat|=0x01;
if(i<7)
dat<<=1;
scl=0;
_nop_();
}
return dat;
}
void DAC_write(uchar dat)
{
start();
write_byte(0x90);
respons();
write_byte(0x40);
respons();
write_byte(dat);
respons();
stop();
}
uchar ADC_read(uchar com)
{
uchar dat;
dat=com;
start();
write_byte(0x90);
respons();
write_byte(com);
respons();
start();
write_byte(0x91);
respons();
dat=read_byte();
norespons();
stop();
return dat;
}
void main()
{
uchar i=0,ad_value;
init();
while(1)
{
ad_value=ADC_read(0x42);
display(ad_value);
/*DAC_write(i);
i++; */
delay1(1);
}
}
作者:
wulin
时间:
2018-5-15 07:32
void main()
{
uchar i=0,ad_value;
init();
TMOD=0x20;//定时器1方式2(8位重载)
TH1=0xfd;//定时器1重载
TL1=0xfd;//定时器1重载
TR1=1; //开定时器1
REN=1; //允许串行接收
SM0=0; //设置串口方式1(8位UART波特率可变)
SM1=1; //设置串口方式1(8位UART波特率可变)
while(1)
{
ad_value=ADC_read(0x42);
SBUF=ad_value; //发送数据
while(!TI); //等待发送中断请求标志位为1(已发送)
TI=0; //发送中断请求标志位清0
display(ad_value);
/*DAC_write(i);
i++; */
delay1(1);
}
}
作者:
zhanghyg
时间:
2018-5-15 10:58
#include<reg52.h>
#include"stdio.h"
typedef unsigned char uChar8;
typedef unsigned int uInt16;
void SendStr(uChar8 *s);
void InitUART (void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
}
void main (void)
{
InitUART();
while (1)
{
SendStr(ad_value);
delay1(1);
}
}
void SendByte(uChar8 dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void SendStr(uChar8 *s)
{
while(*s!='\0')// \0 表示字符串结束标志,
//通过检测是否字符串末尾
{
SendByte(*s);
s++;
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1