图12 温度转换流程图
(三)计算温度子程序
计算温度子程序主要负责将随机存储器中读取的值进行8421BCD码的转换运算,并判断是零上温度还是零下的温度。首先判断温度是零上还是零下,如果是零上的话,就要在温度数值的前面放上正号;接下来执行的是计算小数位温度
BCD值的指令,之后执行计算整数位温度BCD值的程序,最后结束程序。如果温度是零下的话,就将温度值进行补码运算并且在前面加负号,接下来和上面一样,执行计算小数位温度BCD值的指令,之后,执行计算整数位温度BCD值的程序,最后结束程序。它的程序流程图如图13所示。
计算小数位温度 BCD值 计算整数位温度 BCD值 结束 否 开始 温度零下? 是 温度值取补码置“—”标志 置“+”标志 图13 计算温度子程序
(四)显示数据是不是刷新子程序
本程序主要是对数据进行刷新操作。首先执行程序,将温度数据移入显示寄存器,接着判断十位是不是0,如果十位不是0,说明不用进位,所以数据不需要刷新,结束程序。如果十位是0,接下来判断百位是不是0,如果百位不是0,
则执行百位显示数据的程序,最后结束程序。当百位是0时,就说明数据需要更新,则执行十位数据显示符号百位不显示的程序。最后结束程序。完成数据的更新。程序流程图如图14。
结束 温度数据移入显示寄存器 否
十位数0? 是 百位数0? 是 十位数显示符号百位数不显示 百位数显示数据(不显示符号) 否 图14 数据刷新子程序
四、软件的应用
本次设计我采用的电脑软件有protel2004、proteus8、keil uv4来完成课题目标。protel2004主要来完成电路图的搭建,因为平时用的比较多,所以比较熟练。keil uv4用来完成C语言的编程,主要流程是创建工程—新建文件—添加已经创建的文件—写程序—程序编译—程序的调试。这里需要注意的是,一个总体的程序必须放在一个工程下面,否则的话会出现编译错误或者功能不能实现的问题。proteus8是比较先进的仿真软件,使用本软件时首先进行编辑环境和系统运行环境的设置。设置好各种环境后就可以进行所需要的虚拟仿真,实现功能,仿真步骤如下: 1、proteusISIS下的电路设计。
2、源程序生成目标代码文件(*.hex文件)。
3、调试与仿真。
五、结束语
基于单片机的C语言编程,灵活方便,我们可以根据设计的温度,升温、降温、制冷和制热。对周围温度做到实时地监控,方便进行及时的调整,这些用一个小小的遥控就可以实现,是不是很方便。
本系统的特点可以归纳如下:
1、随便设置一个参数就可以产生一个模拟温度,而且温度范围可以随便设定;
2、使用proteus和keil软件方便简单灵活,而且非常容易操作。对于设计现象的观察也是一目了然,非常清楚。
3、统计方便快捷,无需手动计算,系统自带的函数功能能很快计算出所需要的参数,比如最大值最小值和各温度所发生的时间。 4.非常易于观看实验效果,各个时刻的温度变化很容易显示出来,便于分析计算。
5、系统也可以自带的报警模块,会在当前温度高于设定的温度时发生告警;
6、控制方便,不用时轻轻按一下遥控器就可以完成关闭操作。 虽然在这次设计中,也遇到了一些困难,例如程序设计中出现了编程的错误、仿真的过程中出现现象错误等等,不过在老师的帮助下这些问题都得到了解决,锻炼了我坚强的意志。