《按键识别和数码管显示微机系统实验.doc》由会员分享,可在线阅读,更多相关《按键识别和数码管显示微机系统实验.doc(5页珍藏版)》请在课桌文档上搜索。
1、1. 设计容用系统小键盘输入控制数码管的位移显示。2. 设计目的 掌握:“行扫描按键识别的原理,掌握行扫描按键识别的编程设计技术。3:设计任务与要求 用行扫描技术识别小键盘,将小键盘入得任意长度的有09组成的数字串,采用左移位显示的方法显示在数码管上仿照移动显示屏的显示效果,当小键盘按下F键时,程序完毕。4:设计思想1:程序中应设置七段码表和显示缓冲区,并调用显示子程序进展显示。该子程序访问显示缓冲区并进展数码显示。例如,假设显示“0123,则显缓应置入数据0、1、2、3;当显缓中数据改为10、11、12、13时,可显示数码“AbCd。由于实验中的数码管为共阴构造,且“段和“位分别采用74LS
2、240反相驱动和7407同相驱动,故二者均低电平有效点亮。程序应采用共阳形式的七段码表即“0的七段码为0C0H。2: 用8255的C口作4*4键盘接口,采用行列反转法所示的硬件电路其行、列构造完全对称识别按键,将按键键值0F送串行口、以字符形式将它显示在PC机的屏幕上。注意,按键键值应转成ASCII码后再用INT 14H的AH=1子功能上传到PC机进展显示。5:主要元器件介绍 MUT型实验箱,8086CPU模块,8255、LED数码管1、8255的部构造2、LED数码管 共阴极的情况下定义字形码:FECDBA98765432106:硬件连线1、实验接线CS0 CS8255地址为04A0H;PA
3、0PA7输入RL10RL17列选择线;PB0PB7输出发光二极管LED-ALED-DP ;PC0PC2输出KA10KA12行选择线PC3输出LED1 4*4键盘 8255的电路连接7:程序流程图8:程序源代码MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_CONEQU 0606HSSTACKSEGMENT STACKDW 16 DUP(?)SSTACKENDSDATA SEGMENTDTABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H
4、,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV A*,DATAMOV DS,A* MOV SI,3000HMOV AL,00HMOV SI,AL;清显示缓冲MOV SI+1,ALMOV SI+2,ALMOV SI+3,ALMOV SI+4,ALMOV SI+5,ALMOV DI,3005H MOV D*,MY8255_CON;写8255控制字 MOV AL,81HOUT D*,ALBEGIN: CALL DIS;调用显示子程序CALL CLEAR;清屏CALL CCSCAN;扫描JNZ INK1JMP BEGININK1:
5、CALL DIS CALL DALLY CALL DALLY CALL CLEARCALL CCSCANJNZ INK2;有键按下,转到INK2JMP BEGININK2: MOV CH,0FEHMOV CL,00HCOLUM: MOV AL,CH MOV D*,MY8255_A OUT D*,AL MOV D*,MY8255_C IN AL,D*L1: TEST AL,01H ;is L1? JNZ L2 MOV AL,00H ;L1JMP KCODEL2: TEST AL,02H ;is L2? JNZ L3 MOV AL,04H ;L2 JMP KCODEL3: TEST AL,04H
6、;is L3? JNZ L4MOV AL,08H ;L3JMP KCODEL4: TEST AL,08H ;is L4? JNZ NE*T MOV AL,0CH ;L4KCODE: ADD AL,CLCALL PUTBUFPUSH A*KON: CALL DISCALL CLEARCALL CCSCANJNZ KONPOP A*NE*T: INC CLMOV AL,CHTEST AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUMKERR: JMP BEGINCCSCAN: MOV AL,00H MOV D*,MY8255_A OUT D*,AL MOV D*,MY8
7、255_C IN AL,D*NOT AL AND AL,0FHRETCLEAR: MOV D*,MY8255_B MOV AL,00H OUT D*,ALRETDIS: PUSH A*MOV SI,3000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH D* MOV D*,MY8255_A OUT D*,AL MOV AL,SI MOV B*,OFFSET DTABLEAND A*,00FFHADD B*,A*MOV AL,B* MOV D*,MY8255_B OUT D*,ALCALL DALLYINC SI POP D* MOV AL,DLTEST AL,01H JZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1: POP A*RETDALLY: PUSH C* MOV C*,0006HT1: MOV A*,009FHT2: DEC A*JNZ T2LOOP T1POP C*RETPUTBUF: MOV SI,DIMOV SI,ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3005HGOBACK: RET CODEENDSEND START