用单片机实现PC键盘输入
单片机课程设计例题8-独立式小键盘输入
Vcc
P口
图437 独立式键盘结构图
4.程序设计
(1)流程图
开始 开始
键盘扫描函数 mark=01 ? Y mark=02 ? Y mark=03 ? Y LED点亮左移函数 点亮左移函数
有键按下? Y 延时 键释放? Y 置标志位 mark N LED闪烁函数 闪烁函数 结束 N
N
N
LED点亮右移函数 点亮右移函数
n n n n n n n n n n n n n n n n
void main(void) //主函数 { do { switch (key_scan()) { case 0: break; case 1:Led_left(); break; case 2:Led_right(); break; case 3:Led_flash(); break; } }while(1); //循环 }
n n n n n n n n n n n
void Led_right(void)//按键SW2,LED点亮右移函数 { unsigned char i,j=0x7F; for (i=0;i<8;i++) { P1=j ; delay() ; j=(j>>1); j=j|0x80; } }
n
void delay(void) //延时0.5s n { n unsigned int i,j; n for (i=0;i<500;i++) n for (j=0;j<120;j++); for (j=0;j<120;j++); n }
n
n n n n n n n n n n n n n n
单片机 矩阵键盘实验 实验报告
单片机矩阵键盘实验实验报告一、实验目的本次实验的目的是掌握原理和方法,利用单片机识别矩阵键盘并编程实现键码转换功能,控制LED点亮显示。
二、实验原理矩阵键盘是一种由多路单向控制器输入行选择信号与列选择信号连接而形成的一一对应矩阵排列结构。
它广泛应用于电子游戏机、办公自动化设备、医疗仪器、家电控制及书籍检索机器等方面。
本次实验采用的矩阵键盘是一个4 x 4矩阵,用4段数码管显示按键编码,每个按键都可以输入一个代码,矩阵键盘连接单片机,实现一个软件算法来识别键码转化。
从而将键盘中的按键的按下信号转换成程序能够识别的代码,置于相应的输出结果中,控制LED点亮,从而可以实现矩阵键盘按键的转换功能。
三、实验方法1.硬件搭建:矩阵键盘(4行4列)与单片机(Atmel AT89C51)相连,选择引脚连接,并将数码管和LED与单片机相连以实现显示和点亮的功能。
2.程序设计:先建立控制体系,利用中断服务子程序识别和码值转换,利用中断服务子程序实现从按键的按下信号转换为程序能够识别的代码,然后将该代码段编写到单片机程序中,每次按下矩阵键盘按键后单片机给出相应的按键编码输出,用数码管显示,控制LED点亮。
四、实验结果经过实验,成功实现了矩阵键盘与单片机之间的连接,编写了中断服务子程序,完成了按键编码输出与LED点亮的功能。
实验完成后,数码管显示各种按键的编码,同时LED会点亮。
本次实验介绍了矩阵键盘的原理,论述了键码转换的程序设计步骤,并实验完成矩阵键盘与单片机的连接,实现用LED点亮以及数码管显示按键的编码。
通过本次实验,受益匪浅,使我对使用单片机编写算法与程序有了更深入的认识,同时丰富了课堂学习的内容,也使我更加热爱自己所学的专业。
单片机数字输入输出接口扩展设计方法
单片机数字输入输出接口扩展设计方法单片机作为一种常见的微控制器,其数字输入输出接口的扩展设计方法是我们在电子工程领域中经常遇到的任务之一。
在本文中,我们将讨论单片机数字输入输出接口的扩展设计方法,并探讨其中的原理和应用。
在单片机系统中,数字输入输出(I/O)接口在连接外围设备时起着至关重要的作用。
通过扩展数字 I/O 接口可以为单片机系统提供更多的输入输出通道,从而提高系统的功能和性能。
下面将介绍几种常见的单片机数字 I/O 接口扩展设计方法。
1. 并行输入输出接口扩展并行输入输出接口扩展是最常见和直接的扩展方法之一。
通常,单片机的内部I/O口数量有限,无法满足一些复杂的应用需求。
通过使用外部并行输入输出扩展芯片,可以将单片机的I/O口扩展到更多的通道,同时保持高速数据传输。
这种方法可以使用注册器和开关阵列来实现数据的输入和输出。
2. 串行输入输出接口扩展串行输入输出接口扩展是一种节省外部引脚数量的方法。
使用串行输入输出扩展器,可以通过仅使用几个引脚实现多个输入输出通道。
这种方法适用于具有较多外设设备且外围设备数量有限的应用场景。
通过串行接口(如SPI或I2C)与扩展器通信,可以实现高效的数据传输和控制。
3. 矩阵键盘扩展矩阵键盘扩展是一种常见的数字输入接口扩展方法。
很多应用中,需要通过键盘输入数据或控制系统。
通过矩阵键盘的使用,可以大大减少所需的引脚数量。
通过编程方法可以实现键盘按键的扫描和解码,从而获取用户输入的数据或控制信号。
4. 脉冲编码调制(PCM)接口扩展脉冲编码调制是一种常见的数字输出接口扩展方法。
它通过对数字信号进行脉冲编码,将数字信号转换为脉冲信号输出。
这种方法适用于需要输出多个连续的数字信号的应用,如驱动器或步进电机控制。
通过适当的电路设计和编程,可以实现高效的数字信号输出。
5. PWM(脉冲宽度调制)接口扩展PWM接口扩展是一种常用的数字输出接口扩展方法。
PWM技术通过改变信号的脉冲宽度来实现模拟信号输出。
PC键盘输入及显示过程
PC键盘输入及显示过程原理摘要:键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母、数字、标点符号等输入到计算机中,从而向计算机发出命令、输入数据等。
而显示器也可以将通过键盘输入的字符、数据等显示出来。
在此报告中我们将讨论计算机识别键盘输入的信息并通过显示器来显示信息的过程。
关键词:键盘;输入;显示从计算机识别键盘输入的原理来说,键盘分为全编码键盘和非编码键盘两类。
全编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由全编码电路产生一个唯一对应的编码信息(如ASCII码)。
由于其线路和编码的唯一性,这种键盘是不存在键位冲突的问题的,但是编码键盘结构复杂,成本非常之高现在基本上已经被淘汰了,现在多用非编码键盘。
一、非编码键盘的输入原理非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码通过查表程序转换成相应的编码信息。
PC键盘主要由单片机、译码器和键开关矩阵三大部分组成。
由于键盘排列成矩阵格式,被按键的识别和行列位置扫描码的产生,是由键盘内部的单片机通过译码器来实现的。
单片机在周期性扫描行、列的同时,读回扫描信号线结果,判断是否有键按下,并计算按键的位置以获得扫描码。
当有键按下时,键盘分两次将位置扫描码发送到键盘接口;按下一次,叫接通扫描码;释放时再发一次,叫断开扫描码。
因此可以用硬件或软件的方法对键盘的行、列分别进行扫视,去查找按下的键,输出扫描位置码,通过查表转换为ASCII码返回。
现在常用的薄膜接触式键盘就是非编码键盘,它任何一个按键都有上下两层薄膜的触点,在任何一层薄膜上的导线数都少于按键数,每一条导线都同时连通多个按键的触点,上层和下层的任何两条导线都最多只在一个按键上重合。
也就是说,上层的1号导线可能会同时经过1、2、3、4、5……等按键,而下层的1号导线可能同时经过1、Q、A、Z……等按键,且两条导线只在1键上重合。
基于单片机的PS2键盘设计
PS2键盘在单片机上的应用摘要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按键少的矩阵键盘。
标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种AT89C52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。
关键词:PS/2接口,PS/2键盘,拨号键,AT89C52,LCD1602Abstract:PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.Keywords:PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard目录1、前言 (1)2、整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3、单元模块设计 (4)3.1PS2键盘模块 (4)3.2单片机模块 (6)3.3LCD显示模块 (7)4、软件设计 (9)5、系统技术指标及精度和误差分析 (10)6、结论 (11)7、设计小结 (12)8、致谢 (14)9、参考文献 (14)附录1:电路总图 (15)附录2:仿真图 (16)附录3:软件代码 (17)1、前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。
单片机原理及接口技术第5章 IO口应用-显示与开关键盘输入
图5-1
发光二极管与单片机并行口的连接
5
如果端口引脚为低电平,能使灌电流Id从单片机的外部流入内部,则将
大大增加流过的灌电流值,如图5-1(b)所示。所以,AT89S51单片机任 何一个端口要想获得较大的驱动能力,要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如 74LS04、74LS244等。 5.1.2 单片机I/O端口控制发光二极管的编程 发光二极管与单片机的I/O端口的连接,如图5-1(b)所示。如要点亮 某发光二极管,只需该I/O端口位写入“0”即可。下面通过一个例子介绍如
21
图5-6 4位LED静态显示的示意图
示字符。这样在同一时间,每一位显示的字符可以各不相同。但是,静态
显示方式占用I/O口线较多。 对于图5-6所示电路,要占用4个8位I/O口(或锁存器)。如果数码管 数目增多,则还需要增加I/O口的数目。在实际的系统设计中,如果显示位 数较少,可采用静态显示方式。但显示位数较多时,为了降低成本,一般 采用动态显示方式。 2. 动态扫描显示方式 显示位数较多时,静态显示所占用的I/O口多,为节省I/O口与驱动电路
单片机控制的8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字 符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到
送入下一个显示字符的段码。因此,静态显示方式的显示无闪烁,亮度较
高,软件控制比较容易。 图5-6所示为4位LED数码管静态显示电路,各个数码管可独立显示,
只要向控制各位I/O口锁存器写入相应的显示段码,该位就能保持相应的显
闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测
10
图5-3
开关、LED发光二极管与P1口的连接
单片机实现触摸键盘技术
单片机实现触摸键盘技术触摸键盘技术可以通过单片机实现,这种技术使用户能够通过触摸屏幕或触摸按键进行输入操作,替代了传统的物理按键,提供了更加便捷和灵活的输入方式。
触摸键盘技术的实现涉及到多个方面的知识,包括硬件设计和软件编程。
在硬件设计方面,我们需要选择合适的触摸屏幕或触摸按键模块,并与单片机进行连接。
在软件编程方面,需要编写相应的驱动程序和应用程序,实现触摸键盘的功能。
下面将详细介绍触摸键盘技术的实现步骤。
一、选择合适的触摸屏幕或触摸按键模块在选择触摸屏幕或触摸按键模块时,需要考虑它们的硬件接口和性能指标。
通常情况下,触摸屏幕模块使用SPI或I2C接口与单片机进行通信,触摸按键模块使用GPIO接口进行输入。
此外,还需要考虑模块的精度、灵敏度、稳定性等性能指标,以满足具体应用需求。
二、连接触摸屏幕或触摸按键模块将选定的触摸屏幕或触摸按键模块与单片机进行连接。
具体的连接方式取决于模块的硬件接口。
如果是触摸屏幕模块,可以通过SPI或I2C接口连接到单片机的相应引脚上。
如果是触摸按键模块,可以通过GPIO接口连接到单片机的输入引脚上。
三、编写触摸键盘驱动程序编写触摸键盘的驱动程序,用于与触摸屏幕或触摸按键模块进行通信,并获取用户输入的数据。
驱动程序需要实现以下功能:1.初始化模块:初始化触摸屏幕或触摸按键模块,配置相关参数。
2.检测触摸事件:周期性地检测触摸事件,包括触摸按下、触摸移动和触摸释放等事件。
3.获取坐标数据:在触摸事件发生时,获取触摸坐标数据,可以通过模块提供的接口实现。
4.处理输入数据:根据获取到的坐标数据,将其转换为具体的按键输入,可以使用坐标与按键的对应关系表进行转换。
四、编写触摸键盘应用程序在单片机上编写触摸键盘的应用程序,用于处理用户的输入和实现相应的功能。
应用程序需要实现以下功能:1.显示界面:根据应用需求,通过单片机的显示模块显示相应的界面,如按钮、菜单等。
2.响应输入:通过触摸键盘驱动程序获取用户的输入数据,并根据输入数据执行相应的操作,如按钮的点击、菜单的选择等。
单片机矩阵键盘设计方案
单片机矩阵键盘设计方案一、设计目标设计一个8行8列的矩阵键盘,每个按键都有一个唯一的键码,能够正常读取用户的按键输入,并将按键对应的键码显示在LCD屏幕上。
二、硬件设计硬件设计包括键盘电路和显示电路两部分。
1.键盘电路设计矩阵键盘的硬件设计主要包括键盘矩阵、行扫描电路和列读取电路。
键盘矩阵由8行8列的按键构成,每个按键都连接到一个由二极管组成的矩阵。
行扫描电路使用8位输出的GPIO口,根据行的值来选通对应的行组。
列读取电路使用8位输入的GPIO口,根据列的值来读取对应的列组。
2.显示电路设计三、软件设计软件设计主要包括初始化设置、按键检测、键码解析和显示处理四个部分。
1.初始化设置首先需要对GPIO口进行初始化设置,将扫描行的GPIO口设置为输出模式,将读取列的GPIO口设置为输入模式。
同时需要对LCD屏幕进行初始化设置,设置显示模式、光标位置等参数。
2.按键检测循环扫描每一行,当其中一行被选通时,读取每一列的值。
如果其中一列的值为低电平,则表示对应的按键被按下。
将按下的按键的行和列的值保存下来,用于后续的键码解析。
3.键码解析根据行和列的值,通过查表的方式找到对应的键码。
将键码保存下来,用于后续的显示处理。
4.显示处理将键码传送给LCD屏幕,通过LCD屏幕的驱动芯片进行解析和显示。
根据LCD屏幕的显示方式,可以选择逐行显示或者按需显示的方式。
四、优化设计在以上基本设计方案的基础上,可以进行一些优化设计,以提高系统的性能和可靠性。
1.消除按键抖动按键在实际使用中会存在抖动现象,需要通过软件滤波来消除。
可设置一个适当的延时,当检测到按键按下后,延时一段时间再进行键码解析,只有在延时之后仍然检测到按键按下,才认为是一个有效的按键。
2.防止冲突按键由于矩阵键盘的性质,可能存在一些按键组合会产生冲突的情况。
可以通过硬件设计和软件处理来解决。
在硬件上,可以增加二极管来隔离不同的按键。
在软件上,可以通过扫描算法和按键排除的方式来避免冲突。
单片机实现触摸键盘技术
单片机实现触摸键盘技术触摸键盘技术是一种常见的输入技术,它广泛应用于各种电子设备中,如计算机、智能手机、平板电脑等。
对于单片机来说,实现触摸键盘技术可以扩展其输入功能,使其更加易用和灵活。
本文将介绍如何利用单片机实现触摸键盘技术,包括工作原理、设计思路和实现方法等。
一、工作原理触摸键盘技术的核心原理是利用人体电容来检测触摸操作。
当人体接近或触摸到触摸键盘上的电极时,会发生电荷传导,从而改变触摸键盘电极上的电位。
单片机通过采集这些电位变化,就可以获得用户的输入信息。
二、设计思路实现触摸键盘技术的基本思路是通过电容传感器来检测触摸操作,并将电容传感器的输出信号转换成数字信号,以供单片机进行处理。
具体的设计步骤如下:1.选择电容传感器:根据应用需求选择适合的电容传感器。
常见的电容传感器有电容触摸开关、电容触摸按钮等,可以根据实际情况进行选择。
2.连接电容传感器:将电容传感器与单片机连接起来。
一般情况下,电容传感器会有两个电极,分别连接到单片机的输入引脚和地。
3.设置引脚模式:在单片机的软件中,将连接到电容传感器的引脚设置为输入模式。
4.采集电压数据:通过单片机的模拟输入功能,采集电容传感器引脚上的电压数据。
可以使用ADC(模拟-数字转换器)模块来实现这一功能。
5.判断触摸操作:根据采集到的电压数据,判断是否发生了触摸操作。
可以通过设定一个阈值来判断触摸与非触摸状态。
6.处理触摸信息:如果发生了触摸操作,可以通过单片机的中断功能或轮询方式来获取触摸信息。
根据具体应用需求,可以对触摸信息进行处理,如显示在LCD屏幕上或进行其他操作。
三、实现方法根据具体的单片机型号和开发环境的不同,实现触摸键盘技术的方法会有所不同。
下面以常用的单片机STM32为例,介绍一种实现方法。
1.硬件连接:将电容传感器的输出引脚连接到单片机的一个模拟输入引脚上,并连接到供电地。
可以使用一个电阻将电容传感器的输出与模拟输入引脚串联,以减小输出信号的噪声。
单片机输入输出端口
for(i=0;i<10;i++)
{ PORTC=k=0x01; // 每次循环不要忘记k赋初始值
for(j=1;j<=4;j++) // 共需要刷新四个数码管位置
{ PORTC=k; //设置要点亮的位置
PORTB=TableNumber[Number[j]]; //设置字形
delay10ms(1); // 延时显示字形,造成视觉暂留现象
// 设置用于ICD2调试
void main(void)
{ int Data=2913;
SEG_BITSEL_PORT_DIR=0x00; // 位选方向寄存器
SEG_FONT_PORT_DIR=0x00; // 字形方向寄存器
while(1)
{
DisplayData(Data);
}
}
第 20页
第 5页
输入/输出端口原理
第 6页
输入/输出端口的相关寄存器
位7 位6 位5 位4 位3 位2 位1 位0
当B口处于输出状态时,PORTB的 内容能决定其对应引脚的电平状态。 1对应高电平,0对应低电平。
当B口处于输入状态时,外部引脚 的电平能决定其对应寄存器位的值。 高电平对应1,低电平对应0。
// KeyValue保存键值,KeyH4保存高四位,……
TRISC=0x0F; //高四位输出,低四位输入
PORTC=0x00; //高四位输出0000
asm("nop"); // 延时等待输出稳定
asm("nop"); // 延时等待输出稳定
keyL4=PORTC; // 读取低四位内容
keyL4=keyL4&0x0F; //屏蔽高四位,书写格式?
基于单片机的PS2键盘设计
PS2键盘在单片机上的应用摘要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按键少的矩阵键盘。
标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种AT89C52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。
关键词:PS/2接口,PS/2键盘,拨号键,AT89C52,LCD1602Abstract:PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.Keywords:PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard目录1、前言 (1)2、整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3、单元模块设计 (4)3.1PS2键盘模块 (4)3.2单片机模块 (6)3.3LCD显示模块 (7)4、软件设计 (9)5、系统技术指标及精度和误差分析 (10)6、结论 (11)7、设计小结 (12)8、致谢 (14)9、参考文献 (14)附录1:电路总图 (15)附录2:仿真图 (16)附录3:软件代码 (17)1、前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。
单片机 矩阵键盘实验 实验报告
单片机矩阵键盘实验实验报告
实验名称:单片机矩阵键盘实验
实验目的:掌握单片机矩阵键盘的原理和应用,能够使用单片机按键输入
实验内容:利用Keil C51软件,采用AT89C51单片机实现一个4x4的矩阵键盘,当按下任何一个按键时,将相应的键值传输到液晶显示屏上进行显示。
实验步骤:
1、搭建实验电路,将矩阵键盘与单片机相连,连接好电源正负极,然后将电路焊接成一个完整的矩阵键盘输入电路。
2、打开Keil C51软件,新建一个单片机应用工程,然后编写代码。
3、通过代码实现对矩阵键盘输入的扫描功能,当按下任何一个按键时,将相应的键值传输到液晶显示屏上进行显示。
4、编译代码,生成HEX文件,下载HEX文件到单片机中,将单片机与电源相连,然后就可以测试了。
5、测试完成后,根据测试结果修改代码,重新编译生成HEX 文件,然后下载到单片机中进行验证。
实验结果:
经过测试,实验结果良好,能够准确地输入按键的值,显示在液晶屏上。
实验感想:
通过这次实验,我深深地认识到了矩阵键盘技术的重要性以及应用价值,同时也更加深入了解单片机的工作原理和应用技术,这对我的学习和工作都有很好的帮助。
在51单片机上使用PC机ps2键盘
在51单片机上使用PC机ps/2键盘(附源码)本人弄了几天,终于在今天晚上,也就是刚才实验成功,心情特佳,特写出来以享大家。
单片机上应用非编码键盘,各书上均有介绍。
作为实验用,我想到了用PC机的ps/2键盘。
PC机键盘内部有单片机电路来完成编码和去抖动,它按照ps/2协议来发送扫描码。
因此在应用中,我们需要做的只是将扫描码与字符对应起来,大部分事情都由键盘自己完成了。
首先介绍一下键盘的接口,典型的几种接口如下图:其中第一种用于老式键盘(我原来的键盘就是),第二种便是现在的PS/2键盘,第三个不用去管它。
我的实验是按照最常用的PS/2(即第二种)来做的。
再略微介绍一下PS/2协议的相关内容。
PS/2的一个数据帧为11位,时序如下:PS/2帧的第一位是起始位,为0,然后是8位数据位,发送键盘扫描码的一个字节(扫描码为1-4个字节),然后是奇偶校验位,最后是停止位,为1。
这些是在数据线(即1号引脚线)上发送的。
无键按下时,数据线和始终线都保持为1。
当有键按下时,时钟线CLOCK 送出脉冲,同时数据线送出数据。
主机(此处是89c51 MCU)在始终脉冲的下降沿对数据线采样获得数据。
键盘扫描码包括通码和断码,当键按下时发送通码,抬起时发送断码。
更详细的内容可参考所附的《PS/2技术参考》。
根据上述原理,我这样设计了实验:将键盘的脉冲线接至89c51的外部中断输入口(INT0或INT1),当键按下和抬起时有脉冲产生,此脉冲引发MCU中断。
将键盘的DATA线连至89c51的输入口(如P1.0)。
在中断处理程序中,从输入口读入数据,然后通过循环移位对读进的数据位进行处理,1(起始位)、10(奇偶校验)、11(停止位)可抛弃,如不嫌麻烦也可将奇偶校验位加以应用。
当一个数据帧收完后,将处理后剩下的2-9位(即扫描码)通过串口发至PC机,通过PC机的串口监视软件(如“串口调试助手”)来查看。
硬件连线和源码如下:源码:ORG 0000HAJMP MAIN;转入主程序ORG 0003H ;外部中断P3.2脚INT0入口地址AJMP INT ;转入外部中断服务子程序;以下为主程序进行CPU中断方式设置MAIN:MOV SCON,#50H;设置成串口1方式MOV TMOD,#20H;波特率发生器T1工作在模式2上MOV PCON,#80H;波特率翻倍为2400x2=4800BPSMOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)SETB EA ;打开CPU总中断请求SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发SETB EX0 ;打开INT0中断请求SJMP $INT: CLR EA ;暂时关闭CPU的所有中断请求CJNE R0,#0,L1L3: INC R0SJMP L5L1: CJNE R0,#9,L2SJMP L3L2: CJNE R0,#10,L4SETB TR1;启动定时器T1MOV SBUF,AMOV R0,#0L5: SETB EA ;允许中断RETI ;退出子程序L4: MOV C,P1.0RRC ASJMP L3END搞定后,当按下和释放键时,会在PC机上显示其扫描码。
单片机键盘显示实验报告
单片机的键盘和显示实验报告㈠实验目的1.掌握单片机I/O的工作方式;2.掌握单片机以串行口方式0工作的LED显示;3.掌握键盘和LED显示的编程方法。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台㈢实验内容及要求实验硬件线路图见附图从线路图可见,8051单片机的P1口作为8个按键的输入端,构成独立式键盘。
四个LED显示器通过四个串/并移位寄存器74LS164接口至8051的串行口,该串行口应工作在方式0发送状态下,RXD端送出要显示的段码数据,TXD则作为发送时钟来对显示数据进行移位操作。
编写一个计算器程序,当某一键按下时可执行相应的加、减、乘、除运算方式,在四个显示器上显示数学算式和最终计算结果。
注:①通过按键来选择加、减、乘、除四种运算方式。
②输入两个数字均为一位十进制数,可预先放在内存中。
㈣实验框图(见下页)㈤思考题1.当键盘采用中断方式时,硬件电路应怎样连接~是键输出线,~是扫描输入线。
输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。
移位寄存器的移位速率是多少实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。
其实这个问题确实不知道怎么回答。
LED实验代码:ORG 0000HAJMP MAINORG 0030HMAIN:MOV 41H,#0BBH ;对几个存放地址进行初始化MOV 42H,#0BBHMOV 43H,#0BBHMOV 44H,#0BBHMOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示KEY:MOV R3,#08H ;用来存放两个数据MOV R4,#02HMOV P1,#0FFH ;初始化P1口MOV A,P1 ;读取按键状态CPL A ;取正逻辑,高电平表示有键按下JZ KEY ;A=0时无键按下,重新扫描键盘LCALL DELAY1 ;消抖MOV A,P1 ;再次读取按键状态CPL AJZ KEY ;再次判别是否有键按下PUSH AKEY1:MOV A,P1CPL AANL A,#0FH ;判别按键释放JNZ KEY1 ;按键未释放,等待LCALL DELAY1 ;释放,延时去抖动POP AJB ,ADD1 ;K1按下转去ADD1JB ,SUB1 ;K1按下转去SUB1JB ,MUL1 ;K1按下转去MUL1JB ,DIV1 ;K1按下转去DIV1LJMP KEYADD1:LCALL BUFFER ;显示加数和被加数MOV 43H,#049HLCALL DISPLAY ;显示加号MOV A,R3ADD A,R4DA AMOV R3,A ;相加结果放入R6ANL A,#0FHMOV R4,A ;结果个位放入R7MOV A,R3SWAP A ;半字节交换,高四位放入低四位ANL A,#0FHMOV R3,A ;结果的高位放入R6LCALL L ;显示缓存区设置LCALL DELAY2 ;延时一秒后显示LCALL DISPLAYLJMP KEYSUB1:LCALL BUFFER ;显示减数和被减数MOV 43H,#40HLCALL DISPLAY ;显示减号MOV A,R3CLR CY ;CY清零SUBB A,R4 ;做减法PUSH ARLC A ;带进位循环左移,最高位放入CYJC F ;判断最高位,若为1则跳转到负数ZHENG: POP AMOV R4,AMOV R3,#00H ;高位清零SJMP OUTFU:POP ACPL A ;取绝对值INC AMOV R4,AMOV R3,#11H ;显示负号OUT: LCALL L ;显示缓存区设置LCALL DELAY2 ;延时1s后显示LCALL DISPLAYLJMP KEYMUL1:LCALL BUFFER ;显示两位乘数MOV 43H,#99HLCALL DISPLAY ;显示乘号MOV A,R3MOV B,R4MUL AB ;结果放入AB,A中是低8位,B中是高8位MOV B,#0AHDIV AB ;十进制转换MOV R4,B ;结果个位放入R7MOV R3,A ;结果的十位放入R6LCALL LLCALL DELAY2LCALL DISPLAY ;延时1s后显示LJMP KEYDIV1:LCALL BUFFER ;显示除数和被除数MOV 43H,#62HLCALL DISPLAY ;显示除号MOV A,R3MOV B,R4DIV AB ;A除以BMOV R4,B ;余数放在R4中MOV R3,A ;商放在R3中MOV A,R4MOVC A,@A+DPTR ;调用段选号MOV 41H,A ;显示余数MOV A,R3MOVC A,@A+DPTRMOV 43H,A ;显示商MOV 42H,#00HMOV 44H,#00HLCALL DELAY2 ;延时1S后显示LCALL DISPLAYLJMP KEYBUFFER: MOV 41H,#22H ;显示初始化,在做计算之前显示两个操作数,显示等号MOV DPTR,#TABLMOV A,R4MOVC A,@A+DPTRMOV 42H,AMOV A,R3MOVC A,@A+DPTRMOV 44H,ARETDISPLAY:MOV R5,#04H ;共四位需要显示MOV R0,#41HDISPLAY1:MOV A,@R0MOV SBUF,ADISPLAY2:JNB TI,DISPLAY2 ;是否传完了CLR TIINC R0DJNZ R5,DISPLAY1RETL:MOV A,R4MOVC A,@A+DPTRMOV 41H,A ;R4对应的段码MOV A,R3MOVC A,@A+DPTRMOV 42H,A ;R3对应的段码MOV 43H,#00HMOV 44H,#00HRETDELAY1: ;普通延时MOV R1,#20HDS1: MOV R2,#0FFHDS2: DJNZ R2,DS2DJNZ R1,DS1RETDELAY2: MOV R6,#14H ;定时1SMOV TMOD,#01HDS3:MOV TH0,#3CHMOV TL0,#0B0H ;50msSETB TR0LOOP:JNB TF0,LOOPCLR TF0CLR TR0DJNZ R6,DS3 ;1s到,中断返回RETTABL:DB 0BBH 09H 0EAH 6BH ;段码表DB 59H 73H 0F3H 0BHDB 0FBH 7BH 00H 0DBHDB 0F1H 0B2H 0E9H 0F2HDB 0D2H 40H实验结果及分析按键1:8+2= 结果:10按键2:8-2= 结果: 6按键3:8*2= 结果:16按键4:8/2= 结果:4从上面的结果可以看出,本次实验基本完成了实验要求。
单片机键盘原理
单片机键盘原理
单片机键盘原理在于通过按键开关的闭合和断开来实现输入信号的检测和解码。
键盘通常由一个矩阵型的按键组成,每个按键都有一个独立的开关。
按键可以分为行和列,行和列之间采用交叉连续的方式进行连接。
在初始化过程中,单片机会将所有的列设置为输出引脚,行设置为输入引脚,并且设置为上拉输入。
当按键没有被按下时,所有行引脚都会被上拉电阻拉高。
当有某个按键按下时,对应按键的行引脚会被连接到低电平,通过检测行引脚的低电平可以知道是否有按键按下。
接着,单片机会将所有列引脚一一设置为输出低电平,并检测行引脚的电平状态。
如果行引脚的电平为低,则表示对应的按键被按下,并且可以根据所在的行和列来确定具体的按键编码。
通过这种方式,单片机可以实现对键盘输入信号的检测和解码,从而获取用户的输入。
在实际应用中,可以根据按键的编码来执行相应的操作,比如控制显示、控制器件等。
单片机单个I-O口实现多按键输入方法
单个I/O口实现多按键输入
作者:admin文章来源:本站原创点击数:1039 更新时间:2006-1-1 在单片机应用中,经常要用到按键输入,在有较多按键输入的情况下,通常会使用矩阵式扫描方法来完成,例如对于16个按键输入的场合,会使用4×4矩阵键盘,这需要占用较多的I/O口(如8个),而对于单片机来说,其I/O口资源非常有限,当I/O口资源紧缺时,只好选用成本更高的具有更多I/O口的单片机来使用,本文介绍一种只用一个或两个I/O口实现多按键输入的方法。
对于使用一个I/O口来实现多按键输入,有个前提条件,就是这个I/O口具有A/D转换功能,只要使不同的键按下时,A/D转换输人端的电压不同,就可识别出所按的键,其电路如下图所示。
在无键按下时,I/O口端电压为电源电压Vcc,当S1键按下时,I/O口端电压最低,是电阻R1和R2的分压,当S2键按下时,I/O口端电压变高,是电阻R1和(R2+R3)的分压,同理,当S3、S4按下时,电压会更高,通过对该I/O口的A/D转换值的大小进行判断,就可以得知所按下的哪一个键。
图中只列出了4个按键的例子,在实际使用中,适当调整电阻值,可使按键数增加很多,在8位A/D转换中,按键数甚至达到上百个。
对于无A/D转换功能的单片机,可通过使用2个I/O口达到以上同样的功能
文章录入:admin 责任编辑:admin。
单片机键盘触发的概念
单片机键盘触发是指在单片机应用系统中,通过外部输入设备(如键盘)向单片机发送指令或数据的过程。
当用户按下键盘上的某个按键时,会产生一个电平信号,这个信号会被单片机检测到并进行处理。
这个过程就是单片机键盘触发。
在单片机应用中,键盘触发通常用于实现人机交互功能,例如输入数据、选择菜单项等。
为了实现这些功能,需要对单片机进行编程,使其能够识别和处理键盘触发事件。
这通常涉及到以下几个步骤:
1. 初始化键盘:在程序开始运行时,需要对键盘进行初始化,包括设置输入端口的工作模式、上拉/下拉电阻等。
2. 检测按键:在程序运行过程中,需要不断检测键盘的输入状态,判断是否有按键被按下。
这通常通过轮询或中断方式实现。
3. 消抖处理:由于机械触点的弹性作用,按键在按下和释放过程中会产生抖动信号。
为了避免误判,需要在检测到按键按下后进行一定的延时处理,消除抖动信号。
4. 识别按键:当确认有按键被按下后,需要根据按键的位置或编码来识别是哪个按键被触发。
这可以通过查询表或编码方式实现。
5. 处理按键事件:根据识别到的按键,执行相应的操作,例如输入数据、切换菜单项等。
通过对单片机进行编程,可以实现各种复杂的键盘触发功能,提高系统的易用性和可靠性。
同时,还可以通过扩展键盘模块,实现更多的输入设备和功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ACALL DELA10
RRC A RET
与主控机的异步串行通讯基于RS-232总线标准。为了使接口具有更好的兼容性和工作稳定性,我们用MAX232E作为数据传送器。MAX232E是专为RS-232通讯而设计,低功耗,外接电容小,抗干扰能力强,管脚有ESD保护并且能支持到120k波特率的数据传输,能很好地解决PC机和单片机电平不匹配问题。同时它增强了数据驱动能力,能支持12米的串行线。
CLR CLOCK ;同步信号产生一个脉冲
CLR KEY ;数据线置0 ACALL DELAY30
PC机复位键盘过程:先发复位命令FFH,单片机收到以FAH应答,PC机收到后,置时钟线和数据线为高电平,单片机检测到此状态开始内部自测试,测试完成发送AAH表示自检结束,否则发FDH表自检出错。
3.编码格式
实际的标准键盘在有按键按下时,键盘向PC机发送两行编码,一组为键稳定闭合时的扫描码,一组为闭合健断开时的断开码。具体各键的扫描码可以查询有关资料,断开码为两个字节,等于F0H+该键的扫描码。主控机通过通讯接口向受控机进行模拟键盘输入时,向串行口发送的编码单片机提取后发送给受控机的PS/2口,因此主控机向串行口发送的编码应符合下列格式:
摘 要:在某些特殊控制场合,需要通过主控机的串行口和受控机的PS/2键盘口,实现主控机对受控机的模拟键盘输入。本文介绍了串行口和键盘口的通讯接口的软、硬件设计方法。
关键词:串行口 PS/2键盘口 通讯 单片机
键盘作为微机的基本输入设备,是微机不可缺的一部分。但在某些特殊的场合,我们要对受控机进行程序设计的特殊输入控制,则需要一接口实现串行口和PS/2键盘口通讯,这样在主控机上通过对串行口的编程就能实现对受控机的模拟键盘输入。笔者开发的该接口以MCS-51单片机为核心,原理图如图1所示,利用MCS-51的全双工异步串行I/O口实现与主控机的异步串行通讯,而和受控机PS/2键盘口的同步串行通讯则通过双向数据I/O口控制同步时钟和数据位。
PC机启动时将向串行口发送两个字节的00H以检测串行口,同时防止主控机上的串行口其他的干扰信息,通讯时笔者设计的报文以A0H,CDH作为联络信息开头,第三字节为数据长度,之后为我们要传送的数据,这样有效地过滤掉干扰信息。单片机按串行口中断方式接收主控机的数据,收到有效格式的数据后,解析报文,提取出真实的数据,传送给受控机的PS/2口。
SETB CLOCK ;时钟线置1开 ACALL DELAY10
;始发送起始位 ACALL DELAY10
MOV R1,#9 SETB KEY ;发送停止位
(1).时钟线为低电平,禁止传送数据。
(2).时钟线为高电平,数据线为低电平,通知模拟键盘接收命令。
(3).时钟线和数据线都为高电平,允许模拟键盘发送数据
单片机的+5V电源由受控机通过PS/2键盘插头的电源线提供,同时将两个I/O双向数据口分别作为同步时钟线和数据线,与受控机进行通讯。
2.2接收数据
在特殊场合,例如开机键盘自检时,PC机会向PS/2键盘口发送自检命令,如果无响应则无法通过硬件检测而无法启动操作系统。因此在受控机开机时,单片机上电复位,在单片机应能接收到键盘的命令并作出响应。如果一秒后没收到,则受控机的CMOS设置忽略键盘自检,单片机不作响应继续执行下面的程序。
.1.和主控机的异步串行通讯
异步通讯按帧传送数据,它利用每一帧的起、止信号来建立发送与接受之间的同步,每帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志,它是以字符为单位一个个发送和接收的。
1.1硬件接口设计
2.1发送数据
首先检测时钟线和数据线的状态,当两者都为高电平时,开始传送数据。每传送一位,时钟同步地产生一个脉冲。当受控机收到该脉冲后,将时钟线置成低电平并保持一段时间,禁止发送方继续发送,以便于检验数据正确性,数据校验采用偶校验。因此建议在每个字符的发送间隔有一定的延时。以下为笔者编写的发送寄存器A的八位数据给受控机PS/2口的子程序。
SendToPs: MOV KEY,C ;发送一位数据
JNB CLOCK,$ ;等待至时钟线为1 ACALL DELAY10
JNB KEY,$ ;等待至数据线为1
2.和受控机的同步串行通讯
同步通讯以发送端和接收端使用同一时钟信号来同步,在时钟脉冲的作用下同步地收发数据。该接口与受控机之间通过标准的六芯PS/2键盘插头相连接。其信号线包括:一根时钟线、一根数据线、一根地线和一根给单片机供电的电源线,还有两根空线。所传输的每一字符由11位组成:1位起始位,8位数据位,1位奇偶校验位和1位停止位。这11位数据在时钟脉冲的同步作用下,实现数据的传送,传送的信号低位在前。由于只有一根数据线和时钟线,所以,任何时刻只能有一方发送数据。无通讯时,时钟线和和数据线都设为高电平的初始状态。受控机上的键盘接口通过设置数据线和时钟线的状态,指导模拟键盘的通讯接口收发数据:
1.2软件接口设计
异步通讯必须在字符格式中设置起始位和结束位,以使收发双方取得同步。其数据格式为1位起始位+8位数据位+奇偶校验位+1位或2位的停止位。其中起始位为低电平,数据位传送时先低后高,停止位为高电平。笔者在电路板上设计了异步串行通讯跳线,可设置通讯的波特率、奇偶校验位和停止位,在单片机软件的开始读取跳线设置值而后初始化串行口,从而支持多种通讯数据格式。
ACALL DELAY10 ;延时10us SETB CLOCK
CLR CLOCK ;时钟线置0 DJNZ R1,TC ;共发送8位数据位和
ACALL DELAY30 ;延时30us ;1位偶校验位
主控机向受控机模拟输入字符a,即按下a键(扫描码为1CH):A0H,CDH,03H,1CH,F0H,1CH,如果模拟输入大写A,即按住Shift键(扫描码为12H)和a键:A0H,CDH,06H,12H,1CH,F0H,1CH,F0H,12H。
该通讯接口目前已形成初步产品提供给软件开发商,其体积小、硬件成本低、工作稳定且兼容性好,有较好的实用前景。
参考文献:
[1] 李大友:微型计算机接口技术,清华大学出版社,1998
[2] 余锡存 曹国华:单片机原理及接口技术,西安电子科技大学出版社,2000
[3] 熊宁 王景波:微机键盘通信发式及其编程,宁夏大学学报(自然科学版),第18卷第4期
MOV C,P ;奇校验->C ACALL DELAY10
CPL C ;偶检验->C CLR CLOCK
TC: ACALL DELAY30