8255扫描键盘

8255扫描键盘
8255扫描键盘

实验九8255扫描键盘、显示实验

一.实验要求

利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。8255PA口做键盘输入线,P B口作扫描线。

二.实验目的

1.掌握8255编程方法。

2.掌握扫描键盘和显示的编程方法。

三.实验电路及连线

CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,P B口地址为8502H,PC口地址为8504H。

CS8279已固定接至8700H,则8279的状态口地址为8701H; 8279的数据口地址为8700H;

○29模块中的十个短路套都套在8255侧。

四.实验说明

在PA 口与P B 口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。显示部分由8279控制,由7407驱动8位数码管显示。

五.

实验框图

入口

扫描第一行

有键按下

扫描第二行有键按下

返回计算键值

换算显示码

返回

N

无键标志Y

N

Y

P55KD.ASM 主程序框图 读键显示部分框图

程序

D8255 EQU 8506H ;8255状态/数据口地址 D8255A EQU 8500H ;8255 PA 口地址 D8255B EQU 8502H ;8255 PB 口地址 Z8279 EQU 8701H ;8279状态口地址 D8279 EQU 8700H ;8279数据口地址 DISPTR EQU 08H ;当前显示位置 KEYV AL EQU 09H ;读到的键码 ORG 0000H LJMP START ORG 0040H

START:

MOV SP ,#60H

LCALL DELAY ;延时

MOV DISPTR,#30H ;显示缓冲区头指针 MOV DPTR,#D8255

MOV A,#90H ;置8255状态

;方式0,PB,PC 口输出,PA 口输入

MOV DPTR,#Z8279 ;置8279命令字

MOV A,#0D3H

MOVX @DPTR,A;清LED显示

MOV A,#00H

MOVX @DPTR,A

MOV A,#38H

MOVX @DPTR,A

MOV A,#0D1H

KB_DIS:

LCALL RD_KB ;读键盘

MOV A,#0FFH

CJNE A,KEYV AL,DISBUF ;判读到键

SJMP KB_DIS ;没有则继续读键DISBUF:

LCALL DISP;把键移入显存

LCALL DELAY;延时消抖

LCALL DELAY

SJMP KB_DIS

DISP: ;显存依次前移

MOV R1,#31H ;在最后加入新键值MOVE:

MOV A,@R1

DEC R1

MOV @R1,A

INC R1

INC R1

CJNE R1,#38H,MOVE

MOV 37H,KEYV AL

MOV KEYV AL,#0FFH

MOV DPTR,#Z8279

MOV A,#90H

MOVX @DPTR,A

MOV R0,#08H

MOV R1,#30H

MOV DPTR,#D8279

LP: MOV A,@R1

MOVX @DPTR,A

INC R1

DJNZ R0,LP

RET

RD_KB: ;键盘扫描

MOV A,#02H ;扫描第一行

MOV DPTR,#D8255B

MOV DPTR,#D8255A

MOVX A,@DPTR

MOV R1,#00H

CJNE A,#0FFH,KEYCAL ;判键是否按下

MOV A,#01H ;扫描第二行

MOV DPTR,#D8255B

MOVX @DPTR,A

MOV DPTR,#D8255A

MOVX A,@DPTR

MOV R1,#08H

CJNE A,#0FFH,KEYCAL

SJMP NOKEY;无键按下

KEYCAL: ;计算键码

MOV R0,#08H

SHIFT:

RRC A

JNC CALC

INC R1

DJNZ R0,SHIFT

CALC: ;换算显示码

MOV DPTR,#DL_DA T

MOV A,R1

MOVC A,@A+DPTR

MOV KEYV AL,A

RET

NOKEY: MOV KEYV AL,#0FFH ;返回无键标志

RET

DELAY: MOV R0,#0H ;延时子程序

DELAY1: MOV R1,#0H

DJNZ R1,$

DJNZ R0,DELAY1

RET

DL_DA T: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F

END

实验报告七-键盘扫描及显示实验

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。 二、实 验 设 备 了解键盘扫描及数码显示的基本原理,熟悉 8255 的编程。 三、实 验 原 理 将 8255 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。实验具体内容如下:将键盘进行编号,记作 0~F ,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 6 次按下的按键编号。 键盘及数码管显示单元电路图如图 7-1 和 7-2 所示。8255 键盘及显示实验参考接线图如图 7-3 所示。 图 7-1 键盘及数码管显示单元 4×4 键盘矩阵电路图 成 绩: 指导老师(签名):

