|
0.png (20.06 KB, 下載次數(shù): 61)
下載附件
2016-9-12 00:26 上傳
0.png (69.48 KB, 下載次數(shù): 88)
下載附件
2016-9-12 00:25 上傳
全部資料下載:
DS18B20 RES485 液晶1602 顯示.rar
(98.88 KB, 下載次數(shù): 29)
2016-9-12 00:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
主機(jī)程序:
- #include<main.h>
- #include<DS18B20.h>
- void delay(uint x)
- {
- uchar m,n;
- for(m=x;m>0;m--)
- for(n=110;n>0;n--);
- }
- /***
- **函數(shù)名:UART_init()
- **功能: 串口初始化
- ****/
- void UART_init()
- {
- TMOD=0x20;
- SCON=0x50;
- TH1=0xFD;
- TL1=0xFD;
- TR1=1;
- en=1; //485一直在寫
- }
- /***
- **函數(shù)名:UART_sent()
- **功能: 串口發(fā)送一個字節(jié)
- ****/
- void UART_sent(uchar date)
- {
-
- SBUF=date;
- while(!TI);
- TI=0;
- }
- void main()
- {
- int ans;
- uchar flag;
- UART_init();
- while(1)
- {
- DS18B20_start_change(); //開始讀溫度
- delay(1000);
- ans=DS18B20_read_date();
- /******判斷是否為負(fù)溫度******/
- if(ans<0)
- {
- ans=-ans;
- flag=1;
- }
- else
- flag=0;
-
- if(flag==1) //負(fù)溫度,發(fā)送‘-’
- UART_sent('-');
- else
- UART_sent('+'); //正溫度,發(fā)送‘+’
- UART_sent( ( uchar )ans);
- }
- }
復(fù)制代碼
從機(jī)程序:
- #include<main.h>
- #include<1602.h>
- #include<ds1302.h>
- uchar time[]={40,59,23,25,7,3,12}; //2012年7月25日 23:59: 40
- uchar code tab1[]="20 - - ";
- uchar code tab2[]="Temp: : :";
- uchar flag;
- uchar wendu;
- void delay(uint x)
- {
- uint m,n;
- for(m=x;m>0;m--)
- for(n=110;n>0;n--);
- }
- /****
- ******* 串口初始化函數(shù)
- *****/
- void uart_init()
- {
- TMOD=0x20; //9600bps
- SCON=0x50;
- TH1=0xFD;
- TL1=0xFD;
- TR1=1;
- ES=1;
- EA=1;
- UART_EN=0; //串口一直處于接收狀態(tài)
- }
- void main()
- {
-
- lcd_init();
- uart_init();
- lcd_write_str(0x84,tab1);
- lcd_write_str(0xc0,tab2);
- DS1302_set_time(&time);
- while(1)
- {
- DS1302_read_time(&time);
- lcd_write_time(0x86,time[6]); //年
- switch(time[5]) //星期
- {
- case 1: lcd_write_str(0x8F,"MON");break;
- case 2: lcd_write_str(0x8F,"TUE");break;
- case 3: lcd_write_str(0x8F,"WED");break;
- case 4: lcd_write_str(0x8F,"THU");break;
- case 5: lcd_write_str(0x8F,"FRI");break;
- case 6: lcd_write_str(0x8F,"SAT");break;
- case 7: lcd_write_str(0x8F,"SUN");break;
- }
- lcd_write_time(0x89,time[4]); //月
- lcd_write_time(0x8c,time[3]); //日
- lcd_write_time(0xc9,time[2]); //時
- lcd_write_time(0xcc,time[1]); //分
- lcd_write_time(0xcf,time[0]); //秒
- if(flag==1) //顯示負(fù)溫度
- {
- lcd_write_com(0xc5);
- lcd_write_date('-');
- lcd_wendu(0xc6,wendu);
- }
- else //顯示正溫度
- {
- // lcd_write_com(0xc5);
- // lcd_write_date(' ');
- lcd_wendu(0xc5,wendu);
- lcd_write_com(0xc7);
- lcd_write_date(' ');
- }
- }
- }
- /****
- ******* 串口中斷服務(wù)程序函數(shù)
- *****/
- void ser() interrupt 4
- {
- static uchar string[2],i;
- if(RI)
- {
- RI=0;
- string[i++]=SBUF;
- if(i>1)
- i=0;
- if(string[0]=='-')
- {
- flag=1; //負(fù)溫度
- }
- else
- {
- flag=0;
- }
- wendu=string[1];
- }
- }
復(fù)制代碼
|
|