#include <REGX51.H>
#include "lcd1602.h"
#include "OneWire.h"
#include "ds18b20.h"
unsigned char LCD1602_Flage;
void Timer0_Init(void);
void main()
{
int temp; //保存温度数据 中间数据
float tmp; //用来温度数据
unsigned char str[12]; //保存数据转从字符串 ASCII
unsigned char len;
bit ack;
Timer0_Init();
LCD_Init();
Start18B20();
DelayXms(10);
while(1)
{
if(LCD1602_Flage)
{
LCD1602_Flage = 0;
ack = Read18B20(&temp);
if(ack)
{
if(temp<0)
{
LCD_SetPosition(0,0);
LCD_WriteData('-'); //表示负数
temp = ~temp; //负数的存储是补码 需要取反后+1 得到原码
temp = temp+1;
tmp = temp;
temp = tmp*0.0625*100; //小数点后保留两位数
}
else
{
LCD_SetPosition(0,0);
LCD_WriteData(' '); //如果为+ 此处为空格
tmp =temp;
temp = tmp*0.0625*100;//小数点后保留两位数
}
if(temp>=10000) //如果温度超过了100
{
LCD_SetPosition(2,0);
LCD_WriteData('0'+temp/10000); //百位
LCD_WriteData('0'+temp%10000/1000); //十位
LCD_WriteData('0'+temp%1000/100); //各位
LCD_WriteData('.');
LCD_WriteData('0'+temp%100/10); //小数部分
LCD_WriteData('0'+temp%10); //小数部分
}
else
{
if(temp>=1000) //温度大于等于10°C
{
LCD_SetPosition(2,0);
LCD_WriteData('0'+temp%10000/1000); //十位
LCD_WriteData('0'+temp%1000/100); //各位
LCD_WriteData('.');
LCD_WriteData('0'+temp%100/10); //小数部分
LCD_WriteData('0'+temp%10); //小数部分
LCD_WriteData(' ');//数据对齐,清除原有的显示
}
else //温度小于10
{
LCD_SetPosition(2,0);
LCD_WriteData('0'+temp%1000/100); //各位
LCD_WriteData('.');
LCD_WriteData('0'+temp%100/10); //小数部分
LCD_WriteData('0'+temp%10); //小数部分
LCD_WriteData(' ');//数据对齐,清除原有的显示
LCD_WriteData(' ');//数据对齐,清除原有的显示
}
}
}
Start18B20();
}
}
}
void Timer0_Isr(void) interrupt 1
{
static unsigned char Time0Cnt = 0;
TR0 = 0;
Time0Cnt++;
if(Time0Cnt >= 100)
{
Time0Cnt = 0;
LCD1602_Flage = 1;
}
TL0 = 0x00; //设置定时初始值
TH0 = 0xDC; //设置定时初始值
TR0 = 1;
}
void Timer0_Init(void) //10毫秒@11.0592MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x00; //设置定时初始值
TH0 = 0xDC; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
EA = 1;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
LCD1602+DS18B20的温度读取显示编程.rar (65个子文件)
DS18B20的温度读取显示编程
OneWire.c 1KB
lcd1602.c 2KB
key.c 453B
OneWire.h 228B
Objects
char.build_log.htm 2KB
ds18b20.__i 125B
ds18b20.obj 7KB
main.__i 116B
char.hex 6KB
char.lnp 201B
delay.__i 119B
UART.__i 116B
STARTUP._ia 94B
OneWire.obj 7KB
key.__i 113B
delay.obj 2KB
char 33KB
新建文件夹
OneWire.__i 125B
STARTUP.obj 819B
lcd1602.__i 125B
UART.obj 6KB
menu.obj 6KB
lcd1602.obj 9KB
main.obj 11KB
key.obj 3KB
menu.__i 116B
ds18b20.h 667B
key.h 226B
Target 1.BAT 589B
STARTUP.A51 6KB
menu.c 558B
C51串口.pdsprj 21KB
Project Backups
C51串口 [20240916, 10-21-53].pdsprj 20KB
C51串口 [Autosaved].pdsprj 22KB
C51串口 [20240918, 19-30-10].pdsprj 22KB
C51串口 [20240917, 21-45-10].pdsprj 20KB
C51串口 [20240915, 20-13-10].pdsprj 20KB
C51串口 [20240917, 23-53-07].pdsprj 20KB
C51串口 [20240918, 20-03-41].pdsprj 22KB
C51串口 [20240918, 16-43-41].pdsprj 21KB
C51串口 [20240918, 16-43-44].pdsprj 22KB
C51串口 [20240918, 20-04-41].pdsprj 22KB
C51串口 [20240915, 20-10-26].pdsprj 19KB
menu.h 169B
lcd1602.h 2KB
Listings
ds18b20.lst 2KB
UART.lst 3KB
OneWire.lst 3KB
delay.lst 2KB
main.lst 6KB
key.lst 2KB
STARTUP.lst 14KB
lcd1602.lst 5KB
menu.lst 2KB
char.m51 25KB
char.uvopt 7KB
C51串口.pdsprj.DESKTOP-NIOO6N1.1726.workspace 6KB
ds18b20.c 791B
UART.h 427B
delay.h 171B
char.uvproj 15KB
UART.c 1KB
delay.c 625B
char.uvgui.1726 92KB
main.c 3KB
共 65 条
- 1
资源评论
落樱物归原主
- 粉丝: 3
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python的函数的基本用法学习包
- f13b0fd5eq9352b28b6309177764c804.apk
- x64WinQSB安装程序v4.1
- 2023-04-06-项目笔记 - 第二百八十四阶段 - 4.4.2.282全局变量的作用域-282 -2025.10.12
- 数据集-目标检测系列- 降落伞 滑翔机 检测数据集 glider >> DataBall
- 数据集-目标检测系列- 战斗机 检测数据集 fighter-plane >> DataBall
- mybatis-plus代码生成自定义templates
- 数据集-目标检测系列- 手提包 检测 检测数据集 hand bag>> DataBall
- 数据集-目标检测系列- 手表 腕表 检测数据集 wristwatch >> DataBall
- 自动化车间安全生产服务的标准制定与应用指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功