📄 ds18b20lcd.c
字号:
/*********************************** 程序功能说明 *******************************************
液晶显示当前温度
********************************************************************************************/
#include <reg52.h>
#include <math.h>
#include <intrins.h>
#include <1602lcd.h>
#include <DS18B20.h>
#define uchar unsigned char
extern void lcd_init();
extern void display(uchar pos,uchar len, uchar *q);
extern void ZIMO2CGRAM(uchar pos,uchar len, uchar *q);
//void delay10us(int n);
//extern void delay(uchar) ;//**
extern void readtemp(void);
uchar dispbuf[7]; //显示缓冲区
extern uchar temper[2];//存放温度的数组
code uchar fuhao[]={0x07,0x05,0x07,0x00,0x00,0x00,0x00,0x00,0x00};
code uchar cold[]={" COLD "};
code uchar cool[]={" COOL "};
code uchar hot[]= {" HOT "};
code uchar warm[]={" WARM "};
/*******************************主函数***********************/
main()
{ uchar i;
uchar temp;
float backbit;
TMOD=0x01;
TH0=0xff;
TL0=0xf5;
EA=1;
ET0=1;
TR0=1;
for(i=0;i<4;i++)dispbuf[i] = 0x30;
lcd_init() ; // 初始化LCD
ZIMO2CGRAM(0x00,9, fuhao);
while(1){
//P1=0x00;
//delay10us(10);
// P1=0xff;
readtemp();//读18B20
backbit = temper[0];//换成浮点数
backbit = backbit * 6.25;//乘以0.0625*100
temp = backbit;//取低2位整数部分
dispbuf[4] = temp%10;
temp = temp/10;
dispbuf[3] = temp%10 ;
temp = temper[1];//取整数部分
dispbuf[1] = temp%10;
temp = temp/10;
dispbuf[0]= temp%10;
// seg_scan();
switch(dispbuf[0])
{ case 0:display(0x40,sizeof(cold),cold);
break;
case 1:display(0x40,sizeof(cool),cool);
break;
case 2:display(0x40,sizeof(warm),warm);
break;
case 3:display(0x40,sizeof(hot),hot);
break;
default:break;
};
dispbuf[0]=dispbuf[0]|0x30;
dispbuf[1]=dispbuf[1]|0x30;
dispbuf[2]='.';
dispbuf[3]=dispbuf[3]|0x30;
dispbuf[4]=dispbuf[4]|0x30;
dispbuf[5]=0x00;
dispbuf[6]='C';
display(0x04,sizeof(dispbuf),dispbuf) ;
}
}
/********************************结束************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -