实现特定功能的键盘及LED显示课程设计
实现特定功能的键盘及LED显示课程设计

页眉内容微机原理与接口技术课程设计题目:实现特定功能的键盘及LED显示页眉内容目录'、实验目的.................... 、实验内容、总体设计四、实验电路五、实验框图六、实验程序七、实验心得页眉内容1、课程设计目的课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
2、实验设计内容:本次实验的主要内容是在了解键盘及LED 显示接口原理的基础上,设计出相应的实验电路,以实现特定功能的键盘及LED 显示。
需要完成以下功能:1. 按1 键显示年;2. 按2 键显示月日;3. 按3 键显示GOOD ;4. 按4 键数码管由左到右字符“0”循环显示。
5.自行设计特效显示功能。
实验主要涉及可编程的键盘、显示接口芯片8279 和可编程中断控制器8259A。
功能1至4是在可编程的键盘、显示接口芯片8279的基础上通过程序实现的。
在功能5中,加入了中断,通过边沿触发产生中断,执行中断服务子程序,以此来时现功能5的特效(在数码管上从左、从右依次显示0—9 的数字)。
3、试验设计原理及方案:(含电路原理图、硬件连接示意图、系统功能框图、程序流程图等)3.1 电路原理图3.2 系统功能框图3.3 程序流程图3.4 各功能实现方案3.4.1 功能一按1 键显示年当可编程的键盘、显示接口芯片8279扫描寄存器AL=02H 时,说明按键为1 号键。
关于显示年份,首先定义一个显示缓冲区,用于存储表示年份的数字。
然后依次读取其值,经过换码,再通过8279以左端入口方式显示与数码管上。
程序段如下:3MOV DX,D8279 ; 键值输入IN AL,DXCMP AL,02HJZ YEARYEAR: MOV CX,04HAA: MOV DX,D8279 ;其余四位,显示0MOV AL,3FHOUT DX,ALLOOP AAMOV BX,OFFSET TABMOV SI,OFFSET DISPBUFF1+3 ;设置要显示的初始位MOV CX,4DISP1: MOV AL,[SI]XLAT ;通过换码,再显示MOV DX,D8279OUT DX,ALDEC SILOOP DISP1 ;依次读取数值9,0,0,2。
独立按键控制led课程设计

独立按键控制led课程设计一、课程目标知识目标:1. 学生能理解独立按键的工作原理,掌握其电路连接方式。
2. 学生能掌握LED的基本特性,了解其在电路中的应用。
3. 学生能理解独立按键控制LED的原理,掌握相关编程方法。
技能目标:1. 学生能独立完成独立按键与LED的电路连接,并进行功能测试。
2. 学生能编写简单的程序,实现独立按键控制LED的亮灭、闪烁等功能。
3. 学生能运用所学知识解决实际问题,具备一定的创新意识和动手能力。
情感态度价值观目标:1. 学生通过课程学习,培养对电子技术的兴趣,提高学习积极性。
2. 学生在团队合作中,学会沟通、协作,培养团队精神。
3. 学生在实践过程中,树立正确的价值观,认识到科技对生活的影响。
课程性质:本课程为实践性课程,结合理论教学,注重培养学生的动手能力、创新意识和实际应用能力。
学生特点:学生处于初中阶段,具有一定的物理知识和动手能力,对电子技术有一定的好奇心和兴趣。
教学要求:教师应注重理论与实践相结合,引导学生主动参与实践,鼓励学生创新思维,提高解决问题的能力。
同时,关注学生的情感态度价值观培养,使学生在掌握知识技能的同时,形成良好的综合素质。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 理论知识:- 介绍独立按键的原理、功能及其在电路中的应用。
- 讲解LED的基本结构、特性以及在电路中的作用。
- 分析独立按键控制LED的电路原理及编程方法。
2. 实践操作:- 指导学生进行独立按键与LED的电路连接,确保正确无误。
- 帮助学生编写程序,实现独立按键控制LED的亮灭、闪烁等功能。
- 引导学生进行功能测试,分析并解决可能出现的故障。
3. 教学大纲:- 第一课时:介绍独立按键和LED的基本概念、原理及应用。
- 第二课时:讲解独立按键控制LED的电路原理及编程方法。
- 第三课时:指导学生进行电路连接和程序编写,实现功能。
- 第四课时:进行功能测试,总结问题,提高实践能力。
dspled键盘按键显示课程设计

dspled键盘按键显示课程设计一、课程目标知识目标:1. 学生能理解dspled键盘按键显示的基本原理,掌握其与计算机硬件和软件的关联性。
2. 学生能掌握dspled键盘按键显示的相关术语和概念,如背光、扫描码、映射等。
3. 学生能了解dspled键盘按键显示在不同应用场景中的作用和重要性。
技能目标:1. 学生能够独立进行dspled键盘按键显示的组装和调试。
2. 学生能够运用dspled键盘按键显示进行基本的编程操作,实现简单的功能。
3. 学生能够运用dspled键盘按键显示解决实际问题,提高实际操作能力。
情感态度价值观目标:1. 培养学生对计算机硬件和软件的兴趣,激发学习热情。
2. 培养学生的团队合作意识,学会在小组合作中分享、交流和协作。
3. 培养学生勇于尝试、不断探索的精神,提高面对问题的解决能力。
课程性质:本课程属于实践性较强的学科,注重理论知识与实际操作的相结合。
学生特点:学生处于好奇心强、求知欲旺盛的年级,具备一定的计算机基础,但对硬件和软件的结合尚需深入了解。
教学要求:教师应注重启发式教学,引导学生主动探究,关注学生的个体差异,提供个性化的指导。
同时,注重理论与实践相结合,提高学生的实际操作能力。
通过本课程的学习,使学生达到课程目标,为后续相关课程打下坚实基础。
二、教学内容1. dspled键盘按键显示原理:介绍dspled的工作原理,包括背光技术、扫描码的生成与传输、映射过程等,对应教材第3章“键盘与显示技术”。
2. dspled键盘按键显示组件:讲解键盘按键显示的各个组件,如LED、电路板、驱动程序等,以及它们的组装方法,对应教材第4章“计算机硬件组成”。
3. dspled编程操作:介绍如何通过编程实现键盘按键显示的功能,包括编程语言的选择、编程技巧等,对应教材第6章“计算机编程基础”。
4. dspled应用案例:分析dspled在实际应用场景中的使用,如游戏开发、嵌入式系统等,对应教材第8章“计算机硬件应用实例”。
键盘及LED驱动设计方案

1.模块描述该模块能够直接驱动8个共阴式(或8个共阳式)数码管位(或64只独立的LED ),同时还可以扫描管理多达64只按键。
其中有8只按键还可以作为功能键使用,如同电脑键盘上的Ctrl 、Shift 、Alt 键一样。
2.模块总体设计2.1总体实现结构displayctrlkeyscantimedis tributeenendpram flashswh scannum flashfreqpresskey p_wr functionkeyrepeatcnt f _wrseldt kinchgkout_sel kout_data图1:键盘扫描及LED 驱动模块结构图2.2 总体实现描述timedistribute 模块为displayctrl 和keyscan 模块分配工作时间,并控制interface 模块双向端口的输入输出的转换。
displayctrl 模块根据dpram 提供的显示数据及要扫描的数码管的个数scannum 提供相应的显示控制信号及显示数据。
keyscan 模块完成对键盘的扫描及对功能键、普通键及连击次数、按键键值的判断。
2.3 接口信号定义序号信号名位宽 I/O 描述1 dpram0~dpram7 64 I 对应的8个数码管的数据。
2 scannum3 I 要显示的数码管的个数。
3 sel 8 O 数码管的位选信号。
4 dt 8 O 数码管的显示数据5 p_wr 1 O 寄存器PressKey 和RepeatCnt 的写信号。
6 presskey8O普通按键的键值。
当扫描到有普通按键按下时,输出按键键值,结果将存于键值寄存器PressKey 中。
7repeatcnt 8 O 普通键的连击次数。
当普通按键连续按下时,输出按键的连击次数,结果将存于连击次数计数器RepeatCnt中。
8functionkey 8 O 功能键的状态。
每一位对应一个功能键(F7~F0),第0位(LSB)对应F0,第1位对应F1,依次类推,第7位(MSB)对应F7。
实验十四 LED显示和键盘实验