图 7-2 键盘及数码管显示单元 6 组数码管电路图 图 7-3 8255 键盘扫描及数码管显示实验线路图 四、实验内容与步骤 1. 实验接线图如图 7-3 所示,按图连接实验线路图。

图 7-4 8255 键盘扫描及数码管显示实验实物连接图 2.运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。 图 7-5 8255 键盘扫描及数码管显示实验程序编辑界面 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 五、实验结果及分析: 1. 运行程序,按下按键,观察数码管的显示。

实验一 8255控制交通灯实验

D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 8255 U36 D0D1D2D3D4D5D6D7WR RD RST A0 A1 PC5PC6PC7 PC2PC3PC4PC0PC1DS35DS36DS37DS38DS39DS40DS4112345678 VCC DS42 A0A1 CS CS1(0F000H) 510 R111510 R112 510R113510R114510R115510R116510R117510R118

.MODEL TINY COM_ADD EQU 0F003H PA_ADD EQU 0F000H PB_ADD EQU 0F001H PC_ADD EQU 0F002H .STACK 100 .DATA LED_Data DB 01111101B ;东西绿灯,南北红灯DB 11111101B ;东西绿灯闪烁,南北红灯 DB 10111101B ;东西黄灯亮,南北红灯 DB 11010111B ;东西红灯,南北绿灯 DB 11011111B ;东西红灯,南北绿灯闪烁 DB 11011011B ;东西红灯,南北黄灯亮 .CODE START: MOV AX,@DATA MOV DS,AX NOP MOV DX,COM_ADD MOV AL,80H ;PA、PB、PC为基本输出模式 OUT DX,AL MOV DX,PA_ADD ;灯全熄灭 MOV AL,0FFH OUT DX,AL LEA BX,LED_Data

非编码键盘的扫描程序设计

摘要 ------------------------------------------------------------------------------------------------------- 1 1设计方案 ------------------------------------------------------------------------------------------------ 2 1.1设计任务 ---------------------------------------------------------------------------------------- 2 1.2设计方案 ---------------------------------------------------------------------------------------- 2 2系统硬件设计------------------------------------------------------------------------------------------ 3 2.1最小应用系统 ------------------------------------------------------------------------------------ 3 2.28155扩展电路---------------------------------------------------------------------------------- 4 2.3矩阵键盘接口电路 ---------------------------------------------------------------------------- 6 2.4LCD1602接口电路----------------------------------------------------------------------------- 6 2.5主电路设计 --------------------------------------------------------------------------------------- 8 3系统软件设计------------------------------------------------------------------------------------------ 8 3.1主程序设计 --------------------------------------------------------------------------------------- 9 3.2延时程序设计----------------------------------------------------------------------------------- 9 3.3键盘扫描子程序设计 ------------------------------------------------------------------------ 10 3.4显示子程序设计------------------------------------------------------------------------------- 11 4 系统调试与结果 ---------------------------------------------------------------------------------- 13 4.1调试内容与问题解决----------------------------------------------------------------------- 13 4.2运行结果与分析 ----------------------------------------------------------------------------- 13 小结 ------------------------------------------------------------------------------------------------------- 15 参考文献 ------------------------------------------------------------------------------------------------ 16 附录 ------------------------------------------------------------------------------------------------------- 17

实验6.1_8255并行接口与交通灯控制

8255端口地址: 控制寄存器地址28BH A口的地址288H B口的地址289H C口的地址28AH 实验程序: DATA SEGMENT BUF1 EQU 00100100B ;南北绿灯亮东西红灯亮BUF2 EQU 01000100B ;南北黄灯亮东西红灯亮BUF3 EQU 00000100B ;南北灯灭东西红灯亮BUF4 EQU 10000001B ;南北红灯亮东西绿灯亮BUF5 EQU 10000010B ;南北红灯亮东西黄灯亮BUF6 EQU 10000000B ;南北红灯亮东西灯灭DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,80H MOV DX,28BH OUT AX,AL ALL: MOV AL,BUF1 MOV DX,28AH OUT DX,AL CALL DELAYL MOV CX,5 YEL1: MOV AL,BUF2 MOV DX,28AH OUT DX,AL CALL DELAYS MOV AL,BUF3 MOV DX,28AH OUT DX,AL CALL DELAYS LOOP YEL1 MOV AL,BUF4 MOV DX,28AH OUT DX,AL CALL DELAYL MOV CX,4 YEL21: MOV AL,BUF5 MOV DX,28AH

