单片机电子时钟课程设计报告2.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

精品天地 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档