实现特定功能的键盘及LED显示 接口课程设计要点
独立按键控制led课程设计

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

实验三键盘及LED显示实验一、实验内容利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED 显示器显示出来。
二、实验目的及要求(一)实验目的通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。
(二)实验要求1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。
2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。
三、实验条件及要求计算机,C51语言编辑、调试仿真软件及实验箱50台套。
四、实验相关知识点1.C51编程、调试。
2.扩展8255芯片的原理及应用。
3.键盘扫描原理及应用。
4.LED显示器原理及应用。
5.外部中断的应用。
五、实验说明本实验仪提供了8位8段LED显示器,学生可选用任一位LED显示器,只要按地址输出相应的数据,就可以显示所需数码。
六、实验原理图P1口桥接。
八、实验参考流程图1.主程序流程图2.外中断服务程序流程图外部中断0 外部中断1定时器0中断程序,用于消抖动:3.LED显示程序流程图九、C51语言参考源程序#include "reg52.h"unsigned char KeyResult; //存放键值unsigned char buffer[8]; //显示缓冲区bit bKey; //是否有键按下xdata unsigned char P_8255 _at_ 0xf003; //8255的控制口xdata unsigned char PA_8255 _at_ 0xf000; //8255的PA口xdata unsigned char PB_8255 _at_ 0xf001; //8255的PB口xdata unsigned char PC_8255 _at_ 0xf002; //8255的PC口code unsigned char SEG_TAB[] = { //段码0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x0};sbit bLine0 = P3^2;sbit bLine1 = P3^3;//延时1msvoid Delay1ms(){unsigned char i;i = 0;while (--i);}//显示void Display(){unsigned char i = 0x7f;unsigned char j;for (j = 0; j < 8; j++){PA_8255 = i; //扫描PB_8255 = SEG_TAB[buffer[j]]; //段数据i = i / 2 + 0x80;Delay1ms();}}//更新显示缓冲区数据void RefurbishData(){char i;for (i = 7; i >0; i--)buffer[i] = buffer[i-1];buffer[0] = KeyResult;}void Int0Int() interrupt 0{unsigned char i = 0x80;unsigned char KeyResult0 = 0x0;EX0 = 0; //关外部中断0P_8255 = 0x89; //PC口输入bLine0 = 0; //P3.2作行输出while (i){if ((PC_8255 & i) == 0)break;KeyResult0++;i >>= 1;}P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0;bLine0 = 1;if (i){TH0 = 60; //定时中断计数器初值TL0 = 176; //定时50msTR0 = 1;KeyResult = KeyResult0;}IE0 = 0; //清除中断EX0 = 1; //开外部中断0}void Int1Int() interrupt 2{unsigned char i = 0x80;unsigned char KeyResult0 = 8;EX1 = 0; //关外部中断0P_8255 = 0x89; //PC口输入bLine1 = 0; //P3.2作行输出while (i){if ((PC_8255 & i) == 0)break;KeyResult0++;i >>= 1;}P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0;bLine1 = 1;if (i){TH0 = 60; //定时中断计数器初值TL0 = 176; //定时50msTR0 = 1;KeyResult = KeyResult0;}IE1 = 0; //清除中断EX1 = 1; //开外部中断0}//50ms中断服务程序void INT_Timer0(void) interrupt 1{if (((KeyResult < 8) && !bLine0) ||((KeyResult >= 8) && !bLine1)){bKey = 1; //有键按下,键值在KeyResult中}TR0 = 0;}void main(){char i;bKey = 0; //没有键按下TMOD = 1; //定时器0:方式一P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0x0;ET0 = 1; //开定时器0中断EX0 = 1; //开外部中断0EX1 = 1; //开外部中断1IT0 = 1; //边沿触发IT1 = 1; //边沿触发EA = 1; //允许中断for (i = 0; i < 8; i++)buffer[i] = 0x10;// TR0 = 1; //开定时器T0// bRefurbish = 1;while (1){if (bKey){bKey = 0;RefurbishData();}Display(); //调用显示}}十、实验实施步骤1.仔细阅读实验内容及要求,编写C51源程序。
第五章 独立式键盘与LED数码管显示器(本科)

