wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3420|回復(fù): 1
收起左側(cè)

DS18B20溫度檢測(cè)顯示控制

[復(fù)制鏈接]
ID:207245 發(fā)表于 2017-6-2 23:13 | 顯示全部樓層 |閱讀模式
DS18B20溫度檢測(cè)顯示控制,已經(jīng)過仿真驗(yàn)證
下載:
DS18B20溫度檢測(cè)控制.docx (15.85 KB, 下載次數(shù): 9)

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit RS=P3^5;                                                                                //定義LCD端口
  6. sbit RW=P3^6;
  7. sbit E=P3^7;
  8. sbit DQ=P3^4;                                                                        //定義溫度總線端口
  9. sbit Wa=P1^5;                                                                        //定義報(bào)警端口
  10. sbit ZR=P1^7;                                                                        //制熱
  11. sbit ZL=P1^6;                                                                        //制冷
  12. uchar LCD_3,LCD_2,LCD_1,LCD_0;                                       
  13. uchar ds18b20_romA[8]={0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,0x28};
  14.                                                                                                
  15. uchar _romB[8]={0x52,0x00,0x00,0x00,0xb8,0xc5,0x34,0x28};
  16. uchar _romC[8]={0x65,0x00,0x00,0x00,0xb8,0xc5,0x35,0x28};
  17. uchar _romD[8]={0x3c,0x00,0x00,0x00,0xb8,0xc5,0x36,0x28};
  18. uint  key_[2]={4,0};                                                        //設(shè)置溫度標(biāo)準(zhǔn)值
  19. uchar code  LCDData[] ="0123456789";  
  20. uchar code  dot_tab[] ="0112334456678899";
  21. uchar first_line[16]="A:000.0 B:000.0";                                 //LCD第一行顯示緩存數(shù)組 A:溫度 B:濕度
  22. void delay10us(uint t);                                                                          
  23. void check_busy();                                                                          
  24. void write_command(uchar tempdata);                                                                  
  25. void write_data(uchar tempdata);                                                                          
  26. void init_lcd1602();                                                                  
  27. bit resetpulse();                                                                          
  28. void ds18b20_init();                                                                  
  29. uchar read_bit()                                                                  
  30. uchar read_byte();                                                                          
  31. void write_bit(uchar bitval);                                                                          
  32. void write_byte(uchar val);                                                                          
  33. bit match_rom(uchar *rom);                                                                          
  34. void convert_T(uchar temp_data_h,uchar temp_data_l);                                                                          
  35. void display();                                                                                  
  36. void work_temp();                                                                  
  37. //************************************
  38. //延時(shí)程序
  39. //************************************
  40. //延時(shí)t*10us
  41. void delay10us(uint t)
  42. {
  43.         do
  44.         {
  45.                 _nop_();
  46.                 _nop_();
  47.                 _nop_();
  48.                 _nop_();
  49.                 _nop_();
  50.                 _nop_();
  51.                 _nop_();
  52.                 _nop_();
  53.                 _nop_();
  54.                 _nop_();
  55.         }
  56.         while(--t);
  57. }
  58. //************************************       
  59. //LCD1602測(cè)忙                                               
  60. //************************************
  61. void check_busy(void)
  62. {
  63.         while(1)
  64.         {
  65.         P0=0xff;
  66.         E=0;
  67.         _nop_();
  68.         RS=0;
  69.         _nop_();
  70.         _nop_();
  71.         RW=1;
  72.         _nop_();
  73.         _nop_();
  74.         E=1;
  75.         _nop_();
  76.         _nop_();
  77.         _nop_();
  78.         _nop_();
  79.         if((P0&0x80)==0)                           //等于1表示液晶正忙,重復(fù)檢測(cè)直到其等于0為止
  80.         {
  81.                 break;
  82.         }
  83.         E=0;
  84.         }
  85. }
  86. //************************************
  87. //LCD1602寫命令
  88. //************************************
  89. void write_command(uchar tempdata)
  90. {
  91.            E=0;
  92.         _nop_();
  93.         _nop_();
  94.         RS=0;
  95.         _nop_();
  96.         _nop_();
  97.         RW=0;
  98.         P0=tempdata;
  99.         _nop_();
  100.         _nop_();
  101.         E=1;
  102.         _nop_();
  103.         _nop_();
  104.         E=0;
  105.         _nop_();
  106.         check_busy();
  107. }
  108. //************************************
  109. //LCD1602寫數(shù)據(jù)
  110. //************************************
  111. void write_data(uchar tempdata)
  112. {
  113.           E=0;
  114.         _nop_();
  115.         _nop_();
  116.         RS=1;
  117.         _nop_();
  118.         _nop_();
  119.         RW=0;
  120.         P0=tempdata;
  121.         _nop_();
  122.         _nop_();
  123.         E=1;
  124.         _nop_();
  125.         _nop_();
  126.         E=0;
  127.         _nop_();
  128.         check_busy();
  129. }  
  130. //************************************
  131. //初始化LCD1602
  132. //************************************
  133. void init_lcd1602()
  134. {
  135. write_command(0x01);                                                                //清除屏幕
  136. write_command(0x38);                                                                //功能設(shè)定(8位,2行,5*7點(diǎn)陣式)
  137. write_command(0x0c);                                                                //顯示器ON,光標(biāo)OFF,閃爍OFF
  138. write_command(0x06);                               //地址加1,光標(biāo)右移,顯示屏不移動(dòng)
  139. }
  140. //************************************
  141. //初始化ds18b20                       
  142. //************************************
  143. bit resetpulse(void)
  144. {
  145.         DQ=0;
  146.         delay10us(60);                                                                        //延時(shí)600us
  147.         DQ=1;
  148.         delay10us(5);                                                                        //延時(shí)50us
  149.         return(DQ);                                                                         //讀取P3.4的狀態(tài)
  150. }
  151. void ds18b20_init(void)
  152. {
  153.         while(1)
  154.         {
  155.                 if(!resetpulse())                                                          //收到ds18b20的應(yīng)答信號(hào)
  156.                 {       
  157.                         DQ=1;
  158.                         delay10us(20);                                                        //延時(shí)200us
  159.                         break;               
  160.                 }
  161.                 else
  162.                         resetpulse();                                                        //否則再發(fā)復(fù)位信號(hào)
  163.         }
  164. }
  165. //************************************
  166. //讀ds18b20一位
  167. //************************************
  168. uchar read_bit(void)
  169. {
  170.           DQ=0;
  171.           _nop_();
  172.           _nop_();
  173.           DQ=1;
  174.           delay10us(3);                                                 //延時(shí)30us
  175.           return(DQ);                                                         //讀取數(shù)據(jù)口狀態(tài)
  176. }
  177. //************************************
  178. //讀ds18b20一個(gè)字節(jié)
  179. //************************************
  180. uchar read_byte(void)
  181. {
  182.         uchar i,m,receive_data;
  183.         m=1;
  184.         receive_data=0;
  185.         for(i=0;i<8;i++)                          //低位在前
  186.         {       
  187.                   if(read_bit())
  188.                    {
  189.                            receive_data=receive_data+(m<<i);
  190.                    }
  191.                    delay10us(6);                         //延時(shí)60us
  192.            }
  193.           return(receive_data);
  194. }
  195. //************************************
  196. //向ds18b20寫一位
  197. //************************************
  198. void write_bit(uchar bitval)
  199. {
  200.         DQ=0;
  201.         if(bitval==1)
  202.         DQ=1;
  203.         delay10us(6);                           //延時(shí)60us
  204.         DQ=1;
  205. }
  206. //************************************
  207. //向DS18B20寫一個(gè)字節(jié)命令                                                                                 
  208. //************************************
  209. void write_byte(uchar val)
  210. {
  211.         uchar i,temp;
  212.         for(i=0;i<8;i++)
  213.         {
  214.                   temp=val>>i;
  215.                   temp=temp&0x01;
  216.                   write_bit(temp);
  217.                   delay10us(6);
  218.           }
  219. }
  220. //*************************************
  221. //溫度的ROM序列號(hào)匹配                                                                                                          //*
  222. //*************************************
  223. bit match_rom(uchar *rom)
  224. {
  225.         uchar i;
  226.         ds18b20_init();
  227.         write_byte(0x55);
  228.         for(i=8;i>0;i--)
  229.         {
  230.                 write_byte(*(rom+i-1));
  231.         }
  232.         return 1;
  233. }
  234. //*************************************
  235. //溫度轉(zhuǎn)換,將從ds18b20中讀出來的溫度值
  236. //轉(zhuǎn)化成十進(jìn)制的溫度值,并存放顯示緩存
  237. //*************************************
  238. void convert_T(uchar temp_data_h,uchar temp_data_l)
  239. {
  240.         uchar temp;
  241.      if((temp_data_h&0xf0)==0xf0)                                        //如果溫度寄存器里的高位為1,
  242.            {                                                                                        //則溫度為負(fù)
  243.               temp_data_l=~temp_data_l;                                //負(fù)溫度將補(bǔ)碼轉(zhuǎn)成二進(jìn)制,
  244.               if(temp_data_l==0xff)                                                //取反再加1
  245.                 {
  246.                               temp_data_l=temp_data_l+0x01;
  247.                               temp_data_h=~temp_data_h;
  248.                                   temp_data_h=temp_data_h+0x01;
  249.                          }
  250.               else
  251.                {
  252.                                temp_data_l=temp_data_l+0x01;
  253.                               temp_data_h=~temp_data_h;
  254.            }
  255.                                  LCD_0=dot_tab[temp_data_l&0x0f];        //查表得小數(shù)位的值
  256.                              temp=((temp_data_l&0xf0)>>4)|((temp_data_h&0x0f)<<4);
  257.                              LCD_3='-';                                                //顯示"-"號(hào)
  258.                              LCD_2=LCDData[(temp%100)/10];        //查表得負(fù)溫度溫度十位
  259.                              LCD_1=LCDData[(temp%100)%10];        //查表得負(fù)溫度個(gè)位
  260.            }
  261.    else                                                                                         //溫度為正
  262.        {  
  263.                               LCD_0=dot_tab[temp_data_l&0x0f];        //查表得小數(shù)位的值
  264.                              temp=((temp_data_l&0xf0)>>4)|((temp_data_h&0x0f)<<4);
  265.                              LCD_3=LCDData[temp/100];                //查表得溫度百位
  266.                              LCD_2=LCDData[(temp%100)/10];        //查表得溫度十位
  267.                              LCD_1=LCDData[(temp%100)%10];        //查表得溫度個(gè)位
  268.             }
  269. }
  270. void display(void)                                                                 //LCD顯示
  271. {
  272.    uchar i;
  273.             write_command(0x80);
  274.             for(i=0;i<16;i++)
  275.                 {
  276.                   write_data(first_line[i]);
  277.                 }
  278.             write_command(0xc0);
  279.             for(i=0;i<16;i++)
  280.                 {
  281.                   write_data(second_line[i]);
  282.                 }
  283. }
  284. //*************************************
  285. //加熱控制,制冷控制,報(bào)警
  286. //*************************************
  287. void work_temp()
  288. {
  289.         uchar tt_[2];
  290.         uchar tt;
  291.         uchar temp_data_l;
  292.         uchar temp_data_h;
  293.         temp_data_l= read_byte();                                   //溫度低8位
  294.     temp_data_h = read_byte();                                   //溫度高8位
  295.         tt_[0]=temp_data_l&0xf0;
  296.     tt_[1]=temp_data_h&0x0f;
  297.         tt=tt_[0]+tt_[1];
  298.         if(tt>0x0A)                                                                        //判斷是否高于10度
  299.                 {
  300.                         Wa=0;                                                           //報(bào)警
  301. ……………………

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


回復(fù)

使用道具 舉報(bào)

ID:44037 發(fā)表于 2017-6-3 06:32 | 顯示全部樓層
謝謝分享   學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
亚洲成人av中文| a亚洲天堂av| 国产精品视频99| 中文字幕日韩三级| 欧美a一欧美| 在线播放日韩欧美| 欧美激情精品久久| 青草综合视频| 亚洲国产成人爱av在线播放| 中国毛片在线观看| 瑟瑟视频在线看| 69精品人人人人| 久久黄色一级视频| 在线激情av| 91偷拍与自偷拍精品| 亚洲一区二区三区精品动漫| www.嫩草免费在线观看| 国产成人免费视| 欧美超级免费视 在线| 日本网站免费观看| 超碰97久久| 俺去了亚洲欧美日韩| 免费黄色网址在线| 亚洲专区视频| 久久久日本电影| 97人妻精品一区二区三区软件| 黑人操亚洲人| 97在线日本国产| www.97av| 亚洲区一区二| 成人av播放| 欧美性xxxx极品hd欧美| 天堂久久一区二区三区| 92国产精品视频| 欧美日溪乱毛片| 麻豆成人久久精品二区三区红 | 成人性爱视频在线观看| 亚洲va韩国va欧美va| 日韩欧美理论片| 成人免费观看视频大全| 欧美色综合影院| 亚洲第一综合网| yy6080久久伦理一区二区| 亚洲精品在线视频| 国产情侣自拍av| 日本a级不卡| 国产精品久久中文| 伦理天堂电影| 久久成人免费日本黄色| 在线视频不卡一区二区| 一个人看的免费视频色| 亚洲一区二区三区中文字幕 | av小说在线观看| 成人免费在线观看视频| 夜夜躁日日躁狠狠久久88av| 九九精品免费视频| 日本大胆欧美| 国产日韩精品在线| 国产寡妇树林野战在线播放| 久久视频国产| 国产精品99久久久久久久久 | 亚洲一区在线观看视频| 亚洲三级在线视频| 一二三四视频在线中文| 亚洲精品色婷婷福利天堂| www成人在线| 99精品全国免费观看视频软件| 国产精品v日韩精品| 欧美三级成人观看| 99国产精品久久久久久久久久| 3d动漫一区二区三区| 亚乱亚乱亚洲乱妇| 欧美日韩成人一区二区| 国产午夜福利一区| 国产精品白丝一区二区三区| 91黄色8090| 一本大道久久精品| 成人国产电影网| 欧美日韩亚洲一| 50度灰在线| 亚洲精品国精品久久99热一| 亚洲天堂一区在线| 国产精品www994| 精品日产一区2区三区黄免费| 超级碰碰视频| 亚洲444eee在线观看| 国产精品三级在线观看无码| 久久三级毛片| 欧美久久精品午夜青青大伊人| 好吊色视频一区二区| 久久成人免费电影| 黄页网站大全在线观看| 4438x成人网全国最大| 亚洲男人的天堂在线| 在线观看国产小视频| 性色一区二区三区| 最近免费观看高清韩国日本大全| 爱爱爱免费视频在线观看| 欧美一区二区三区视频免费 | 亚洲视频在线观看| 国产精品日韩无码| 捆绑调教一区二区三区| 国产成人久久久精品一区| 四虎国产精品永久在线| 91麻豆产精品久久久久久| 在线观看免费的av| 成人国产精品一区二区免费麻豆 | 99热成人精品热久久66| 色婷婷av在线| 精品在线观看国产| www.xxx国产| 国产精品系列在线观看| 91激情视频在线| gogo亚洲高清大胆美女人体| 欧美激情一级欧美精品| 4hu四虎永久网址| 国产亚洲一区二区三区在线观看| 少妇极品熟妇人妻无码| 大奶在线精品| 91亚洲一区精品| 日本成在线观看| 欧美日韩一区不卡| 欧美日韩一二三四区| 欧美亚洲在线| 久久久久久av无码免费网站下载| 日本一本在线免费福利| 久久天天躁夜夜躁狠狠躁2022| 香蕉国产在线视频| 国产日产欧美精品一区二区三区| 成人区人妻精品一区二| 日韩丝袜视频| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 美乳中文字幕| 欧美久久久久久蜜桃| 波多野结衣午夜| 蜜桃视频在线一区| 国产a视频免费观看| 久久久成人av毛片免费观看| 欧美激情18p| xxx欧美尤物xxx| 亚洲国产日韩a在线播放| 免费在线观看一级片| 国产中文一区| 久青草视频在线播放| 日韩精品av| 国内外成人免费激情在线视频网站| 一级特黄毛片| 极品少妇一区二区| 欧美三级午夜理伦三级| 亚洲福利影院| 国产999精品久久久| 麻豆传媒mv| 欧美情侣在线播放| 国产又粗又猛视频| 播五月开心婷婷综合| 日本人添下边视频免费| 欧美日韩在线播放视频| 亚洲精品一区二区三区蜜桃久| av网址在线免费观看| 中文国产成人精品| 国内精品区一区二区三| 亚洲高清在线视频| 国内精品福利视频| 国产精品一卡二卡在线观看| 伊人五月天婷婷| 粉嫩久久久久久久极品| 久久99精品久久久久久水蜜桃| a天堂中文在线88| 日韩中文娱乐网| 日日摸夜夜爽人人添| 91福利资源站| 国产精品久久久久久免费| 91香蕉视频黄| 成人免费无遮挡无码黄漫视频| 小小影院久久| 国产xxxx振车| 国产亚洲观看| 久久久久网址| 97蜜桃久久| 国产精品美女999| 性欧美孕妇孕交| 中文字幕无线精品亚洲乱码一区| 96精品视频| 欧美日韩亚洲另类| 亚洲伦理在线观看| 亚洲天堂免费在线观看视频| 久久99久久久| 精品一区二区三区免费视频| 亚洲成年人av| 欧美a级在线| 久久婷婷国产精品| 欧美大片网址| 天天干天天色天天爽| 免费一级欧美在线观看视频| 国产精品我不卡| 人人澡人人添人人爽一区二区| 热久久99这里有精品| 在线视频中文字幕| 一区二区欧美亚洲| 九九热在线观看| 精品久久免费看| 精品樱空桃一区二区三区| 在线观看亚洲a| 国产视频在线观看免费| 成人高清av| 亚洲 高清 成人 动漫| 91麻豆精品国产91久久久久推荐资源| 狠狠干一区二区| 9999精品成人免费毛片在线看 | a天堂中文在线88| 97国产在线视频| 在线播放网站| 久久69精品久久久久久久电影好| 高清av影院| 中文字幕亚洲精品| 69国产精品视频| 自拍偷拍亚洲欧美| 男裸体无遮挡网站| 亚洲第一网站免费视频| 91午夜视频| 欧美电影免费提供在线观看| 欧美性老头oldtight| 欧美老年两性高潮| 亚洲国产视频在线观看| 欧美亚男人的天堂| 一色屋色费精品视频在线观看| 欧美在线一二三四区| 三级小说一区| 欧美网站大全在线观看| 亚洲欧美另类视频| 色综合激情五月| 亚洲av成人精品一区二区三区在线播放 | 高清中文字幕在线| www国产精品com| 午夜丝袜av电影| 欧美区二区三区| 日韩三级电影网| 欧美丰满老妇厨房牲生活| 在线观看av中文| 欧美精品aaa| 欧美日韩在线精品一区二区三区激情综 | 888av在线视频| 国产98在线|日韩| av手机免费在线观看| 国产免费一区二区三区在线观看| 粗大黑人巨茎大战欧美成人| 成人黄色中文字幕| zzzwww在线看片免费| 久草热久草热线频97精品| 成人涩涩视频| 久久99精品久久久久久青青日本| 成人精品三级| 一区二区免费在线观看| 亚洲精品高潮| 男的插女的下面视频| 欧美日韩一区二区综合 | 国产极品美女在线| 91色婷婷久久久久合中文| 国产三级av片| 亚洲男同1069视频| 黄色录像a级片| 国产综合久久久久久鬼色| 中日韩一级黄色片| 久久久精品国产99久久精品芒果| 成人毛片一区二区三区| 亚洲国产精品欧美一二99| 天天操天天插天天射| 欧美日韩欧美一区二区| 91免费在线播放视频| 在线日韩第一页| 三级av在线| 欧美一二三视频| 色帝国亚洲欧美在线| 国产在线一区二区三区欧美| 欧美大片网站| 男人天堂新网址| 日韩精品一区二区三区免费观影| 亚洲一区日韩精品| 国产精品毛片在线看| 日本精品久久久久中文| 94色蜜桃网一区二区三区| 中国一级片黄色一级片黄| 欧美日韩国产色| 九九99精品| 在线观看日韩www视频免费| 你懂的视频在线免费| 国产欧美 在线欧美| 第84页国产精品| 欧美a级黄色大片| 欧美国产美女| 亚洲精品乱码久久久久久久| 久久成人18免费观看| 亚欧洲精品在线视频| 亚洲综合精品久久| 欧美四级剧情无删版影片| 亚洲国产精品资源| 九七伦理97伦理手机| 欧美极品少妇xxxxx| 美足av综合网| 亚洲日本欧美在线| 成人羞羞在线观看网站| 中文字幕天堂网| www.一区二区| 国产又爽又黄免费软件| 欧美三级韩国三级日本三斤| a在线观看网站| 国内精品久久久久久久| 超碰人人在线| 亚洲欧洲一二三| 成人vr资源| 精品无人区无码乱码毛片国产 | 特黄视频免费看| 色一情一伦一子一伦一区| 小视频福利在线| 欧美激情视频给我| wwww在线观看免费视频| 强开小嫩苞一区二区三区网站| 99久久.com| 亚洲高潮女人毛茸茸| 国产精品成人免费| 尤物在线精品视频| 国产一区二区三区在线免费观看| 神马午夜电影一区二区三区在线观看 | 国产一级片免费| 午夜国产精品影院在线观看| 91av看片| 欧美精品手机在线| av中文字幕在线看| 妞干网在线观看视频| 免费在线亚洲欧美| 天堂网一区二区三区| 91福利在线免费观看| jizz欧美大全| 国产精品久久久久久久午夜| 欧美亚洲福利| 不卡的在线视频| 岛国精品一区二区| 国产91免费在线观看| 亚洲人午夜色婷婷| 91超碰在线播放| 黄色成人免费看| 99re在线视频这里只有精品| 小说区图片区综合久久88| 欧美肥臀大乳一区二区免费视频| 成人一级视频| 欧美熟妇另类久久久久久多毛| 久久久国产一区二区三区四区小说 | 国产乱子伦三级在线播放| 一区不卡字幕| 日韩av午夜在线观看| 国产免费高清视频| 最近中文字幕日韩精品| 2022成人影院| 国产精品999.| 国产欧美视频一区二区三区| 91视频地址| 亚洲一区二区久久久久久| 日本精品黄色| 日韩av男人天堂| 欧美r级在线观看| 在线网址91| 91淫黄看大片| 久久久久久久久久久久久久久99 | 日本在线播放一二三区| 国产精品一区二区小说| 亚洲国产精品成人综合色在线婷婷| 69堂视频在线观看国产| 国产精品自拍网| 欧美a级成人淫片免费看| 亚洲 欧美 视频| 精品五月天久久| 在线观看福利电影| 日韩不卡的av| 亚洲精品视频在线观看网站| 国产高潮av| 九九热这里只有在线精品视| 亚洲一区二区小说| 亚洲a v网站| 在线免费视频一区二区| 国产精品麻豆一区二区三区| 很污的网站在线观看| 91在线码无精品| 青青色青青操| 久久国产精品高清| 久久精品一区| 天堂中文资源在线观看| 日本欧美中文字幕| 精品久久久亚洲| 国产高潮久久久| 中文字幕日韩欧美| 99re8精品视频在线观看| 精品亚洲aⅴ无码一区二区三区| 欧美专区亚洲专区| 黄色网址在线免费观看| 欧美特级aaa| 一区二区三区四区不卡在线 | 国产综合精品在线| 欧美日本乱大交xxxxx| av免费看在线| 伊人国产精品视频|