4.3 单片机键盘接口电路设计
- 格式:pptx
- 大小:4.72 MB
- 文档页数:47
单片机键盘输入编程电路设计
输入电路的设计
1、电路的结构
本文的电路设计主要是用于实现单片机键盘输入编程的功能,所以电路的结构从上到下分为三部分,分别是:
(1)键盘输入部分:由上排按键及下排按键,两排按键组成。
(2)电源部分:由DC电源组成。
(3)输出部分:由多路复用器(一般称为MUX),控制部分组成,多路复用器可以将键盘输入的按键信号转变为单片机可以识别的数据位,控制部分是连接单片机的部分,可以与单片机连接,以实现键盘输入指令的操作。
2、基本电路
本文设计的电路主要由以下电路组件构成:
(1)DC电源:由7805,5V的DC电源模块组成,用于给键盘、多路复用器和控制部分提供电源。
(2)键盘输入部分:由上排按键及下排按键组成,每行按键由四列电路器件组成,四列电路器件的抽头线连接在一起,以实现按键的控制,当按键按下时,输入信号为低电平,反之,当按键处于松开状态时,输入信号为高电平。
(3)多路复用器:多路复用器主要用于将键盘输入的多个按键信号转换为单片机可以识别的数据,该多路复用器的信号输入端接收键盘上每行按键输入的信号。
单片机与键盘的接口设计与实现方法一、引言单片机作为嵌入式系统中的重要组成部分,广泛应用于各个领域。
而键盘作为输入设备,是单片机常用的外部设备之一。
本文将探讨单片机与键盘之间的接口设计与实现方法,以便更好地实现单片机与键盘之间的数据交互。
二、接口设计1. PS/2接口PS/2接口是一种常见的键盘接口标准,通常使用4根引线进行连接,分别是VCC、GND、DATA和CLK。
其中,DATA和CLK引线用于传输键盘数据和时钟信号。
在单片机中,可以通过GPIO口模拟PS/2接口,实现与PS/2键盘的通信。
2. USB接口USB接口是一种更先进的键盘接口标准,传输速度更快,适用于高性能的计算机系统。
在单片机中,可以通过USB主机控制器芯片与USB键盘进行通信,实现数据的传输与交互。
三、接口实现方法1. PS/2接口实现首先,将PS/2接口的DATA和CLK引线连接到单片机的GPIO口,通过对数据引脚和时钟引脚的读取,可以获取键盘发送的数据。
接着,根据PS/2协议解析数据,获取键盘的按键信息。
最后,将按键信息传输到单片机的内部处理单元,实现对键盘输入的响应。
2. USB接口实现对于USB接口,单片机需要搭载USB主机控制器芯片,以实现USB键盘和单片机之间的通信。
USB主机控制器芯片负责解析USB协议,接收USB键盘发送的数据,并将数据传输到单片机内部处理单元。
通过USB接口的实现,可以实现更高速率的数据传输和更强大的功能支持。
四、总结通过本文对单片机与键盘接口设计与实现方法的探讨,可以更好地理解单片机与键盘之间的数据交互原理和实现方式。
PS/2接口和USB接口是两种常见的键盘接口标准,单片机可以通过相应的接口设计与实现方法实现与键盘的数据交互。
希望本文对您的单片机与键盘接口设计与实现提供一定的帮助。
本系统电路连接及硬件资源分派见图4.1所示。
采用AT89S51单片机作为核心器件, 多圈电位器为悬挂物体位置采集器件, 通过ADC0832转换位数字信号送入单片机解决, L298作为直流电机的驱动模块, 以MAX7219驱动的LED显示和4×4键盘作为人机接口。
4.2 寻轨迹控制策略根据题目的规定, 悬挂物沿曲线运动的轨迹分为两段, 连续段和间断段。
可采用4个光电一体化传感器TCRT5000作为检测元件, 其放置方式如图4.2所示。
寻找黑线策略, 采用模糊寻找的方式, 一方面物体从坐标(0, 8)运营到坐标(80, 8), 检测这之间有无黑线, 如无, 则从坐标(80, 16)运营到坐标(0, 16), 再检测这之间有无黑线, 如有, 则从坐标(0, 12)运营到(80, 12), 检测, 假如没有检测到黑线, 再进一步缩小范围从(80, 14)运营到(80, 14);假如检测到黑线, 再进一步缩小范围从(80, 10)运营到(80, 10), 当检测到黑线时就停下, 此处将是黑线起点;假如没有检测到黑线则返回从(80, 12)运营到(0, 12)检测到的黑线即为黑线起点。
以同样的运营检测方式即可寻找出黑线的起点。
在连续段寻迹时, 通过判断四个传感器的16种组合状态, 使电机作出相应的伸缩动作。
当轨迹为间断线时, 电机拉动传感器在大角度方向内位移, 直到在某一方向检测到新的黑线为止。
然后再调用连续段的寻迹程序。
4.3 系统各模块单元电路设计4.3.1 电源部分电路设计本系统中使用了直流12V电机, 其额定工作电压为12V, 而单片机额定工作电压为5V, 所以电路中采用了7805和7812作为稳压模块, 其最大输出电流为1.5A, 满足系统电机驱动电流的规定, 其电路如图4.3.1所示。
4.3.2 电机控制模块设计物体运动的轨迹由电机的转速和转向决定, 电机的转速和转向的控制是通过多圈电位器对滑轮所转的圈速进行检测, 同时通过另一个计数器对时间进行测量, 结合两个计数器的值, 由单片机计算出电机的速度, 而物体运动的轨迹的里程由滑轮的周长和所转的圈数来计算。
单片机与键盘输入接口设计思路简介:在很多嵌入式系统中,需要与外部设备进行交互,而键盘作为一个常见的输入设备在这个过程中起到了非常重要的作用。
本文将针对单片机与键盘输入接口的设计思路进行详细介绍,包括硬件和软件方面的设计。
一、硬件设计思路1. 选择适当的键盘类型:首先,我们需要根据具体的应用需求选择合适的键盘类型。
常见的键盘类型有矩阵键盘、独立键盘和密码键盘等。
根据实际情况,我们可以选择具有足够按键数量、稳定性良好的键盘。
2. 连接键盘和单片机:硬件方面,我们需要将键盘与单片机进行连接。
首先,确定键盘的引脚定义,根据键盘的类型和尺寸,找到对应的按键引脚。
其次,根据单片机的引脚数和类型,连接键盘对应的行和列。
通常情况下,我们使用矩阵键盘连接方式,将行和列以矩阵的形式连接到单片机的GPIO口上。
3. 使用适当的电平转换器:键盘输出的电平一般为12V或者5V,在单片机运行的时候,为了保证其正常工作,需要使用电平转换器将键盘的输出电平转换成单片机能够接受的电平。
常见的电平转换器有晶体管、光电耦合器等,具体选择根据实际应用情况来确定。
4. 增加合适的防抖电路:由于按键可能存在抖动问题,为了保证按键的稳定性,我们需要在硬件设计中增加合适的防抖电路。
常见的防抖电路有RC电路、LC电路和施密特触发电路等。
根据实际需求,选择合适的防抖电路来消除按键的抖动。
二、软件设计思路1. 配置IO口和中断:在单片机的软件设计中,首先需要配置相应的IO口来接收键盘输入信号。
根据硬件设计中连接的行和列,将行设置为输出,列设置为输入。
接下来,配置中断服务程序,当检测到按键按下或抬起的变化时,触发相应的中断。
2. 执行扫描程序:在接收到键盘输入信号之后,单片机需要执行扫描程序来获取具体的按键值。
扫描程序中,通过逐行扫描并与之前的状态进行比较,判断按键是否有变化。
如果有按键按下,则记录下相应的按键值。
3. 实现按键功能:根据具体的需求,通过判断所按下的按键值来实现相应的功能。
汽车学院单片机原理及接口技术课程设计题目:单片机原理与应用专业:交通运输班级:0 8 0 1姓名:白鹭学号:0811140107指导教师:黄艳(2011-6-29)目录一、开题报告 (3)一、实验目的 (6)二、实验内容 (6)三、设计要求 (6)四、系统设计环境 (7)五、实验原理 (7)六、实验步骤 (8)七、设计流程图 (11)八、程序编程 (13)九、仿真过程 (18)十、调试过程中的难点及其解决思路 (18)十一、课设总结与体会 (19)十二、参考文献 (20)开题报告键盘接口和显示设计课程设计一、实验目的学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
1、通过本设计,使学生了解8255的工作方式及其应用。
2、学会使用KEIL C等软件,用汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。
3、了解键盘扫描及数码显示的基本原理并熟悉8255的编程。
二、实验内容设计并实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。
即将8255单元与键盘及数码管显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送数码显示,键盘采用4×4键盘,每个数码管值可以为0到F,16个数。
将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个数码管上显示出来,当按下下一个按键时便将这个按键的编号在下一个数码管上显示出来,且数码管上可以显示最近6次按下按键的编号。
三、设计要求1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。
2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
第二讲 单片机与键盘接口1.键盘结构● 键盘结构:独立式键盘;行列式键盘。
● 按键识别法:扫描工作方式。
由程序调用键盘扫描子程序,读取按键值。
缺点是可能会丢失按键值。
中断式工作方式。
当按键有闭合时即产生中断请求,CPU 响应中断,读取按键值。
● 消抖动措施:双稳态消抖动电路;滤波消抖动电路;软件消抖动。
按键触点的机械抖动双稳态去抖电路VCC (+5 V)2. 独立式键盘接口设计独立式键盘是直接用I/O口线构成单个按键电路,每个按键占用1根I/O口线。
按键多时不宜采用。
上拉电阻保证按键断开后,I/O口线有确定的高电平。
当I/O口内部有上拉电阻时,外电路可以不接上拉电阻。
例题1:;S1键按下,P1.0连接的LED灯亮,再次按下,LED灯灭。
6MHz晶振,无按键释放判别。
(S1按键接P2.2口)ORG 0000HSETB P2.2NOPBEGIN: JB P2.2,BEGINACALL DL10MSJB P2.2,BEGINCPL P1.0AJMP BEGIN;----------------------------------DL10MS: MOV R6,#10 ;10mSDL1: MOV R7,#7DHDL0: NOPNOPDJNZ R7,DL0DJNZ R6,DL1RET;-----------------------------------END实验证明:该按键可靠性不高,工作不稳定。
例题2:;S1键按下,P1.0连接的LED灯亮,再次按下,LED灯灭。
6MHz晶振,有按键释放判别。
(S1按键接P2.2口)ORG 0000HSETB P2.2NOPBEGIN: JB P2.2,BEGINACALL DL10MSJB P2.2,BEGINL1: JNB P2.2,L1ACALL DL10MSJNB P2.2,L1CPL P1.0AJMP BEGIN;----------------------------------DL10MS: MOV R6,#10 ;10mSDL1: MOV R7,#7DHDL0: NOPNOPDJNZ R7,DL0DJNZ R6,DL1RET;-----------------------------------END实验证明:加入按键释放程序后该按键可靠性显著提高,工作稳定可靠。
实验六键盘接口实验姓名:专业:通信工程学号:一、实验目的1.掌握Keil C51软件与Proteus软件联合仿真调试的方法;2.掌握单片机的键盘接口电路;3.掌握单片机键盘扫描原理;4.掌握键盘去抖原理及处理方法。
二、实验仪器与设备1.微机一台2.Keil C51集成开发环境3.Proteus仿真软件三、实验内容1.用Proteus设计一矩阵键盘接口电路。
要求利用P1口接一4*4矩阵键盘。
串行口通过一74LS164接一共阴极数码管。
2.用线反转法编写矩阵键盘识别程序,要求采用中断方式;无按键按下时,数码管循环写“8”,有按键按下时产生中断并将按键的键值0~F通过串行口输出,在数码管上显示3秒后返回;返回后,数码管继续循环画“8”。
3.将P1口矩阵键盘改为8个独立键盘,采用中断扫描方式,key0~key6显示键值,key7每按一次数码管加一。
四、实验步骤1.用Proteus设计键盘接口电路;2.在Keil C51中编写键盘识别程序,编译通过后,与Proteus联合调试;3.按动任意键,观察键值是否正确。
五、实验程序一、矩阵键盘#include<reg51.h>#define uint unsigned int#define uchar unsigned charUchar code table0[]={0x7e,0xbe,0xde,0xee,0x7d,0xbd,0xdd,0xed,0x7b,0xbb,0xdb,0xeb,0x77,0xb7,0xd7,0xe7 };uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };uchar code table2[]={0x01,0x21,0x61,0x65,0x6d,0x7d,0x7d,0x7f,0x00};uchar temp,key,m,num,i;void delay(uint c){ uint a,b;for(;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}void main(){ SCON=0x00; TI=0; EA=1;EX0=1; IT0=1; P1=0xf0;while(1){ SBUF=table2[m++];while(TI==0); delay(100); TI=0;if(m==9) {m=0;} }}void INT_0() interrupt 0{ EX0=0; delay(20); EX0=1;P1=0xf0;if(P1!=0xf0){ delay(20);if(P1!=0xf0){ temp=P1; P1=0x0f; key=temp|P1;for(i=0;i<16;i++)if(key==table0[i]) { num=i;break;}SBUF=table1[num]; delay(300);while(TI==0); TI=0;P1=0xf0;}}}XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC11nFC21nFC3220uR110kSRG8RC1/->&1D1324561081112913U274LS164012345678C9DA EBFU3AND_4二、独立键盘 #include<reg51.h>#define uint unsigned int #define uchar unsigned charuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar i,m=-1,key=0; bit flag=0;void delay(uchar c) { uchar a,b; for(;c>0;c--)for(a=142;a>0;a--) for(b=2;b>0;b--); }void main() { TMOD=0x01;TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1;P1=0xff; SCON=0x00; key=8; while(1) { switch(key) { case 8:SBUF=0X00;while(TI==0);TI=0;delay(200);break; case 0:SBUF=0x3f;while(TI==0);TI=0;delay(200);break; case 1:SBUF=0x06;while(TI==0);TI=0;delay(200);break;case 2:SBUF=0x5b;while(TI==0);TI=0;delay(200);break;case 3:SBUF=0x4f;while(TI==0);TI=0;delay(200);break;case 4:SBUF=0x66;while(TI==0);TI=0;delay(200);break;case 5:SBUF=0x6d;while(TI==0);TI=0;delay(200);break;case 6:SBUF=0x7d;while(TI==0);TI=0;delay(200);break;case 7:SBUF=table[m];while(TI==0);TI=0;if(m==9) m=0;delay(200);break;}}}void time0() interrupt 1{ if(P1!=0xff&&flag==0){if(P1==0xfe) {key=0;flag=1;}if(P1==0xfd) {key=1;flag=1;}if(P1==0xfb) {key=2;flag=1;}if(P1==0xf7) {key=3;flag=1;}if(P1==0xef) {key=4;flag=1;}if(P1==0xdf) {key=5;flag=1;}if(P1==0xbf) {key=6;flag=1;}if(P1==0x7f) { key=7;flag=1;m++;}}if(P1==0xff) flag=0;TH0=(65536-10000)/256;TL0=(65536-10000)%256;}XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC11nFC21nFC3220uR110kSRG8RC1/->&1D1324561081112913U274LS16401234567。
单片机与键盘或按键接口设计与实现方法单片机与键盘或按键接口设计是嵌入式系统开发中常见的任务,它可以实现通过键盘或按键输入控制单片机的功能。
本文将介绍单片机与键盘或按键接口设计的基本原理和实现方法。
一、基本原理单片机与键盘或按键接口设计的基本原理是通过将键盘或按键连接到单片机的IO口,利用IO口的输入功能来获取输入信号,并进行相应的处理。
在接口设计中,常见的有行列式键盘接口和矩阵式键盘接口两种方式。
1. 行列式键盘接口行列式键盘接口是一种常见的键盘接口设计方式。
它将键盘的行线和列线通过矩阵的方式连接到单片机的IO口。
当按下某个键时,单片机通过扫描每一行或每一列的电平变化,来检测按键的触发信号。
通过扫描方式,可以确定按下的键是哪一个。
行列式键盘接口的设计步骤如下:(1)将键盘的行线和列线分别连接到单片机的IO口。
(2)将行线接入IO口的输出引脚,并设置为高电平输出状态。
(3)将列线接入IO口的输入引脚,并设置为上拉输入状态。
(4)单片机通过改变行线的输出状态,逐行扫描键盘。
具体方法是将某一行的输出引脚设置为低电平,然后扫描各列的输入引脚,检测是否有低电平表示某个键被按下。
2. 矩阵式键盘接口矩阵式键盘接口是另一种常见的键盘接口设计方式。
它将键盘的每一个按键连接到单片机的IO口,通过设置IO口的输入输出模式和状态来检测按键的触发信号。
矩阵式键盘接口的设计步骤如下:(1)将键盘的每一个按键分别连接到单片机的IO口。
(2)将IO口的输入输出模式设置为相应的模式,如输入模式或输出模式。
(3)设置IO口的状态,如上拉输入状态或输出高电平状态。
(4)根据需要,单片机不断扫描每一个IO口,检测按键的触发信号。
二、实现方法实现单片机与键盘或按键接口可以使用各种软件开发工具,如Keil、IAR等,配合相应的编程语言,如C语言或汇编语言。
下面分别介绍两种接口设计的实现方法。
1. 行列式键盘接口实现方法在行列式键盘接口设计中,需要设置IO口的输入输出状态和扫描方法。
单片机中键盘输入接口的设计与应用案例键盘输入接口在单片机中具有重要的作用,它可以实现用户与单片机之间的信息交互。
在本文中,我们将探讨单片机中键盘输入接口的设计原理,并给出一个应用案例来展示其实际应用。
一、设计原理单片机中实现键盘输入接口的基本原理是通过矩阵键盘扫描的方式进行的。
具体步骤如下:1. 连接矩阵键盘首先,我们需要将矩阵键盘与单片机连接起来。
矩阵键盘由多个按钮组成,每个按钮有一个独特的按键码。
常见的矩阵键盘有4×4和4×3两种类型。
2. 设置引脚模式接下来,我们需要设置单片机的引脚模式,将指定的引脚配置为输入模式。
这样,我们就可以通过这些引脚来读取矩阵键盘上的按键信息。
3. 扫描按键在单片机程序中,我们需要编写代码来扫描键盘。
扫描的步骤是逐行扫描矩阵键盘,通过拉低某一行的引脚,然后读取对应列的引脚状态。
如果发现某个按键被按下,则对应的引脚状态为低电平。
4. 处理按键事件一旦检测到按键按下事件,我们就可以根据按键的按键码进行相应的处理。
这可能包括显示按键信息、执行特定的功能等。
二、应用案例为了更好地理解键盘输入接口的设计与应用,我们以一个简单的密码锁系统为例来说明。
1. 系统设计这个密码锁系统需要用户通过按下特定的按键组合来输入密码,一旦输入正确,系统会开启门锁。
2. 硬件设计我们可以选择4×4矩阵键盘作为输入设备,并连接到单片机的引脚上。
3. 程序设计我们需要编写相应的程序来实现密码锁系统的功能。
程序的主要逻辑如下:(1)初始化引脚:将矩阵键盘对应的引脚设置为输入模式。
(2)密码输入:通过扫描矩阵键盘,读取按键信息。
根据按键码将按键信息存储到一个缓冲区中。
(3)密码验证:当用户输入完整的密码后,我们需要对其进行验证。
如果密码正确,则开启门锁;否则提示密码错误。
(4)功能实现:在密码验证通过后,我们可以添加一些额外的功能,例如计时器、报警器等。
4. 系统测试完成程序编写后,我们需要将代码烧录到单片机中,并测试系统的功能。
单片机与键盘输入的接口设计与应用解析引言:单片机是一种集成电路芯片,具有处理器核、存储器和输入输出引脚等组成部分,可以控制各种外部设备。
键盘是计算机和其他电子设备的常用输入设备,通过按下不同的按键来输入信息。
在许多应用中,需要将键盘与单片机相连接,以实现键盘输入的功能。
本文将深入探讨单片机与键盘输入的接口设计与应用,包括接口电路的设计原理、接口方式的选择以及相关应用案例的分析。
一、接口电路设计原理1. 键盘扫描原理键盘通常是由一系列按键按排成矩阵状的结构,每个按键都有两个触点,当按键按下时,两个触点短接,形成闭合电路。
为了检测到具体按下的按键,需要通过扫描的方式来逐个检测。
2. 电路连接方式通常,键盘与单片机之间可以通过行列式和矩阵式两种方式实现连接。
行列式连接方式即将键盘的行和列通过引脚分别连接到单片机的IO口,通过单片机的输入输出控制来检测按键信号。
矩阵式连接方式则是采用矩阵键盘的形式,将所有的按键都连接到行和列的交叉点上,通过扫描的方式来检测按键信号。
二、接口方式的选择1. 行列式连接方式的优势和劣势行列式连接方式相对简单,常用于按键较少的情况下。
它的优势在于节省IO 口的使用,通过编写简单的行列扫描程序即可实现对按键的检测。
然而,它的劣势在于不能同时检测多个按键,当同时有多个按键按下时,只能检测到其中一个。
2. 矩阵式连接方式的优势和劣势矩阵式连接方式可以同时检测多个按键,因为所有的按键都连接到行和列的交叉点上。
它的优势在于可以通过编写复杂的扫描程序,实现同时检测多个按键,并且可以检测到按键的精确位置。
然而,它的劣势在于需要占用较多的IO口,且对于按键较多的情况下,编写扫描程序较为复杂。
三、相关应用案例的分析1. 数字密码锁数字密码锁是常见的应用之一,通过将键盘与单片机连接,可以实现输入密码的功能,比如开启或关闭某个装置。
在设计中,可以选择行列式连接方式,通过扫描程序来检测按键,进而判断输入的密码是否匹配。
单片机键盘程序设计小结在图示电路中,用 P1 口接一个 4 X 4 键盘。
设: SO-S9 为数字键,键值为 0-9 ,用于向单片机系统输入数据; S10-S15 为命令键,键值为 A-F ,用于对计算机系统送操作命令;每键只 1 个功能;行线接 P1 口的高 4 位;列线接 P1 口的低 4 位。
(1)键盘扫描子程序KEY: MOV A, #0F 0HMOV P1,AXRL A,P1JZ KEYR ;无键按下返回ACALL DELAY ;延时去抖动MOV 30H,P1 ;读闭合键行位置MOV P1,#0FH ;反转MOV A,P1 ;读闭合键列位置ORL 30H,A ;合成键盘位置码LOOP: MOV A,P1 ;等待键释放XRL A, #0FHJNZ LOOPACALL DELAY ;延时去抖动KEYR : RET(2)键值转换键盘矩阵中各键的位置码的特点是:对应该键行、列的位为“ 0 ” ,其他各位均为” 1 ” 。
例如: S7 键的位置码是:11010111B = 0D7H ; S12 键的位置码是: 01111110B = 7EH 。
将各键的位置码顺序排列成键值表,用查表法进行键值转换。
键值转换子程序TRAN: MOV DPTR,#KEYTAB ; DPTR 指向键值表MOV R2,#0 ;键值初值送 R2MOV R3,#10H ;循环次数送 R3LOOPT: MOV A,R2MOVC A, @A+DPTR ;读键值表XRL A,30H ;与位置码比较JZ KTR ;相等返回,键值在 R2 中INC R2 ;键值 +1DJNZ R3,LOOPTKTR: RET ;若返回时 R2=10H 为错KEYTAB: DB 0EEH,0EDH,0EBH,0E7H ;键值表DB 0DEH,0DDH,0DBH,0D7HDB 0BEH,0BDH,0BBH,0B7HDB 7EH,7DH,7BH,77H。
单片机键盘显示接口电路设计设计单片机键盘显示接口电路,需要考虑到键盘输入与显示输出两个方面。
以下是一个简单的设计示例,供参考:键盘通常采用矩阵键盘连接电路的方式,通过扫描矩阵的方式读取键盘输入信息。
以下是矩阵键盘接口电路的设计流程:1.确定键盘的规格和类型:键盘一般有正方形、矩形、圆形等几种形状,需要根据键盘的规格和类型选择适合的扫描方式。
2.确定键盘的逻辑矩阵大小:根据键盘的布局和规格,确定键盘的逻辑矩阵的行和列数,例如4行4列。
3.确定键盘的连接方式:键盘的连接方式一般有行列扫描、列行扫描、行列+列行扫描等几种方式,需要根据键盘的输出信号特点和单片机的输入要求进行适当的选择。
4.设计按键输入的译码电路:将键盘的输出信号通过译码电路解码成易于读取的二进制数,以便单片机的输入端口读取。
显示输出接口电路设计一般有两种方式:数码管和液晶显示。
1.数码管显示电路设计:数码管是通过控制各个数码管的段选和位选,实现数字或字符的显示。
以下是数码管显示电路的设计流程:a.确定显示的数字或字符类型:根据设计需求,确定要显示的数字或字符类型,例如整数、小数、字母等。
b.确定数码管的位数和类型:根据显示需求,确定数码管的位数和类型,有共阴数码管和共阳数码管两种类型,需要选择适合的数码管。
c.设计数码管的译码电路:根据数码管的类型和位数,设计数码管的译码电路,将输入的数字或字符转换为控制各个数码管的段选和位选的电信号。
2.液晶显示电路设计:液晶显示器是一种常见的显示设备,通过控制液晶的极性来实现图形和字符的显示。
以下是液晶显示电路设计的流程:a.确定显示的内容类型:根据设计需求,确定要显示的内容,例如字符、图像等。
b.选择适合的液晶显示器:根据显示的内容和要求,选择适合的液晶显示器,有字符型液晶显示器和图形型液晶显示器两种类型。
c.设计液晶的驱动电路:根据液晶显示器的类型和特性,设计液晶的驱动电路,将输入的数字或字符转换为控制液晶的电信号。
单片机与矩阵键盘接口电路设计实验报告姓名:林蔼龄学号:1060601007班级:10级物理系电子信息工程A班单片机与矩阵键盘接口电路设计实验报告一:实验内容使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。
二:电路图三:程序流程图四:程序org 0000hljmp mainmain:mov p1,#0fh;列线输出0,行线设为输入mov a,p1;读P1口anl a,#0fh;屏蔽高4位,留下行线状态cjne a,#0fh,look;有按键按下,转lookret;无按键按下,返回主程序look:lcall dlay10;延时10msmov a,p1;读P1口anl a,#0fh;屏蔽高4位,留下行线状态cjne a,#0fh,rank ;确认键已按稳,转RANK ljmp main;是抖动,未按稳,重新扫描rank:mov r2,#00h ;窜键标志寄存器请0mov r3,#04h ;查列次数mov r4,#0f7h ;列扫描字初值mov r5,#0ffh ;列号处值rloop1:inc r5 ;开始列扫描,列号加1mov a,r4 ;列扫描字送Arl a ;列扫描字左移一位mov r4,a ;暂存列扫描字mov p1,a ;送出列扫描字mov a,p1 ;读P1口anl a,#0fh ;屏蔽高4位,留下行线状态cjne a,#0fh,next1 ;当前列有键按下,转next1rloop2:djnz r3,rloop1 ;列扫描未完,继续sjmp line ;列扫描完,转行扫描next1:inc r2 ;窜键标志加1mov 20h,r5 ;暂存有按键的列号sjmp rloop2 ;继续列扫描line:cjne r2,#01h,main ;若已窜键,转main,重新扫描mov r2,#00h ;开始查行,窜键标志寄存器清0mov r3,#04h ;行扫描次数mov r6,#0ffh ;行号初值mov p1,#0fh ;列线送0,准备读行线mov a,p1 ;读P1口,获取行线状态lloop1:inc r6 ;行号加1rrc a ;从第0行开始,判断有无按键jnc next2 ;本行有按键,转next2lloop2:djnz r3,lloop1 ;无按键,继续查下一行sjmp next3 ;查完,转next3next2:inc r2 ;窜键标志加1mov 21h,r6 ;暂存有按键的行号sjmp lloop2 ;继续行扫描next3:cjne r2,#01h,main ;若窜键,转main,重新扫描gainky:mov a,21h ;无窜键,取出行号mov b,#04h ;键盘列数mul ab ;行号*键盘列数add a,20h ;乘积与列号相加,得到键号mov b,#03h;为执行键处理程序做准备mul ab ;键号*3mov dptr,#ptab ;键处理程序表首地址送DPTRjmp @a+dptr ;散转至与键号对应的键处理程序ptab:ljmp prog0;键处理程序表ljmp prog1ljmp prog2ljmp prog3ljmp prog4ljmp prog5ljmp prog6ljmp prog7ljmp prog8ljmp prog9ljmp prog10ljmp prog11ljmp prog12ljmp prog13ljmp prog14ljmp prog15prog0:mov p2,#3fhretprog1:mov p2,#06hretprog2:mov p2,#5bhretprog3:mov p2,#4fhretprog4:mov p2,#66hretprog5:mov p2,#6dhretprog6:mov p2,#7dhretprog7:mov p2,#07hretprog8:mov p2,#7fhretprog9:mov p2,#6fhretprog10:mov p2,#77hretprog11:mov p2,#7chretprog12:mov p2,#39hretprog13:mov p2,#5ehretprog14:mov p2,#79hretprog15:mov p2,#71hretdlay10:mov r0,#100 ;约10ms延时dlay1:mov r1,#50dlay2:djnz r1,dlay2djnz r0,dlay1retend五:实验结果当矩阵键盘的3号键被按下时,P2口的七段数码管显示的数据为3.如下图1所以:图1当矩阵键盘的A号键被按下时,P2口的七段数码管显示的数据为A.如下图2所以:图2当矩阵键盘的D号键被按下时,P2口的七段数码管显示的数据为d.如下图3所以:图3当矩阵键盘的F号键被按下时,P2口的七段数码管显示的数据为F.如下图4所以:图4。