社区
单片机/工控
帖子详情
51单片机LCD1602显示温度DS18B20
qq_26391419
2015-05-07 04:30:48
STC98C52的
在LCD上显示
画面1:开机画面
画面2:
temperature is:
× × .×
画面3:
TH is: × ×
TL is:× ×
画面2、3通过按键切换
TH、TL分别是程序设定的温度上、下限值,如果低于下限或高于上限,发出扬声器1s周期报警
画面4,是一个显示时间的。
有哪位大神,可以帮忙做一下,万分感谢
用C作呀,汇编露珠看不懂。。。。
...全文
720
4
打赏
收藏
51单片机LCD1602显示温度DS18B20
STC98C52的 在LCD上显示 画面1:开机画面 画面2: temperature is: × × .× 画面3: TH is: × × TL is:× × 画面2、3通过按键切换 TH、TL分别是程序设定的温度上、下限值,如果低于下限或高于上限,发出扬声器1s周期报警 画面4,是一个显示时间的。 有哪位大神,可以帮忙做一下,万分感谢 用C作呀,汇编露珠看不懂。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
manices
2019-01-17
打赏
举报
回复
参考一下我的历程
一条晚起的虫
2019-01-02
打赏
举报
回复
// DS18B20有C51的库 // LCD1602有C51的库 // 按钮就更不用说了,GPIO // 然后就是程序逻辑了。
weixin_44084787
2018-12-29
打赏
举报
回复
#include<reg52.h> #include<intrins.h> sbit DQ=P1^4;//温度采集 sbit latch1=P2^2;//段锁存 sbit latch2=P2^3;//位锁存 unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码0~9 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//点亮数码管 unsigned char TempData[8];//存储显示的度数 bit Readtime;//读取时间的标志 //定义延时函数delayus,delayms void delayus(unsigned char t) { while(--t); } void delayms(unsigned char t) { while(t--) { delayus(245); delayus(245); } } //18b20初始化 bit ds18b20() { bit test=0; DQ=1;//复位DQ delayus(5);//稍作延时 DQ=0;//将DQ拉低 delayus(200);//精确延时 >480us <960us delayus(200); DQ=1;//将DQ拉高 delayus(50);//延时15~60us后,接收脉冲 test=DQ;//判断是否初始化成功 delayus(25);//延时后返回值 return test; } //显示程序函数 void Display(unsigned char FirstBit,unsigned char Num) { static unsigned char i=0; P0=0;//防止有重影 latch1=1;//段锁存 latch1=0; P0=dofly_WeiMa[i+FirstBit];//取位码 latch2=1;//位锁存 latch2=0; P0=TempData[i];//取显示数据,取段码 latch1=1;//段锁存 latch2=0; i++; if(i==Num) i=0; } //读取数据函数 unsigned char Readchar() { unsigned char i=0; unsigned char test=0; for(i=8;i>0;i--) { DQ=0; test>>=1;//右移一位 DQ=1; if(DQ) test|=0x80; delayus(25); } return(test); } //写入数据函数 void Writechar(unsigned char test) { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=test&0x01; delayus(25); DQ=1; test>>=1; } delayus(25); } //读取温度函数 unsigned int ReadTempture() { unsigned char a=0; unsigned int b=0; unsigned int t=0; ds18b20(); Writechar(0xCC);//跳过读序列号 Writechar(0x44);//启动温度转换 delayms(10); ds18b20(); Writechar(0xCC);//跳过读序列号 Writechar(0xBE);//读取温度 a=Readchar();//高8位 b=Readchar();//低8位 b<<=8; t=a+b; return(t); } //主函数main void main() { unsigned int TempH,TempL,Temp; TMOD |= 0x01;//确定使用哪个定时器,确定工作模式 EA=1; //打开中断允许 ET0=1; //定时器T0中断允许 TR0=1; //启动T0 while(1) { if(Readtime==1) { Readtime=0; Temp=ReadTempture(); if(Temp&0x8000) { TempData[0]=0x40;//表示为负数 Temp=~Temp;//取反码 Temp+=1;//取补码 } } else TempData[0]=0;//表示为正数 TempH=Temp>>4; TempL=Temp&0x0F; TempL=TempL*6/10;//小数近似处理 if(TempH/100==0) TempData[1]=0;//百位温度 else TempData[1]=dofly_DuanMa[TempH/100];//十位温度 if((TempH/100==0)&&((TempH%100)/10==0))//消隐 TempData[2]=0; else TempData[2]=dofly_DuanMa[(TempH%100)/10];//十位温度 TempData[3]=dofly_DuanMa[(TempH%100)%10]|0x80;//个位温度,带小数点 TempData[4]=dofly_DuanMa[TempL];//小数位温度 TempData[6]=0x39;//显示符号C } } //定时中断函数 void Timer0_isr() interrupt 1 { static unsigned int num; TH0=(65536-2000)/256; TL0=(65536-2000)%256; Display(0,8);//调用函数 num++; if(num==300) { num=0; Readtime=1; //读标志位置1 } }
esprite2000
2015-05-08
打赏
举报
回复
作业怎么都发论坛上了
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Proteus仿真实例 用1602LCD与
DS18B20
设计的
温度
报警器
51单片机
Pro
单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)
单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语言程序设计22 用1602LCD与
DS18B20
设计的
温度
报警器(基于8051+Proteus仿真)单片机C语
温度
传感器
DS18B20
-第2季第1部分
本课程是《朱有鹏老师单片机完全学习系列课程》第2季第1个课程,主要讲解单片机系统中常用的
温度
传感器
DS18B20
。本课程的目标是让大家进一步掌握时序的分析和编程实现,学会移植和调试
DS18B20
的程序,能够读取
温度
。
51单片机
Ds1302及
温度
Ds18B20
+1602液晶
显示
51单片机
Ds1302及
温度
Ds18B20
+1602液晶
显示
,测试正常
显示
可以设置时间。
【
51单片机
】
温度
传感器
DS18B20
程序
LCD1602
显示
.doc
【
51单片机
】
温度
传感器
DS18B20
程序
LCD1602
显示
.doc
单片机/工控
27,373
社区成员
28,771
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章