您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于at89s51的多路温度巡检仪
课程设计多路温度巡检仪设计说明书1目录1.设计任务……………………………………………………………………21.1设计题目………………………………………………………………21.2设计目的……………………………………………………………21.3设计任务……………………………………………………………22.总体方案设计与方案论证………………………………………………42.1总体方案设计与论证…………………………………………………42.2温度采集、计算的方案设计与论证…………………………………53.系统总框图及总体软件设计说明………………………………………64.系统资源分配图…………………………………………………………75.局部程序设计说明………………………………………………………85.1显示更新子程序…………………………………………………………85.2温度采集存储子程序………………………………………………………95.3PB口消抖和冻结子程序…………………………………………………115.4自动巡显和手动切换子程序……………………………………………125.5转换成温度内码的子程序………………………………………………135.6温度内码转化为BCD码的子程序………………………………………155.7键盘扫描和节拍设定的子程序……………………………………………175.8改进后设定温度上下限的子程序…………………………………………195.9改进后实时钟调整的子程序………………………………………………206.系统功能及其操作说明-……………………………………………………217.调试记录及调试结果-………………………………………………………218.课程设计总结-……………………………………………………………22附录一:源程序清单…………………………………………………………23附录二:改进后的程序………………………………………………………38课程设计多路温度巡检仪设计说明书21.设计任务1.1设计题目多路温度巡检仪1.1设计目的通过小型微机应用产品的设计与调试过程,运用《微机原理及接口技术》课程所学的基本知识,在设计中加以应用,进而得到理解、巩固和提高,通过实践的过程学习与掌握分析与解决实际问题的方法与手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练。1.2设计任务设计一个以单片机为核心的多路温度巡回检测显示仪表系统。通过多选一电子模拟开关及A/D转换器巡回采集各路温度传感及变送器的数据,进行信号处理及标度变换,以一定的节拍时间依序显示各检测回路的序号及温度值,并可通过按钮开关操控作冻结或切换显示,在单片机实验板台上模拟调试实现。(一)基本设计要求1、开机单片机实验板上的8位数码管、LED灯、蜂鸣器等设备进行自检自检。2、八位LED7段数码管显示当前检测回路的序号、温度值及温度单位“oC”或其他界面信息,温度显示单位为oC,保留一位小数。例如:3、八路温度按节拍巡回检测显示,温度测量范围-50.0°C~+50.0°C。4、设选用的温度传感变送器将检测的-50°C~+50°C温度变换为0~5V电压信号,综合误差为±0.5°C。5、应采取数字滤波技术提高测量的稳定性采用每一路的AD信号采集4次滚动存放保存的4次的温度值都是最新的温度值然后对这4次的温度值求平均值。6、设置一个“冻结”按钮开关以操控进入与退出当前回路的冻结显示方式,冻结显示期间每0.5S更新一次温度值,冻结的时候只是路数不再改变只是显示当前路的温1---C834.°课程设计多路温度巡检仪设计说明书3度值。7、设置一个“切换”按钮开关以操控强行切换显示下一检测回路号及温度值。8、对开关量输入进行软件消抖动处理比如冻结的按键进行键盘消抖动处理。(二)扩展功能(选做)1、键盘设定巡回节拍范围为0.5S~5.0S,设定过程为按下功能键F后在选择一个操作的数值比如F1,先返回当前的节拍值,再进行按照数字键进行设定节拍在这个状态下按下S键保存新的节拍值且保持此节拍值1S后返回到巡显的状态,按下C键的时候直接返回到巡显状态。2、F键按下无操作时间超过10分钟后自动恢复为基本的温度巡显方式。3、超上限告警功能,键盘设定温度上限值范围为-50.0°C~+50.0°C,监测到某回路温度超上限时有相应的显示闪烁提示、LED指示、讯响告警及继电器触点输出控制功能。4、实现带有回差的超上限告警功能,通过键盘设定回差值的范围为±0.1°C~±5.0°C。5、增加温度超下限告警处理功能。6、每巡回显示一遍,穿插一个节拍显示实时钟,通过键盘设定时间。7、其他功能扩展。课程设计多路温度巡检仪设计说明书42.总体方案设计与方案论证2.1总体方案设计与论证本次课程设计的要求是8路温度巡显仪,要正常显示、进行参数设置等多个工作状态故系统工作的标志位是程序工作的主要的线索,每个功能模块在判断后系统的标志位再去执行相应的功能。见如下的框图所示。1号键为22号键F0=1为1F0=0图1-系统软件设计的整体思路框图2.2温度采集、计算的方案设计与论证方案一采用ADC0809芯片把经过每一路温度传感变送器变换为0~5V电压信号转化为数字量采用滚存最新的4次温度值进行求平均值并且每个工作大循环调用一次,把这个平均值扩大到0~1000的温度内码存储起来这样一来可以使-50°C、0°C、50°C分别变换成0、500、1000的温度内码,要显示的时候读出温度内码转化为BCD码送入8位7段数码管显示,8路温度信号采用巡回动态显示。通过按键操作进行修改系统程序的的标志位,程序中通过判断这些标志位来修改显示的节拍和温度报警的上下限。方案二也是采用ADC0809用每调用一次温度采集子程序就把8路的温度每一路采集四次存放到存储单元中,这样每调用一次就要算32次,每次AD转化最少要100US要是稍微延时1MS的时候,每次调用就要32MS。如果显示的时候采用静态显示的时候要很多条I/O线。综上所述,选用方案一,要是选用方案二的时候每次调用时太久不利于系统工作,会影响后面的程序调用。每个大循环调用1路四次的AD转化且滚存到存储区中,把AD值转化成温度内码,再把温度内码转化成BCD码。2.3显示查表的方案设计与论证方案一把带小数点的断码也写进断码表,显示个位的时候直接查找有带符号位的断码。方案二显示过程中先判断显示到了个位没有,如果到了就把个位的数据的最高位系统的标志位判断按下了F键参数设定态进入冻结态正常巡显态设置节拍设置报警限值显示温度态课程设计多路温度巡检仪设计说明书5清零图2-系统设计的硬件系统的框图AT89S51LED显示ADC0809转化单片机复位切换和冻结按键调整节拍8路温度变送器课程设计多路温度巡检仪设计说明书63.系统总框图及总体软件设计说明图3-系统软件设计的总流程图并解释初始化系统自检键盘扫描子程序显示更新子程序查表显示子程序数据采集子程序键盘消抖子程序判别冻结子程序自动巡显子程序手动切换子程序节拍设置子程序AD转化温度内码内码转化成BCD码把AD转换出来的数据经过放大到0-1000的温度内码把温度内码进行处理转化成BCD码显示到数码管上判断是否按下了F键,是进入2态进行对参数的设定利用键反转法先读出键的状态在进行查表查出键码如果切换键按下的时候路数+1显示当前路的温度值系统在状态1下按一定节拍进行正常的温度巡检判别是否PB0的冻结按键如果按下把标志位F0求反对PB口输入的键盘进行消抖动保存到2EH和2FH每个流程调用一次进行一次采集并采用数据滚存把显示缓存区30H—37H单元的内容通过查表进行显示初始化包括芯片初始化和工作初始化自检包括对蜂鸣器、LED、每个数码管的自检包括是要显示温度或者是显示实时钟课程设计多路温度巡检仪设计说明书74.系统资源分配表硬件资源分配片内数据存储空间的分配名称实现的功能字节地址用途PB0冻结按键00H-07H工作寄存器R0—R7PB1手动切换按键10H-1FH8路温度内码的存储单元PB2小时校准按键20H进程标志位PB2分钟校准按键21H设置温度上下限的保存单元PB2秒钟校准按键22H温度的十位的临时存储单元K0~K9数字0~9输入按键23HF态设置的过程的无操作中断次数K10功能键F24HF态无操作跳出的时间设定单元K11确定键S29H-2FHPB口消抖动的暂时存储单元K12取消操作键C30H-37H数码管显示缓存区L0灯超过上限温度报警38H-3CH分别为200us、10ms、1s、1分1小时存储单元P3.2蜂鸣器超温报警3EH节拍计时的中断次数记录P0口数据地址/数据总线复用3FH节拍中断次数计数单元P1口外部扩展地址总线的高八位40H-5FH8路温度每一路采集4次的存储单元P2口片外芯片的线选端68H最新的AD转换的数据存储单元P3口WR、RD片外扩展的读写信号69HDPL的存储单元,用来读取和设置AD转化的通道6AH用来设置求平均值的循环次数6BH温度内码低字节的暂存单元6CH温度内码高字节的暂存单元6DH路次的存储单元6EH进程的状态码6FH栈底指针F0位地址冻结的标志位64H-67H键盘扫描的存储单元课程设计多路温度巡检仪设计说明书85.局部程序设计说明5.1显示更新子程序(一)显示更新子程序的流程图N说明为2态YNY图4-显示更新子程序流程图源程序如下:GENGXIN:MOVR7,6DH;显示更新送显缓。取出当前路次值MOVA,6EH;取当前进程码CJNEA,#01H,GX1;当前状态是否为常态?CJNER7,#9,GX;判断是否该显示时间?LCALLCTIME;调用时间拆字子程序LCALLSHIZTZLJMPGX4;返回GX:LCALLCWENDU;否,则调用温度拆字子程序SJMPGX4;返回GX1:CJNEA,#02H,GX4;判断是否为02进程是否为1态是否9路取当前路数取进程码跳到拆时间子程序段段调用实时钟调整子程序调用拆温度子程序返回调用F态显示程序段课程设计多路温度巡检仪设计说明书9MOV37H,#15;送F的字符到左边第一个数码管MOV36H,#16;送--字符所在的字段码表的位置MOV34H,#19;熄灭34H单元所对应的数码管MOV31H,#19;熄灭35H单元所对应的数码管GX4:RET(二)拆温度子程序拆温度子程序包括在左边第一位显示当前路次,最右边两位分别显示“°C”。通过判断温度的符号的标志位34H.7,可以知道当前温度为正或为负,为负时显示出负号,如果当前的温度十位为零时,要把十位关显示。源程序如下:CWENDU:MOV37H,6DH;温度拆字子程序。当前路次值放入37H中MOV30H,#21;温度C显示位MOV31H,#20;符号°显示位MOV36H,#19;空格MOVA,34H;十位参数过滤JNBACC.7,W1;最高位是否为1?MOV35H,#10H;是,显示-号LJMPW3W1:MOV35H,#19;否,改为灭掉W3:CLRACC.7;最高位清零JNZW2;累加器A非零跳转是否为零十位是否零?MOV34H,#19;十位为零,灭掉LJMPW4W2:MOV34H,A;回存W4:RET(三)拆时间子程序原理同TEST0315子程序,把3AH,3BH,3CH中的数据分别把高四位和低四位拆到两个字节的第四位,这两个字节的高四位清零。把拆出来的两个字节送到显示缓存区显示。源程序略。5.2温度采集存储子程序依据路数设为N通过:N*4+3EH可以算出第N路温度存储的首地址通过滚动存放到连续的四个单元中。滚存的示意图如下:例如第一路1*4H+3EH=42H课程设计多路温度巡检仪设计说明书1040H首先读出42H中的内容到A中41H指针加1指向43H,把A(42H)放入43H42H起始地址指针减去2指向41H单元,且读到A中43H指针加1指向42H,把A(41H)放入42H44H指针减去2指向40H,且读到A中45H指针加1指向41H,把A(40H)放如41H.读出AD信号到40H.DPL+1指向下一个通道的AD转换.子程序返回5FH图5--AD滚
本文标题:基于at89s51的多路温度巡检仪
链接地址:https://www.777doc.com/doc-3265518 .html