亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 基于STC12C5A60S2的DS18B20溫度顯示工程(LCD1602顯示) [打印本頁]

作者: 大風吹過啊    時間: 2018-4-22 23:18
標題: 基于STC12C5A60S2的DS18B20溫度顯示工程(LCD1602顯示)
STC12C5A60S2單片機DS18B20溫度顯示工程(LCD1602顯示)的實物圖如下:

單片機源程序如下:
  1. #include<STC12C5A60S2.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  2. #include<intrins.h>

  3. sbit RS = P1 ^ 0;   //定義端口
  4. sbit RW = P1 ^ 1;
  5. sbit EN = P2 ^ 5;
  6. sbit DS = P2 ^ 2;

  7. unsigned char code Table[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
  8. bit flag;
  9. unsigned char xdata a, b;

  10. #define DataPort P0


  11. /************************LCD1602函數************************/
  12. /******延時函數******/
  13. void DelayUs2x(unsigned char t)
  14. {   
  15.         while(--t);
  16. }
  17. /******延時函數******/
  18. void DelayMs(unsigned char t)
  19. {
  20.         while(t--)
  21.         {
  22.                 //大致延時1mS
  23.                 DelayUs2x(245);
  24.                 DelayUs2x(245);
  25.         }
  26. }
  27. /******判忙函數******/
  28. bit LCD_Check_Busy(void)
  29. {
  30.         DataPort = 0xFF;
  31.         RS = 0;
  32.         RW = 1;
  33.         EN = 0;
  34.         _nop_( );
  35.         EN = 1;
  36.         return (bit)(DataPort & 0x80);
  37. }
  38. /******寫入命令函數******/
  39. void LCD_Write_Com(unsigned char com)
  40. {  
  41.         while(LCD_Check_Busy( )); //忙則等待
  42.         RS = 0;
  43.         RW = 0;
  44.         EN = 1;
  45.         DataPort = com;
  46.         _nop_( );
  47.         EN = 0;
  48. }
  49. /******寫入數據函數******/
  50. void LCD_Write_Data(unsigned char Data)
  51. {
  52.         while(LCD_Check_Busy( )); //忙則等待
  53.         RS = 1;
  54.         RW = 0;
  55.         EN = 1;
  56.         DataPort = Data;
  57.         _nop_( );
  58.         EN = 0;
  59. }
  60. /******清屏函數******/
  61. void LCD_Clear(void)
  62. {
  63.         LCD_Write_Com(0x01);
  64.         DelayMs(5);
  65. }
  66. /******寫入字符串函數******/
  67. void LCD_Write_String(unsigned char x, unsigned char y, unsigned char *s)
  68. {     
  69.         if (y == 0)
  70.         {     
  71.                 LCD_Write_Com(0x80 + x);     //表示第一行
  72.         }
  73.         else
  74.         {      
  75.                 LCD_Write_Com(0xc0 + x);      //表示第二行
  76.         }        
  77.         while (*s)
  78.         {     
  79.                 LCD_Write_Data(*s);     
  80.                 s ++;     
  81.         }
  82. }
  83. /******寫入字符函數******/
  84. void LCD_Write_Char(unsigned char x, unsigned char y, unsigned char Data)
  85. {     
  86.         if (y == 0)
  87.         {     
  88.                 LCD_Write_Com(0x80 + x);     
  89.         }   
  90.         else
  91.         {     
  92.                 LCD_Write_Com(0xc0 + x);     
  93.         }        
  94.         LCD_Write_Data(Data);  
  95. }
  96. /******初始化函數******/
  97. void LCD_Init(void)
  98. {
  99.         LCD_Write_Com(0x38);    /*顯示模式設置*/
  100.         DelayMs(5);
  101.         LCD_Write_Com(0x38);
  102.         DelayMs(5);
  103.         LCD_Write_Com(0x38);
  104.         DelayMs(5);
  105.         LCD_Write_Com(0x38);  
  106.         LCD_Write_Com(0x08);    /*顯示關閉*/
  107.         LCD_Write_Com(0x01);    /*顯示清屏*/
  108.         LCD_Write_Com(0x06);    /*顯示光標移動設置*/
  109.         DelayMs(5);
  110.         LCD_Write_Com(0x0c);    /*顯示開及光標設置*/
  111. }
  112.    

  113. /************************DS18B20函數************************/
  114. /******延時函數******/
  115. void DS18B20_Delay(unsigned int j)//延時j * 1us
  116. {
  117.         unsigned int i;
  118.         for(i = 0; i < j; i ++)
  119.         {
  120.                 _nop_( );//@11.0592M晶振(12M晶振:_nop_( );_nop_( );)
  121.         }
  122.         
  123. }
  124. /******初始化/復位函數******/
  125. void DS_Rest( )
  126. {
  127.         DS = 1;
  128.         DS18B20_Delay(60);
  129.         DS = 0;
  130.         DS18B20_Delay(700);
  131.         DS = 1;
  132.         DS18B20_Delay(150);
  133.         if(DS == 0)
  134.         {
  135.                 flag = 1;
  136.         }
  137.         else
  138.         {
  139.                 flag = 0;
  140.         }
  141.         DS18B20_Delay(200);
  142. }
  143. /******位讀取函數******/
  144. bit DS_Read_Bit( )
  145. {
  146.         bit Dat;
  147.         DS = 0;
  148.         _nop_( );_nop_( );
  149.         DS = 1;
  150.         _nop_( );
  151.         Dat = DS;
  152.         DS18B20_Delay(100);
  153.         return Dat;
  154. }
  155. /******字節讀取函數******/
  156. unsigned char DS_Read_Byte( )
  157. {
  158.         unsigned char idata i, j, k;
  159.         for(i = 0; i < 8; i ++)
  160.         {
  161.                 j = DS_Read_Bit( );
  162.                 k = (j << 7) | (k >> 1);
  163.         }
  164.         return k;
  165. }
  166. /******字節寫函數******/
  167. void DS_Write_Byte(unsigned char Dat)
  168. {
  169.         unsigned char idata i;
  170.         for(i = 0; i < 8; i ++)
  171.         {
  172.                 DS = 0;
  173.                 _nop_( );
  174.                 DS = Dat & 0x01;
  175.                 DS18B20_Delay(70);
  176.                 DS = 1;
  177.                 Dat >>= 1;
  178.         }
  179.         DS18B20_Delay(70);
  180. }
  181. /******讀取溫度數據函數******/
  182. void Read_Temperature( )
  183. {
  184.         unsigned char xdata tvalue_L, tvalue_H;
  185.         float num;
  186.         
  187.         DS_Rest( );
  188.         DS_Write_Byte(0xcc);
  189.         DS_Write_Byte(0xbe);
  190.         tvalue_L = DS_Read_Byte( );
  191.         tvalue_H = DS_Read_Byte( );
  192.         tvalue_H <<= 4;
  193.         tvalue_H += (tvalue_L & 0xf0) >> 4;
  194.         a = tvalue_H;
  195.         num = (tvalue_L & 0x0f) * 0.0625;
  196.         b = (unsigned char)(num * 100);
  197. }
  198. /******溫度顯示函數******/
  199. void DS18B20_Display( )
  200. {
  201.         LCD_Write_String(0, 0, "The Temperature:");
  202.         LCD_Write_Char(0, 1, Table[a / 10]);
  203.         LCD_Write_Char(1, 1, Table[a % 10]);
  204.         LCD_Write_Char(2, 1, '.');
  205. ……………………

  206. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
基于STC12C5A60S2的DS18B20溫度顯示工程(LCD1602顯示).zip (38.93 KB, 下載次數: 515)



作者: YQQ    時間: 2018-4-24 08:24
挺好的,不錯
作者: Winter丶    時間: 2018-4-25 11:20
很棒,可以試試。
作者: BUYYBU    時間: 2018-5-16 14:19
為什么不能顯示

作者: echoma    時間: 2018-5-25 11:57
特別好~~我寫的一直都有warning,這個程序什么錯都沒有
作者: fenfen625    時間: 2018-5-28 15:03
您好,請問把程序燒到單片機中為什么初始溫度值是85℃呢,如何修改一下直接顯示實時溫度呢,麻煩幫忙解決一下
作者: 米51hei    時間: 2018-8-20 23:28
fenfen625 發表于 2018-5-28 15:03
您好,請問把程序燒到單片機中為什么初始溫度值是85℃呢,如何修改一下直接顯示實時溫度呢,麻煩幫忙解決一 ...

你可以把讀取實時溫度的函數寫2次,屏蔽第一次不讓顯示,那樣就不會顯示85度了
作者: 947000098    時間: 2018-8-30 19:20
我的也是不能顯示啊 很難受
作者: 小貓貓愛吃魚    時間: 2018-8-30 22:01
947000098 發表于 2018-8-30 19:20
我的也是不能顯示啊 很難受

你好!排查過程
1、檢查硬件焊接是不是錯誤、虛焊等,重點
2、檢查軟件,是不是定義端口和硬件對應,低級錯誤
3、所用器件的控制時序是否正確,重點
4、還是沒有解決,加我QQ,幫你處理問題
作者: 張本闖    時間: 2018-12-22 14:49
好好好
作者: gongleicssc    時間: 2019-1-21 20:25
不錯,研究一下
作者: mt6639    時間: 2019-3-23 23:59
參考下
作者: saya0769    時間: 2019-3-24 09:01
我的keil5.25中找不到STC12C5A60S2單片機。用c52代替的話。晶振選12M。嗎?延時1us是一個_nop_嗎?
作者: saya0769    時間: 2019-3-24 12:32
謝謝分享啊。不錯的東西。
作者: saya0769    時間: 2019-3-26 11:17
可能我的ds壞了。無論連接不連接。lcd都顯示5.93c。難受香菇
作者: 嘛嘛嘛嗎    時間: 2019-3-26 12:00
挺好收藏了
作者: 嘛嘛嘛嗎    時間: 2019-3-26 12:00
挺好,收藏了

作者: 奮斗的小白熊    時間: 2019-3-26 18:39
fenfen625 發表于 2018-5-28 15:03
您好,請問把程序燒到單片機中為什么初始溫度值是85℃呢,如何修改一下直接顯示實時溫度呢,麻煩幫忙解決一 ...

在你讀這次的溫度值時 先把上一次的值清除了
作者: 大風吹過啊    時間: 2019-3-29 10:19
fenfen625 發表于 2018-5-28 15:03
您好,請問把程序燒到單片機中為什么初始溫度值是85℃呢,如何修改一下直接顯示實時溫度呢,麻煩幫忙解決一 ...

這個程序就是簡單地讀取顯示的程序,顯示值是隨實時溫度變化改變的,如果你一直都顯示85度的話可能是硬件的問題了
作者: 大風吹過啊    時間: 2019-3-29 10:21
saya0769 發表于 2019-3-24 09:01
我的keil5.25中找不到STC12C5A60S2單片機。用c52代替的話。晶振選12M。嗎?延時1us是一個_nop_嗎?

用ISP燒錄軟件添加一下STC的型號和頭文件就行了
作者: Jackis    時間: 2019-4-1 19:25
好東西,學習一下
作者: 王企鵝    時間: 2019-4-2 22:28
挺好的,不錯
作者: zyt心有所寄    時間: 2019-5-22 02:12
謝謝分享
作者: 癡呆癥的小白    時間: 2019-7-10 01:48
怎么溫度為0??
作者: 鵬博士PBs    時間: 2019-7-10 09:17
可以同時顯示溫度和濕度嗎
作者: 大風吹過啊    時間: 2019-8-8 11:19
鵬博士PBs 發表于 2019-7-10 09:17
可以同時顯示溫度和濕度嗎

這個只是DS18B20的測試程序,它只能測溫度,濕度得別的傳感器
作者: wuzhousf    時間: 2020-11-25 12:48
以后能用到,mark一下,




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1