毕业设计—基于at89c51的温度计设计内容摘要:

必须被执行。 此外, AT89S52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。 在闲置模式下, CPU停止工作。 但 RAM,定时器,计数器,串口和中断系统仍在工作。 在掉电模式下,保存RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬 16 件复位为止。 显示模块采用的 4位动态共阳极数码管显示电路,如图 图 用数码管显示信息时,由于每个数码管至少需要 8 个 I/O 口,如果需要多个数码管,则需要太多 I/O 口,而单片机的 I/O 口是有限的。 在实际应用中,一般采用动态显示的方式解决此问题。 数码管动态显示的连接方式如图 所示。 思考:所有数码管的段选全部连接在一起,如何能显示不同的内容呢。 动态显示是多个数码管,交替显示,利用人的视觉暂留作用使人看到多个数码管同时显示。 在编程时,需要输出段选和位选信号,位选信号选中其中一个数码管,然后输出段 码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个 17 数码管,再输出对应的段码,高速交替。 例如需要显示数字 “12” 时,先输出位选信号,选中第一个数码管,输出 1 的段码,延时一段时间后选中第二个数码管, 输出 2 的段码。 把上面的流程以一定 的速度循环执行就可以显示出 “12” ,由于交替的速度非常快,人眼看到的就是连续的 “12” 在动态显示程序中,各个位的延时时间长短是非常重要的,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示暗且有重影。 由 PNP三极管与扬声器组成接单片机的 端口。 如图 图 声报警电路采用蜂鸣器与单片机相连接,蜂鸣器要用三极管驱动, 通过改变单片机 口的电位,就可以达到控制蜂鸣器的目的。 三 软件部分 本课题采用 C语言编写,主要用到单 片机的端口是,感温模块的 18 ,按键模块的 ,报警模块的 ,显示模块的 口到。 使用 DS18B20 集成温度传感器, 采用循环扫描的方 法进行测温,由七段数码管做显示,AT89S52 单片机做处理控制,该电路 最大的特点是用可以直观方便的调节所要限定的温度值,上电后会显示当 前的温度值,按设定键时会显示设定温度值,这时可以按上 /下调节键调整 设定温度值,再次按下设定键时返回当前温度显示同时会对设定温度值进 行保存,超过温度限制则进入报警程序。 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,按键扫描。 主程序主要功能是负责温度的实时显示,读出并处理 DS18B20测量当前的数量值,温度测量每 1秒进行一次,这样可以在一秒内测量一次。 四位动态显示 19 图 器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1;高温度系数 晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入。 器件中还有一个计数门,当计数门打开时, DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。 计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将- 55℃所对应的一个基数分别置入减法计数器 温度寄存器中,计数器 1和温度寄存器被预置在- 55℃所对应的一个基数值。 调用显示子程序 读出温度值 温度转换开始命令 温度计算处理 显示数据 1S到 初次上电 N Y Y N 初始 20 减法计数器 1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1的预置值减到 0时,温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计 数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到 0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。 其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 由表 , DS18B20温度转换的时间比较长,而且分辨率越DS18B20复位命令 跳过 ROM命令 读取温度命令 读取操作, CRC校验 移入温度暂存器 9 字节完 CRC校验 结束 Y N Y N 21 高,所需要的温度数据转换时间越长。 因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存 RAM的第 8字节保留未用,表现为全逻辑 1。 第9 字节读出前面所有 8 字节的 CRC码,可用来检验数据,从而保证通信数据的正确性。 当 DS18B20 接收到温度转换命令后,开始启动转换。 转换完成后的温度值就以 16位带符号扩展的二进制补码形式存储在高速暂存存储器的第 2 字节。 单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以 ℃/ LSB 形式表示。 当符号位 S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位 S=1 时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。 表 2 是一部分温度值对应的二进制温度数据。 一部分温度对应值表 温度 /℃ 二进制表示 十六进制表示 +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H + 0000 0001 1001 0000 0191H + 0000 0000 1010 0001 00A2H + 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H 1111 1111 1111 0000 FFF8H 1111 1111 0101 1110 FF5EH 1111 1110 0110 1111 FE6FH 55 1111 1100 1001 0000 FC90H 表 DS18B20 温度转换时间表 R1 R0 分辨率 /位 温度最大转向时间 /ms 22 0 0 9 0 1 10 1 0 11 375 1 1 12 750 表 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转换时间约为 750ms,在本程序设计中采用 1s 显示程序延时法等待转换的完成。 如图 图 DS18B20 完成温度转换后,就把测得的温度值与 RAM 中的 TH、 TL字节内容作比较。 若 T> TH或 T< TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。 因此,可用多只 DS18B20同时测量温度并进行报警搜索。 在 64位 ROM的最高有效字节中存储有循 环冗余检验码( CRC)。 主机ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 的 CRC 值作比较,以判断主机收到的 ROM数据是否正确。 DS18B20复位 开始 跳过 ROM命令 温度转换命令 结束 23 计算温度子程序将 RAM 中读取值进行 BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。