OUT DX,AL CALL DELAYS MOV AL,BUF6 MOV DX,28AH OUT DX,AL CALL DELAYS LOOP YEL2 JMP ALL MOV AH,4CH INT 21H DELAYL PROC NEAR ;长延时 PUSH CX PUSH DI Y1:MOV CX,2000H X1:MOV DI,2000H DEC DI JNE X1 LOOP Y1 POP DI POP CX RET DELAYL ENDP DELAYS PROC NEAR ;短延时 PUSH CX PUSH DI Y2:MOV CX,500H X2:MOV DI,1000H DEC DI JNE X2 LOOP Y2 POP DI POP CX RET DELAYS ENDP CODE ENDS END START 桂林电子科技大学信息与通信学院

矩阵键盘的工作原理和扫描确认方式

9.3.1 矩阵键盘的工作原理和扫描确认方式 来源:《AVR单片机嵌入式系统原理与应用实践》M16华东师范大学电子系马潮 当键盘中按键数量较多时,为了减少对I/O 口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图9-7 所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU 通过检测行或列线上的电平变化可以确定哪个按键被按下。 图9-7 为一个 4 x 3 的行列结构,可以构成12 个键的键盘。如果使用 4 x 4 的行列结构,就能组成一个16 键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O 口线。 矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU 的时间,所以较好的方式也是采用状态机的方法来设计,尽量减少键盘查询过程对MCU 的占用时间。 下面以图9-7 为例,介绍采用行扫描法对矩阵键盘进行判别的思路。图9-7 中,PD0、PD1、PD2 为3 根列线,作为键盘的输入口(工作于输入方式)。PD3、PD4、PD5、PD6 为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。行扫描法也称为逐行扫描查询法,其按键识别的过程如下。 √将全部行线PD3-PD6 置低电平输出,然后读PD0-PD2 三根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。 √在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依

单片机矩阵键盘扫描程序

#include #include #define uint unsigned int #define uchar unsigned char sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚 uint keyflag ; //键盘正在读取标志位,如果Keyflag为1 ,表示正在读取键盘,停止其他功能; char x,y,m,n,c; //Keyflag为0,读取键盘结束,恢复其他功能 char flag1=0; //频率范围10~1000Hz uchar Hrate = 0; //一个周期内高点平占据时间 uchar Lrate = 0; //一个周期内低电平占据时间 uint FREQ0; //定时器T0的计数变量// uint FREQ1; //定时器T1的计数变量// sbit P2_1=P2^0; //设置P2.1,作为信号输出口// uint disbuf[3]; uint figure=0; int sum2=0; int sum1=0; int flag=0; uint count=0; uint max=0; uint disbuf_temp=0; /******************************************************************** * 名称: 1602显示延时函数delay() * 功能: 延时,延时时间大概为5US。

