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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11882|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

51單片機實驗程序:LCD1602顯示溫度報警

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:205010 發(fā)表于 2017-6-4 13:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗6:LCD1602顯示溫度報警

單片機源程序如下:
  1. /**************************************************************************************
  2. *                              **                                                                                                  *
  3. 實現(xiàn)現(xiàn)象:下載程序后插上LCD1602液晶在開發(fā)板上,即可顯示
  4. 注意事項:如果不想讓點陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。                                                                                                                                                                  
  5. ***************************************************************************************/

  6. //DS18B20溫度采集,LCD1602顯示
  7. #include<reg52.h>
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. uchar table[]={"  T:                                       "};
  11. uchar table1[]={"  Tmax 32                                              "};
  12. /********IO引腳定義**********/
  13. sbit rs=P2^6;
  14. sbit rw=P2^5;
  15. sbit en=P2^7;
  16. sbit dq=P3^7;
  17. sbit beep=P1^5;

  18. uchar num;
  19. uint tempwarn,d=0,h=0;

  20. void delay(uint n)                //延時程序
  21. {
  22.         while(n--);
  23. }
  24. //液晶寫命令程序
  25. void write_com(uchar com)  
  26. {
  27.         rs=0;                        //等0輸入命令
  28.         en=0;                        //液晶使能信號初始化
  29.         P0=com;                        //把com參數(shù),液晶的命令值送到P0口
  30.         delay(100);                //延時,按照液晶的時序圖的要求
  31.         en=1;                        //使能信號,0到1表示上升沿打開可以寫命令數(shù)據(jù)到液晶里
  32.         delay(100);
  33.         en=0;                        //使能信號回復(fù)
  34. }
  35. void write_data(uchar date)           //液晶寫數(shù)據(jù)程序
  36. {
  37.         rs=1;                  //等1表示輸入數(shù)據(jù)
  38.         en=0;
  39.         P0=date;          //把date參數(shù),液晶的數(shù)據(jù)送到P0口
  40.         delay(100);
  41.         en=1;
  42.         delay(100);
  43.         en=0;
  44. }  //液晶初始化程序
  45. void init()      
  46. {
  47.         en=0;
  48.         write_com(0x38);        //設(shè)置16X2顯示,5X7點陣,8位數(shù)據(jù)口
  49.         write_com(0x0c);        //設(shè)置開顯示,不顯示光標
  50.         write_com(0x06);        //寫一個字符后地址指針加1
  51.         write_com(0x01);        //顯示清0,數(shù)據(jù)指針清0
  52. }
  53. void  Writebyte(uchar dat)//DS18B20溫度芯片的寫字節(jié)程序
  54. {
  55.         uchar j;
  56.         for(j=0;j<8;j++)
  57.         {
  58.                 dq=0;
  59.                 dq=dat&0x01;
  60.                 delay(5);
  61.                 dq=1;
  62.                 dat>>=1;
  63.         }
  64. }
  65. uchar Readbyte(void)//DS18B20溫度芯片讀字節(jié)程序
  66. {
  67.         uchar i,dat=0;
  68.         for(i=0;i<8;i++)
  69.         {
  70.                 dq=0;
  71.                 dat>>=1;
  72.                 dq=1;
  73.                 if(dq==1)
  74.                 dat|=0x80;
  75.                 delay(4);
  76.         }        
  77.         return dat;
  78. }
  79. void initds18b20(void)//溫度芯片初始化程序
  80. {
  81.         uchar x=0;
  82.         dq=1;
  83.         delay(8);
  84.         dq=0;
  85.         delay(80);
  86.         dq=1;
  87.         delay(14);
  88.         x=dq;
  89.         delay(20);
  90. }
  91. void Readtemp(void)//讀溫度程序
  92. {
  93.         initds18b20();
  94.         Writebyte(0xcc);
  95.         Writebyte(0x44);

  96.         initds18b20();
  97.         Writebyte(0xcc);
  98.         Writebyte(0xbe);
  99.         d=Readbyte();        //溫度信號的低8位數(shù)據(jù)函數(shù)
  100.         h=Readbyte();        //溫度信號的高8位數(shù)據(jù)函數(shù)
  101. }
  102. get() //溫度信號處理程序,把溫度信號數(shù)據(jù)值轉(zhuǎn)換為液晶顯示
  103. {
  104.         uint temp,tmp;
  105.         float tt;
  106.         tmp=d;         //低8位數(shù)據(jù)給tmp
  107.         temp=h;         //高8位數(shù)據(jù)給temp
  108.         temp<<=8;  //高8位左移8位
  109.         temp|=d;   //高低8位數(shù)據(jù)或起來再賦給temp
  110.         if((h&0x80)!=0)         //高8位h&10000000是否等0,不等0表示負多少度
  111.         {
  112.                 table[7]='-';        //把-賦給液晶數(shù)組的第8個元素,表示-號在第8位,1602一行有16個字符
  113.                 temp=temp-1;
  114.                 temp=~temp;
  115.         }
  116.         else
  117.                 table[7]='+';
  118.                 temp>>=4;
  119.                 table[8]=(temp/100)+'0';        //液晶第9位字符為溫度的百位數(shù),例如120度的1
  120.                 table[9]=(temp/10)%10+'0';      //液晶第10位字符為溫度的十位數(shù),例如120度的2
  121.                 table[10]=(temp%10)+'0';        //液晶第9位字符為溫度的個位數(shù),例如120度的0
  122.                 tmp=tmp&0x0f;                                          //低位溫度提取小數(shù)數(shù)據(jù)
  123.                 tt=tmp*0.0625;                                         //小數(shù)部分數(shù)據(jù)轉(zhuǎn)換
  124.                 table[11]='.';                                         //顯示小數(shù)點
  125.                 table[12]=((uchar)(tt*10))%10+'0';//小數(shù)點后面的小數(shù)數(shù)字
  126.                 tempwarn=temp;               
  127.         return tempwarn;//溫度值返回
  128. }
  129. void warn(uint tempwarn)//溫度報警程序
  130. {
  131.                 if(tempwarn>=32)//如果溫度大于25度并且啟動報警
  132.         {
  133.                 beep=0;
  134.                 delay(5000);
  135.                 beep=1;
  136.                 delay(50000);
  137.         }
  138. }
  139. void main()
  140. {        
  141.         rw=0;                              //rw直接置0,應(yīng)該在液晶初始化前,否則斷電后再通電就不能顯示,切記!!!
  142.         init();                         //液晶初始化函數(shù)
  143.         write_com(0x80+0x40);             //0x80+0x40表示液晶的第二行開始顯示
  144.         for(num=0;num<16;num++)            //num<16,16表示顯示16位
  145.         {
  146.                 write_data(table1[num]);    //液晶顯示需要的內(nèi)容,調(diào)用寫液晶數(shù)據(jù)函數(shù),這行顯示拼音dengtianming        
  147.         }
  148.         while(1)                            //大循環(huán),不斷檢測和更新溫度
  149.         {
  150.                  Readtemp();
  151.                  get();
  152.              warn(tempwarn);
  153.                  write_com(0x80);  //液晶的第一行開始地址
  154.                  for(num=0;num<15;num++)//顯示16位數(shù)據(jù),后面的幾位沒有用到就寫不到16,以免后面的幾位會出現(xiàn)一個隨機數(shù)據(jù)顯示亂碼
  155.                  {
  156.                         write_data(table[num]);//液晶需要顯示的內(nèi)容
  157.                  }
  158. ……………………

  159. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
實驗6:LCD1602顯示溫度報警.rar (32.49 KB, 下載次數(shù): 297)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:304958 發(fā)表于 2018-4-10 10:10 | 只看該作者
絕世好文 啊
回復(fù)

使用道具 舉報

板凳
ID:310832 發(fā)表于 2018-4-25 08:17 來自手機 | 只看該作者
最近正在做相關(guān)設(shè)計,非常感謝分享
回復(fù)

使用道具 舉報

地板
ID:80372 發(fā)表于 2018-5-25 16:27 | 只看該作者
很好,值得學(xué)習(xí)
回復(fù)

使用道具 舉報

5#
ID:377740 發(fā)表于 2018-12-31 20:25 | 只看該作者
很好,對我正在做的課設(shè)很有幫助
回復(fù)

使用道具 舉報

6#
ID:466265 發(fā)表于 2019-1-11 11:02 | 只看該作者
大佬 請問為什么用了這程序 無論怎么調(diào) 聲音都是滴 滴 滴,不是尖銳的報警聲呢》?
回復(fù)

使用道具 舉報

7#
ID:466415 發(fā)表于 2019-1-11 15:06 | 只看該作者
很好 值得學(xué)習(xí)
回復(fù)

使用道具 舉報

8#
ID:491046 發(fā)表于 2019-3-22 16:07 | 只看該作者
程序編譯有問題,沒“l(fā)cd1602.h" "adc0832.h"
回復(fù)

使用道具 舉報

9#
ID:547147 發(fā)表于 2019-10-30 10:01 | 只看該作者
謝謝樓主,正需要
回復(fù)

使用道具 舉報

10#
ID:547147 發(fā)表于 2019-10-30 10:01 | 只看該作者
感謝樓住,正需要這個
回復(fù)

使用道具 舉報

11#
ID:473694 發(fā)表于 2019-12-28 16:11 | 只看該作者
很好,對我正在做的課設(shè)很有幫助
回復(fù)

使用道具 舉報

12#
ID:676155 發(fā)表于 2019-12-28 17:11 | 只看該作者
有沒有好的
回復(fù)

使用道具 舉報

13#
ID:676394 發(fā)表于 2019-12-28 23:17 | 只看該作者
為什么顯示的溫度一直是-0.09
回復(fù)

使用道具 舉報

14#
ID:673117 發(fā)表于 2020-1-2 02:10 | 只看該作者
很好 被自己誤刪了
回復(fù)

使用道具 舉報

15#
ID:680805 發(fā)表于 2020-1-4 00:29 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费视频一区二区 | 有码在线 | 欧美久久一区 | 二区中文 | 国产精品永久免费视频 | 久久精品手机视频 | 91在线电影 | 精品国产乱码久久久久久图片 | 日韩精品a在线观看图片 | 国产玖玖 | 日韩精品一区二区三区视频播放 | 亚洲国产精品日韩av不卡在线 | 亚洲入口| 视频三区| 亚洲视频一区在线观看 | 一区视频| 欧美日韩在线免费 | 中文字幕在线一区 | 亚洲精品91 | 99热热精品 | 国产成人精品久久 | 性网站免费| 福利社午夜影院 | 国产色黄 | 999精品视频 | 你懂的国产 | 香蕉视频1024 | 日韩不卡一二区 | 色爱av| 亚洲性人人天天夜夜摸 | 欧美性极品xxxx做受 | 国产亚洲精品久久久久动 | 久久国产成人精品国产成人亚洲 | 97伦理影院 | 黄色一级大片在线观看 | av中文字幕在线播放 | 国产精品久久久久久久久久 | 午夜精品| 一区二区三区欧美 | 亚洲a级 | 午夜影院在线观看视频 |