
基于C51单片机的LCD1602与DS18B20温度传感器驱动源码及KEIL工程文件.zip
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本资源提供了一个基于C51单片机控制LCD1602显示及通过DS18B20温度传感器测温的完整项目,包含源代码和KEIL开发环境配置文件。
LCD1602显示屏与DS18B20测温C51单片机驱动源码KEIL工程文件可以作为学习设计的参考。
```c
void main(){
LCD1602_Init(); //初始化LCD1602
DS1302_Init(); //初始化DS1302
LCD1602_write_com(0x80);
LCD1602_write_word(Welcome to use!);
Temp_Buffer = Get_temp(); //读取DS18B20的值
Delay_ms(1000);
LCD1602_write_com(0x01); //清屏
while(1) {
DS1302_GetTime(&DS1302Buffer); //获取当前RTCC值
if(Flag_Time_Refresh == 1 && Flag_KEY_Set == 0){
//数据更新时才刷新LCD
Flag_Time_Refresh = 0;
Display_RTCC(); //显示实时时钟
Display_Temp(); //获取并显示温度值
}
Scan_Key(); //按键扫描
switch(KEY_NUM) {
case 1:
KEY_NUM = 0; //清空按键标志
Flag_KEY_Set = ~Flag_KEY_Set; //设置按键标志位翻转
if(Flag_KEY_Set){
LCD1602_write_com(0x0d); //LCD1602指针闪烁开
LCD1602_write_com(0x80+ 3); //指针设置到第一行第4列
KEY2_Count = 0; //按键S2计数清零
} else {
LCD1602_write_com(0x0c); //LCD1602指针闪烁关
}
break;
case 2:
KEY_NUM = 0; //清空按键标志
if(Flag_KEY_Set){ //在设置状态时运行
KEY2_Count++;
if(KEY2_Count == 7)
KEY2_Count = 0;
switch(KEY2_Count){
case 0: LCD1602_write_com(0x80+ 3); //指针指向年,闪烁
break;
case 1: LCD1602_write_com(0x80+ 6); //指针指向月,闪烁
break;
case 2: LCD1602_write_com(0x80+ 9); //指针指向日,闪烁
break;
case 3: LCD1602_write_com(0x80+ 15); //指针指向星期,闪烁
break;
case 4: LCD1602_write_com(0x80+ 0x40 + 1); //指针指向小时,闪烁
break;
case 5: LCD1602_write_com(0x80+ 0x40 + 4); //指针指向分钟,闪烁
break;
case 6: LCD1602_write_com(0x80+ 0x40 + 7); //指针指向秒钟,闪烁
break;
default : break;
}
}
break;
case 3:
KEY_NUM = 0; //清空按键标志
if(Flag_KEY_Set){ //在设置状态时运行
switch(KEY2_Count){
case 0: DS1302Buffer.Year++;
if(DS1302Buffer.Year > 99)
DS1302Buffer.Year = 70;
break;
}
}
break;
}
}
```
以上代码展示了LCD驱动初始化、时间获取显示和温度读取,以及按键设置功能的实现。
全部评论 (0)


