您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 多加热炉炉温检测课程设计报告
课题3多加热炉炉温检测系统设计一.任务及要求:1.加热炉的炉温可以在60℃~180℃之间任意调节;2.系统每隔3秒钟检测一遍炉温(三个炉子);3.利用六位七段码显示器实时显示加热炉的炉号和实际温度,显示值为十进制数值。显示器的右三位显示加热炉的炉号,左三位显示实际值。程序启动运行之后即开始循环显示,每次显示时间为3秒钟;4.分别记录各加热炉的实际炉温数据,轮流显示。每检测一次即保存一次,循环刷新;5.对应各加热炉扩展功能按键。功能键按下后不影响检测功能,仅影响显示功能。具体要求如下:⑴在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度。如果此时按下另外功能键则不起作用,既不会改变当前显示。只有再次按下同一个功能键之后才能使系统回到循环显示方式状态;⑵在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度,如果此时按下另一个功能键,则会改变当前显示,即应显示与后一次按下的功能键对应的加热炉的炉号和炉温。只有连续按下同一个功能键两次才能回到循环显示方式状态;6.扩展发光二极管担任报警功能,当温度超过200℃即点亮发光二极管报警,并显示错误号“EF”,当温度低于50℃,点亮发光二极管报警,并显示错误号“E0”。二.基本工作原理及说明1.系统硬件连接参考“多加热炉炉温检测系统硬件参考图”。⑴硬件部分为PD32实验系统或8051单片机实验系统。包括0809、8253、8259、8255、数据存储器62256、七段码显示器及其驱动电路、按键和报警部分。图中虚线为需要连接的连线;⑵加热炉的实际温度用电压表示,由电位器给出。模拟量电压经A/D转换器0809转换成数字量。0809的输入通道选用IN0、IN1、IN2、IN3、…。A/D采样结束后由EOC信号发出中断请求。0809的译码地址为3C0H。通道0~7分别为3C0H,3C4H,3C8H,3CCH,3D0H,3D4H,3D8H,3DCH。A/D采样结束后由EOC信号发出中断请求;⑶PD32实验系统中利用8253提供定时服务。8253的译码地址控制口:30CH,计数器1:300H,计数器2:304H,计数器3:308H;8051单片机实验系统中利用单片机内部定时器提供定时;⑷PD32实验系统中利用8259提供中断服务。偶地址:3A0H,奇地址:3A8H;8051单片机实验系统中利用单片机内部定时中断和外部中断为系统提供中断服务;⑸PD32实验系统中利用74LS273驱动七段码显示器。位地址:360H,段地址:340H;8051单片机实验系统中利用驱动芯片驱动七段码显示器;⑹PD32实验系统中利用74LS245驱动报警发光二极管。地址:340H;8051单片机实验系统中利用P1口驱动报警发光二极管;⑺数据存储器62256不需连接,地址范围08000H~0FFFFH;⑻PD32实验系统中功能键连到8259的中断端;8051单片机实验系统中功能键利用P1口和外部中断1实现中断检测;⑼实际温度由电位器给出,可由外部调节。电压范围0~5V;2.检测系统应用软件主要包括:⑴主程序;⑵A/D转换中断服务子程序;⑶定时器中断服务子程序;⑷代码转换子程序;⑸显示子程序;⑹按键中断服务子程序;3.程序流程图;4.多加热炉炉温检测系统硬件图。三、源程序.486DATASEGMENTAT0USE16;8255各个端口的地址PORTAEQU203HPORTBEQU207HPORTCEQU20BHCONTROLPORTEQU20FH;七段码地址WEIEQU360HDUANEQU340H;8253各个端口地址DS0EQU300HDSIEQU304HDS2EQU308HDSCEQU30CH;8259端口地址OPORTEQU3A0HJPORTEQU3A8H;0809地址ADPORTEQU3C0HADPORTIEQU3C4HADPORI2EQU3C8H;中断向量ZDIROEQU20H;定时器中断ZDLR1EQU24H;AD中断ZDIR2EQU28H;开笑1中断ZDIR3EQU2CH;开关2中断ZDIR4EQU30H;开关3中断;定义数据缓冲区ORG4000HDATA4ADDB3DUP(?);AD转换后的数据存储处DATA4LEDDB18DUP(?);十六进制列BCD的显爪数据存储处DATAENDSCODESEGMENTUSE16ORG2000HASSUMECS:CODE,DS:DATA,ES:DATABEG:CLIJMPSTARTTABDB3FH,06H.5BH,4FH,66H,6DH,7DH.07H,7FH,67H,77H,7CI-L39H,5EH.79H,71H;段码表;AD转换中断用ADATANWDWDATA4ADADPTNWDW3C0H;通道口内存保留;显示程序用LEDNWDWDATA4LED;定时中断用TIMEDB150;设置计数值;开关中断用SWH1DB0FFHSWH2DB0FFHSWH3DB0FFHSTART:MOVAX,DATAMOVDS,AXMOVAX,0MOVSS,AXMOVSP,1000HMOVAL,0C0HMOVDX,WEI,OUTDX,ALINITA8259:MOVAL,00010011B;ICWI;写入ICW1MOVDX,OPORTOUTDX,ALMOVAL,00001000B;写入ICW2MOVDX,JPORTOUTDX,ALMOVAL,00000001B;写入ICW4MOVDX,JPORTOUTDX,ALMOVAL,11100000B;写入OCW1屏蔽字MOVDX,JPORTOUTDX,ALMOVAL,20H;清ISRMOVDX,OPORTOUTDX.ALINITLA8255:MOVAL,10000000B;A、B、C口都工作于方式0,都为输出MOVDX,CONTROLPORTOUTDX,ALMOVAL,0FFHMOVDX,PORTAOUTDX,ALINITIA8253:MOVDX,DSCMOVAL,00110110B;方式3二进制计数OUTDX,ALMOVDX,DS0MOVAL,60H;计数初值设为0EA60H/6000DOUTDX,ALMOVAL,0EAHOUTDX,AL;中断向量初始化MOVDI,ZDIR0MOVAX,OFFSETTIMERSTOSWMOVAX,SEGTIMERSTOSWMOVDI,ZDIRIMOVAX,OFFSETADPROCSTOSWMOVAX,SEGADPROCSTOSWMOVDI,ZDIR2MOVAX,OFFSETSWITCH1STOSWMOVAX,SEGSWITCH1STOSWMOVDI,ZDIR3MOVAX,OFFSETSWITH2STOSWMOVAX,SEGSWITH2STOSWMOVDI,ZDIR4MOVAX,OFFSETswitcb3STOSWMOVAX,SEGSWITCH3STOSWMOVDX,ADPORT;启动ADCOUTDX.AL;炉号初始化MOVDX,4003HMOVBYTEPTR[DI],0INCDIMOVBYTEPTR[DI],0INCDIMOVBYTEPTR[DI],1ADDDI,4MOVBYTEPTR[DI],0INCDIMOVBYTEPTR[DI],0INCDIMOVBYTEPTR[D1],2ADDDL4MOVBYTEPTR[DI],0INCDIMOVBYTEPTR[DI],0INCDIMOVBYTEPTR[DI],3AGAIN:STICALLCZBCDCALLDISPJMPAGAIN;一一拆字十六进制转BCD码一一CZBCDPROCPUSHBxPUSHCXPUSHAXLEASI,DATA4AD;AD转换后的数据存储处LEADI,DATA4LED;十六进制到BCD的显示数据存储处ADDDI,2CZ0MOVAL,[SI]CMPAL,11H;与60比较JBEST0CMPAL,0DDH;与180比较JAEST1JMPCZ00ST0:MOVBYTEPTR[DI+1],0EHMOVBYTEPTR[DI+2],00HJMPCZ00ST1:MOVBYTEPTR[DI+1],0EHMOVBYTEPTR[DI+2],0FHJMPCZ00CZ00:MOVBX,1EH;转换为实际温度值MULBXMOVDL,51DIVDLADDAX,50MOVAH,00HMOVBL,0AHMOVCX,3CZ1:DIVBLMOV[DI],AHDECDIMOVAH,00HLOOPCZ1ADDDI,9INCSICMPSI,4002H:AD转换后的数据存储处是否到头JBECZ0POPAXPOPCXPOPBXRETCZBCDENDPDISPPROCPUSHDXPUSHCXPUSHBXPUSHAXLEABX,TAB;段码表MOVSI,LEDNWMOVAH,0C1HDISP1:MOVDX,WEIMOVAL,AHOUTDX.AL;位输山MOVDX,DUANMOVAL,[SI]XLATOUTDX,AL;段输出MOVCX,0200HLOOP$INCSISALAH.1ORAH,0C0HCMPAH,0C0HJNZDISP1POPAXPOPBXPOPCXPOPDXRETDISPENDP:一一AD采样程序一一ADPROCPROCPUSHAXPUSHSIPUSHDXMOVDX,[ADPTNW];A/D通道0CMPDX,3c8H;到第三号炉rr?JBENEXTMOV【ADPTNW],3COH;就置数据区7号炉端口NEXT:MOVSI,[ADATANW]CMPSI,4002HJBENEXT2MOV[ADATANW),4000HJMPCHUNEXI2:INAL,DXMOV[SI],ALADD[ADPTNW],4INC[ADATANW]CMPAL,11H;是否在60和180之间JBEBAOJINCMPAL,0DDHJAEBAOJINJMPOKCMPSI,4000HJZOKCMPSI,4001HJZOK1CMPSI,4002HJZOK2BAOJIN:CMPSI,4000HJZBAOJIN1CMPSI,4001HJZBAOJIN2CMPSI,4002HJZBAOJIN3JMPCHUQUBAOJINl:MOVDX,203H:报警1MOVAX,0FEHOUTDX,ALJMPCHUQUBAOJIN2:MOVDX,207H:报警2MOVAX,0FDHOUTDX,ALJMPCHUQUBAOJIN3:MOVDXT,20BH;报警3MOVAX,OFCHOUTDX,ALJMPCHUQUOK:MOVDX,203H;解除报警MOVAX,0FFHOUTDX,ALOK1:MOVDX,207HOUTDX,ALOK2:MOVDX,20BHOUTDX,ALCHUQU:MOVDX,[ADPTNW];启动ADCOUTDX,ALCHU:MOVAL,20HMOVDX,OPORTOUTDX,ALPOPDXPOPSIPOPAXIRETADPROCENDP:一一定时器中断TIMERPROCPUSHAXPUSHDXMOVAL,[TIME]DECALMOV[TIME],ALCMPAL,0;是否到0JNZEND0CMP[SWH1,0:判断是否有按键按下JZENDDCMP[STWH2],0JZENDDCMP[SWH3],0JZENDDMOVAX,[LEDNW];CMPAX,400FH;JAEDALE;ADDAX,6;MOV[LEDNW],AX;JMPENDD;DALE:MOV[LEDNW],4003H;改变显示参数ENDD:MOVDX,ADPORT;到了开A/DOUTDX,AL;MOV[TIME],150;END0:MOVAL,20HMOVDX,OPORTOUTDX,ALPOPDXPOPAXIRETTIMERENDP:一——开关l的中断———一SWITCH1PROCNOTSWHICMPSWHI,OJNZBACK1MOV[LEDNW],4003H;第1次按T'BACK1:MOVAL,20HMOVDX,OPORTOUTDX,ALSTIIRETSWITCH1ENDP:——一一开关2的中断——SWIT
本文标题:多加热炉炉温检测课程设计报告
链接地址:https://www.777doc.com/doc-6918655 .html