51單片機視頻教程中,是用數碼管來顯示溫度的,這里用LCD1602來顯示數據,效果圖如下
_1UA(U81828XJM7U]~L~YQE.jpg (159.58 KB, 下載次數: 42)
下載附件
2020-3-8 11:44 上傳
下面是代碼,采用模塊化編程,分成LCD1602和DS18B20兩個模塊,在LCD1602的程序中調用DS18B20的讀取溫度數據,主函數中調用LCD1602的顯示數據,從而顯示溫度
1.主函數代碼
- #include "reg52.h"
- #include "lcd1602.h"
- #ifndef u8
- #define u8 unsigned char
- #endif
- #ifndef u16
- #define u16 unsigned int
- #endif
- void main()
- {
- LcdDisp();
- while(1);
- }
復制代碼 2.LCD1602代碼
- #include "lcd1602.h"
- #include "ds18b20.h"
- extern u8 Tempdata[9]; //聲明ds18b20中保存溫度數據的數組,擴展使用范圍
- void Lcd1602_Delay1ms(u8 c) //誤差 0us
- {
- u8 a,b;
- for (; c>0; c--)
- {
- for (b=199;b>0;b--)
- {
- for(a=1;a>0;a--);
- }
- }
- }
- void Lcd1602WriteCom(u8 com) //寫命令函數
- {
- LCD_E=0;
- LCD_RS=0; //寫命令,RS=0
- LCD_RW=0;
- LCD_DATAPIN=com;
- Lcd1602_Delay1ms(1);
- LCD_E=1;
- Lcd1602_Delay1ms(5);
- LCD_E=0;
- }
- void Lcd1602WriteDat(u8 dat) //寫數據函數
- {
- LCD_E=0;
- LCD_RS=1; //寫數據,RS=1
- LCD_RW=0;
- LCD_DATAPIN=dat;
- Lcd1602_Delay1ms(1);
- LCD_E=1;
- Lcd1602_Delay1ms(5);
- LCD_E=0;
- }
- void LcdInit() //初始化函數
- {
- Lcd1602WriteCom(0x38); //功能設置指令,總線8位,顯示2行,5x7點陣每個字符
- Lcd1602WriteCom(0x0c); //顯示開關控制指令,顯示功能開,無光標
- Lcd1602WriteCom(0x06); //模式設置指令,寫入新數據后光標右移,顯示屏不移動
- Lcd1602WriteCom(0x01); //清屏指令
- Lcd1602WriteCom(0x47+0x80); //寫入第二行倒數第八個位置
- }
- void LcdDisp() //顯示函數
- {
- u8 i;
- LcdInit(); //LCD初始化
- tempdatapros(Tempdata); //讀取溫度數據,存入數組中
- for(i=0;i<9;i++)
- {
- Lcd1602WriteDat(Tempdata[i]);
- }
- }
復制代碼- #ifndef _LCD1602_H_
- #define _LCD1602_H_
- #include "reg52.h"
- #ifndef u8
- #define u8 unsigned char
- #endif
- #ifndef u16
- #define u16 unsigned int
- #endif
- #define LCD_DATAPIN P0 //定義數據口
- sbit LCD_RS=P2^6;
- sbit LCD_RW=P2^5;
- sbit LCD_E=P2^7;
- void LcdDisp();
復制代碼
3.DS18B20代碼
- #ifndef __ds18b20_H_
- #define __ds18b20_H_
- #include "reg52.h"
- #ifndef u8
- #define u8 unsigned char
- #endif
- #ifndef u16
- #define u16 unsigned int
- #endif
- sbit DSPORT=P3^7; //定義數據管腳
- void tempdatapros(u8 Tempdata[]);
- #endif
復制代碼
這個程序的缺點是不能實時更新溫度數值,可以加中斷函數或者其它函數來設定隔多長時間更新一次
歡迎大家在此基礎上創
全部資料51hei下載地址:
LCD1602 DS18B20.zip
(36.4 KB, 下載次數: 78)
2020-3-8 11:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|