1、经8088处理后输出脉冲使锋鸣器报警,如图二所示。并使数码管(当水位正常时和于显示温度)显示水位过高(H)水位过低(L)。接第二片8255图二 锋鸣器连接图2.图三 温度设定接数据总线温度设定,该控制器共有八档温度可供选择,我们选择了八个按键的键盘,当按按键时,8255相应的端口输入高电平,如图三所示。接ADC输出并送到8088,经8088处理后,发送信号到显示电路,点亮相应的二极管(一个二极管代表一种温度),如图四所示图四 实际温度显示 3.温度检测,用温度传感器检测温度并输出电压,经ADC转换成成数字量后送到8255,如图五所示接8255图五 温度检测并转换成数字量再传到8088,8088
2、再输出信号让数码管显示实际温度,如图六所示接38译码器输出4.加热器控制。将实际温度与设定温度比较,当设定温度比实际温度高出50度时,使大功率的加热器工作;当设定温度比实际温度高出20度时,使中等功率的加热器工作;当设定温度比实际温度高但没有高出20度时,使小功率的加热器工作;当设定温度低于实际温度时,使加热器全部停止工作。其实现在8255控制,如图七所示图七 加热器控制5.系统的整体框图如图八所示。五原理图设计硬件的连线图用Protel2004设计,设计结果如图九所示温度检测SN54ALS138AFKDM74LS245WM8255图九 硬件连接图8088六接口电路的端口地址如下表表一 接口电
3、路的端口地址表地 端址 口芯片ABC控制端口8255(第一片)404142438255(第二片)80818283七程序流程图八程序清单DATAS SEGMENT LED DB 00H TEM DB 00H SETTEM DB 00H DUAN DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FHD TEMBIAO DB 100BUP(?);用于查表DATAS ENDSSTACKS SEGMENT PARA STACKSTACK STA DB 50(?) TOP EQU LENGTH STASTACKS ENDSCODES SEGMENT ASSUME CS:CO
4、DE,DS:DATA,SS:STACKSTACK:MOV AX,DATAS MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP PUSH DS;填中断 MOV AX,0000H MOV AX,OFFSET IRQ7;温度AD转换 ADD AX,2000H MOV SI,003CH MOV SI,AX MOV SI,003EH MOV AX,OFFSET IRQ6;高水位中断 MOV SI,0038H MOV SI 003AH MOV AX,OFFSET IRQ5;低水位中断 MOV SI,0034H MOV SI,0036H POP DS MOV AL,8B
5、H;将8BH送到43H口(即键盘的控制端口) MOV 43H,AL;初始化为0工作方式,A口输出,B口输入 MOV AL,80H;将10000000送到83H口(显示8255A的控制口) MOV 83H,AL;初始化为0工作方式,都为输出 MOV AL,13H;将00010011送00H(8259A的ICW1) MOV 00H,AL MOV AL,08H;设中断类型号(ICW2) MOV 01H,AL MOV AL,0DH;设ICW4A: STI ;开中断 OUT 40H,FFH IN AL,41H CMP AL,FFH JE B CALL KEY;调用键盘子程序B: CALL TEMDT;调
6、用温度检测子程序 CALL COMP ;调用温度比较子程序 LOOP AIRQ5: OUT 80H 07H;选中三个数码管,高水位中断 OUT 81H,76H;显示“H”字样,表示水位过高 CALL XIANG;调用“响”子程序 STI ; IRETIRQ6: OUT 80H,07H;选中三个数码管,低水位中断 OUT 81H,38H;显示“L”字样,表示水位过低 CALL SINAG; STIKEY PROC FAR;键盘检测子程序 MOV CX,2000;延时,去抖 C:LOOP C JE D ;按下键盘时跳转 OUT 82H,AL ;送到二极管显示 MOV LED,AL ;送到LED存储
7、单元 CMP AL,01H JNE E1 MOV AL,1EH;30度E1: CMP AL,02H JNE E2 MOV AL,28HE2: CMP AL,04H JNE E3 MOV AL,32HE3: CMP AL,08H JNE E4 MOV AL,3CHE4: CMP AL,10H JNE E5 MOV AL,46HE5: CMP AL,20H JNE E6 MOV AL,50HE6: CMP AL,40H JNE E7 MOV AL,5AHE7; MOV AL,64H MOV SETTEM,ALD: RETKEY ENDPTEMDT PROC FAR;温度检测子程序 IN AL,C0
8、H;驱动ADC0803IN工作 MOV CX,1000HF1: LOOP F1;等待温度转换完成后输出中断IRQ7: MOV BX,OFFSET TEMBIAO;温度表 IN AL,42H MOV CX,64HF: CMP BX,AL JAE G;大于或等于时跳转 INC BX LOOP FG: MOV AX,61H SUB AL,CL MOV TEM,AL MOV AH,00H DIV 64H;除以100,取出百倍数 OUT 80H,04H;选中第一个数码管 MOV BL,AL MOV BH,00H MOV SI,OFFSET DUAN OUT 81H,SI+BX显示温度的百位数 MOV C
9、X,2000HH: LOOP H MOV AL,AH DIV 10 OUT 80H,02H;选中第二个数码管 OUT 81H,SI+BXI: LOOP I MOV BL,AH MOV BH,00 OUT 80H,01H;选中第三个数码管 OUT 81HSI+BXTEMDT ENDPCOMP PROC FAR MOV AL,TEM MOV AL,SETTEM CMP AL,BL JBE L ;当设定温度大于或等于实际温度时,不加热 SUB AL,BL MOV AL,08H CMP AL,14H当设定温度比实际温度高出20时,开中等功率的加热管 JA J ADD AH,10H JMP KJ: CM
10、P AL,32H当设定温度比实际温度高出50时,开大功率加热管 JA K ADD AH,2DHK: OUT 80,AHL:COMP PROC ENDP九总结与体会1在本次设计中,我们完成了设计任务,虽然没有条件调试,算不上成功地解决问题,但在此过程中,我们体会到了微型计算机技术和汇编语言的功能。懂得了用所学的知识解决遇到的实际问题。2在合作的过程中,我们合作无间,先是一起讨论如何实现设计,做出了系统的整体框图。当一人在做硬(软)件时,另一个人帮忙上网找资料,解决其遇到的问题。使得我们出色地完成了任务。3在设计的过程中,通过综合运用所学的知识,能过不断地上网查找相关资料,使我们更好地理解了微机原理,巩固所学的知识,学以至用。4对于这样的设计,我们都觉得很有意思,以前总是不知道所学的知识有何用处,通过这样的设计,我们找到了学习的乐趣,有了更好的动力学习,相信以后我们会更努力地学习,以解决今后生活或工作所要面对的种种问题。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1