新乡学院计算机与信息工程学院课 程 设 计 报 告2015年1月12日课程名称 微机原理与接口技术 项目名称 键盘显示控制器班 级 学 号 姓 名指导教师目录一、设计任务说明 (4)1.1、实验目的 (4)1.2、实验内容 (4)二、需求分析 (5)2.1、计算机的重要性 (5)2.2、8279芯片 (5)三、设计方案 (5)3.1、课程设计步骤与方法 (5)3.2、课程设计说明书与图纸 (6)3.3、设计程序 (9)四、测试分析 (15)五、总结 (16)六、参考文献 (16)课程设计报告正文内容一、设计任务说明1.1、实验目的1.掌握8279键盘显示电路的基本功能及编程方法2.掌握一般键盘盒显示电路的工作原理3.进一步掌握定时器的使用和中断处理程序的编程方法1.2、实验内容利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个秒表,由8253中断定时,小键盘控制秒表的启停及初始值的预置。
秒表的显示格式**.**.** 由左到右分别为分、秒、百分秒要求具体如下:1. C键:清楚,显示00.00.002. G键:启动,秒表计时3. D键:停止,秒表停止计时4. P键:设置分、秒、百分秒值。
输入时依次为分、秒、百分秒,同时应有判断输入错误的能力,若输入有错,则显示:E - - - - -,此时敲P 键可重新输入预置值。
5. E键:程序退出,返回DOS二、需求分析2.1、计算机的重要性计算机是当代众多新兴技术中发展最快、应用最广的一项技术,也是渗透力最强,对社会发展影响最为深远的高新技术。
今天它已经逐渐深入到社会的每一个细胞,改变着人们的生产方式,社会活动方式甚至家庭生活方式。
计算机发展如此迅速,影响如此深远。
有其深刻的社会背景。
2.2、8279芯片8279是一种通用的可编程的键盘/显示器接口器件,可对64个开关组成的键盘矩阵进行自动扫描,接收键盘上的输入信息,并在有键输入时向单片机请求中断,还能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。
利用8279对键盘/显示器的自动扫描,可以减轻CPU负担,具有显示稳定、程序简单、不会出现误动作等特点。
是一种应用非常广泛的芯片,学习8279芯片的简单应用时十分有必要的。
三、设计方案3.1、课程设计步骤与方法1、本设计是做在一块扩展电路板上,用一根20芯扁平电缆与实验台上扩展插头J7相连。
2、编程1:使得在小键盘上每按一个健,6位数码管上显示出相应字符,它们的对应关系如下:小键盘显示小键盘显示0 — 0 C — C1 — 1 D — d2 — 2 E — E3 — 3 F — F4 — 4 G —q5 — 5 M —6 — 6 P —p7 — 7 W —8 — 8 X —9 — 9 Y —A — R —返回B — b3、编程2:中断编程利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个电子钟。
由8253中断定时,小键盘控制电子钟的启停及初始值的预置。
电子钟显示格式如下:XX.XX.XX. 由左向右分别为时、分、秒要求具有如下功能:①、C键:清除,显示全零。
②、G键:启动,电子钟计时。
③、D键:停止,电子钟停止计时。
④、P键:设置时、分、秒值。
输入时依次为时、分、秒,同时应有判断输入错误的能力,若输入有错,则显示:E-----。
此时敲P键可重新输入预置值。
⑤、E键:程序退出。
3.2、课程设计说明书与图纸(一)设计说明1.本设计编程1 接线方法:用一根20芯扁平电缆将实验扩展板与实验台上扩展插头J7相连。
2.本设计编程2 接线方法:(1)用一根20芯扁平电缆将实验扩展板与实验台上扩展插头J7相连。
(2)实验台上8253 CLK0 接1MHZ,GATE0 和GATE1接+5V,OUT0 接CLK1,OUT1 接IRQ,CS接280H~287H。
(二)设计电路如下图所示:(三)参考流程图如下所示:键盘显示子程序流程图:KEY23.3、设计程序(部分代码)源程序:ASSUME CS:CODE,DS:DATA,SS:STACKSTART: CLIMOV AX,DATAMOV DS,AXMOV BUF,0MOV SIGH,01MOV SEC1,0MOV MIN1,0MOV MIN2,0MOV HOUR1,0MOV HOUR2,0MOV ERR1,0MOV DX,TIMEC;8253初始化MOV AL,36HOUT DX,ALMOV DX,TIME0MOV AX,100OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,TIMECMOV AL,74HOUT DX,ALMOV AX,10MOV DX,TIME1 ;定时器每0.1S 中断1次OUT DX,ALMOV AL,AHOUT DX,ALMOV AX,STACKMOV SS,AXMOV SP,TOPMOV AX,DATAMOV DS,AXMOV DX,OFFSET MESMOV AH,09INT 21HMOV AX,CSMOV DS,AXMOV DX,OFFSET INT_PROCMOV AX,250FHINT 21H ;置IRQT中断向量MOV DX,INTA01IN AL,DXAND AL,7FHOUT DX,ALMOV DX,PORT1MOV AL,0D3HOUT DX,AL ;8279清零MOV AL,2AHOUT DX,AL ;置8279时钟命令MOV AL,40HOUT DX,AL ;读FIFO RAM命令MOV AL,00HOUT DX,AL ;置键盘显示模式MOV AL,80HOUT DX,AL ;写RAM命令STIKEY1: CALL KET2 ;调键盘显示子程序CMP HOUR2,0AHJZ NEXT2NEXT1: CMP AL,0CH ;是否“C”命令JNZ LP0NEXT2: MOV SIGH,00HMOV HOUR2,00HMOV HOUR1,00HMOV MIN2,00HMOV MIN1,00HMOV SEC2,00HMOV SEC1,00HLP0: CMP AL,0EH ;是否“E”命令JNZ LP1MOV SIGH,00HCLIMOV DX,INTA01IN AL,DXOR AL,80HOUT DX,ALSTIMOV AX,4C00H ;是“E”命令返回DOSINT 21HLP1: CMP AL,10H ;是否“G”命令JNZ LP2MOV SIGH,01HJMP KEY1LP2: CMP AL,0DH ;是否“D”命令JNZ SETIMOV SIGH,00HKEY3: JMP KEY1SETI: CMP AL,12H ;是否“P”命令JNZ KET1MOV SIGH,00H ;“00”为预置时标志MOV HMS,00HCALL HIGH0CMP ERR1,01HJZ KEY3CALL LOW0CMP ERR1,01HJZ KEY3MOV HMS,11H ;“11”为预置分标志CALL HIGH0CMP ERR1,01HJZ KEY3MOV HMS,22H ;“22”为预置秒标志CALL HIGH0CMP ERR1,01HJZ KEY3CALL LOW0JMP KEY1MAIN ENDPINT_PROC: STIPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIPUAH DSCMP SIGH,00 ;是否允许记数JZ ENDT1INC BUF ;记数单元加1CMP BUF,10JL ENDTMOV BUF,0INC SEC1CMP SEC1,10JL ENDTMOV SEC1,0INC SEC2CMP SEC2,6JL ENDTMOV SEC2,0INC MIN1CMP MIN1,10JL ENDTMOV MIN1,0INC MIN2CMP MIN2,6JL ENDTMOV MIN2,0INC HOUR1CMP HPUR2,2JL HHCMP HOUR1,4JL ENDTMOV HOUR1,0MOV HOUR2,0ENDT1: JMP ENDTHH: CMP HOUR1,10JL ENDTMOV HOUR1,0INC HOUR2ENDT: MOV DX,INTA00MOV AL,20HOUT DX,ALPOP DSPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXIRETKEY2 PROC NEARMOV DX,PORT1MOV AL,0D1HOUT DX,AL ;清显示WAEP: CALL DISP ;调显示子程序MOV DX,PORT1IN AL,DXAND AL,07HJZ WAEPKETN: MOV DX,PORT0 ;读状态IN AL,DXMOV BL,ALAND AL,07HAND BL,38HMOV CL,03SHR BL,CLCMP BL,00H ;是否第一行键JNZ LINE1ADD AL,08HJMP QUIT1LINE1: CMP BL,01HJNZ LINE2 ;是否第二行键JMP QUIT1LINE2: ADD AL,10HQUIT1: RETKEY2 ENDPDISP PROC NEARPUSH CXMOV AX,DATAMOV DS,AXMOV DX,PORT1MOV AL,90HOUT DX,ALMOV SI,OFFSET SEC1MOV CX,0006MOV BX,OFFSET LEDDISP1: CLDLODSBXLATMOV DX,PORT0OUT DX,ALLOOP DISP1POP CXRETDISP ENDPERR PROC NEARMOV HOUR2,0AHMOV HOUR1,0BHMOV MIN2,0BH ;显示“E----”MOV MIN1,0BHMOV SEC2,0BHMOV SEC1,0BHMOV ERR1,01H ;出错标志RETERR ENDPHIGH0 PROC NEARCALL KEY2MOV ERR1,00CMP HMS,00H ;HMS是预置时、分、秒标志JNZ MIN0CMP AL,02H ;00预置时JG ERROR ;11预置分MOV HOUR2,AL ;22预置秒JMP HOUT1MIN0: CMP HMS,11HJNZ SEC0CMP AL,05HJG ERRORMOV MIN2,ALJMP HOUT1SEC0: CMP AL,05HJG ERRORMOV SEC2,ALHOUT1: RETERROR: CALL ERRRETHIGH0 ENDPLOW0 PROC NEARCALL KEY2 ;预置时、分、秒低位MOV ERR1,00CMP HMS,00HJNZ MIN3MOV DL,HOUR2CMP DL,01JG HOUR3CMP AL,09HJG ERRORMOV HOUR1,ALJMP LQUT1HOUR3: CMP AL,03HJG ERRORMOV HOUR1,ALJMP LQUT1MIN3: CMP HMS,11HJNZ SEC3CMP AL,09HJG ERRORMOV MIN1,ALJMP LQUT1SEC3: CMP AL,09HJG ERRORMOV SEC1,ALLQUT1: RETLOW0 ENDPCODE ENDSEND START四、测试分析按要求在实验台上连好线,打开电源,然后在PC机上编译、连接、运行程序,再测试功能:按P键设置时分秒按C清零按G启动计时按D停止计时按E返回DOS输入有错显示E-----,此时按P可重新输入。