欢迎来到天天文库
浏览记录
ID:38587040
大小:46.50 KB
页数:4页
时间:2019-06-15
《两个单片机之间串口通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/*******温度数据采集主机程序********/#include#include#include#defineuintunsignedint#defineucharunsignedcharsbitwds=P2^2;//温度传感器ds18b20ucharflag,i;ucharcodetable[3];uinttemp;//uint不用uchar,uchar范围不够大floatf_temp;voidinitb20();//ds18b20初始化bittempreadbi
2、t(void);uchartempread(void);voidtempwritebyte(uchardat);voidtempchange(void);bittempreadbit(void);voidtempwritebyte(uchardat);voiddelayms(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/********************串行方式1发送模块*************************/voidinit(){/*设置定时器1
3、方式2*/TMOD=0x20;TH1=0XFD;//波特率设置为9600bpsTL1=0XFD;TR1=1;/*串口方式1********/SM0=0;SM1=1;PCON=0X80;ES=1;EA=1;initb20();}/*******发送子函数*********/voidsend(uchardat){SBUF=128+dat;while(!TI);TI=0;}/*1602显示主机采集的数据*//****两个单片机通信接收端*****/#include#defineuintunsignedint#d
4、efineucharunsignedcharsbitlcden=P2^5;sbitlcdrs=P2^7;sbitlcdrw=P2^6;voidwrite_com(ucharcom);voidwrite_dat(uchardat);ucharflag,a='b',d,e;ucharcodetable[]="";voiddelayms(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidLCD_init(){lcden=0;write_com(0x38);write_c
5、om(0x0c);write_com(0x06);write_com(0x01);}voidwrite_com(ucharcom){lcdrs=0;lcdrw=0;P0=com;delayms(5);lcden=1;delayms(5);lcden=0;}voidwrite_dat(uchardat){lcdrs=1;lcdrw=0;P0=dat;delayms(5);lcden=1;delayms(5);lcden=0;}voidinit(){/*设置定时器1方式2*/TMOD=0x20;TH1=0XFD;//波特率设置
6、为9600bpsTL1=0XFD;TR1=1;REN=1;///*串口方式1********/SM0=0;SM1=1;ES=1;EA=1;PCON=0X80;LCD_init();}voidmain(){uchari;init();write_com(0x80+0x05);write_dat(a);while(1){for(i=0;i<3;i++){while(RI==0);RI=0;d=SBUF;e=((d-128)+'0');if(i==0){write_com(0x80+0x40+i);write_dat(e);}i
7、f(i==1){write_com(0x80+0x40+i);write_dat(e);}if(i==2){write_com(0x80+0x40+i);write_dat(e);}}}}在proteus里仿真图如下:
此文档下载收益归作者所有