实验14 LED显示和键盘实验1. 实验目的加深用户对I2C总线的理解,熟悉I2C器件的使用,掌握ZLG7290芯片显示和键盘的简单程序设计。
2. 实验设备及器件IBM PC机一台DP-51 PRO单片机综合仿真实验仪一台3. 实验内容ZLG7290芯片LED显示、键盘控制器驱动实验。
4. 实验要求熟练掌握I2C总线的控制,灵活运用I2C主控器软件包,深刻理解ZLG7290芯片LED显示、键盘控制的各种功能,编写驱动程序,读出用户按键值并依次显示在8个LED数码管上(保留显示最后8次按键值,显示内容从右向左移动,最后一次按键值显示在最右侧LED数码管上)。
5. 实验步骤①用导线连接D5区和A2区的P16→SCL,P17→SDA,P10→RST_L,INT_KEY→INT0,短接D5区的JP1跳线。
②模拟I2C软件包VI2C_ASM.INC文件,使用$INCLUDE (VI2C_ASM.INC) 命令加入到你的汇编源文件中。
在你的汇编源文件中定义SCL、SDA、ACK等信号。
③先编写显示的子程序(Display)和获取用户按键子程序(GetKey)。
④然后再进行整体编程。
如果还有一难,可以先画流程一,再编写程序。
⑤显示结果为:上电运行时,8位数码管显示01234567,用户按键时,键值在最右侧LED数码管显示,原显示内容左移一位,例如:显示由“01234567”变为“1234567x”,(x:用户按键值,1~16,显示为1~F,g)。
6. 实验预习要求认真阅读ZLG7290的数据手册(附件1)和模拟I2C软件包(附件2)使用手册,理解硬件结构;先把程序编好,然后在Keil 51环境下进行软件仿真。
7. 实验参考程序详见附近3:计算机硬件技术基础实验参考代码(DP-51ProC).doc 文件。
SDA BIT P1.7 ;I2C总线定义串行数据存取位SCL BIT P1.6 ;I2C总线定义串行时钟位RST BIT P1.0 ;MCU复位输出信号,低电平复位ZLG7290INT_KEY BIT P3.2 ;MCU中断信号输入,有效的按键动作使该引脚信号变为低电平MTD EQU 40H ;I2C总线发送数据缓冲区(8字节)MRD EQU 48H ;I2C总线接收数据缓冲区(8字节)DisBuf EQU 38H ;显示缓冲区(8字节,可对应8位数码管显示);定义ZLG7290器件地址及子地址ZLG7290 EQU 70H ;ZLG7290的器件地址ACK BIT 10H ;应答标志位SLA DATA 50H ;器件的从地址SUBA DATA 51H ;器件的子地址NUMBYTE DATA 52H ;读/写的字节数变量Key DATA 53H ;返回用户按键值SystemReg EQU 00H ;系统寄存器地址,保存ZLG7290系统状态KeyReg EQU 01H ;键值寄存器,表示被压按键的键值CmdBuf0 EQU 07H ;命令缓冲区0CmdBuf1 EQU 08H ;命令缓冲区1DpRam EQU 10H ;显示缓存寄存器ORG 8000HLJMP MAINORG 8100H;-------主程序如下:MAIN: MOV SP,#70H ;堆栈区从70H开始CLR R ST ;复位ZLG7290LCALL DELAY ;等待复位完成,ZLG7290复位周期比较长,必须等待SETB RST ;结束复位LCALL DELAYlcall ClsDisp ;清除显示MainLoop: mov DisBuf+0,#0 ;上电运行时,8位数码管显示01234567mov DisBuf+1,#1 ;给显示缓冲区赋值,01234567mov DisBuf+2,#2mov DisBuf+3,#3mov DisBuf+4,#4mov DisBuf+5,#5mov DisBuf+6,#6mov DisBuf+7,#7lcall Display ;调用显示子程序,显示内容WaitKey: JB INT_KEY,WaitKey ;查询按键lcall GetKey ;获取键值mov A,Keyjz WaitKey ;Key=0无键按下,继续查询mov DisBuf+7,DisBuf+6 ;显示内容左移mov DisBuf+6,DisBuf+5mov DisBuf+5,DisBuf+4mov DisBuf+4,DisBuf+3mov DisBuf+3,DisBuf+2mov DisBuf+2,DisBuf+1mov DisBuf+1,DisBuf+0mov DisBuf+0,Keylcall Displayljmp WaitKey;子程序名:ClsDisp;功能:清除显示内容;调用:VI2C_ASM.INC;入口参数:无;出口参数:无;占用资源: R0,R1,R2,R3(工作寄存器组1),ACC,Cy,R5(当前工作寄存器组)ClsDisp: mov R5,#8 ;循环计数器初值,8位数码管mov A,#01100000B ;按位下载数据且译码指令01100 A2A1A0;A2~A0:对应显示位置1~8位数码管Cls1: MOV SLA,#ZLG7290 ;指定器件地址MOV SUBA,#CmdBuf0 ;指定子地址MOV MTD,A ; 命令送I2C总线发送数据缓冲区mov MTD+1,#1FH ;命令参数,1FH:无显示MOV NUMBYTE,#02H ;待发送数据2字节push ACC ;保护ACCpush PSW ;保护PSWsetb RS0 ;切换工作寄存器,I2C通信软件使用工作寄存器组1clr RS1LCALL IWRNBYTE ;调用写2字节数据程序(VI2C_ASM.INC,I2C模拟软件包)pop PSW ;恢复PSWpop ACC ;恢复ACCinc A ;按位下载数据且译码指令地址部分+1LCALL DELAY ;延时,等待ZLG7290执行上述命令djnz R5,Cls1 ;没有达到8次,继续循环ret ;子程序返回;子程序名:Display;功能:在8段LED数码管显示;调用:VI2C_ASM.INC;入口参数: Disbuf+0~ Disbuf+7,8字节显示缓冲区;出口参数:无;占用资源: R0,R1,R2,R3(工作寄存器组1),ACC,Cy,R0,R5(当前工作寄存器组)Display: mov R5,#8 ;循环计数器初值,8位数码管mov A,#01100000B ;按位下载数据且译码指令01100 A2A1A0;A2~A0:对应显示位置1~8位数码管mov R0,# Disbuf ;R0-> DisbufDisp1: MOV SLA,#ZLG7290 ;指定器件地址MOV SUBA,#CmdBuf0 ;指定子地址MOV MTD,A ;命令送I2C总线发送数据缓冲区mov MTD+1,@R0 ;命令参数,待显示数据送I2C总线发送数据缓冲区MOV NUMBYTE,#02H ;待发送数据2字节push ACC ;保护ACCpush PSW ;保护PSWsetb RS0 ;切换工作寄存器,I2C通信软件使用工作寄存器组1clr RS1LCALL IWRNBYTE ;调用写2字节数据程序(VI2C_ASM.INC,I2C模拟软件包)pop PSW ;恢复PSWpop ACC ;恢复ACCinc A ;按位下载数据且译码指令地址部分+1inc R0 ;R0+1,指向下一个待显示数据LCALL DELAY ;延时,等待ZLG7290执行上述命令djnz R5,Disp1 ;没有达到8次,继续循环ret ;子程序返回;子程序名:GetKey;功能:获取用户按键值(Key);调用:VI2C_ASM.INC;入口参数:无;出口参数:Key;占用资源: R0,R1,R2,R3(工作寄存器组1),ACC,CyGetKey: MOV SLA,#ZLG7290 ;指定器件地址MOV SUBA,#01H ;指定子地址MOV NUMBYTE,#01H ;读1字节数据push ACC ;保护ACCpush PSW ;保护PSWsetb RS0 ;切换工作寄存器,I2C通信软件使用工作寄存器组1clr RS1LCALL IRDNBYTE ;调用读1字节数据程序pop PSW ;恢复PSWpop ACC ;恢复ACCmov Key,MRD ;读取的数据送Keyret ;子程序返回;子程序名: DELAY;功能:延时约36.5 ms(11.0592MHz时钟);调用:YS500US;入口参数:无;出口参数:无;占用资源: R7,R6DELAY: MOV R7,#80HMIN: LCALL YS500USDJNZ R7,MINRET;子程序名: YS500US;功能:延时约279us(11.0592MHz时钟);调用:无;入口参数:无;出口参数:无;占用资源: R6YS500US:MOV R6,#80HDJNZ R6,$ ;延时128×2T=256T (T=1/1159200)RET$INCLUDE(VI2C_ASM.INC) ;将VIIC软件包加入到本段代码后END8. 实验思考题①编写LED数码管闪烁控制子程序,实现对指定位进行闪烁控制。
(整理)接口课程设计实现特定功能的键盘及LED显示

