DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 802|回复: 1
打印 上一主题 下一主题

简单的温度指示器使用基于RISC的MCU

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 17:44:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      非常简单的温度指示器可以在8位RISC微控制器周围构建(参见图)。来自温度感应器的数据由MCU处理并且用于显示温度。在本电路中使用的MAX6577温度感应器可以测量范围在-40°C至125°C之间的温度。它几乎不需要其他外部元件。这个感应器可以将温度转换成其输出信号频率与绝对温度(K)成比例的方形波。如果这个频率已经测量出来了,计算温度就会变得相当容易。这可以通过不同的时间测量电路或者MCU中提供的定时器来实现。
      这个电路使用AVR AT90S4433低成本MCU用来处理感应器数据和显示温度。在其他器件中,这个MCU配有4千字节的系统内可编程闪存、128字节的SRAM、128字节的系统可编程EEPROM、一个六通道10位ADC、20个可编程I/O线路、多个定时器和一个UART。
      温度在三个共阳极的七段显示器上显示。显示器的各个段都连结在一起,在软件的帮助下对显示的数据进行复用。这种方法不仅减少了I/O接口线路数,而且还降低了电流要求。
      显示器连接到MCU的端口D。为显示温度读数,数据被锁存在这个端口上,且相应的显示器被激活。这可以通过定时器0来实现,该定时器被配置具有64预标定因子。只要定时器0发生计数上溢,就会产生中断。定时器0的ISR锁存端口D(即显示器的数据总线)上的显示数据,并且生成相应的信号来启用各自的显示器装置(在端口B处,并且通过各自的晶体管Q1、Q2或者Q3)。



      温度测量使用定时器1来实现。定时器计数确定了输入信号的脉冲宽度。sensorstatus()子程序重复检查感应器信号的逻辑状态。一旦检测到第一个上升边沿,就会启用先前在定时器模式中将预定标因子配置为1的定时器。然后,当检测到感应器信号的第一个下降沿时,就会停用定时器。接着,定时器内容就会被显示出来,并且可以用于计算温度感应器信号的脉冲宽度。定时器内容显示之后,定时器就会被重新初始化为0。一旦信号的时间周期已知,即可轻松地算出信号频率(fOUT=1/tOUT)。此后就会检查数据是否超过这个限制。
      由于输入信号是一个占空比为50%的方波,所以总的脉冲周期为宽度的2倍。因此,温度的计算公式为CPU_FREQ/(2×宽度)。然后,从中减去273.15 K即可得到摄氏度温度。通过执行可以处理浮点数据的AVR-GCC开发环境,将脉冲的时间周期转换成温度已经变得相当简单。
      要显示的范围状态和温度信息通过变量“r”来实现。一旦定时器0的ISR处于激活状态,就会检查“r”的值,并且各自的数据也会被锁存端口D上,这取决于DISPLAY_ON变量的值,这个变量也可以用来选择各自的激活的七段显示器单元。如果输入数据在范围之内,则ISR调用binarytobcd()子程序,这个子程序可以将二进制数据转换成有效的BCD格式。BCD数据(半字节)是根据激活的七段显示器单元来分开的,这可以再次通过关联DISPLAY_ON的值来实现。一旦ISR完成了它的工作,定时器0就会被重新初始化为一个值(Refresh_Val),这个值将产生下一个中断,接着显示下一数据,并且不会引起闪烁。
      本软件使用AVR-GCC开发环境编写。它可以处理所有的AVR MCU功能,包括不同的中断、EEPROM、定时器、UART和ADC等。本软件被用来编译C源程序,并生成HEX文件。可以使用基于并行端口的编程器(例如uisp)将这个文件下载到MCU的系统内可编程闪存中。
      可以方便地进行修改本软件,从而显示从-40°C至125°C这个完整范围内的温度,或者以华氏度显示数据。还可以修改这个软件以显示输入信号的频率。
                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 分享分享 支持支持 反对反对
沙发
发表于 2013-10-5 00:40:08 | 只看该作者
正需要这个呢~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-26 00:24 , 耗时 0.086542 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表