久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 仿真DS18B20溫度計 RES485傳到從機,再在lcd1602顯示出來 [打印本頁]

作者: 51黑ff    時間: 2016-9-12 00:27
標題: 仿真DS18B20溫度計 RES485傳到從機,再在lcd1602顯示出來

全部資料下載: DS18B20 RES485 液晶1602 顯示.rar (98.88 KB, 下載次數: 29)


主機程序:
  1. #include<main.h>
  2. #include<DS18B20.h>

  3. void delay(uint x)
  4. {
  5.         uchar m,n;
  6.         for(m=x;m>0;m--)
  7.         for(n=110;n>0;n--);
  8. }
  9. /***
  10. **函數名:UART_init()
  11. **功能:  串口初始化
  12. ****/
  13. void UART_init()
  14. {
  15.         TMOD=0x20;
  16.         SCON=0x50;
  17.         TH1=0xFD;
  18.         TL1=0xFD;
  19.         TR1=1;

  20.         en=1;           //485一直在寫
  21. }
  22. /***
  23. **函數名:UART_sent()
  24. **功能:  串口發送一個字節
  25. ****/
  26. void UART_sent(uchar date)
  27. {
  28.         
  29.         SBUF=date;
  30.         while(!TI);
  31.         TI=0;
  32. }


  33. void main()
  34. {
  35.         int ans;
  36.          uchar flag;
  37.         UART_init();
  38.         while(1)
  39.         {
  40.                 DS18B20_start_change();         //開始讀溫度
  41.                 delay(1000);
  42.                 ans=DS18B20_read_date();
  43.                 /******判斷是否為負溫度******/
  44.                 if(ans<0)
  45.                 {
  46.                         ans=-ans;
  47.                         flag=1;
  48.                 }
  49.                 else
  50.                         flag=0;
  51.                
  52.                 if(flag==1)                         //負溫度,發送‘-’
  53.                         UART_sent('-');
  54.                 else
  55.                         UART_sent('+');         //正溫度,發送‘+’
  56.                 UART_sent( ( uchar )ans);
  57.         }
  58. }
復制代碼

從機程序:
  1. #include<main.h>
  2. #include<1602.h>
  3. #include<ds1302.h>
  4. uchar time[]={40,59,23,25,7,3,12};        //2012年7月25日 23:59: 40
  5. uchar code tab1[]="20  -  -   ";
  6. uchar code tab2[]="Temp:      :  :";
  7. uchar flag;
  8. uchar wendu;


  9. void delay(uint x)
  10. {
  11.         uint m,n;
  12.         for(m=x;m>0;m--)
  13.         for(n=110;n>0;n--);
  14. }
  15. /****
  16. *******        串口初始化函數
  17. *****/
  18. void uart_init()
  19. {
  20.         TMOD=0x20;                //9600bps
  21.         SCON=0x50;
  22.         TH1=0xFD;
  23.         TL1=0xFD;
  24.         TR1=1;

  25.         ES=1;
  26.         EA=1;

  27.         UART_EN=0;           //串口一直處于接收狀態
  28. }


  29. void main()
  30. {
  31.         
  32.         lcd_init();        
  33.         uart_init();
  34.         lcd_write_str(0x84,tab1);
  35.         lcd_write_str(0xc0,tab2);
  36.         DS1302_set_time(&time);        
  37.         while(1)
  38.         {        
  39.                 DS1302_read_time(&time);         
  40.                 lcd_write_time(0x86,time[6]);  //年
  41.                 switch(time[5])                               //星期
  42.                 {
  43.                         case 1:        lcd_write_str(0x8F,"MON");break;
  44.                         case 2:        lcd_write_str(0x8F,"TUE");break;
  45.                         case 3:        lcd_write_str(0x8F,"WED");break;
  46.                         case 4:        lcd_write_str(0x8F,"THU");break;
  47.                         case 5:        lcd_write_str(0x8F,"FRI");break;
  48.                         case 6:        lcd_write_str(0x8F,"SAT");break;
  49.                         case 7:        lcd_write_str(0x8F,"SUN");break;
  50.                 }
  51.                 lcd_write_time(0x89,time[4]);  //月
  52.                 lcd_write_time(0x8c,time[3]);  //日
  53.                 lcd_write_time(0xc9,time[2]);  //時
  54.                 lcd_write_time(0xcc,time[1]);  //分
  55.                 lcd_write_time(0xcf,time[0]);        //秒
  56.                 if(flag==1)                                                   //顯示負溫度
  57.                 {
  58.                         lcd_write_com(0xc5);
  59.                         lcd_write_date('-');
  60.                         lcd_wendu(0xc6,wendu);
  61.                 }
  62.                 else                                                         //顯示正溫度
  63.                 {
  64.                 //        lcd_write_com(0xc5);
  65.                 //        lcd_write_date(' ');
  66.                         lcd_wendu(0xc5,wendu);
  67.                         lcd_write_com(0xc7);
  68.                         lcd_write_date(' ');
  69.                 }        
  70.         }
  71. }
  72. /****
  73. *******        串口中斷服務程序函數
  74. *****/
  75. void ser() interrupt 4
  76. {
  77.         static uchar string[2],i;
  78.         if(RI)
  79.         {
  80.                 RI=0;
  81.                 string[i++]=SBUF;
  82.                 if(i>1)
  83.                         i=0;
  84.                 if(string[0]=='-')
  85.                 {         
  86.                         flag=1;                                  //負溫度
  87.                 }
  88.                 else
  89.                 {         
  90.                          flag=0;
  91.                 }
  92.                 wendu=string[1];
  93.         }        
  94. }
復制代碼









歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜a√| 亚洲精品成人免费 | 久久精品16 | 久久一级 | 亚洲成人av在线播放 | 爱爱免费视频 | 久久久婷| 欧美一区二区三区免费在线观看 | 亚洲欧美日韩精品久久亚洲区 | 精品一区在线 | 欧美精品成人一区二区三区四区 | 亚洲不卡| 色综合视频| 久久国产欧美一区二区三区精品 | 欧美一级在线观看 | 精品国产欧美一区二区 | 国产中文字幕在线 | 久久久精品影院 | 黄毛片 | 精品国产91亚洲一区二区三区www | 激情免费视频 | 精国产品一区二区三区 | 欧美日韩在线视频一区二区 | 精品国产视频 | 成人午夜精品一区二区三区 | 色综合天天综合网国产成人网 | 人人干97 | 精品欧美一区二区在线观看欧美熟 | 在线观看中文字幕视频 | 天天看天天干 | av在线视| 久久高清精品 | 欧美a∨ | 久草网站| 国精产品一区二区三区 | 欧美电影一区 | 正在播放亚洲 | 成人免费视频一区二区 | 视频在线观看一区 | 久久人爽爽人爽爽 | 日韩国产一区二区三区 |