实现特定功能的键盘及LED显示了解键盘及LED显示接口原理,设计实验电路图完成以下功能:1. 按1键显示年;2. 按2键显示月日;3. 按3键显示GOOD ;4. 按4键数码管由左到右字符“0”循环显示。
5.自行设计特效显示功能。
CODE SEGMENTASSUME CS:CODE,DS:CODESTART: MOV AX,CSMOV DS,AXINPUT: CALL KEYBOARDLEA SI,KEYBUFFER;取按键的值MOV AL,[SI]CMP AL,1JNZ L0JMP SHOW_YEAR ;显示年L0:CMP AL,2JNZ L1JMP SHOW_MD ;显示月日L1:CMP AL,3JNZ L2JMP SHOW_GOOD ;显示GOODL2:CMP AL,4JNZ L3JMP SHOW_0 ;由左到右字符“0”循环显示L3:CMP AL,7JNZ L4JMP SHOW_SUN ;显示SUNL4:JMP SHOW_HERO;显示HERO;----------------------------------结束---------------------------------------------;--------------------------------显示年开始----------------------------------------SHOW_YEAR:MOV CH,01111111B ;初始化位选码01111111BMOV BH,11110111B ;显示位选结束位LEA SI,YEARBUFFERCALL DISPLAYDEC COUNT ;重复显示COUNT次JNZ SHOW_YEARMOV COUNT,250JMP INPUT;--------------------------------------结束-------------------------------------------;-----------------------------------显示月开始---------------------------------------SHOW_MD:MOV CH,01111111B ;初始化位选码01111111BMOV BH,11110111B ;显示位选结束位LEA SI,MDBUFFERCALL DISPLAYDEC COUNT ;重复显示COUNT次JNZ SHOW_MDMOV COUNT,250JMP INPUT;---------------------------------结束--------------------------------------------------;---------------------------------显示GOOD-----------------------------------------------SHOW_GOOD:MOV CH,01111111B ;初始化位选码01111111BMOV BH,11110111B ;显示位选结束位LEA SI,GOODBUFFERCALL DISPLAYDEC COUNT ;重复显示COUNT次JNZ SHOW_GOODMOV COUNT,250JMP INPUT;----------------------------------结束--------------------------------------------------;---------------------------------显示HERO-----------------------------------------------SHOW_HERO:DE: MOV CH,01111111B ;初始化位选码01111111B LEA SI, HEROBUFFERMOV BH,11110111B ;显示位选结束位CALL DISPLAYDEC COUNT ;重复显示COUNT次JNZ SHOW_HEROMOV COUNT,10DEC XUNMOV COUNT,10CALL SHOWDELAY_HCMP XUN,00H ;闪光显示JNZ DEMOV XUN ,15MOV COUNT ,250JMP INPUT;----------------------------------结束-------------------------------------------------;---------------------------显示由左到右字符“0”循环------------------------------------SHOW_0: MOV BX,3LSHOW0:MOV CH,01111111B ;初始化位选码01111111LEA DI,LINBUFFERMOV AL,80HMOV DX,203HOUT DX,AL ;再次初始化8255DISPLAY_0:MOV AL,CHMOV DX,202HOUT DX,AL;位选码送PC口MOV AL,[DI]MOV DX,200H;MOV AL,5BHOUT DX,AL ;显示段码CALL SHOWDELAY0ROR CH,1 ;指向下一个数码管CMP CH,11110111BJNZ DISPLAY_0DEC BX ;重复显示3次JNZ LSHOW0JMP INPUT;----------------------------------结束-------------------------------------------------;-----------------------------显示SUN-------------------------------------------SHOW_SUN:MOV CH,01111111B ;初始化位选码01111111BMOV BH,11101111B ;显示位选结束位LEA SI,SUNBUFFERCALL DISPLAYDEC COUNT ;重复显示COUNT次JNZ SHOW_SUNMOV COUNT,250JMP INPUT;-----------------------------------结束------------------------------------------------;----------------------------------显示延时----------------------------------------------- SHOWDELAY PROC NEARPUSH BXPUSH CXMOV BX,10SHOWDEL1:MOV CX,100SHOWDEL2:LOOP SHOWDEL2DEC BXJNZ SHOWDEL1POP CXPOP BXRETSHOWDELAY ENDP;-----------------------------------结束-----------------------------------------------;----------------------------------显示延时0--------------------------------------------SHOWDELAY0 PROC NEARPUSH BXPUSH CXMOV BX,100SHOW0DEL1:MOV CX,2000SHOW0DEL2:LOOP SHOW0DEL2DEC BXJNZ SHOW0DEL1POP CXPOP BXRETSHOWDELAY0 ENDP;-----------------------------------结束---------------------------------------------SHOWDELAY_H PROC NEARPUSH BXPUSH CXMOV BX,10SHOW_HDEL1:MOV CX,2000SHOW_HDEL2:LOOP SHOW_HDEL2DEC BXJNZ SHOW_HDEL1POP CXPOP BXRETSHOWDELAY_H ENDP;---------------------------------显示程序------------------------------------------DISPLAY PROC NEARMOV AL,80HMOV DX,203HOUT DX,AL ;再次初始化8255DISPLAY1:MOV AL,CHMOV DX,202HOUT DX,AL ;位选码送PC口MOV AL,[SI]MOV DX,200HOUT DX,AL ;显示段码CALL SHOWDELAY ;延时INC SIROR CH,1 ;指向下一个数码管CMP CH,BHJNZ DISPLAY1RETDISPLAY ENDP;-----------------------------------结束---------------------------------------------;---------------------------------读取按键盘------------------------------------------KEYBOARD PROC NEARLEA SI,KEYBUFFERMOV AL,10000001B ;初始化8255控制字MOV DX,203HOUT DX,ALKS1:CALL KS ;读取按键CMP AL,0FH ;判断有无按键JZ KS1CALL DELAYCALL KSCMP AL,0FHJZ KS1MOV BL,0EFH ;初始化列码MOV BH,0 ;初始化列计数器AGAIN:MOV DX,202HMOV AL,BLOUT DX,AL ;输出列码IN AL,DX ;读取行码AND AL,0FHCMP AL,0FHJZ NEXT ;该列无键闭合,准备下一列扫描CMP AL,0DH ;判断列是否是第一个键闭合?JNZ TWOMOV AL,1JMP FREETWO: ;判断列是否是第二个键闭合?CMP AL,0BHJNZ THREEMOV AL,4JMP FREETHREE: ;判断列是否是第三个键闭合?CMP AL,07HJNZ NEXTMOV AL,7FREE:PUSH AXWAIT1:CALL KSCMP AL,0FHJNZ WAIT1POP AXADD AL,BHMOV [SI],AL ;保存键值,并返回JMP RETURNNEXT:INC BHROL BL,1CMP BL,0FEHJNZ AGAINJMP KS1KS PROC NEARMOV DX,202HMOV AL,0FHOUT DX,ALIN AL,DXAND AL,0FHRETKS ENDPDELAY PROC NEARPUSH BXPUSH CXMOV BX,2000 DEL1:MOV CX,10DEL2:LOOP DEL2DEC BXJNZ DEL1POP CXPOP BXRETDELAY ENDP RETURN:RET KEYBOARD ENDPEXIT:MOV AH,4CHINT 21HXUN DB 15YEARBUFFER DB 5BH,3FH,3FH,6FH ;存放年2009MDBUFFER DB 3FH,6FH,3FH,66H ;存放月日0904GOODBUFFER DB 6FH,5CH,5CH,5EH ;GOODKEYBUFFER DB 1LINBUFFER DB 3FHHEROBUFFER DB 76H,79H,77H,3FH ;HEROSUNBUFFER DB 6DH,3EH,37H ;SUNCOUNT DB 250 ;显示次数----------------------------------结束-----------------------------------------CODE ENDSEND START。
独立式键盘与LED数码管显示器与单片机控制相关的学习教案