按下。
80C51
VCC
KEYA ห้องสมุดไป่ตู้1.0
KEYB P1.1
KEYC P1.2
KEYD P1.3
(2)独立式键盘的程序设计 一般把键盘扫描程序设计成子程序,以便其它各程序调用。
程序设计通常采用查询法。假设键盘扫描子程序的名称为KEY, 则键盘扫描子程序KEY应具有以下功能:
(a)判定有无按键动作; (b)去抖动; (c)确认是否真正有闭合键; (d)计算并保存闭合键键码(键号); (e)判定闭合键是否释放; (f)恢复闭合键键码(键号)。
械触点式开关按键。 (b)机械触点式开关按键的功能及特点; 1)机械触点式开关按键的功能: 把开关按键机械上的通断关系转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统 的逻辑电平相兼容。
2)机械触点式开关按键的特点: 机械触点式开关按键的理想波形:见图 机械触点式开关按键的实际波形:见图 机械开关特点:闭合时,不会马上稳定地接通。
矩阵式键盘主要用于按键较多的场合,也称行列式键盘。 (3)MCS-51单片机键盘接口方法及接口芯片:
(a)利用单片机芯片本身的并行口; (b)利用单片机芯片本身的串行口; (c)利用通用接口芯片(8255、8155等); (d)利用专用接口芯片8279。 (4)单片机键盘接口电路应完成的操作功能: (a)判定是否有闭合键; (b)确定闭合键的位置; (c)形成闭合键的键码; (d)排除多键、串键及去抖动。
但如果在触点抖动期间检测按键的通与断状态,可能导致判 断出错,即按键一次按下或释放被错误地认为是多次操作,这种 情况是不允许出现的。为了克服按键触点机械抖动所致的检测误 判,确保CPU对一次按键动作只确认一次按键,必须采取去抖动 措施。 (7)消除按键抖动的措施:
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显示

实现特定功能的键盘及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显示

接口课程设计实现特定功能的键盘及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,10 DEL2:LOOP DEL2 DEC 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显示_课程设计

实现特定功能的键盘及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以左端入口方式显示与数码管上。
单片机键盘显示课程设计报告要点

