標(biāo)題: ds18b20溫度傳感器12864液晶顯示 [打印本頁]

作者: wlsys    時間: 2016-9-17 08:52
標(biāo)題: ds18b20溫度傳感器12864液晶顯示
ds18b20溫度傳感器12864液晶顯示
  1. /*-----------------------------------------------
  2.   名稱:DS18b20 溫度檢測液晶顯示
  3.   編寫:shifang
  4.   日期:2019.5
  5.   修改:無
  6.   內(nèi)容:
  7. ------------------------------------------------*/
  8. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  9. #include<stdio.h>
  10. #include "18b20.h"
  11. #include "1602.h"
  12. #include "delay.h"

  13. bit ReadTempFlag;//定義讀時間標(biāo)志

  14. void Init_Timer0(void);//定時器初始化
  15. /*------------------------------------------------
  16.               串口通訊初始化
  17. ------------------------------------------------*/
  18. void UART_Init(void)
  19. {
  20.     SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
  21.     TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
  22.     TH1   = 0xFD;               // TH1:  重裝值 9600 波特率 晶振 11.0592MHz  
  23.     TR1   = 1;                  // TR1:  timer 1 打開                        
  24.     //EA    = 1;                  //打開總中斷
  25.     //ES    = 1;                  //打開串口中斷
  26.         TI=1;
  27. }
  28. /*------------------------------------------------
  29.                     主函數(shù)
  30. ------------------------------------------------*/
  31. void main (void)
  32. {                  
  33. int temp;
  34. float temperature;
  35. char displaytemp[16];//定義顯示區(qū)域臨時存儲數(shù)組

  36. LCD_Init();           //初始化液晶
  37. DelayMs(20);          //延時有助于穩(wěn)定
  38. LCD_Clear();          //清屏
  39. Init_Timer0();
  40. UART_Init();
  41. Lcd_User_Chr();       //寫入自定義字符
  42. LCD_Write_String(0,0," 111111 ");
  43. LCD_Write_Char(13,1,0x01);//寫入溫度右上角點
  44. LCD_Write_Char(14,1,'C'); //寫入字符C

  45. while (1)         //主循環(huán)
  46.   {

  47. if(ReadTempFlag==1)
  48. {
  49.   ReadTempFlag=0;
  50.   temp=ReadTemperature();

  51.   temperature=(float)temp*0.0625;
  52.   sprintf(displaytemp,"Temp  % 7.3f",temperature);//打印溫度值
  53.   LCD_Write_String(0,1,displaytemp);//顯示第二行
  54.   }        
  55. }
  56. }

  57. /*------------------------------------------------
  58.                     定時器初始化子程序
  59. ------------------------------------------------*/
  60. void Init_Timer0(void)
  61. {
  62. TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
  63. //TH0=0x00;              //給定初值
  64. //TL0=0x00;
  65. EA=1;            //總中斷打開
  66. ET0=1;           //定時器中斷打開
  67. TR0=1;           //定時器開關(guān)打開
  68. }
  69. /*------------------------------------------------
  70.                  定時器中斷子程序
  71. ------------------------------------------------*/
  72. void Timer0_isr(void) interrupt 1
  73. {
  74. static unsigned int num;
  75. TH0=(65536-2000)/256;                  //重新賦值 2ms
  76. TL0=(65536-2000)%256;

  77. num++;
  78. if(num==300)        //
  79.    {
  80.     num=0;
  81.     ReadTempFlag=1; //讀標(biāo)志位置1
  82.         }
  83. }


復(fù)制代碼


123-1個18b20溫度傳感器1602液晶顯示.7z

25.29 KB, 下載次數(shù): 41, 下載積分: 黑幣 -5

18b20溫度傳感器1602液晶顯示


作者: 黃瓜芝麻醬紫    時間: 2017-4-28 21:37
是12864顯示嗎?
作者: yangbaoren    時間: 2020-6-25 13:55
接口定義在哪




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