* 输出: 无 ***********************************************************************/ void delay() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } /******************************************************************** * 名称: bit Busy(void) * 功能: 这个是一个读状态函数,读出函数是否处在忙状态 * 输入: 输入的命令值 * 输出: 无 ***********************************************************************/ bit Busy(void) { bit busy_flag = 0; RS = 0; RW = 1; E = 1; delay(); busy_flag = (bit)(P0 & 0x80); E = 0; return busy_flag; } /******************************************************************** * 名称: wcmd(uchar del) * 功能: 1602命令函数 * 输入: 输入的命令值 * 输出: 无 ***********************************************************************/ void wcmd(uchar del) { while(Busy()); RS = 0; RW = 0; E = 0; delay(); P0 = del; delay(); E = 1;

8255交通灯控制系统(倒计时显示,紧急中断)

《单片机原理与应用》 课程设计报告 题目:简单交通灯控制系统 专业:计算机科学与技术 班级:09计算机1班 学号:09070009 姓名:陈民厅 天津理工大学中环信息学院 计算机工程系 2011年12月29 日

交通灯控制系统设计 摘要 设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态东南西北均为红灯,持续时间为2s;然后转为状态1(10s),为东西红、南北绿;状态2(3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态3(15s),为东西绿、南北红;状态4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最后回到状态1,依此循环。如遇到特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后拨动另一个开关,系统返回继续运行。同时用LED用倒计时方式显示各路口亮灯时间。 关键词:单片机,交通灯,应急开关,LED

1绪论 1.1设计背景 红绿交通灯自动控制系统在城市十字(或丁字)路口有着广泛的应用。随着社会的进步,人们生活水平的提高,私家车数量会不断增加,对城市交通带来前所为有的压力。道路建设也将随之发展,错综复杂的道路将不段增多。为维持稳定的交通秩序,红绿灯自动控制系统将得到更为广泛的应用。现在实际应用的红绿灯系统中一般没有倒计时功能,使司机和行人不知道指示灯还有多久将会改变现有状态。本设计应用基本数字电路知识,采用LED灯作红、绿、黄三交通灯,用七段数码管作同步倒计时显示。实现两方向通行时间不相等的控制并配有倒计时。 1.2设计目的 熟悉单片机控制系统,并了解系统设计的一般规律。 掌握8255芯片的结构及编程方法。 熟悉模拟交通灯控制的实现方法。 1.3设计任务及要求 设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态东南西北均为红灯,持续时间为2s;然后转为状态1(10s),为东西红、南北绿;状态2(3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态3(15s),为东西绿、南北红;状态4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最后回到状态1,依此循环。如遇到特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后拨动另一个开关,系统返回继续运行。同时用LED用倒计时方式显示各路口亮灯时间。 2 设计使用的仪器和设备 2.1 达爱思教仪 本实验采用达爱思教仪型号是Dais-PG206FD 2.2八段数码管 码管, 2.3 8255芯片 8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(8255引脚如图1,8255编程模式如图2)。 的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接

微机原理实验交通灯控制实验

微机原理实验交通灯控制实验

课程设计时间:2014.12.22---2015.1.2微机原理专业课程设计任务书 学生姓名专业 班级 学号 题 目 交通灯控制实验 课题 性质 工程设计课题来源自拟课题指导 教师 同组姓名 主要内容L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。

任务要求1:掌握并理解芯片8255和8253计时器工作原理 2:掌握并理解源程序和程序中的函数 3:熟悉8255内部结构和与单片机的接口逻辑,掌握8255芯片的3种工作方式。 4:了解单片机外围芯片8255的工作原理、初始化编程以及输入、输出程序设计方法 参考文献《微型计算机原理及运用》谭浩强清华大学出版社 《16/32位微机原理、汇编语言及接口技术》陈涛机械工业出版社《微机接口技术应用》 审查意见指导教师签字: 教研室主任签字:年月日 一:设计的目的和内容 1 目的:通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。 2 内容:如图1,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东 西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。

图1 二:设计思想: 在选择循环的时间上,老师上课时说过,长延时可以采用双层嵌套,外层嵌套为0FFFFH,内层嵌套为4000H,我在编程时外层送进了0,相当于初值为65536,内层送进了4000H。为了达到闪烁和延时的区别,我在编闪烁的程序时,给外层嵌套送入初值3000H,内层0100H (这是我通过实验的结果)。人眼感觉闪烁的效果只是短延时的结果此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。 如上图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接南,东,北,西路口 的红灯,B,C口类推。8086工作在最小模式,低八位端口AD 0~AD 7 接到8255和 8253的D 0~D 7 ,AD 8 ~AD 15 通过地址锁存器8282,接到三八译码器,译码后分别连 到8255和8253的CS片选端。8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD 18, 8086通过检测此端口是否有高电平来判断是否30S定时到。OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本输入输出方式,红绿灯的转换由软件编程实现。 三:设计方案与硬件连接 设8253各口地址分别为:设8253基地址即通道0地址为04A0H;通道1为04A2H;通道2为04A4H;命令控制口为04A6H。 黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波, 8255控制或门打开的时间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪

键盘扫描码

键盘上的每一个键都有两个唯一的数值进行标志。为什么要用两个数值而不是一个数值呢?这是因为一个键可以被按下,也可以被释放。当一个键按下时,它们产生一个唯一的数值,当一个键被释放时,它也会产生一个唯一的数值,我们把这些数值都保存在一张表里面,到时候通过查表就可以知道是哪一个键被敲击,并且可以知道是它是被按下还是被释放了。这些数值在系统中被称为键盘扫描码 2扫描码大全 扫描码键 0x011b ESC 0x3b00 F1 0x3c00 F2 0x3d00 F3 0x3e00 F4 0x3f00 F5 0x4000 F6 0x4100 F7 0x4200 F8 0x4300 F9 0x4400 F10 主键盘区: 0x2960 ~ 0x0231 1 0x0332 2 0x0433 3 0x0534 4 0x0635 5 0x0736 6 0x0837 7 0x0938 8 0x0a39 9 0x0b30 0 0x0c2d - 0x0d3d = 0x2b5c \ 0x0e08 退格键 0x0f09 Tab 0x1071 q 0x1177 w 0x1265 e 0x1372 r 0x1474 t 0x1579 y

0x1769 i 0x186f o 0x1970 p 0x1a5b [ 0x1b5d ] 0x1e61 a 0x1f73 s 0x2064 d 0x2166 f 0x2267 g 0x2368 h 0x246a j 0x256b k 0x266c l 0x273b ; 0x2827 ' 0x1c0d 回车 0x2c7a z 0x2d78 x 0x2e63 c 0x2f76 v 0x3062 b 0x316e n 0x326d m 0x332c , 0x342e . 0x352f / 0x3920 空格键 0xe05b 左Win 0xe05c 右Win 0xe05d Menu 右边数字键盘: 0x5200 Insert 0x4700 Home 0x4900 Page UP 0x5300 Delete 0x4f00 End 0x5100 PageDown 0x4800 上箭头 0x4b00 左箭头 0x5000 下箭头 0x4d00 右箭头 0x352f /

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

微机原理实验四实验报告 8255控制交通灯实验

实验四 8255控制交通灯实验 一、实验目的与要求 1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。 2、熟悉8255内部结构和与8088的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。 3、认真预习本节实验内容,尝试自行编写程序,填写实验报告。 二、实验设备 STAR系列实验仪一套、PC机一台 三、实验内容 1、编写程序:使用8255的PA0.. 2、PA4..6控制LED指示灯,实现交通灯功能。 2、连接线路验证8255的功能,熟悉它的使用方法。 四、实验原理图 五、实验步骤 六、演示程序

.MODEL TINY COM_ADD EQU 0F003H PA_ADD EQU 0F000H PB_ADD EQU 0F001H PC_ADD EQU 0F002H .STACK 100 .DATA LED_Data DB 01111101B ;东西绿灯,南北红灯DB 11111101B ;东西绿灯闪烁,南北红灯 DB 10111101B ;东西黄灯亮,南北红灯 DB 11010111B ;东西红灯,南北绿灯 DB 11011111B ;东西红灯,南北绿灯闪烁 DB 11011011B ;东西红灯,南北黄灯亮 .CODE START: MOV AX,@DATA MOV DS,AX NOP MOV DX,COM_ADD MOV AL,80H ;PA、PB、PC为基本输出模式 OUT DX,AL MOV DX,PA_ADD ;灯全熄灭 MOV AL,0FFH OUT DX,AL LEA BX,LED_Data START1: MOV AL,0 XLAT OUT DX,AL ;东西绿灯,南北红灯 CALL DL5S MOV CX,6 START2: MOV AL,1 XLAT OUT DX,AL ;东西绿灯闪烁,南北红灯 CALL DL500ms MOV AL,0 XLAT OUT DX,AL CALL DL500ms LOOP START2 MOV AL,2 ;东西黄灯亮,南北红灯 XLAT OUT DX,AL CALL DL3S MOV AL,3 ;东西红灯,南北绿灯

键盘按键的各种编码对照表(全)

键盘按键的各种编码对照表 本附录中的各表列举了键盘按键扫描码和其ASCII码之间的对照关系,表中数据都是十六进制形式。 在用中断16H的0号功能时,当按下任意一个键或组合键时,寄存器AH和AL分别保存着该按键的扫描码和ASCII码。 表1、ASCII码的编码方案 高位 000001010011100101110111低位 0000NUL DEL SP0@P`p 0001SOH DC1!1A Q a q 0010STX DC2“2B R b r 0011ETX DC3#3C S c s 0100EOT DC4$4D T d t 0101ENQ NAK%5E U e u 0110ACK SYN&6F V f v 0111BEL ETB‘7G W g w 1000BS CAN(8H X h x 1001HT EM)9I Y i y 1010LF SUB*:J Z j z 1011VT ESC+;K[k{ 1100FF FSN^n~ 1111SI US/?O_o Del 表2、字母和空格按键的编码表 单 键SHIFT CTRL ALT 按 键 扫描码ASCII码扫描码ASCII码扫描码ASCII码扫描码ASCII码 a and A1E611E411E011E00 b and B3062304230023000 c an d C2E632E432E032E00 d and D2064204420042000 e and E1265124512051200 f and F2166214621062100 g and G2267224722072200 h and H2368234823082300 i and I1769174917091700

经典的矩阵键盘扫描程序

键盘是单片机常用输入设备,在按键数量较多时,为了节省I/O口等单片机资源,一般采取扫描的方式来识别到底是哪一个键被按下。即通过确定被按下的键处在哪一行哪一列来确定该键的位置,获取键值以启动相应的功能程序。 4*4矩阵键盘的结构如图1(实物参考见万用板矩阵键盘制作技巧)。在本例中,矩阵键盘的四列依次接到单片机的P1.0~P1.3,四行依次接到单片机的P1.4~P1.7;同时,将列线上拉,通过10K电阻接电源。 查找哪个按键被按下的方法为:一个一个地查找。 先第一行输出0,检查列线是否非全高; 否则第二行输出0,检查列线是否非全高; 否则第三行输出0,检查列线是否非全高; 如果某行输出0时,查到列线非全高,则该行有按键按下; 根据第几行线输出0与第几列线读入为0,即可判断在具体什么位置的按键按下。 下面是具体程序:

void Check_Key(void) { unsigned char row,col,tmp1,tmp2; tmp1 = 0x10; //tmp1用来设置P1口的输出,取反后使 P1.4~P1.7中有一个为0 for(row=0;row<4;row++) // 行检测 { P1 = 0x0f; // 先将p1.4~P1.7置高 P1 =~tmp1; // 使P1.4~p1.7中有一个为0 tmp1*=2; // tmp1左移一位 if ((P1 & 0x0f) < 0x0f) // 检测P1.0~P1.3中是否有一位为0,只要有,则说明此行有键按下,进入列检测 { tmp2 = 0x01; // tmp2用于检测出哪一列为0 for(col =0;col<4;col++) // 列检测 { if((P1 & tmp2)==0x00) // 该列如果为低电平则可以判定为该列 { key_val =key_Map[ row*4 +col ]; // 获取键值,识别按键;key_Map为按键的定义表 return; // 退出循环 } tmp2*=2; // tmp2左移一位 } } } } //结束 这是一种比较经典的矩阵键盘识别方法,实现起来较为简单,程序短小精炼。

实验四 键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告 一、实验要求 1. 复习行列矩阵式键盘的工作原理及编程方法。 2. 复习七段数码管的显示原理。 3. 复习单片机控制数码管显示的方法。 二、实验设备 1.PC 机一台 2.TD-NMC+教学实验系统 三、实验目的 1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。 2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。 3. 熟悉获取行列矩阵式键盘按键值的算法。 4. 掌握数码管显示的编码方法。 5. 掌握数码管动态显示的编程方法。 四、实验内容 根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能: 1.扫描键盘输入,并将扫描结果送数码管显示。 2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。 实验具体内容如下: 将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码 管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数 码管上可以显示最近 4 次按下的按键编号。 五、实验单元电路及连线 矩阵键盘及数码管显示单元

图1 键盘及数码管单元电路 实验连线 图2实验连线图 六、实验说明 1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5~10ms。这是一个很重要的时间参数,在很多场合都要用到。 键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

键盘扫描原理及应用键盘

本资源为网上搜集而来,如果该程序涉及或侵害到您的版权请立即写信通知我

键盘扫描 键盘是由按键构成,是单片机系统里最常用的输入设备。我们可以通过键盘输入数据或命令来实现简单的人-机通信。 1.按键及键抖动 按键是一种常开型按钮开关。平时,按键的两个触点处于断开状态,按下按键时两个触点才闭合(短路)。如图1-1所示,平常状态下,当按键K未被按下时,按键断开,PA0输入口的电平为高电平;当按键K被按下时,按键闭合,PA0输入口的电平为低电平。 图1-1 按键电路 图1-2 按键抖动 一般的按键所用开关都是机械弹性开关,由于机械触点的弹性作用,按键开

关在闭合时不会马上稳定地连接,在断开进也不会马上完全的断开,在闭合和断开的瞬间均有一连串的抖动。按键按下的电压信号波形图如图1-2所示,从图中可以看出按键按下和松开的时候都存在着抖动。抖动时间的长短因按键的机械特性不同而有所不同,一般为5ms~10ms。 如果不处理键抖动,则有可能引起一次按键被误读成多次,所以为了确保能够正确地读到按键,必须去除键抖动,确保在按键的稳定闭合和稳定断开的时候来判断按键状态,判断后再做处理。按键在去抖动,可用硬件或软件两种方法消除。由于使用硬件方法消除键抖动,一般会给系统的成本带来提高,所以通常情况下都是使用软件方法去除键抖动。 常用的去除键抖动的软件方法有很多种,但是都离不开基本的原则:就是要么避开抖动的时候检测按键或是在抖动的时候检测到的按键不做处理。这里说明一下常用的两种方法: 第一种方法是检测到按键闭合电平后先执行一个延时程序,做一个12ms~24ms的延时,让前抖动消失后再一次检测按键的状态,如果仍是闭合状态的电平,则认为真的有按键按下;若不是闭合状态电平,则认为没有键按下。若是要判断按键松开的话,也是要在检测到按键释放电平之后再给出12ms~24ms的延时,等后抖动消失后再一次检测按键的状态,如果仍为断开状态电平,则确认按键松开。这种方法的优点是程序比较简单,缺点是由于延时一般采用跑空指令延时,造成程序执行效率低。 第二种方法是每隔一个时间周期检测一次按键,比如每5ms扫描一次按键,要连续几次都扫描到同一按键才确认这个按键被按下。一般确认按键的扫描次数由实际情况决定,扫描次数的累积时间一般为50ms~60ms。比如,以5ms为基本时间单位去扫描按键的话,前后要连续扫描到同一个按键11次而达到50ms 来确认这个按键。按键松开的检测方法也是一样要连续多次检测到按键状态为断开电平才能确认按键松开。这种方法的优点是程序执行效率高,不用刻意加延时指令,而且这种方法的判断按键抗干扰能力要更好;缺点是程序结构较复杂。 在以下的介绍中,我们将使用第二种方法来去除键抖动。 2.键盘结构及工作原理 键盘一般有独立式和行列式(矩阵式)两种。当然还有其它的结构,比如交互式结构等等,不过其它的结构比较少用,在这里就不介绍了。在中颖的单片机中,有些单片机的LCD驱动引脚的SEGMENT口可以共享按键扫描口,当选择为按键扫描口时,可以使用这些口来扫描按键,所以在外部电路可以连接LCD和按键矩阵,采用分时扫描进行处理,下面也将介绍这个特殊应用的方法和注意的地方。 独立式键盘结构

单片机4X4键盘扫描和显示课程设计

二、设计内容 1、本设计利用各种器件设计,并利用原理图将8255单元与键盘及数码管显示单元连接,扫描键盘输入,最后将扫描结果送入数码管显示。键盘采用4*4键盘,每个数码管可以显示0-F共16个数。将键盘编号,记作0-F,当没按下其中一个键时,将该按键对应的编号在一个数码管上显示出来,当在按下一个 键时,便将这个按键的编号在下一个数码管上显示,数码管上 可以显示最近6次按下的按键编号。 设计并实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。 三、问题分析及方案的提出 4×4键盘的每个按键均和单片机的P1口的两条相连。若没有按键按下时,单片机P1口读得的引脚电平为“1”;若某一按键被按下,则该键所对应的端口线变为地电平。单片机定时对P1口进行程序查询,即可发现键盘上是否有按键按下以及哪个按键被按下。 实现4×4键盘的接口需要用到单片机并编写相应的程序来识别键盘的十六个按键中哪个按键被按下。因为此题目还要求将被按下的按键显示出来,因此可以用两个数码管来分别显示被按下的按键的行与列

表示任意一个十六进制数)分别表示键盘的第二行、第三行、第四行;0xXE、0xXD、0xXB、0xX7(X表示任意一个十六进制数)则分别表示键盘的第一列、第二列、第三列和第四列。例如0xD7是键盘的第二行第四列的按键 对于数码管的连接,采用了共阳极的接法,其下拉电阻应保证芯片不会因为电流过大而烧坏。 五、电路设计及功能说明 4×4键盘的十六个按键分成四行四列分别于P1端口的八条I/O 数据线相连;两个七段数码管分别与单片机的P0口和P2口的低七 位I/O数据线相连。数码管采用共阳极的接法,所以需要下拉电阻 来分流。结合软件程序,即可实现4×4键盘的接口及显示的设计。 当按下键盘其中的一个按键时,数码管上会显示出该按键在4×4键 盘上的行值和列值。所以实现了数码管显示按键位置的功能 四、设计思路及原因 对于4×4键盘,共有十六个按键。如果每个按键与单片机的一个引脚相连,就会占用16个引脚,这样会使的单片机的接口不够用(即使够用,也是对单片机端口的极大浪费)。因此我们应该行列式的接法。行列式非编码键盘是一种把所有按键排列成行列矩阵的键盘。在这种键若没有按键按下时,单片机从P1口读得的引脚电平为“1”;若某一按键被按下,则该键所对应的端口线变为地电平。因此0xEX(X表示任意4×4键盘的第一行中的某个按键被按下,相应的0xDX、0xBX、0x7X(X 二、实验内容

实验一 8255控制交通灯实验

实验一 8255控制交通灯实验 一、实验目的与要求 1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。 2、熟悉8255内部结构和与8088的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。 3、认真预习本节实验内容,尝试自行编写程序,填写实验报告。 二、实验设备 STAR 系列实验仪一套、PC 机一台 三、实验内容 1、编写程序:使用8255的PA0.. 2、PA4..6控制LED 指示灯,实现交通灯功能。 2、连接线路验证8255的功能,熟悉它的使用方法。 四、实验原理图 D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 8255 U36 D0D1D2D3D4D5D6D7WR RD RST A0 A1 PC5PC6PC7 PC2PC3PC4PC0PC1DS35DS36DS37DS38DS39DS40DS4112345678 VCC DS42 A0A1 CS CS1(0F000H) 510 R111510 R112 510R113510R114510R115510R116510R117510R118

.MODEL TINY COM_ADD EQU 0F003H PA_ADD EQU 0F000H PB_ADD EQU 0F001H PC_ADD EQU 0F002H .STACK 100 .DATA LED_Data DB 01111101B ;东西绿灯,南北红灯DB 11111101B ;东西绿灯闪烁,南北红灯 DB 10111101B ;东西黄灯亮,南北红灯 DB 11010111B ;东西红灯,南北绿灯 DB 11011111B ;东西红灯,南北绿灯闪烁 DB 11011011B ;东西红灯,南北黄灯亮 .CODE START: MOV AX,@DATA MOV DS,AX NOP MOV DX,COM_ADD MOV AL,80H ;PA、PB、PC为基本输出模式 OUT DX,AL MOV DX,PA_ADD ;灯全熄灭 MOV AL,0FFH OUT DX,AL LEA BX,LED_Data

矩阵键盘扫描汇编程序

4*4矩阵键盘扫描汇编程序(基于51单片机) // 程序名称:4-4keyscan.asm ;// 程序用途:4*4矩阵键盘扫描检测 ;// 功能描述:扫描键盘,确定按键值。程序不支持双键同时按下, ;// 如果发生双键同时按下时,程序将只识别其中先扫描的按键;// 程序入口:void ;// 程序出口:KEYNAME,包含按键信息、按键有效信息、当前按键状态;//================================================================== ==== PROC KEYCHK KEYNAME DATA 40H ;按键名称存储单元 ;(b7-b5纪录按键状态,b4位为有效位, ;b3-b0纪录按键) KEYRTIME DATA 43H ;重复按键时间间隔 SIGNAL DATA 50H ;提示信号时间存储单元 KEY EQU P3 ;键盘接口(必须完整I/O口) KEYPL EQU P0.6 ;指示灯接口 RTIME EQU 30 ;重复按键输入等待时间 KEYCHK: ;//=============按键检测程序========================================= ==== MOV KEY,#0FH ;送扫描信号 MOV A,KEY ;读按键状态 CJNE A,#0FH,NEXT1 ;ACC<=0FH ; CLR C ;Acc等于0FH,则CY为0,无须置0 NEXT1: ; SETB C ;Acc不等于0FH,则ACC必小于0 FH, ;CY为1,无须置1 MOV A,KEYNAME ANL KEYNAME,#1FH ;按键名称屏蔽高三位 RRC A ;ACC带CY右移一位,纪录当前按键状态 ANL A,#0E0H ;屏蔽低五位

相关文档
最新文档