<<单片机原理及应用课程设计报告>> 题目:键盘按键识别及LED数码显示学院:工程学院专业:自动化班级: 1101班姓名:指导教师:2013年12月19日目录1课程设计的任务与要求 (1)2课程设计总体分析介绍 (1)3各部分工作电路的详细介绍 (3)参考书目 (11)附录 (12)第1节课程设计的任务与要求1.1 课程设计题目与要求1.课程设计题目:键盘按键识别及LED数码显示2.课程设计要求:(1)画出组成部分电路图(2)画出程序流程图,设计程序并通过检查(3)用语言表达工作原理,连接方式及用途等1.2 课程设计目的及内容1.目的:按键是单片机常用的输入设备,操作人员可以通过按键输入指令和数据。
在使用按键是单片机要正确识别按键是否被按下和按下的次数等状态,才能正确执行相关操作。
本实验要实现对按键状态的正确检测并显示相关内容。
2.内容:(1)根据独立式键盘的特点,进行键盘控制系统的整体研究与设计。
(2)LED实时显示按键信息(显示按键号)。
(3)通过编写程序实现按键信息的提取和显示。
第2节课程设计系统总体分析介绍2.1 显示部分本设计显示部分是利用动态显示实现的,LED数码管采用共阳极接法。
LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极三极管增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,所以数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北科技大学《接口技术》课程设计报告学生姓名:学号:专业班级:课程名称:学年学期:2 0 —2 0 学年第学期指导教师:2 0 年月课程设计成绩评定表目录一、设计题目:--------------------------------------------------------------------------------------------- 2二、设计目的:--------------------------------------------------------------------------------------------- 2三、设计原理及方案: ----------------------------------------------------------------------------------- 21、实验电路图---------------------------------------------------------------------------------------- 22、实验框图 ------------------------------------------------------------------------------------------- 33、各功能实现方案---------------------------------------------------------------------------------- 44、实验程序 ------------------------------------------------------------------------------------------- 4四、实验方法------------------------------------------------------------------------------------------------ 91、实验电路测试------------------------------------------------------------------------------------- 92、软件测试 ------------------------------------------------------------------------------------------- 9五、实验结果------------------------------------------------------------------------------------------------ 9六、改进意见及建议 -------------------------------------------------------------------------------------- 9七、设计体会------------------------------------------------------------------------------------------------ 9一、设计题目:实现特定功能的键盘及LED显示。
二、设计目的:1、掌握键盘和显示器的接口方法和编程方法。
2、掌握键盘扫描和LED八段码显示器的工作原理。
三、设计原理及方案:1、实验电路图说明:使用PC 机与伟福lab8000实验箱连接起来,安装好相应驱动,做好接线分析,由于lab8000实验箱已经将部分电路接线内置,所以接线仅需要将KEY/LED_CS 选通端口与CS0相连即可。
2、实验框图开始显示缓冲区初始化LED 显示读取键值键值转换为显示数据有键输入?是 否主程序框图是 是否开始输出列扫描信号列扫描信号移位 该列有键输入?读入行信号返回6列扫描完?初始化地址参数读键输入子程序框图(接下页)(接上页)3、各功能实现方案(1)功能1:按1键显示年当读取到寄存器AL=02H时,说明按键为1号键。
关于显示年份,首先定义一个显示缓冲区,用于存储表示年份的数字。
然后依次读取其值,再显示到数码管上。
(2)功能2:按2显示月日当读取到寄存器AL=0AH时,说明按键为2号键。
显示月日方法和显示年份一样,首先定义一个显示缓冲区,用于存储表示月日的数字。
然后依次读取其值,再显示与数码管上。
(3)功能3:按3显示GOOD将G,O,O,D分别以七段代码6FH,3FH,3FH,5EH代替,以显示GOOD字样。
然后清空LED数码管的显示,通过延时,让GOOD字样显示与数码管。
(4)功能4:按4键数码管由左到右8字循环显示当8279扫描寄存器AL=01H时,说明按键为4号键。
通过设置循环及延迟及上述相似的方法显示出指定效果。
4、实验程序OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN_KEY equ 08001h ; 键盘读入口data segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)LEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hKeyTable: ; 键码定义db 16h, 15h, 14h, 0ffhdb 13h, 12h, 11h, 10hdb 0dh, 0ch, 0bh, 0ahdb 0eh, 03h, 06h, 09hdb 0fh, 02h, 05h, 08hdb 00h, 01h, 04h, 07hdata endscode segmentassume cs:code, ds:dataDelay proc nearpush ax ; 延时子程序push cxmov al, 0mov cx,axloop $pop cxpop axretDelay endpDelay1 proc nearpush ax ; 延时子程序push cxmov al, 0mov cx,38000loop $pop cxpop axretDelay1 endpDisplayLED proc nearmov bx, offset LEDBufmov cl, 6 ; 共6个八段管mov ah, 00100000b ; 从左边开始显示DLoop:mov dx, OUTBITmov al, 0out dx,al ; 关所有八段管mov al, [bx]mov dx, OUTSEGout dx,almov dx, OUTBITmov al, ahout dx, al ; 显示一位八段管push axmov ah, 1call Delaypop axshr ah, 1inc bxdec cljnz DLoopmov dx, OUTBITmov al, 0out dx,al ; 关所有八段管retDisplayLED endpTestKey proc nearmov dx, OUTBITmov al, 0out dx, al ; 输出线置为0mov dx, IN_KEYin al, dx ; 读入键状态not aland al, 0fh ; 高四位不用retTestKey endpGetKey proc nearmov ch, 00100000bmov cl, 6KLoop:mov dx, OUTBITmov al, ch ; 找出键所在列not alout dx, alshr ch, 1mov dx, IN_KEYin al, dxnot aland al, 0fhjne Goon_ ; 该列有键入dec cljnz KLoopmov cl, 0ffh ; 没有键按下, 返回0ffhjmp Exit1Goon_:dec clshl cl, 2 ; 键值= 列X 4 + 行mov ch, 4LoopC:test al, 1jnz Exit1shr al, 1inc cldec chjnz LoopCExit1:mov dx, OUTBITmov al, 0out dx, almov ch, 0mov bx, offset KeyTableadd bx, cxmov al, [bx] ; 取出键码mov bl, alWaitRelease:mov dx, OUTBITmov al, 0out dx, al ; 等键释放mov ah, 10call Delaycall TestKeyjne WaitReleasemov al, blretGetKey endpStart proc nearmov ax, datamov ds, axmov di,offset LEDBufp1: mov di,offset LEDBufmov [di], 05bh ; 显示2015.mov [di+1], 03fhmov [di+2], 03fhmov [di+3], 0ffhmov [di+4], 0mov [di+5], 06hjmp MLoopp2: mov di,offset LEDBufmov [di], 03fh ; 显示08.08.mov [di+1], 0ffhmov [di+2], 03fhmov [di+3], 0ffhmov [di+4], 0mov [di+5], 5bhjmp MLoopp3: mov di,offset LEDBufmov [di],6fh ;显示goodmov [di+1],5chmov [di+2],5chmov [di+3],0dehmov [di+4],0mov [di+5],4fhjmp MLoopp4: push cxmov cx,08hmov bx,offset LEDBufp4l: mov [bx],00inc bxloop p4lpop cxmov [di], 7fh ; 显示8inc dicmp di,offset LEDBuf + 06hjnz nextmov di,offset LEDBufnext: call delay1call DisplayLED ; 显示call TestKeyjne MLoopjmp p4MLoop:call DisplayLED ; 显示call TestKey ; 有键入?je MLoop ; 无键入, 继续显示call GetKey ; 读入键码and al, 0fh ; 显示键码cmp al,01hjz mmpp1cmp al,02hjz mmpp2cmp al,03hjz p3cmp al,04hjz p4mov ah, 0mov bx, offset LEDMAPadd bx, axmov al, [bx]mov LEDBuf+5, aljmp MLoopmmpp1: jmp p1mmpp2: jmp p2Start endpcode endsend start四、实验方法1、实验电路测试(1)将KEY/LED_CS选通端口与CS0相连。