KEY0:CJNE A, #01H, KEY1;不是KEYA键,转KEY1
LJMP KEYAA;
是KEYA键,转KEYAA执行
KEY1:CJNE A, #02H, KEY2;不是KEYB键,转KEY2
LJMP KEYBB;
是KEYB键,转KEYBB执行
KEY2:CJNE A, #04H, KEY3;不是KEYC键,转KEY3
于显示小数点。通过七段发光二极管亮暗的不同组合,可以显示多种数
字(0~9),字母(a~f、A~F)及其它符号。另外,在使用数码管 时必须增加限流电阻,以保护数码管。
第20页/共35页
第二十一页,编辑于星期二:八点 五十四分。
LED显示器中的发光二极管共有两种连接方法: (a)共阳极接法:
各发光二极管的阳极连接在一起,接到数码管的位控端(公共端),再
独立式键盘的按键相互独立,每个按键接一根I/O口线,一根 I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。因此,
通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。
80C51
VCC
P1.0 P1.1 P1.2 P1.3
KEYA KEYB KEYC KEYD
第10页/共35页
第十一页,编辑于星期二:八点 五十四分。
(8)按键的编码
根据键盘结构的不同,采用不同的编码方式。
第7页/共35页
第八页,编辑于星期二:八点 五十四分。
(9)编制键盘程序
一个完善的键盘控制程序应具备以下功能:
(a)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点
抖动的影响;
(b)有可靠的逻辑处理办法。每次只处理一个按键,其间对 任何按键的操作对系统不产生影响,且无论一次按键时间有多长 ,系统仅执行一次按键功能程序;
键盘控制显示课程设计

