毕业设计(论文)-电阻炉单片机检测控制系统_第1页
毕业设计(论文)-电阻炉单片机检测控制系统_第2页
毕业设计(论文)-电阻炉单片机检测控制系统_第3页
毕业设计(论文)-电阻炉单片机检测控制系统_第4页
毕业设计(论文)-电阻炉单片机检测控制系统_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电阻炉温度单片机检测控制系统设计输入输出2.4温度控制电路输入输出温度控制电路采用可控硅调功方式。双向可控硅管和加热丝串接在交流220V、50HZ交流市电回路。在给定周期T内,8031只要改变可控硅管的接通时间就能达到改变加热功率的目的,从而实现温度调节。如下图2.10示出了可控硅管在给定周期T内具有不同接通时间情况。显然,可控硅在给定周期T的100%时间内接通时的功率最大。图2.10可控硅管在给定周期T内的变化图对于这样的执行机构,单片机只要输出能控制可控硅通断电时间的脉冲信号就可以了,这可用一条I/O线,通过程序输出控制脉冲。在此采用8031用软件在P1.3引脚上产生受过零同步脉冲同步后经光耦管和驱动器输出送到可控硅的控制极上。为了达到过零触发的目的。需要交流电过零检测电路。此电路输出对应于50HZ交流电压时刻的脉冲,作为触发双向可控硅的同步脉冲,使可控硅在交流过零电压时刻触发导通。电路如图2.11图2.11图2.11零检测电路图2.5接口电路由于设计中采用的是8031单片机系统,芯片内没有程序存储器ROM,要构成最小应用系统,合理的应用到整个设计系统中,必须在片外扩展EPROM。2.5.1程序存储器接口设计由于片外扩展的EPROM一般不含地址锁存器,所以要构成三片系统:8031单片机、2732EPROM和74LS373地址锁存器;引脚EA必须接地,表明片外程序存储器,ALE引脚接地址锁存器的锁存控制端,引脚接EPROM的输出允许控制端。1、程序存储器的扩展性能程序存储器有单独的地址编号(0000H~FFFFH),虽然与数据存储器的地址重叠,但不会占用;使用单独的控制信号和指令,程序存储的指令、数据读取控制不用数据存储器的控制和MOVX指令,而是由控制。读取数据用MOVC查表指令。(2)由于大规模集成电路的发展,程序存储器使用的芯片数量愈来愈少,因此,地址选择多半采用线选法,而不用地址译码法。(3)程序存储器和数据存储器共用地址总线与数据总线。MCS-51单片机访问外部存储器时,所使用的控制信号有:ALE:低八位地址锁存器控制:外部程序存储器“读取”控制2、程序存储器EPROM的扩展方法EPROM的基本扩展电路程序存储器扩展时,一般扩展容量都大于256字节,因此,EPROM片内地址线除了由P0口经锁存器提供8位地址线外,还需由P2口提供若干地址线。EPROM所需的地址数决定于EPROM的容量,当EPROM为2K字节时地址线为11根(2K=2),4K字节时地址为12根(4K=2),余类推。所需要的高8位地址线由P2口提供。(2)程序存储器扩展电路芯片程序存储器扩展时,除必须有EPROM芯片外,还必须有锁存器芯片,如图2.12。11图2.12锁存器芯片图地址锁存器地址锁存信号为ALE,可使用带三态缓冲输出的八D锁存器74LS373,也可以使用带清除端的八D锁存器74LS273。EPROM程序存储器紫外线擦除电可编程只读存储器EPROM可作为MCS-51系列芯片的外部程序存储器。Intel公司典型产品有2716(2K×8),2732(2K×8),2764(8K×8),27128(16K×8)和27256(32K×8)等。2732EPROM有五种工作方式,具体见下表2.2。8031与2732EPROM的扩展电路接口为下图2.13引脚号(18)(20)(24)(9~11,13~17)方式/VPPVCCQ0-Q7读VILVILVCCDataOut编程VILVPPVCCDataIn编程检验VILVILVCCDataOut编程禁止VIHVPPVCC高阻维持VIH任意VCC高阻表2.22732EPROM的工作方式图2.138031与2732EPROM的扩展电路接口图2.5.2并行I/O口的扩展设计8031的I/O端口扩展常用芯片主要有通用I/O芯片和TTL、CMOS、锁存器、缓冲器电路芯片两大类。通用I/O口扩展芯片主要有Intel公司的8255(3×8位)、8155(2×8位+6位,14位定时器/计数器)、8243(4×4位);Zilog公司的PIO(2×8位)等。对于MCS-51系列单片机可以直接和8155连接而不需要任何外加逻辑,可以直接为系统增加256个字节片外RAM,22位I/O口线及一个14位定时器。8031和8155的连接方法如图2.14所示。图2.148031与8155的连接P0口输出的低8位地址不需另加锁存器,故直接与8155的AD0~AD7相连,即作为低8位地址线总线又作为数据总线,地址锁存直接用ALE在8155中锁存高8位地址由及IO/的地址控制线决定。当P2.0=1和P2.1=0时,8155选中片内三个I/O端口,因此,在图中连接状态下的地址编号为:RAM字节地址:0000H~00FFH命令/状态口:0100HPA口:0101HPB口:0102HPC口:0103H定时器低8位:0104H定时器高8位:0105H2.5.3键盘/显示接口设计1、单片机应用系统中的键输入单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。键盘有编码和非编码两种。非编码键盘硬件电路极为简单故本系统采用。键盘、显示器接口硬件图见附录B。(1)键输入接口与软件解决的任务1)键开关状态的可靠输入为了去抖动我们采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。对按键进行编码给定键值或给出键号对于按键无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的散转转移。为使编码间隔小,散转入口地址安排方便,常采用依次序排列的键号。3)选择键盘监测方法对是否有键按下的信息输入方式有中断方式与查询方式两种。(2)行列式键盘本系统用行列式键盘,即用I/O口线组成行列式结构,按键设置在行列的交点上。在按键数较多时,可节省I/O口线。本系统键盘采用的工作方式为编程扫描工作方式,它是利用CPU在完成其他工作的空余,调用键盘扫描子程序,来响应键输入要求。在执行键功能程序时,CPU不再响应键输入要求。编程扫描工作方式只有在CPU空闲时才调用键盘扫描子程序。键盘采用的扫描法扫描方式,扫描法是在判定有键按下后逐行(或列)置低电平,同时读入行(或列)状态,如果行(或列)状态出现非全1状态,这时0状态的行、列交点的键就是所按下的键。(3)LED显示器LED显示块是由发光二极管显示字段的显示器件,常使用七段LED。这种显示块有共阴极与共阳极两种接法。N位LED显示器有N根位选线和8×N根段选线。根据显示方式不同,位选线与段选线的连接方法不同。段选线控制字符选择,位选线控制显示器的亮暗。LED显示方式有静态显示方式(因其占用I/O资源较多,故在位数较多时不采用)和动态显示方式,如八位LED动态显示电路只需要两个8位I/O口。其中一个控制段选码,另一个控制位选码。由于所有位的段选码皆由一个I/O控制,因此,在每个瞬间,八位LED只可能显示相同的字符,必须采用扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,段选控制I/O符段选码,位选控制I/O口在该显示位送入选通电平以保证该位显示相应字符。如此轮流,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。段选、位选码每送一次后延时1~5ms。(4)接口电路1)用8155扩展端口I/O口组成行列式键盘对8155初始化,置PA口为基本输出口、PC口为基本输入口。2)软件译码的动态显示接口也可通过8155扩展I/O口控制LED动态显示接口。只需8155提供2个8位输出口即可。可设置PB口为输出段选码,PA口为输出位选码。位选码占用输出口线决定于显示器位数。8155扩展I/O口的键盘、显示接口在单片机系统中,为了节省I/O口线,把键盘和显示电路做在一起,构成键盘、显示电路。根据设置功能键4个和数字键10个共需14个按键,显示的位数用4位显示。故我们设置4×4=16个键。LED显示器采用共阴极。段选码由8155PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,行输出由PC0~PC3提供。LED采用动态显示软件译码,键盘采用逐行扫描查询工作方式。LED的驱动采用北京集成电路设计中心生产的集电极开路输出八位驱口输出相应字。第3章单片机系统软件设计任务重点在这个部分,内容是整个系统的程序设计。该部分涉及面广,贯穿整个系统,是整个系统工作的中枢和灵魂所在。要使设计成功,必须首先了解整个系统功能及各部分的功能要求与具体安排。所以相对来说,这个部分也是整个系统的难点所在。它涉及到的程序有:监控程序,即整个系统的主程序,相当于微机系统中的操作系统;键盘输入程序及键处理程序;LED显示程序;数据采样输入程序;数据处理程序(非线性处理、PID计算、标度变换、数字滤波等);控制信号输出程序等。3.1主程序系统控制程序采用两次中断嵌套方式来设计。首先,使T0定时器产生每秒一次的定时中断。作为本系统的采样周期在其中断服务程序中启动A/D,读入采样资料,进行数字滤波,上下报警处理,PID计算等,然后输出控制脉冲信号。脉冲的宽度则由T1计数器溢出中断决定。在等待T1中断时,将本次样数值转换成对应的温度值放入显示区。然后调用显示子程序。从T1中断返回后,再从T0中断返回主程序,并继续显示本次采样温度,等待下次T0中断。可见T1优先于T0的初值PID计算值决定(PID最大输出250),保证在T0再次溢出中断前,T1中断服务,并由T0中断返回主程序。其系统原理方框流程图如图3.1:主程序主程序设堆栈设堆栈清标志清标志清暂存单元清暂存单元T1中断程序 T1中断程序清显示缓冲区清显示缓冲区清标志D5清标志D5T0初始化T0初始化停止输出CPU开中断停止输出CPU开中断显示温度返回显示温度返回图3.1(a)主程序 (b)T1中断程序为了方便阅读程序,列出8031存储区内部资料情况。如图3.2所示。2AYI中间值2B标志位2CYIL采样2DYI2采样2EYI3采样2FUi-1H30Ui-1L31WH32WL33KPH34KPL35IH36IL37DH38DL39eiH3AEIL3Bei-1H3Cei-1L3Dei-2L3FuiH40UiL41U42Umax43Umin44越限记数器45PID最大值图3.2内部RAM参数分配 主程序清单:MAIN: ORG0000H;LJMPMAIN;ORG000BH;LJMPINTO;ORG001BH;LJMPTPL1;ORG0030H;MOV SP,#50H ;设堆栈 CLR 5EH ;清本次越取标志 CLR 5FH ;清上次越限标志 CLAA ;0→(A) MOV2FH,A ; MOV30H,A;清暂存单元 MOV3BH,A; MOV3DH,A; MOV44H,A ; MOVDISM0,A; MOVDISM1,A; MOVDISM2,A;清显示缓冲区 MOVDISM3,A; MOVDISM4,A; MOVTMOD,#56H;T0方式2计数,T1方式计数 CLRPT0 ;T0优先级中断 SETBTR0 ;启动T0 SETBET0 ;允许T0中断 SETBEA ;CPU开中断LOOP ACALLDISPLAY ;调显示子程序 AJMPLOOP ;等待中断3.2ADC转换子程序流程图开始开始延时延时设采样值地址首址转换结束?N转换结束?设计数器结果送内存结果送内存选通IN0计数器为0 N计数器为0启动ADC结束结束图3.3ADC转换子程序流程图根据流程图编写程序如下:SMAP:ORG0100H;MOVR0,#2CH;采样值首址MOVR1,#03H;计数器赋值SAM1:MOVDPTR,#03F8H;MOVX@DPTR,A;启动ADCMOVR2,#20H;延时DLY:KJNZR2,DLY;结束HERE:JBP3.3,HERE;等待ADC结束MOVXA,@DPTR;MOV@R0,A;存放采样值DJNIR1,SAM1;RET3.3T0中断服务程序流程图交换标志置本次越限标志T0中断服务交换标志置本次越限标志T0中断服务保护现场置标志保护现场置标志上限标志上次越限? N上限标志上次越限?恢复,返回采样炉温 Y恢复,返回采样炉温越限计数器加1越限计数器加1数字滤波数字滤波越限N次? N越限N次?YK=UMAX? YK=UMAX? Y 上限报警 N上限报警恢复返回显示温度返回求TL1取最大输出数下限报警YK<UMIN?YK=UMIM?清上次越限标志YK>UMAX?PID计算温度标志变换T1初始化输出求TL1恢复现场清越限标志恢复返回显示温度返回求TL1取最大输出数下限报警YK<UMIN?YK=UMIM?清上次越限标志YK>UMAX?PID计算温度标志变换T1初始化输出求TL1恢复现场清越限标志 Y N Y N N Y等待T1中断D5H=1? Y ND5H=1?图3.4T0中断服务程序流程图根据流程图编写程序如下:INT0: ORG0150H;PUSHA; PUSHDPH;保护现场 PUSHDPL; SETB0D5H ;置标志 ACALLSAMP ;调采样子程序 ACALLFILTER ;调数字滤波程序 CJNEA,42H,TP;UI(K)≠UMAXWL: MOVC,5EH ; MOV5FH,C ;交换标志 CLR5EH ;清本次标志 ACALLUPL ;上限处理 POPA ; POPDPH ;恢复现场 POPDPL; RETI ;中断返回TPL: JNTPL1 ;UI(K)>UMAX转 CLR5FH ;清上次越限标志 CJNEA,43H,MTPL;UI(K)≠UMIN转HAT: SETBP1.1 ;正常,绿灯亮 ACALLPIDMAIN;调PID子程序, MOVA,29H ;PID值→(A) CPLA ;求TL1值 INA;NM: SETBP1.3 ;输入控制脉冲 MOVTL1,A ;T1赋初值 MOVTH1,#0FFH; SETBPT1 ;T1高优先级中断 SETBTR1 ;启动T1 SETBET1 ;允许T1中断LOOP: ACALLDISPLAY;显示温度 JB0D5H,LOOP;等待T1中断 POA ;POPDPH;恢复现场 POPDPL; RET1;从中断返回MTPL: ORG0230H;JNCHAT ;UI(K)>Umin转SETBP1.0;下限报警MOVA,45H;取最大输出值CPLA;求TL1INCA;AJMPNM;TPL1:ORG0250H;SETB5EH;置本次越限标志JNB5FH,WL;上次没越限转INC44H;越限计数器加1MOVA,44H;CLRC;SUBBA,#N;JNZWL;越限次数不等N转SETBP1.2;上限报警,红灯亮CLR5EH;清标志CLR5FH;POPA;POPDPH;恢复现场POPDPL;RETI;从中断返回3.4FILTER数字滤波子程序开始开始 Y(2C)≠(2D) Y (2C)>(2D)N(2C)=(2D) (2C)≥(2D)(2D)≠(2E)(2D)≠(2E) Y (2D)→(A)Y(A)→(2A)(2D)>(2E)(2D)→(A) (A)→(2A)(2C)≠(2E) N(2C)≠(2E) (2E)→(A)(2E)→(A)(A)→(2A)Y(2C)>(2E) (2C)>(2E) (2E)→(2E)→(A)(A)→(2A)(2C)→(2C)→(A)(A)→(2A)返回 返回图3.5数字滤波程序流程图微机控制系统通常直接放在生产现场,会受到较严重的干扰,我们可以采用滤波的方法来滤除干扰。数字滤波算法有很多,我们这里采用中值滤波,就是连续三次取样,取中间值作为本次采样值三次采样值分别放于2C、2D、2EH中,取中间值放在累加器A中,同时也转放在2AH单元内,以备进行温度标度转换用。数字滤波程序流程图如图3.5所示。程序清单如下:ORG0300H;MOVA,2CH;CJNEA,2DH,CMP1;不相等转AJMPCMP2;CMP1JNCCMP2;(2C)>(2D)转XCHA,2DH ;交换XCH A,2CH ;CMP2 MOV A,2DH ; CJNE A,2EH,CMP3;MOV2AH,A ;RET ;CMP3: JC CMP4 ;(

