- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机电子体温计
课程设计报告
学院:电气
专业:建筑电气与智能化
姓名:牛宏亮
学号
一、设计内容
利用18B20测人体温度,显示在LED数码管3位,含小数点:例如37.1。当温度超过40度会自动报警提示注意。
二、设计方案
本次设计时钟电路,使用了STC89C52单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂.数码管引脚接上拉电阻。显示精度为0.1摄氏度。当温度超过25摄氏度时蜂鸣器会蜂鸣报警。
(一)设计方案的选择
方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二 用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。(二)硬件部分
1.本设计采用STC89C52单片机作为控制器,完成所有功能的控制
包括:
DS18B20数字温度传感器的初始化与读取温度值
LED数码管显示驱动与控制
按键识别与响应控制
温度设置和报警
温度值的存储和读取
STC89C52单片机管脚结构图
2 总电路原理图
(三)软件部分
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能。如测量、计算、显示、通讯等。主程序需要调用4个子程序。以下为各子程序及其功能。
数码管显示程序:向数码管的显示送数,控制系统的显示部分。
温度测试及处理程序:对温度芯片送来的数据进行处理,进行判断和显示。
报警子程序:进行温度上下限判断及报警输出。
中断设定程序:实现设定上下限报警功能。
DS18B20的相关命令如下表:
主程序流程框图:
(四)程序
#includereg52.h
//#includemath.h
#includeintrins.h
#define C_Temp 25 //报警温度
#define D_Port P0
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P2^0;
sbit BUZZ = P1^0;
sbit Seg1 = P2^2;
sbit Seg2 = P2^3;
sbit Seg3 = P2^4;
sbit Seg4 = P2^5;
uint T, Tem1, Tem2, temp; //用于计算的温度,前一次温度,当前温度
uchar count; //1秒计数标志
uchar c1, c2; //扫描计数
bit Flag; //1秒标志
uchar Sheet[3] = {0, 0, 0}; //十位个位十分位显示的数字值,未解码
uchar code Dcode1[12] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09, 0x63, 0xfd}; //不带DP的段码0~9,c,-.
uchar code Dcode2[11] = {0x02, 0x9e, 0x24, 0x0c, 0x98,0x48,
0x40, 0x1e, 0x00,0x08, 0xff}; //带DP的段码0~9
/*================================================
函数名称:void delay(uint z)
函数功能:延时z ms
输入参数:z
输出参数:无
=================================================*/
void delay(uint z)
{
uint x,y;
for (x = z; x 0; x--)
for (y = 110; y 0; y--);
}
/*===================================================
函数名称:void delay1us(uint x)
函数功能:延时几微妙
输入参数:x
输出参数:无
=====
文档评论(0)