用单片机实现温度远程显示 第3页

用单片机实现温度远程显示 第3页

六、单片机软件设计说明及程序流程图

为方便调试,采用模块化编程,共分1个主模块及5个子模块,各模块功能说明及流程图如下(源程序见附录):

1、主模块(rand_main.a51

上电后程序显示初始化标志并等待3秒,然后进入巡回模式,自动检测地址为A10)至F15)的智能仪表,对在线的仪表及已使用通道以3秒为周期自动巡回读取实时温度并送数码管显示,仪表未在线或未用通道则自动跳过;定点模式时根据上、下按键情况自动向前或向后移动一个通道后等待下一次按键(向上至最高通道号时跳到上一个仪表的最低在用通道,向下至最低通道号时跳到下一个仪表的最高在用通道);等待期间以3秒为周期读取当前仪表当前通道实时温度并送数码管显示,另外,为了区分巡回、定点工作模式,定点工作模式时最低位数码管以约0.5Hz的频率闪烁显示。当检测到巡回/定点切换键按下时自动在巡回及定点模式间转换,当检测到温度值低于-199.9度时显示-199.9度。

       主模块流程图见下页:若图片无法显示请联系QQ3249114

2、数据转换子模块(rand_data.a51

功能:  本模块先将ASCII码转换成BIN码,然后将BIN码转换成BCD码并将数据转换成可直接显示的格式

入口:  a=通道号

出口:   r1=个位,r2=十位,r3=百位,r4=千位(显示数据)

a=0表示该通道未用

注:本子模块中直接将小数点信息加到相应位数据上,如需在某位显示小数点,则将该位数据加10H,显示子模块根据此信息显示小数点

各子程序功能介绍:

l         bcd2_bcd1:将r3,r4中的4bcd码由低至高分别存入r1,r2,r3,r4中;

l         ascii4_bcd3:将(r0)为首地址的4字节ascii码转换成bcd码并将bcd码由低至高依次存放在r3,r4,r5中,r3,r4中各存放2bcd码,r5中存放一位bcd码;

l         bin_bcd:将r1,r2中的bin码转换成bcd码并将bcd码由低至高依次存放在r3,r4,r5中,r3,r4中各存放2bcd码,r5中存放一位bcd码;

l         ascii4_bin2:将(r0)为首地址的4字节ascii码转换成2bin码存放在r1(低字节),r2(高字节)中;

注:[r0)指r0中内容]

l         ascii_bin:将(r0)为地址的一位ascii码转换成bin码存A中。

(高级子程序调用低级子程序以实现更强的功能,源程序中对各子程序有较详细的注释,故此处仅画出主流程图)

开始

计算通道数据首地址

调用数据转换程序

还原小数位数存R6

BCD码超过5位吗?

该通道数据为0X0ffff吗?

返回该通道未用信息

Y

Y

N

N

退出

转换成可显示数据存R1-R4

有效位前的零消除处理

 

返回数据正确信息

负数处理,当数据小于-199.9时显示-199.9


3、显示、软件看门狗、20ms定时器子程序(rand_disp.a51

功能:    通过定时器01MS为周期动态显示缓冲区中的内容;同时完成20ms定时器及软件看门狗计数;当软件看门狗定时器溢出时自动复位。

入口:   disp_buf为首地址依次存放从个位至十万位待显示数据,以disp_wc为首地址(位地址)依次存放个位至千位闪烁控制位信息,为'0'常亮,'1'闪烁.


出口:   wdt中存放软件看门狗计数值,time_20ms中存放20ms的计数值。Wdt溢出时跳至程序存储器0000H单元若图片无法显示请联系QQ3249114

2、数据转换子模块(rand_data.a51

功能:  本模块先将ASCII码转换成BIN码,然后将BIN码转换成BCD码并将数据转换成可直接显示的格式

入口:  a=通道号

出口:   r1=个位,r2=十位,r3=百位,r4=千位(显示数据)

a=0表示该通道未用

注:本子模块中直接将小数点信息加到相应位数据上,如需在某位显示小数点,则将该位数据加10H,显示子模块根据此信息显示小数点

各子程序功能介绍:

l         bcd2_bcd1:将r3,r4中的4bcd码由低至高分别存入r1,r2,r3,r4中;

l         ascii4_bcd3:将(r0)为首地址的4字节ascii码转换成bcd码并将bcd码由低至高依次存放在r3,r4,r5中,r3,r4中各存放2bcd码,r5中存放一位bcd码;

l         bin_bcd:将r1,r2中的bin码转换成bcd码并将bcd码由低至高依次存放在r3,r4,r5中,r3,r4中各存放2bcd码,r5中存放一位bcd码;

l         ascii4_bin2:将(r0)为首地址的4字节ascii码转换成2bin码存放在r1(低字节),r2(高字节)中;

注:[r0)指r0中内容]

l         ascii_bin:将(r0)为地址的一位ascii码转换成bin码存A中。

(高级子程序调用低级子程序以实现更强的功能,源程序中对各子程序有较详细的注释,故此处仅画出主流程图)若图片无法显示请联系QQ3249114

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有