2DH)<(2EH)转 MOV 2AH,A ; RET ;CMP4: MOV A,2EH ; CJNE A,2CH,CMP5; MOV2AH,A ; RET ;CMP5: JCCMP6 ; XCH A,2CH ;CMP6: MOV 2AH,A ; RET 3.5PID计算程序在PID计算程序中用到的子程序有:双字节加法子程序DSUM,双字节求补子程序CPL1和双字节有符号数乘法子程序MULT1。此程序流程图如图3.6所示。开始 输入Ui(k),UR 计算E(k)=UR=Ui(k)计算PI(k)=KI[I(k)] 计算PP(k)=KP[E(k)-I(k-1)]计算PI+PP计算PD(k)=KD[E(K)-2E(K-1)+E(K+2)]P(k)=PD+PP+P(K-1) P(K)→P(K-1),E(K-1)→E(K-2),E(K)→E(K-1) 返回图3.6PID计算程序流程图根据流程图编写程序如下:ORG0340H;MOVR5,31H ;取URMOVR4,32H ;MOVR3,2AH ;取Ui(k)MOVR2,#00H ;ACALLCPL1 ;取Ui(k)的补码ACALLDSUM;计算E(k)MOV39H,R7 ;存E(k) MOV3AH,R6 ; MOVR5,35H ;取KIMOVR4,36H ;MOVR0,#4AH ;ACALLMULT1 ;计算PI=KIE(K)MOVR5,39H ;取E(K)MOVR4,3AH ;MOVR3,3BH ;取E(K-1)MOVR2,3CH ;ACALLCPL1 ;ACALLDSUB ;求E(KE(K-1)MOVR5,33H ;取KpMOVR4,34H ;MOVR0,#46H ;ACALLMULT1 ;求Kp〔E(K)-E(K-1)〕MOVR5,49H ;MOVR4,48H ;MOVR3,4DH ;MOVR2,4CH ;ACALLDSUM ;求Kp〔E(K)-E(K-1)〕+K1E(K)MOV4AH,R7 ;保存和数MOV4BH,R6 ;MOVR5,39H ;MOVR4,3AH ;MOVR3,3DH ;MOVR2,3EH ;ACALLDSUM ;计算E(KE(K-2)MOVR5,R7 ;MOVR4,R6 ;MOVR3,3BH ;MOVR2,3CH ;ACALLCPL1 ;ACALLDSUP ;MOVR5,R7 ;MOVR4,R6 ;MOVR3,3BH ;MOVR2,3CH ;ACALLCPL1 ;ACALLDSUP ;求出E(KE(K-2)-2E(K-1)MOVR5,37H ;取KDMOVR4,38H ;MOVR0,#46H ;ACALLMULT1;求出PD=KD〔E(KE(K-2)-2E(K-1)〕MOVR5,49H ;MOVR4,48H ;MOVR3,4AH ;MOVR2,4BH ;ACALLDSUM ;MOVR3,R7 ;MOVR2,R6 ;MOVR5,29H ;MOVR4,30H ;ACALLDSUM ;求出PkMOV29H,R7 ;存Pk→P(K-1)MOV30H,R6 ;MOV3DH,3BH ;E(K-1)→E(K-2)MOV3EH,3CH ;MOV3BH,39H ;E(K)→E(K-1)MOV3CH,3AH ;RET ;DSUM双字节加法子程序(R5R4)+(R3R2) (R7R6) MOVA,R4 ;ADDA,R2 ;MOVR6,A ;MOVA,R5 ;ADDCA,R3 ;RET ;CPL1双字节求补子程序(R3R2)求补MOVA,R2 ;CPLA ;ADDA,#01H ;MOVR2,A ;MOVR3,A ;RET MULT1双字节带符号数乘法子程序程序流程图如图3.7所示。双字节带符号的数最高位为“1”表示负数,为“0”表示正数。调用子程序CPL1和MULT被乘数=(R7R6)乘数=(R5R4)SIGN1标号位地址为5CH;SIGN2标号位地址为5DH。开始开始取被乘数符号C取被乘数符号C1C1C1=1?被乘数求补被乘数求补被乘数符号C被乘数符号C2C2=1?C2=1?乘数求补乘数求补调无符号数乘子程序调无符号数乘子程序C1C1∧C2=1?C1C1∨C2=0?乘积求补乘积求补返回返回 图3.7双字节乘法子程序流程图程序清单如下:MOVA,R7 ;RLCA ;MOVS1GE1,C ;存被乘数符号位JNCPOS1 ;被乘数为正数转MOVA,R6 ;求补CPLA ;ADDA,#01H ;MOVR6,A ;MOVA,R7 ;CPLA ;ADDCA,#00H ;MOVR7,A ;POS1:MOVA,R5 ;RLCA ;MOVS1GN2,C ;存乘数符号位JNCPOS2 ;乘数为正数转MOVA,R4 ;CPLA ;ADDA,#01H ;MOVR4,A ;MOVA,R5 ;CPLA ;ADDCA,#00H ;MOVR5,A ;POS2:ACALLMULT ;MOVC,S1GN1 ;ANLC,S1GN2 ;JCTPL ;C=1是两个负数相乘转MOVC,S1GN1 ;ORLC,S1GN2 ;JNCTPL ;C=0是两个正数相乘转DECR0 ;MOVA,@R0 ;CPLA ;ADDA,#01H ;MOV@R0,A ;INCR0 ;MOVA,@R0 ;CPLA ;ADDCA,#00H ;TPL:RET MULT双字节无符号数乘法子程序:我们把被乘数(ab)和乘数(cd)分别表示为(az+zb)和(cz+zd),其中a、b、c、d都是八位,a、c为高八位,b、d为低八位,z表示八位0。它们的乘积可用下式表示(az+zb)(cz+zd)=aczz+zadz+zbcz+zzbd其中ac、ad、bd为相应两个八位数的乘积,占十六位,这可用四次乘法指令MULAB求出。把部分乘积写成××H××L表示高、低字节,然后排列成acHacLadHadLbcHbcLbdHbdL那么按列求和,用三次八位数不带进位加法和三次带进位加法,就得以四字节的乘积。入口:(R7R6)=被乘数(ab)(R5R4)=乘数(cd)出口:(R0)=乘积的高位字节地址指针工作寄存器R3和R2程序清单如下:MOVA,R6 ;取bMOVB,R4 ;取dMULAB ;求bdMOV@R0,A ;存bdLMOVR3,B ;bdH→R3MOVA,R4 ;取dMOVB,R7 ;取aMULAB ;求adADDA,R3 ;求adL+baHMOVR3,A ;暂存adL+bdHMOVA,B ;ADDCA,#00H ;adH+进位MOVR2,A ;暂存MOVA,R6 ;取bMOVB,R5 ;取cMULAB ;求bcADDA,R3 ;求adL+bcL+bdHINCR0 ;修改指针MOV@R0,A ;乘积第三字节存入CLR5BH ;清标志MOVA,R2 ;ADDCA,B ;求adH+bcHMOVR2,A ;JNCLAST ;无进位数SETB5BH ;置进位标志LAST:MOVA,R7 ;取aMOVB,R5 ;取cMULAB ;求acADDA,R2 ;求acL+adH+bcHINCR0 ;MOV@R0,A ;存积的第二字节MOVA,B ;ADDCA,#00H ;MOVC,5BH ;ADDCA,#00H ;INCR0 ;修改指针MOV@R0,A ;存积的最高字节RET 3.6键盘子程序键盘是单片机系统不可缺少的输入的设备,是实现人机对话的钮带。借肋键盘,可以向计算机系统输入程序、设置数据、传送操作命令、控制程序的执行走向等,其应用极为广泛。由于8031单片机的P0和P2必须有作与外部程序存储器交换信息的接口。实际上只有部分P1和P3口线可直接用作I/O接口,为了满足应用系统的需要,一般都要扩展I/O口。8155是一种多功能的可编程接口芯片,它具有256字节RAM,二个8位,一个6位的可编程并行I/O和一个14位可编程定时计数器,且8155可直接与MCS-51系列单片机连接,不需要增加任何硬件逻辑,因而我们选用8155芯片I/O口扩展芯片,用来作为键盘及显示器接口电路。键盘扫描子程序框图如图3.8调用延时子程序调用延时子程序两次调用两次调用延时子程序判断闭合键号判断闭合键号键号键号→A图3.8键盘扫描子程序框图键盘的工作方式一般有编程扫描和中断扫描两种。本设计中我们采用的是编程扫描工作方式。由于编程扫描能及时响应键入的命令或数据。编程扫描的主要任务是:a、首先判断是否有键按下。其方法为:A口输入全扫描字0H,读C口状态,若PC1-PC0全为1,则无键按下,否则有键按下。b、除去键抖动的影响。其方法为:在判断有键按下后,软件延时10ms然后再读入C口状态,判断是否有键按下,如果仍为有键按下状态,则确认为键按下,否则按键抖动处理。c、逐列扫描,求出键值,每个键的键值等于行首键值加键所在的列线号。如第一行第三列上按键的键值为7,它等于首行键值4加键所在列线号为3。d、断闭合的键是否释放,为确保每按一次键,只进行一次键功能操作,必须等待键释放后,程序才往下走,转入键功能操作。由键盘扫描,求得键值的最终目的是要使程序转到相应的地址去完成该键盘的操作,对数字键就直接将键值送到显示缓冲区进行显示,对功能键则先找到该功能键处,程序入口地址,并转去执行该键的命令。由于本系统要求难设置温度,修改PID参数,并且在修改参数或设置温度时停止升温,进入设置状态,此时可以修改PID中的参数,并立即显示当前的炉温。设在主程序中已把8155A口设定为基本输出口、C口设定为基本输入口。键盘扫描子程序如下:KEY:ORG0440H;ACALLKS;调用KS判别是否有键按下JNZK1 ;有键按下转移ACALLDIR ;无键按下,调延时子程序AJMPKEY;K1:ACALLDIR ;加长延时时间,消除键抖动ACALLDIR;ACALLKS ;调用KS子程序,再次判别有无键按下JNZK2;有键按下,转逐列扫描AJMPKEY;误读键,返回K2:MOVR2,#0FEH;首列扫描字送R2MOVR4,#00H;首列号送R4K3:MOVDPTR,#PA;A口地址送DRTRMOVA,R2;MOVX@DPTR,A;列扫描字送8155A口INCDPTR;指向8155C口INCDPTR;MOVXA,@DPTR ;读取行扫描值JBACC.0,L1 ;第0行无键按下,转查第1行MOVA,#00H;第0行有键按下,该行的行首键号#00H送AAJMPLK;转求键号L1:JBACC.1,L2;第1行无键按下,转查第2行MOVA,#08H ;第1行无键按下,该行的行首键号#08H送AAJMPLK;转求键号L2:JBACC.2,L3 ;第2行无键按下,转查第3行MOVA,#10H;第2行有键按下,该行的行首键号#10H送AAJMPLK;转查键号L3:JBACC.3,NEXT;第3行无键按下,转查下一列MOVA,#18H ;第3行有键按下,该行的行首键号#18H送ALK:ADDA,R4 ;形成键释放PUSHACC ;未释放,等待K4:ACALLDIR ;键释放,弹出堆栈送ACCACALLKS ;键扫描结束,返回JNZK4 ;修改列号POPACC;RETNEXT:INCR4;MOVA,R2;JNBACC.7,KEY;8列扫描完返回KEYRLA ;未扫描完,扫描字左移一位,变为下列扫描字MOVR2,A ;扫描字暂存R2AJMPK3;KS:MOVDPTR,#PA;A口地址送DPTRMOVA,#00H ;MOVX@DPTR,A;令扫描字00H送A口INCDPTR ;指向C口INCDPTR;MOVXA,@DPTR;读入C口行线状态CPLA ;变正逻辑,以高电平表示有键按下ANLA,#0FH;屏蔽高4位RET ;出口状态:A≠0时,有键按下3.7显示子程序显示器是用来显示设定的参数,采集的信息等。LED显示器耗电省、成本低,接口主便,因此我们选用LED显示器作为这次设计所用的元器。LED显示器由8个发光二极管组成,7个发光二极管排成“”字形,另一段构成小数点。通过不同的组合,可用来显示数字0-9的数字、小数点等字符的显示。动态显示程序框图如图3.9所示。显示程序的要点有两个:一是代码转换。因为直接驱动LED显示器的是字形码,而人们习惯的是0、1、2、…、F等字符,因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过软件实现逐位轮流点亮每个LED。为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在缓冲区中。由于有4位LED显示器,故不妨假设显示缓冲区长度为4个字节。显示缓冲区地址为DIS0~DIS3,DIS0单元与最左边一位LED相对应,DIS3单元与最右边一位LED相对应。开始开始8155初始化8155初始化动态显示初始化动态显示初始化送位选字(R3)8155A口送位选字(R3)8155A口查段选表查段选表段选码送8155B口段选码送8155B口延时1mS延时1mS指向下个显示缓冲单元指向下个显示缓

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论