设计要求: (1)利用2块(SENSOR)子板中DHT11采集2路温湿度; (2)通过LCD1602显示2路温湿度; (3)并利用串口,将数据送至另一单片机的LCD1602上显示。 显示时,第一行显示第一路的温度、湿度,第二行显示第二路的温度、湿度
内含proteus仿真图及源程序
单片机源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #include"DHT11.H"
- #include"1602.H"
- #define uchar unsigned char
- #define uint unsigned int
- uchar ws1[15];
- uchar ws2[15];
- void delay_ms5(uint ms)
- {
- uchar i;
- while(ms--)
- for (i=0;i<120;i++);
- }
- void fasong1(uchar date)
- {
- SBUF=date;
- while(TI==0);
- TI=0;
- }
- void fasong(uchar *shuju)
- { while(*shuju!='\0'){
- fasong1(*shuju);
- shuju++;
- }
- }
- void main()
- { initialize_lcd();//初始化LCD1602
- TMOD=0x20; //T1方式2
- TR1=1;
- TH1=0xff;
- TL1=0xff;
- EA=1;
- SCON=0x50; //方式1,允许接收
- PCON=0; //或者SMOD=1;
- ES=1;
- IT0=1;
- EX0=1;
- while(1)
- {
- receive();
- ws1[0]='s';
- ws1[1]=':';
- ws1[2]=RH/10+'0'; //温度十位
- ws1[3]=RH%10+'0'; //温度个位
- ws1[4]='-';
- ws1[5]='-';
- ws1[6]='-';
- ws1[7]='-';
- ws1[8]='w';
- ws1[9]= ':';
- ws1[10]=TH/10+'0'; //湿度十位
- ws1[11]=TH%10+'0'; //湿度个位
- ws1[12]='-'; //小数点
- ws1[13]='-'; //湿度小数点后第一位
- lcd_showstring(0,0,ws1);
- fasong(ws1);
- ////////////////////////////////////////温湿度传感器2
- receive1();
- ws2[0]='s';
- ws2[1]=':';
- ws2[2]=RHO/10+'0'; //温度十位
- ws2[3]=RHO%10+'0'; //温度个位
- ws2[4]='-'; //
- ws2[5]='-';
- ws2[6]='-';
- ws2[7]='-';
- ws2[8]='w';
- ws2[9]= ':';
- ws2[10]=THO/10+'0'; //湿度十位
- ws2[11]=THO%10+'0'; //湿度个位
- ws2[12]='-'; //小数点
- ws2[13]='-';
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
单片机课程设计.rar
(142.97 KB, 下载次数: 220)
|