单片机DS18B20温度控制系统研制

第五章 结果分析
5.1 PROTEUS仿真

总体电路原理图设计好后,在KEIL3里用C语言编出相应的程序,程序调试在没有问题后,接着就对程序进行仿真,总体思路是:由局部到整体。首先进行键盘设定温度值并用数码管显示的仿真,再进行DS18B20采集温度并用数码管显示的仿真,这两个关键部分完成后,就进行总体程序的仿真。

5.1.1 键盘设定温度仿真

将4×4键盘的扫描程序编好后,在PROTEUS里进行仿真,发现当我按下某个按键时,数码管的百位,十位,各位显示的都是那个键的值,比如我按下3的时候,这三个位的数码管都是3,思考了许久,我初步判断原因可能是是按键按下后,因为键盘一直处于按下的状态,而按键扫描程序扫描按键的速度非常快,以至于我按下一次,键盘扫描了好些次,如此想后,我就设定一个标志位,按键按下置1,键抬起置0,但效果依旧不佳;最后,我在扫描每行键的最后都加上一个判断按键是否释放的程序,如释放,再读取键值,如此之后,就能正确输入按键的值,比如,我要输入123,就只需要依次按下1、2、3。
如图5-1所示,键盘设定初值32℃并用数码管显示

图5-1 键盘设定温度32℃仿真

5.1.2 温度采集仿真

根据DS18B20的时序图编好程序并在KEIL3里检查好语法没有错误后,链接到PROTEUS里进行仿真。开始在PROTEUS里设定改变温度的步长为1℃,在软件里也就相应的将采集到的温度设置为整数,上下限与这个整数相差为一度。这样会使误差加大,之后将仿真的步长改为0.1℃,程序也做出相应的的修改,使实际温度保留一位小数。仿真能够获取实际温度,这个实际温度可从DS18B20的仿真模型中设置。如图5-2所示,PROTEUS仿真温度采集,获取当前的环境温度为28.7℃。

图5-2 温度采集仿真

5.1.3 整体仿真

因为实际温度保留一位小数,在仿真的时候,就出现了一个错误,比如,我设定的温度为28摄氏度时,在正确的情况下,蜂鸣器会在实际温度小于27℃和大于29℃报警,但是仿真出来的结果是小于27℃时,蜂鸣器报警,但是当温度大于29℃时蜂鸣器并未报警,直至实际大于30℃时蜂鸣器才会报警。仔细检查程序后,我发现在读温度子程序模块中,我读取的是实际温度的10倍并取整,然后在我将其与实际值比较之前,又让其除以10,所得值赋给一个整形数,这样就出现了这样种情况,比如,我最初测得的实际值是27.8℃,10倍变为278℃,这是为了方便显示,为了判断是否报警,我要将其与设定值比较,又设定值是个整形数,因此,将此数缩小10倍,赋给一个整形数后实际温度就变为27℃。如此实际温度就当于自减了1℃,故要到实际值为30℃时才能报警。实际温度比设定小1℃能报警,又是因为,只有实际值比设定值小1℃才会报警,实际温度等于设定的下限并不会报警,因此,(27.0-27.9)℃赋值给整形数始终是27℃,只有当实际温度小于27℃时,实际值才会小于下限(设定值28-1),蜂鸣器才会警报。找出问题的所在后,我将设定值扩大10倍,再与实际值的10倍比较,这样就很好的解决了这个问题。仿真总体完毕。
由上可知,在仿真调试过程中,我遇到了很大的麻烦。在仿真的过程中,有时会感觉程序和硬件都没有一点问题,但是就是不能实现系统所要实现的功能,因为它不允许软件和硬件有一点问题,哪怕是细小的一点问题都不允许。举一个最简单的例子,就拿数码管显示程序的调试仿真来说,PROTEUS 里单片机的I/O口可以直接驱动动态显示的数码管,但在实际中却是不可以的。
因为在PROTEUS中加热装置和实际出入大,所以在PROTEUS里进行加热仿真就是成功也没有太大的实际意义,所以我只进行了系统中两个重要部分的软件仿真,以及这两部分合起来的一个总体仿真。

5.2实际运行结果

仿真结果符合预期后,我就着手实物的制作,将所用到的元件焊接在电路板后,就开始测试系统性能。第一次因为焊接技术不过关,数码管显示时好时坏,为了求得个良好的结果,我又重新将元件焊接在另一块板子上,积累了上次焊接的经验后,第二次的焊接效果比之前好了很多,数码管显示正常。由于是动态显示,数码管的亮度不是很高。
加热装置我选择的是PTC加热器,其功率为120W,很小,只能在比较小的空间内才能进行温度控制。在实际的试验中,DS18B20在以此加热器为圆心,以半径20CM为圆,高度不超过15CM圆柱范围内,控制效果良好,误差较小。以下简述实际试验的一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无限虚空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值