键盘控制显示课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握键盘控制显示的基本原理和编程方法;技能目标要求学生能够独立完成键盘控制显示的实验,并具备一定的创新能力;情感态度价值观目标要求学生在学习过程中培养团队合作意识,增强对计算机科学的兴趣和责任感。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
首先,学生需要理解键盘控制显示的基本概念,包括键盘的工作原理和显示技术的演变。
其次,学生应掌握键盘控制显示的编程方法,包括键盘扫描、按键消抖和显示控制等。
最后,学生需要具备实际操作能力,能够通过编程实现键盘控制显示的功能,并在此基础上进行创新设计。
二、教学内容根据课程目标,我们选择和了以下教学内容。
首先,介绍键盘控制显示的基本原理,包括键盘的工作原理和显示技术的演变。
其次,讲解键盘控制显示的编程方法,包括键盘扫描、按键消抖和显示控制等。
接着,通过实例分析,让学生了解键盘控制显示在实际应用中的重要性。
最后,安排学生进行实验,让他们亲自动手实现键盘控制显示的功能,并鼓励他们进行创新设计。
三、教学方法为了实现课程目标,我们将采用多种教学方法。
首先,通过讲授法,向学生传授键盘控制显示的基本原理和编程方法。
其次,利用讨论法,引导学生思考键盘控制显示在实际应用中的价值和挑战。
接着,采用案例分析法,让学生通过分析实际案例,深入理解键盘控制显示的应用场景。
最后,运用实验法,让学生在动手实践中掌握键盘控制显示的编程技巧,并培养他们的创新能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源。
首先,选用合适的教材,为学生提供系统的学习材料。
其次,提供参考书籍,拓展学生的知识视野。
接着,收集多媒体资料,丰富学生的学习体验。
最后,准备实验设备,确保学生能够顺利进行实验操作。
同时,我们还将利用网络资源,为学生提供更多的学习资料和交流平台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术课程设计题目:实现特定功能的键盘及LED显示目录一、实验目的……………………………………二、实验内容……………………………………三、总体设计……………………………………四、实验电路……………………………………五、实验框图……………………………………六、实验程序……………………………………七、实验心得……………………………………1、课程设计目的课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
2、实验设计内容:本次实验的主要内容是在了解键盘及LED显示接口原理的基础上,设计出相应的实验电路,以实现特定功能的键盘及LED显示。
需要完成以下功能:1. 按1键显示年;2. 按2键显示月日;3. 按3键显示GOOD ;4. 按4键数码管由左到右字符“0”循环显示。
5.自行设计特效显示功能。
实验主要涉及可编程的键盘、显示接口芯片8279和可编程中断控制器8259A。
功能1至4是在可编程的键盘、显示接口芯片8279的基础上通过程序实现的。
在功能5中,加入了中断,通过边沿触发产生中断,执行中断服务子程序,以此来时现功能5的特效(在数码管上从左、从右依次显示0—9的数字)。
3、试验设计原理及方案:(含电路原理图、硬件连接示意图、系统功能框图、程序流程图等)3.1 电路原理图3.2 系统功能框图3.3 程序流程图3.4 各功能实现方案3.4.1 功能一按1键显示年当可编程的键盘、显示接口芯片8279扫描寄存器AL=02H时,说明按键为1号键。
关于显示年份,首先定义一个显示缓冲区,用于存储表示年份的数字。
然后依次读取其值,经过换码,再通过8279以左端入口方式显示与数码管上。
程序段如下:MOV DX,D8279 ;键值输入IN AL,DXCMP AL,02HJZ YEARYEAR: MOV CX,04HAA: MOV DX,D8279 ;其余四位,显示0 MOV AL,3FHOUT DX,ALLOOP AAMOV BX,OFFSET TABMOV SI,OFFSET DISPBUFF1+3 ;设置要显示的初始位MOV CX,4DISP1: MOV AL,[SI]XLAT ;通过换码,再显示MOV DX,D8279OUT DX,ALDEC SILOOP DISP1 ;依次读取数值9,0,0,2。
TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DISPBUFF1 DB 2,0,0,9 ;定义显示缓冲区3.4.2 功能二按2键显示月日方法同功能一,当8279扫描寄存器AL=0AH时,说明按键为2号键。
显示月日方法和显示年份一样,首先定义一个显示缓冲区,用于存储表示月日的数字。
然后依次读取其值,经过换码,再通过8279以左端入口方式显示与数码管上。
程序段如下:CMP AL,0AH ;键值输入JZ MONTHMONTH: M OV CX,04HBB: MOV DX,D8279 ;其余四位,显示0MOV AL,3FHOUT DX,ALLOOP BBMOV BX,OFFSET TABMOV SI,OFFSET DISPBUFF2+3 ;设置要显示的初始位MOV CX,4DISP2: MOV AL,[SI]XLAT ;通过换码,再显示MOV DX,D8279OUT DX,ALDEC SI ;依次读取数值1,3,8,0LOOP DISP2。
TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDISPBUFF2 DB 0,8,3,1 ;定义显示缓冲区3.4.3 功能三按3键显示GOOD将G,O,O,D分别以七段代码6FH,3FH,3FH,5EH代替,由于8279为左端入口方式,所以应依次将5EH,3FH,3FH,6FH送与8279数据端,以显示GOOD字样。
然后清空LED数码管的显示,再将以上代码送与8279,并通过延时,让GOOD字样以闪烁方式显示与数码管。
程序如下:GOOD: MOV BL,0AH ;闪烁次数10次GOD: MOV CX,08H ;清空LED数码管的显示CLEAR:MOV DX,D8279MOV AL,00HOUT DX,ALLOOP CLEARCALL DELAY ;延时MOV CX,04HCC: MOV DX,D8279 其余位显示0MOV AL,3FHOUT DX,ALLOOP CCMOV DX,D8279 ;显示DMOV AL,5EHOUT DX,ALMOV DX,D8279 ;显示OMOV AL,3FHOUT DX,ALMOV DX,D8279 ;显示OMOV AL,3FHOUT DX,ALMOV DX,D8279 ;显示GMOV AL,6FHOUT DX,ALCALL DELAYDEC BLCMP BL,00H ;若已闪烁10次,则不再闪烁JNZ GOD3.4.4 功能四按4键数码管由左到右字符“0”循环显示当8279扫描寄存器AL=01H时,说明按键为4号键。
ZERO PROC NEARMOV DX,C8279 ;修改8279配置(右边输入,八位显示,外部译码)MOV AL,010HOUT DX,ALMOV CX,08H ;清空LED数码管的显示CLEAR1:MOV DX,D8279MOV AL,00HOUT DX,ALLOOP CLEAR1MOV CX,08H ;大循环计数MOV BL,01HC_DZERO:PUSH CXMOV BH,01HMOV CX,08H ;小循环计数DZERO:MOV AL,00HCMP BL,BH ;相等则显示0,否则不显示JNE NOAL_ZEROMOV AL,3FHNOAL_ZERO:MOV DX,D8279OUT DX,ALCALL DELAY ;延时ROL BH,1LOOP DZEROPOP CXROL BL,1LOOP C_DZEROMOV DX,C8279 ;改回8279配置(左边输入,八位显示,外部译码)MOV AL,0HOUT DX,ALRETZERO ENDP3.4.5 功能五自行设计特效显示功能此功能的实现引入了中断技术,通过边沿触发中断,执行中断服务子程序,进而达到效果。
(1)中断向量表的设置计8259的设置:CLI ;设置中断向量MOV AX,0 ;设置中断向量IR0用于键盘中断MOV ES,AXLEA AX,DATE ;设置中断类型号08HMOV ES:[4*08],AXMOV AX,CSMOV ES:[4*08+2],AXMOV DX,INT00 ;8259配置MOV AL,13H ;设置ICW1,边沿触发,单片8259A,需ICW4OUT DX,ALNOPMOV DX,INT01MOV AL,08H ;设置ICW2,中断类型号的高5位为00001OUT DX,ALMOV AL,01H ;设置ICW4,非AEOI方式,完全嵌套方式OUT DX,ALMOV DX,INT01IN AL,DXAND AL,0H ;设置OCW1,开放IR0OUT DX,ALSTI(2)中断服务子程序:DATE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,08HCLEAR2: MOV DX,D8279 ;清空LED数码管的显示MOV AL,00HOUT DX,ALLOOP CLEAR2MOV AH,00HDIS: MOV CX,08HDISP3: MOV AL,AHlea bx,TAB ;依次显示断码表中数字xlatmov dx,D8279out dx,alCALL DELAYLOOP DISP3INC AHTEST AH,01H ;根据AH的奇偶性选择输入方式JZ X1MOV AL,010HMOV DX,C8279 ;修改8279配置(右边输入,八位显示,外部译码)OUT DX,ALCMP AH,09HJBE DISX1: MOV AL,00HMOV DX,C8279 ;修改8279配置(右边输入,八位显示,外部译码)OUT DX,ALCMP AH,09HJBE DISMOV DX,INT00 ;中断结束命令MOV AL,20HOUT DX,ALPOP DXPOP CXPOP BXPOP AXIRETDATE endp4、汇编程序源代码C8279 EQU 222HD8279 EQU 220HINT00 EQU 200H ;8259地址INT01 EQU 201HMODE EQU 00H ;左边输入,八位显示,外部译码FEQ EQU 38H ;扫描频率CODE SEGMENTASSUME CS:CODE,DS:CODESTART:PUSH CSPOP DSMOV DX,C8279 ;初始化8279MOV AL,MODEOUT DX,ALMOV AL,FEQOUT DX,ALCLI ;设置中断向量MOV AX,0 ;设置中断向量IR0用于键盘中断MOV ES,AXLEA AX,DATE ;设置中断类型号08HMOV ES:[4*08],AXMOV AX,CSMOV ES:[4*08+2],AXMOV DX,INT00 ;8259配置MOV AL,13H ;设置ICW1,边沿触发,单片8259A,需ICW4 OUT DX,ALNOPMOV DX,INT01MOV AL,08H ;设置ICW2,中断类型号的高5位为00001OUT DX,ALMOV AL,01H ;设置ICW4,非AEOI方式,完全嵌套方式OUT DX,ALMOV DX,INT01IN AL,DXAND AL,0H ;设置OCW1,开放IR0OUT DX,ALSTI;清FIFO RAMBEGIN: MOV DX,C8279MOV AL,0C2HOUT DX,ALWAIT1: IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIT1MOV AL,BLAND AL,0FHCMP AL,00HJE WAIT1MOV AL,40H ;读FIFO/传感器RAM命令OUT DX,ALMOV DX,D8279 ;键值输入IN AL,DXCMP AL,02HJZ YEARCMP AL,0ahJZ MONTHCMP AL,22hJZ GOODCMP AL,01hJZCALL ZEROJMP BEGIN;=================================YEAR: MOV CX,04HAA: MOV DX,D8279 ;其余四位,显示0OUT DX,ALLOOP AAMOV BX,OFFSET TABMOV SI,OFFSET DISPBUFF1+3 ;设置要显示的初始位MOV CX,4DISP1: MOV AL,[SI]XLAT ;通过换码,再显示MOV DX,D8279OUT DX,ALDEC SILOOP DISP1 ;依次读取数值9,0,0,2JMP BEGIN;=================================MONTH: M OV CX,04HBB: MOV DX,D8279 ;其余四位,显示0MOV AL,3FHOUT DX,ALLOOP BBMOV BX,OFFSET TABMOV SI,OFFSET DISPBUFF2+3 ;设置要显示的初始位MOV CX,4DISP2: MOV AL,[SI]XLAT ;通过换码,再显示MOV DX,D8279OUT DX,ALDEC SI ;依次读取数值1,3,8,0LOOP DISP2JMP BEGINGOOD: MOV BL,0AH ;闪烁次数10次GOD: MOV CX,08H ;清空LED数码管的显示CLEAR:MOV DX,D8279OUT DX,ALLOOP CLEARCALL DELAY ;延时MOV CX,04HCC: MOV DX,D8279 其余位显示0MOV AL,3FHOUT DX,ALLOOP CCMOV DX,D8279 ;显示DMOV AL,5EHOUT DX,ALMOV DX,D8279 ;显示OMOV AL,3FHOUT DX,ALMOV DX,D8279 ;显示OMOV AL,3FHOUT DX,ALMOV DX,D8279 ;显示GMOV AL,6FHOUT DX,ALCALL DELAYDEC BLCMP BL,00H ;若已闪烁10次,则不再闪烁JNZ GODJMP BEGINZERO PROC NEARMOV DX,C8279 ;修改8279配置(右边输入,八位显示,外部译码)MOV AL,010HOUT DX,ALMOV CX,08H ;清空LED数码管的显示CLEAR1:MOV DX,D8279MOV AL,00HOUT DX,ALLOOP CLEAR1MOV CX,08H ;大循环计数MOV BL,01HC_DZERO:PUSH CXMOV BH,01HMOV CX,08H ;小循环计数DZERO:MOV AL,00HCMP BL,BH ;相等则显示0,否则不显示JNE NOAL_ZEROMOV AL,3FHNOAL_ZERO:MOV DX,D8279OUT DX,ALCALL DELAY ;延时ROL BH,1LOOP DZEROPOP CXROL BL,1LOOP C_DZEROMOV DX,C8279 ;改回8279配置(左边输入,八位显示,外部译码)MOV AL,0HOUT DX,ALRETZERO ENDPJMP BEGIN ;重复执行DATE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,08H;清空LED数码管的显示CLEAR2: MOV DX,D8279MOV AL,00HOUT DX,ALLOOP CLEAR2MOV AH,00HDIS: MOV CX,08HDISP3: MOV AL,AHlea bx,TABxlatmov dx,D8279out dx,alCALL DELAYLOOP DISP3INC AHTEST AH,01HJZ X1MOV AL,010HMOV DX,C8279 ;修改8279配置(右边输入,八位显示,外部译码)OUT DX,ALCMP AH,09HJBE DISX1: MOV AL,00HMOV DX,C8279 ;修改8279配置(右边输入,八位显示,外部译码)OUT DX,ALCMP AH,09HJBE DISMOV DX,INT00MOV AL,20H ;OUT DX,ALPOP DXPOP CXPOP BXPOP AXIRETDATE endpdelay proc nearpush cxmov cx,0ffffhloop $pop cxretdelay endpTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDISPBUFF1 DB 2,0,0,9DISPBUFF2 DB 0,8,3,1CODE ENDSEND START5、实验效果(见截图)6、实验心得与体会本次课程设计,我看到了自己许多不足之处。