求改变各原件的属性并把各个原件按原理图连接起来。在原理图绘制连接好后再把编译好的程序加载到其中[11]。最后根据系统要实现的功能分步进行仿真[12]。 把温度传感器DS18B20温度设置为26.4摄氏度,用键盘S2调节系统预设的温度为22摄氏度。点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为+14.2r/s,如图3.3.2所示。 图3.3.2 Proteus仿真效果图一 [11]
楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J].科技信息,2010,23:第50页 [12]
王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J] .IT技术,2006,20:10—11
17
当把温度传感器DS18B20温度设置为28.4摄氏度,用键盘S2调节系统预设的温度为22摄氏度。点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时直流风扇电机的转速为+23.3 r/s,如图3.3.3所示。 图3.3.3 Proteus仿真效果图二 当把温度传感器DS18B20温度设置为33.4摄氏度,用键盘S2调节系统预设的温度为22摄氏度。点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时直流风扇电机的转速为+32.0 r/s,如图3.3.4所示。 18
图3.3.4 Proteus仿真效果图三 在上一步仿真的基础上(温度传感器DS18B20温度设置为33.4摄氏度,系统预设的温度为22摄氏度),用键盘S2调节系统预设温度至34摄氏度,此时可知系统预设温度大于温度传感器检测到的温度,观察到直流风扇电机的转速逐渐变慢,最后转速变为0,符合系统要实现的功能,如图3.3.5所示。 19
图3.3.5 Proteus仿真效果图四 通过以上仿真可以看出,直流风扇电机在系统设定温度一定的情况下,其转速随着环境温度(温度传感器检测到的温度)的增加而增大。当环境温度低于系统预设的温度时,风扇自动停止运转,实现了系统所设计的功能。当然,在此没有实现风扇直流电机的无级调速,本系统实现的是电机在随环境温度变化的四个等级的速度变化,环境温度在一定小范围内变化风扇电机转速是不变的,只有超过了设定的某一界限时转速才会变化。
20
第四章 系统调试
4.1 软件调试
4.1.1 按键显示部分的调试
起初根据设计编写的系统程序:程序的键盘接口采用P1口,数码管显示采用P0口控制LED的断码,P2口控制LED的位码,从而实现键盘功能及数码管的显示。经过编译没有出错,但在仿真调试时,数码管显示的只是乱码,没有正确的显示温度,按键功能也不灵,当按下键时,显示并不变化。
经过查找分析,发现键盘扫描程序没有没有按键消抖部分,按键在按下与松手时,都会有一定程度的抖动,从而可能使单片机做出错误的判断,导致按键条件预设温度时失灵,甚至根本不能工作。因此必须在按键扫描程序中加入消抖部分,即在按键按下与松手时加入延时判断,以检测键盘是否真的按下或已完全松手。
数码管不能正确的显示,主要是因为所以数码管的段码都由P0口传送,而数码管显示又采用了动态扫描的方式,但在程序中却没有设置显示段码的暂存器,导致当P0口传送段码时发生混乱,不能正确识别段码。应在系统中加入锁存器,或是在程序中设定存储段码的空间。
在键盘加入了消抖程序,数码管显示程序中加入了段码的存储空间后,数码管能够正常的显示,按键也能够工作,达到了较好的效果。 4.1.2 传感器DS18B20温度采集部分调试
由于数字式集成温度传感器DS18B20的高度集成化,为软件的设计和调试带来了极大的简便,小体积、低功耗、高精度为控制电机的精度和稳定提供了可能。软件设计采用P3.1口为数字温度输入口,但是需要对输入的数字信号进行处理后才能显示,从而多了温度转换程序。通过软件设计,实现了对环境温度的连续检测,由于硬件LED个数的限制,只显示了预设温度的整数部分。
在温度转换程序中,为了能够正确的检测并显示温度的小数位,程序中把检测的温度与10相乘后,再按一个三位的整数来处理。如把24.5变为245来处理,这样为程序的编写带来了方便。
4.1.3 电动机调速电路部分调试
21