简易数字温度计设计Word文件下载.docx
- 文档编号:15879450
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:19
- 大小:213.50KB
简易数字温度计设计Word文件下载.docx
《简易数字温度计设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《简易数字温度计设计Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
AT89C52单片机是一种高性能8位单片微型计算机。
内核本身具有丰富的指令集,足够实现本次作品的全部基本功能和部分拓展功能,相比Atmega16我们对AT89C52更为熟悉,且芯片价格较低,性价比高。
方案二:
采用ATmega16芯片作为主控芯片。
由于对芯片的不熟悉,导致如果想要实现温度计全部基本功能和部分拓展功能,较为困难。
综上所述,选择方案一。
2.2显示模块的论证与选择
采用LCD1602显示。
LCD1602相对便宜,虽然其本身不能显示中文,但是温度计只需显示数字和一些英文,符合这次设计要求。
采用LCD12864显示。
LCD12864屏幕显示细腻直观,且可以显示中文,但是相对昂贵。
综上所述,选择方案一。
2.3按键模块的论证与选择
采用4X4矩阵按键。
尽管按键一目了然,但连线复杂,扫描过程烦琐,会耗费大量的系统资源。
独立按键,我们只使用了两个按键来调节上限,大大节省了系统硬件资源,便于系统扩展。
综上所述,选择方案二。
3系统理论分析与计算
3.1DS18B20的理论分析与计算
DS18B20通过编程,可以实现最高12位的温度存储值,在寄存器中,以补码的格式存储,如图1所示。
图1DS18B20温度数据格式
寄存器一共2个字节,LSB是低字节,MSB是高字节,其中MSb是字节的高位,LSb是字节的低位。
大家可以看出来,二进制数字,每一位代表的温度的含义,都表示出来了。
其中S表示的是符号位,低11位都是2的幂,用来表示最终的温度。
DS18B20的温度测量范围是从-55度到+125度,而温度数据的表现形式,有正负温度,寄存器中每个数字如同卡尺的刻度一样分布,如图2所示。
图2DS18B20温度值
二进制数字最低位变化1,代表温度变化0.0625度的映射关系。
当0度的时候,那就是0x0000,当温度125度的时候,对应十六进制是0x07D0,当温度是零下55度的时候,对应的数字是0xFC90。
反过来说,当数字是0x0001的时候,那温度就是0.0625度了。
4电路与程序设计
4.1电路的设计
4.1.1系统总体框图
系统总体框图如图3所示
图3系统总体框图
4.1.2控制按键&
LED电路
按下S1能增加温度报警上限,按下S2能减少温度报警上限。
测试温度低于上限时,绿灯LED1亮。
当温度超过设定的上限时,红灯LED2亮。
图4控制按键&
LED
4.1.3蜂鸣器电路
当测试温度超过设定温度时,蜂鸣器开启;
当测试温度低于设定温度时,蜂鸣器关闭。
蜂鸣器电流相对较大,因此需要用三极管驱动,并且加了一个1K欧的电阻作为限流电阻。
此外还加了一个D1二极管,这个二极管叫做续流二极管。
图5蜂鸣器电路
4.1.4显示电路
显示电路使用LCD1602,第一行显示”Temperature”第二行显示测试温度和温度上限,两者中间显示一个”>”或”<”。
RP1为上拉排阻。
图6显示电路
4.1.5传感器电路
图7传感器电路
4.1.6总体电路
图8整体电路
4.1.7电源
使用5V直流电源。
4.2程序的设计
4.2.1程序功能描述
(1)能够测试-30℃~+120℃的温度。
(2)按下S1能增加温度报警上限,按下S2能减少温度报警上限。
(3)测试温度低于上限时,绿灯亮,蜂鸣器关闭。
当温度超过设定的上限时,红灯亮且蜂鸣器响起。
4.2.2程序流程图
图9程序流程图
5测试方案与测试数据
5.1测试方案
5.1.1软件仿真测试
用Proteus7.5软件画出电路图,模拟硬件对程序进行调试。
5.1.2硬件软件联调
将编写的单片机C语言程序下载到实际硬件中,进行硬件软件联调。
5.2测试条件与仪器
测试条件:
检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:
数字示波器,数字万用表。
5.3测试结果
系统上电运行后,LCD能正常显示测试温度且绿灯点亮,测试温度每秒更新。
按下S1能使报警温度上限+1,按下S2能使报警温度上限-1。
当测试温度超过上限温度时,绿灯关闭,红灯点亮且蜂鸣器开启;
当测试温度低于上限温度时,红灯关闭,绿灯点亮且蜂鸣器关闭。
6总结
本系统以单片机STC89C52芯片为核心部件,利用LCD1602、独立按键、蜂鸣器、DS18B20并配合C语言算法实现了简易数字温度计设计,完成此次设计题目中的全部基本功能和部分拓展功能。
在系统设计过程中,力求硬件线路简单,充分发挥软件编程方便灵活的特点,来满足系统设计要求。
在本次设计的过程中,遇到了许多突发事件和困难,设计制作曾一度止步不前,但通过仔细分析和调整后解决了一个又一个的问题。
在整个过程中我们深刻的体会到团队精神的重要性,并提高了自己解决问题的能力。
附录主要源程序
main程序:
#include<
reg52.h>
sbitKEY1=P1^0;
//上调报警温度
sbitKEY2=P1^1;
//下调报警温度
sbitLED1=P1^2;
//正常时绿灯亮
sbitLED2=P1^3;
//报警时红灯亮
sbitBUZZ=P1^6;
bitenBuzz=0;
//蜂鸣器使能标志
bitflag1s=0;
//1s定时标志
unsignedintwarnT=30;
//报警温度值
unsignedcharT0RH=0;
//T0重载值的高字节
unsignedcharT0RL=0;
//T0重载值的低字节
voidConfigTimer0(unsignedintms);
unsignedcharIntToString(unsignedchar*str,intdat);
externbitStart18B20();
externbitGet18B20Temp(int*temp);
externvoidInitLcd1602();
externvoidLcdShowStr(unsignedcharx,unsignedchary,unsignedchar*str);
externvoidLcdWriteCmd(unsignedcharcmd);
voidmain()
{
bitres;
bitbackup=1;
inttemp;
//读取到的当前温度值
intintT,decT;
//温度值的整数和小数部分
unsignedcharlen,len1;
unsignedcharstr[12],str1[12];
EA=1;
//开总中断
P1=0XF3;
ConfigTimer0
(1);
//T0定时1ms
Start18B20();
//启动DS18B20
InitLcd1602();
//初始化液晶
while
(1)
{
if(flag1s)//每秒更新一次温度
flag1s=0;
res=Get18B20Temp(&
temp);
//读取当前温度
if(res)//读取成功时,刷新当前温度显示
intT=temp>
>
4;
//分离出温度值整数部分
decT=temp&
0xF;
//分离出温度值小数部分
len=IntToString(str,intT);
//整数部分转换为字符串
len1=IntToString(str1,warnT);
//报警温度转换为字符串
str[len++]='
.'
;
//添加小数点
decT=(decT*10)/16;
//二进制的小数部分转换为1
//位十进制位
str[len++]=decT+'
0'
//十进制小数位再转换为
//ASCII字符
str[len++]=0xdf;
//添加字符串“℃”
str[len++]='
C'
'
str[len]='
\0'
//添加字符串结束符
str1[len1++]=0xdf;
str1[len1++]='
str1[len1]='
if(intT<
warnT)//超过报警温度时执行报警
{
enBuzz=0;
//关闭蜂鸣器
LcdWriteCmd(0x01);
//清屏
LcdShowStr(2,0,"
Temperature"
);
//显示第一行
LcdShowStr(2,1,str);
//显示实时温度
LcdShowStr(9,1,"
<
"
LcdShowStr(11,1,str1);
//显示报警温度
}
else
{
enBuzz=1;
//启动蜂鸣器发声
LcdShowStr(4,0,"
Warning!
//显示警告
LcdShowStr(0,1,"
Temp:
LcdShowStr(5,1,str);
LcdShowStr(11,1,"
LcdShowStr(12,1,str1);
//显示报警温度
}
}
else//读取失败时,提示错误信息
LcdShowStr(4,1,"
error!
//重新启动下一次转换
}
/*按键动作函数*/
voidKeyAction()
if(KEY1==0)
KEY1=1;
warnT++;
elseif(KEY2==0)
KEY2=1;
warnT--;
/*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 温度计 设计