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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6359|回復: 3
打印 上一主題 下一主題
收起左側

STC15W4K單片機溫控顯示項目設計實戰:數字溫度計

[復制鏈接]
跳轉到指定樓層
樓主
這張帖子是基于STC15W4K系列的溫控顯示設計;
采用lcd1602顯示和ds18b20溫控裝置的實用設計;
如果對您有幫助,很感謝您的黑幣;

數字溫度計實驗步驟:
1、按照正確接線方式將DS18B20芯片插到J13三芯單排母端子上,J13端口定義在開發板背面VDD/P36/GND/GND;
2、按照正確方向把LCD1602液晶屏插到開發板J7端子上;
3、MINI USB連接線給開發板通電下載程序,下載軟件中內部IRC時鐘選擇11.0592MHZ;
4、下載程序后,LCD1602屏會顯示18B20檢測到的實時溫度值。

備注:如果使用的DS18B20傳感器是帶延長線的,那可以將傳感器供電接到J19的VCC/GND上,信號線與J25端子的P36連接。

單片機源程序如下:
  1. /****************************************Copyright (c)****************************************************
  2. **                                       
  3. **                                 
  4. **
  5. **--------------File Info---------------------------------------------------------------------------------
  6. ** File name:                       
  7. ** Last modified Date:         
  8. ** Last Version:                  
  9. ** Descriptions:                                                       
  10. **--------------------------------------------------------------------------------------------------------
  11. ** Created by:                        FiYu
  12. ** Created date:                2016-9-8
  13. ** Version:                            1.0
  14. ** Descriptions:                數字溫度計實驗                       
  15. **--------------------------------------------------------------------------------------------------------
  16. ** Modified by:                        FiYu
  17. ** Modified date:               
  18. ** Version:                               
  19. ** Descriptions:               
  20. ** Rechecked by:                       
  21. **********************************************************************************************************/
  22. /****-----請閱讀ReadMe.txt進行實驗-----***********/
  23. #include "ds18b20.h"

  24. #define  uint unsigned int  
  25. #define  uchar unsigned char

  26. #define  LOW     0  
  27. #define  HIGH    1

  28. #define  LowTemper         5   
  29. #define  HighTemper        30

  30. /**********************
  31. 引腳別名定義
  32. ***********************/
  33. sbit rs=P2^4;        //1602的數據/指令選擇控制線
  34. sbit rw=P2^3;        //1602的讀寫控制線
  35. sbit en=P2^1;        //1602的使能控制線
  36.                
  37. sbit LED_R=P1^7;                 //紅色LED用IO口P17       
  38. sbit LED_B=P1^6;     //藍色LED用IO口P16

  39. uchar code table1[]="Current Temper: ";      //要顯示的內容1放入數組table
  40. uchar code table2[]="Normal  ";      //要顯示的內容2放入數組table
  41. uchar code table3[]="Too low ";      //要顯示的內容3放入數組table
  42. uchar code table4[]="Too high";      //要顯示的內容4放入數組table
  43. uchar code table5[]="-";             //要顯示的內容5放入數組table
  44. uchar code table6[]=" ";             //要顯示的內容6放入數組table

  45. /**************************************
  46. 功能描述:LCD1602寫命令函數
  47. 入口參數:uchar com
  48. 返回值:無
  49. ***************************************/
  50. void lcd_wcom(uchar com)                 
  51. {
  52.     rs=0;               //選擇指令寄存器
  53.     rw=0;               //選擇寫
  54.     P0=com;             //把命令字送入P0
  55.     delay_ms(1);        //延時一小會兒,讓1602準備接收數據
  56.     en=1;               //使能線電平變化,命令送入1602的8位數據口
  57.     en=0;
  58. }

  59. /**************************************
  60. 功能描述:LCD1602寫數據函數
  61. 入口參數:uchar dat
  62. 返回值:無
  63. ***************************************/
  64. void lcd_wdat(uchar dat)         
  65. {
  66.     rs=1;               //選擇數據寄存器
  67.     rw=0;               //選擇寫
  68.     P0=dat;             //把要顯示的數據送入P0
  69.     delay_ms(1);        //延時一小會兒,讓1602準備接收數據
  70.     en=1;               //使能線電平變化,數據送入1602的8位數據口
  71.     en=0;
  72. }

  73. /**************************************
  74. 功能描述:LCD1602初始化函數
  75. 入口參數:無
  76. 返回值:無
  77. ***************************************/
  78. void lcd_init()                 
  79. {
  80.     lcd_wcom(0x38);       //8位數據,雙列,5*7字形      
  81.     lcd_wcom(0x0c);       //開啟顯示屏,關光標,光標不閃爍
  82.     lcd_wcom(0x06);       //顯示地址遞增,即寫一個數據后,顯示位置右移一位
  83.     lcd_wcom(0x01);       //清屏
  84. }


  85. /***************************************************************************
  86. * 描  述 : 主函數
  87. * 入  參 : 無
  88. * 返回值 : 無
  89. **************************************************************************/
  90. int main()
  91. {               
  92.         unsigned char i=0,j=0,m=0,n=0,k=0;
  93.         unsigned char strTemp[6],uTemp,Sign;
  94.         float fTemp;
  95.        
  96. /////////////////////////////////////////////////
  97. //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
  98. //      高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
  99. //相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
  100. //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
  101. /////////////////////////////////////////////////
  102.         P0M1 = 0;        P0M0 = 0;        //設置P0.0~P0.7為準雙向口
  103.         P1M1 = 0;        P1M0 = 0;        //設置P1.0~P1.7為準雙向口
  104.         P2M1 = 0;        P2M0 = 0;        //設置P2.0~P2.7為準雙向口
  105.         P3M1 = 0;        P3M0 = 0;        //設置P3.0~P3.7為準雙向口
  106.         P4M1 = 0;        P4M0 = 0;        //設置P4.0~P4.7為準雙向口
  107.         P5M1 = 0;        P5M0 = 0;        //設置P5.0~P5.7為準雙向口
  108.        
  109.   lcd_init();           //液晶初始化
  110.   lcd_wcom(0x80);       //顯示地址設為80H(即00H,)上排第一位
  111.         for(i=0;i<16;i++)     //將table1[]中的數據依次寫入1602顯示
  112.   {
  113.     lcd_wdat(table1[i]);           
  114.     delay_ms(20);
  115.   }
  116.        
  117.         while(1)
  118.         {
  119.                 memset(strTemp, 0, sizeof(strTemp)); //strTemp數組清零       
  120.                
  121.     fTemp = floatReadDs18B20();       //溫度讀取函數,帶1位小數位
  122.     sprintf(strTemp, "%.01f", fTemp); //浮點數轉成字符串
  123.                
  124.                 uTemp=(uchar)fTemp;
  125.                 if(uTemp<10)
  126.                 {
  127.                         lcd_wcom(0x80+0x45);    //重新設定顯示地址
  128.                         lcd_wdat(table6[0]);    //將table6[]中的數據依次寫入1602顯示        
  129.       delay_ms(20);
  130.                         Sign=3;       
  131.                 }
  132.                 else
  133.                 {
  134.                         Sign=4;
  135.                 }
  136.                
  137.                 if(ReadTempFlag)
  138.                 {
  139.                         lcd_wcom(0x80+0x41); //重新設定顯示地址
  140.                         lcd_wdat(table5[0]);           
  141.       delay_ms(20);
  142.                         lcd_wcom(0x80+0x42);
  143.                         for(j=0;j<Sign;j++)     //將strTemp[]中的數據依次寫入1602顯示
  144.       {
  145.         lcd_wdat(strTemp[j]);           
  146.         delay_ms(20);
  147.       }
  148.                 }
  149.                 else
  150.                 {
  151.                         lcd_wcom(0x80+0x41); //重新設定顯示地址
  152.                         lcd_wdat(table6[0]);           
  153.       delay_ms(20);
  154.                         lcd_wcom(0x80+0x42); //重新設定顯示地址
  155.                   for(j=0;j<Sign;j++)     //將strTemp[]中的數據依次寫入1602顯示
  156.       {
  157.         lcd_wdat(strTemp[j]);           
  158.         delay_ms(20);
  159.       }
  160.                 }
  161.                
  162.                 lcd_wcom(0x80+0x48);   //重新設定顯示地址
  163.                 if(ReadTempFlag||(uTemp<LowTemper))    //溫度過低時,藍燈較快閃爍(間隔60mS)
  164.                 {
  165.             for(m=0;m<8;m++)     //將table3[]中的數據依次寫入1602顯示
  166.       {
  167.         lcd_wdat(table3[m]);           
  168.         delay_ms(20);
  169.       }
  170.                         LED_B=LOW;
  171.                   delay_ms(60);
  172.                   LED_B=HIGH;
  173.                   delay_ms(60);
  174.                 }
  175.                 else if(uTemp>HighTemper)   //溫度過高時,紅燈較快閃爍(間隔60mS)
  176. ……………………

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

所有資料51hei提供下載:
項目實戰2 - 數字溫度計(DS18B20正負溫顯示).rar (1.08 MB, 下載次數: 70)




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

使用道具 舉報

沙發
ID:73202 發表于 2017-7-23 10:12 | 只看該作者
支持不錯!!
回復

使用道具 舉報

板凳
ID:130345 發表于 2017-8-4 18:30 | 只看該作者
值得學習
回復

使用道具 舉報

地板
ID:81441 發表于 2023-3-27 09:28 | 只看該作者
學習了,這次是STC,國產芯片!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美aaa一级片 | 亚洲欧美在线一区 | 欧美日韩亚洲国产综合 | 欧美一二三| 日本不卡一区二区三区在线观看 | 中文av在线播放 | 91精品国产一区二区三区 | 国产午夜精品一区二区三区嫩草 | 91在线影院 | 一区二区三区四区视频 | 久久久久国产一级毛片 | 欧美黄a | 日韩在线免费看 | av网站在线免费观看 | 国产精品久久久久久久久久不蜜臀 | 国产成人综合一区二区三区 | 欧美日韩国产中文 | 日本三级电影在线看 | 草久在线视频 | 在线看片网站 | 黄色精品| 又黑又粗又长的欧美一区 | 日韩三区在线观看 | av毛片| 中文久久 | 另类视频在线 | 亚洲精品毛片av | 亚洲激情一级片 | 91超碰在线 | 99热热热 | 亚洲综合视频 | wwww.8888久久爱站网 | 青草青草久热精品视频在线观看 | 九九九久久国产免费 | 亚洲免费在线观看 | 97国产精品视频人人做人人爱 | 99国产精品久久久久久久 | 欧美1区| 亚洲精品在线91 | 午夜小电影 | 给我免费的视频在线观看 |