搜档网
当前位置:搜档网 › 6.4 STM32F407ZGT独立按键功能深入剖析(神舟王407)

6.4 STM32F407ZGT独立按键功能深入剖析(神舟王407)

6.4 STM32F407ZGT独立按键功能深入剖析(神舟王407)
6.4 STM32F407ZGT独立按键功能深入剖析(神舟王407)

6.4 独立按键 (2)

6.1.1 按键的分类 (2)

6.1.2 按键属性 (2)

6.1.3 STM32的位带操作 (3)

6.1.4 例程01 STM32芯片按键点灯(无防抖) (7)

6.1.5 例程02 STM32芯片按键点灯-增加了防抖的代码 (12)

6.4 独立按键

6.1.1按键的分类

目前,按键有多种形式。有机械接触式,电容式,轻触式等。

1.按制作工艺分:

硬板按键:带弹簧的按键焊接在印刷电路板上

软板键盘:以导电橡胶作为接触材料放在以聚脂薄膜作为基底的印刷电路上所形成的按键。

2.按工艺原理分:

可以将键盘分为编码键盘和非编码键盘,编码键盘的键盘电路内包含有硬件编码器,当按下某—个键后,键盘电路能直接提供与该键相对应的编码信息,例如ASCII码。非编码键盘的键盘电路中只有较简单的硬件,采用软件来识别按下键的位置,并提供与按下键相对应的中间代码送主机,然后由软件将中间代码转换成相应的字符编码,例如ASCII码;非编码键盘主要靠软件编程来识别的,在单片机组成的各种系统中,用的较多的是非编码键盘。非编码键盘又分为独立键盘和行列式(又称矩阵式)键盘。

6.1.2按键属性

键盘实际上就是一组按键,在单片机外围电路中,通常用到的按键都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开,下图是几种单片机系统常见的按键:

弹性小按键被按下时闭合,松手后自动断开;自锁式按键按下时闭合且会自动锁住,只有再次按下时才弹起断开。

单片机的外围输入控制用小弹性按键较好,单片机检测按键的原理是:单片机的I/O口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋一高电平,然后让单片机不断地检测该I/O口是否变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变为低电平则说明按键被按下,然后执行相应的指令。

,为从上图可看出,理想波形与实际波形之间是有区别的什么呢?因为实际波形在按下和释放的瞬间会有抖动现象出现,这是因为通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短和按键的机械特性有关,一般为5~l0ms 。为了不产生这种现象而作的措施就是按键消抖。通常我们手动按下键然后立即释放,这个动作中稳定闭合的时间超过20ms 。因此单片机在检测键盘是否按下时都要加上去抖动操作。

消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或s ~10ms 的延到按6.1.3 STM32的位带操作

吗? 单片机51中也有位的操作,以一位(BIT )为数据对象的操作;例如软件两种方法,硬件的去抖主要是用专用的去抖动电路,也有专用的去抖动芯片;另外一种方式就是用软件延时的方法就能很容易解决抖动问题,而没有必要再添加多余的硬件电路。所以软件消抖适合按键比较多的情况,而硬件消抖适合按键比较少的情况。

如果按键较多,就用软件方法去抖,即检测出键闭合后执行一个延时程序,5m 时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms ~10ms 的延时,待后沿抖动消失后才能转入该键的处理程序,这样就靠软件模拟整个按键的过程,控制只取最稳定的那个按键状态。

实现方法:一般来说,软件消抖的方法是不断检测按键值,直到按键值稳定。假设检测键按下之后,为了避免检测到很多的抖动,可以先延时5ms ~10ms ,再次检测,如果按键还被检测按下,那么就认为有一次按键输入(因为如果不避开抖动的话,会有很多次按键输入信号出现,通过去抖,模拟人的按下的过程和时间,按下和松开按键实际也占用了20ms 以上的时间,记录正确的按键次数。

1. 什么是位带操作

还记得51单片机51单片机可以简单的将P1端口的第2位独立操作,P1.2=0或者P1.2=1,就是这样把P1口的第三个脚(bit2)置0(输出低电平)或者置1(输出高电平)。

而现在STM32的位段、位带别名区这些就是为了实现这样的功能,可以在SRAM 、I/O 外设2. 什么要用位带操作?

有位的操作吗,而STM32为什么要提出位带的操作呢?首先,这里3. 何设计和实现位带操作的?

作的对象是一个一个的bit 位,而对于STM32来说,它内内M32内部是如何解决的呢?它是在支持位带操作的地方,取个别名区空间,而这个别空间实现对这些区域的某一位的单独直接操作。

为那么51单片机中间不是不得不提一个事情就是STM32的内部区域访问只能是32位的字,不能是字节或者半字,这部分STM32在神舟开发板手册的GPIO 章节中提到过;而51单片机里一个bit (一个字节等于8个bit ,一个字是32个bit )。这个是STM32的特点决定的,所以STM32使用一种新型的方式来解决这个问题,设计一个办法来解决用一次访问32bit 的这样的操作达到51单片机那种只访问一个bit 的效果。

如从编程者这个角度来说,我们操部只能是32位bit 每次的访问。如果要实现这个技术,必须要做一个映射,也就是从1个bit 映射到32个bit ,就是用STM32内部的一次访问(32个bit )来代表编程者认为的1个bit 。

那ST 名区空间可以让一次32位来进行访问,对这个别名进行操作就相当于对SRAM 或者I/O 存储空间中的位(1个寄存器里的位就是1个bit ,1个bit 最后对应别名区空间的32个位,因为STM32芯片内部只能是32位去访问)进行操作。

这样呢,1MB SRAM 就可以32M 个对应别名区空间,就是1位膨胀到32位(1bit 变为1个字);我们对这个别名区空间开始的某一字操作,置0或置1,就等于它映射的SRAM 或I/O 相应的某地址的某一位的操作。

4. STM32中位带操作的具体部署情况是

支持位带操作的两个内存区的范围是: 序号 支持位带操作的两个内存区的范围

对应的别名区空间范围

1 SRAM 区中的最低1MB :

0x2000_0000-0x200F_FFFF

SRAM 所对应的别名区32MB 空间: 0x2200_0000-0x23FF_FFFF 2 片上外设区中的最低1MB :

0x4000_0000-0x400F_FFFF 片上外社区所对应的别名区32MB 空间: 0x4200_0000-0x43FF_FFFF

下面是内部空间映射图:

例如:中的0x2 地别名空别名空间 SRAM 区中的最低1MB 空间000_0000的8个bit ,分别对应如下:址

对应的bit 位 间 Bit 对应的Bit1 0x2200bit

_0000 跨度一个字 = 4个字节 = 32个Bit2 0x 0x2200个字节 = 32个bit

_0004 跨度一个字 = 4Bit3 0x2200_0008 跨度一个字 = 4个字节 = 32个bit

Bit4 0x2200_000C 跨度一个字 = 4个字节 = 32个bit

Bit5 0x2200_0010 跨度一个字 = 4个字节 = 32个bit

Bit6 0x2200_0014 跨度一个字 = 4个字节 = 32个bit

Bit7 0x2200_0018 跨度一个字 = 4个字节 = 32个bit

2000Bit8 0x2200_001C 跨度一个字 = 4个字节 = 32个bit

_00000 可以看到上表和上图,0x2000_0000中的一个bit 位对应了别名区的一个32位的字,也就是说STM32芯片的内部寄存器的任意一个位,都其实对应的是别名区的32个位。

5. 如何用代码与位带操作挂钩

在STM32中,一个寄存器是32位的,32个bit 中的任意其中一个bit 所对应的别名空间到底该如何访问呢?首先分为两种情况,一种是在SRAM ,一种是在FLASH 中,两个别名空间的起地位置是不同的,SRAM 是从0x2200_0000开始,而FLASH 是从0x4200_0000开始。

假如在SRAM 中的一个寄存器的地址是A ,访问寄存器A 中的第n 个bit 位。那么该如何计算呢?我们知道SRAM 中别名区的起始地址是0x2200_0000对应SRAM 中实际寄存器地址0x2000_0000,SRAM 中每1个bit ,都会对应别名区中的32个bit ,那么实际地址的公式应该如下:

0x2200_0000 + (SRAM 实际寄存器地址偏移0x2000_0000的bit 数)* 4

因为0x2200_0000这个地址每增加1,实际上就是增加8个bit (一个地址对应一个字节),实际寄存器中的1个bit 对应32个bit ,所以就乘以4,地址本身增加1是8bit ,8bit 乘以4倍刚好是32bit 。

那么接下来” SRAM 实际寄存器地址偏移0x2000_0000的bit 数”该如何计算呢? 对,用寄存器的地址减去这个基地址,然后在乘以8(因为一个地址对应8个bit ),所以就可以得到以下的公式:

(A ‐0x20000000)*8

以上这个公式可以知道实际寄存器离基地址有多少个bit 的距离,访问该寄存器的第n 个bit 位还必须加上一个n,就变成以下的公式:

后公式如H 与SRAM 00000‐0x2000

FLASH :0x42000000 +((A ‐0x4000

6. 举例说明:

比如我要访问如下寄存器GPIOF 12bit 从0开始计数到31截所以第12b 13。

(A ‐0x20000000)*8+n

好了,最整理整个换算下,FLAS 的原理都是想通的:SRAM :0x220 +((A 0000)*8+n)*40000)*8+n)*4_BSRR 中的第位BS13,注意因为寄存器内部是止,it

相当于是第

可以从下图看到,GPIO 端口F 的起始地址是x04002_1400,GPIOF_BSRR 寄存器的偏移地址是0x10,访问的第12bit 位的BS13。

那么通过公式:

FLASH :0x42000000 +((A ‐0x40000000)*8+n)*4

换算0x4200_0000 + ((0x40011400-0x40000000)*8 + 12)*4 = 实际地址

在这里我们就不具体计算了,SRAM 访问也是同理

7. 如何将理念转化成代码:

由上面几节得出,SRAM 和FLASH 中别名区的寻址公式如下:

SRAM :0x22000000 +((A ‐0x20000000)*8+n)*4

FLASH :0x42000000 +((A ‐0x40000000)*8+n)*4

可以看到0x2200_0000和0x4200_0000都共同有个x200_0000这个数值;乘以8相当于再加上外面的那个乘以4,总共是乘以32,而n 是乘以4;乘以32相当于是数值向左移5位,乘以4相当于向左边移2位。

尝试将如下公式化成

#define BITBAND(addr ,bitnum)

表示寄存器里的任何一个bit 位,大概原理讲到这里,具体使用方法通过例程来体现。

6.1.4 例程01 STM32芯片按键点灯(无防抖)

1. 示例简介

通过连上PA0管脚的按键,学会如何从PA0管脚读入一个输入,如何配置GPIO 口成输入状态;当PA0获取到输入的数据,STM32对LED 灯的状态进行取反。按键KEY1是一端连接了GND ,一端连接了PA0管脚;当按键按下时,PA0管脚的电平值被拉低,相关电路图如下图所示:

((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

这样就可以用BITBAND(addr ,bitnum)来

2.调试说明:

按下PA5管脚所连的按键(按钮1),每按一次,LED 灯会由亮变灭,或者又灭变亮,因为没有防抖代码(下个例程会增加),会发现,有时候按下去,灯会亮灭好几次。

3.关键代码:

int main(void) //main 是程序入口

{

unsigned int key_up =1;

//初始化配置时钟频率为72MHZ while (1)

= !key_up;

}

是复习一下,我们看看端口配置寄存器的描述,如下图所示:

RCC_init(); LED_init(); //LED 初始化配置

Key_init(); //初始化控制按键的PC4端口

{

if(key_up)

LEDON; // 开灯

else

LEDOFF; // 关灯

If ( KEY0 == 0)

key_up }

STM32芯片的GPIO 管脚要采集到按键按下,那么它需要被配置成输入模式,之前有讨论GPIO 管脚的几种模式,我们接下来还

我们看到如下内容,我们逐个列出来:

1)GPIOx_MODER 这个寄存器一共是32个比特,从0-31bit ,有32个位

00;表示在GPIO 端口的基地址加上这个偏移地址0x00就可以访问到这个寄存器的内容。

ODER 寄存器的复位值是0x4444 4444总共8个‘4’

寄存器其中第0、1位和4、5位和8、9位和12、13位9每两个位为一个组,叫做MODEy 组;主要功能是设2)GPIOx_MODER 寄存器的偏移地址是0x 3)GPIOx_M 4)GPIOx_MODER 以此类推到28、2置这个管脚是输入模式,还是输出模式

5)GPIOx_OTYPER 寄存器主要功能是设置具体哪种输入输出的模式;例如

如果是管脚输出,那么要确定是通用推挽输出模式,还是开漏输出模式,还是复用功能推挽输出模式,还是复用功能开漏输出模式;如果是管脚输入,是模拟输入模式还是浮空输入模式,还是上拉/下拉输入模式等。 是不是看得有点头晕了,但是没有办法,我们就是通过改变这些寄存器的

值来设置芯片管脚的,使得芯片管脚按照寄存器手册里的规定来进行相应的工作;可以是输出或输入,可以是高电平或是低电平(这个是另外一个寄存器来控制,大家可以对应看手册里的寄存器说明),从而达到我们控制一个LED 灯亮和灭,

下面看下连接按键的GPIO 管脚的具体设置,这个函数里的代码:

void Key_init()

{

/*使能AHB1总线的时钟,对GPIO 的端口A 时钟使能*/

RCC->AHB1ENR |= RCC_AHB1Periph_GPIOA;

/*配置输入输出模式和输入输出的速度*/

GPIOA->MODER &= 0xFFFFFFFC; /*将GPIOA 的0引脚配置为输入模式*/ GPIOA->MODER |= 0x00000000;

//GPIOA->OSPEEDR &= 0xFFFFFFFC; /*将GPIOA 的0引脚配置为100MHZ 的速度*/

}

RCC->AHB1ENR |= RCC_AHB1Periph_GPIOA;首先使能PORTA 的时钟,接下来开始使用PA0管脚,所以要先初始化PC 端口的时钟,才可以使用,下面看下原理图:

//GPIOA->OSPEEDR |= 0x00000003;

//GPIOA->OTYPER &= 0xFFFFFFFE; /*类型*/

//GPIOA->OTYPER |= 0x00000000;

GPIOA->PUPDR &= 0xFFFFFFFC; /*将GPIOA 的0引脚配置为上拉输入模式*/

GPIOA->PUPDR |= 0x00000001;

可以看到PA0默认是被上拉到3.3V 高电平的,GPIOA->MODER |= 0x00000000;这句代是将PA0的GPIO_MODER 寄存器的0到3位清0,然后GPIOA->MODER |= 0X00000000码这句话是将GPIO_CRL 寄存器的0到3位赋值0x0,化成二进制就是0000,通过查表:

可以知道将GPIOA_MODER 寄存器的PA0管脚配置成0000,即输入模式,配置好PA0管脚之后,如何才能知道按键按下呢?这时就需要时刻查看和监听PA0管脚是否有电平的变化那要测它是否有变化,因为我们希望当按键按下的时候,我们能以最快的反映速度获取到这一动作。

代码里,我们使用if ( KEY0==0 )来判断按键是否按下了,KEY0就是PA0,如果按键按接来继续分析代码:

(1)define BITBAND(addr, bitnum)

(3)#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))

(4)#define PAin(n) BIT_ADDR(GPIOC_IDR_Addr,n)

(5)#define KEY0 PAin(0)

代码(1):上面有讲解,这个BITBAND(addr,bitnum)最后得出的是某寄存器里的某个bit 位所映射的别名区的地址。

代码(2):unsigned long *表示强制把这个地址变成一个32位的长的地址的指针,或者说是一个指针,指向32位的一个地址;然后*((volatile unsigned long *)(addr))这个表示这个地址,长达32位bit 的值,通过MEM_ADDR(addr) 把从addr 地址开始的连续32个bit 里的值给取出来。

代码代码(5):把KEY0设置成PA0,使得KEY0能取到GPIOC_IDR 寄存器里第4位也就是PA0的值

这样,这个例程的关键是是否取到了PA0的值,取到了值之后,再进行相关的操作,这个是大家可以自己定义的,在这个例程中,按一下按键,我们就将LED 灯取反,原来是,就要知道PA0的管脚的电平值,而且还不停的去检在下,从原理图可以知道PA0被拉到GND 变成低电平,这样PA0就等于0即KEY0等于0。

那么KEY0如何反映到PA0的值的呢?下#((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

(2)#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))

(3):BIT_ADDR(addr, bitnum)表示某寄存器的地址,对应的某bit 位所对应的别名区的空间的值,也就是说取出某寄存器的某bit 位的值

代码(4):把PC 的某个管脚,与BIT_ADDR 进行绑定关联

亮的就变成灭的,原来是灭的就变成亮的。

6.1.5 例程02 STM32芯片按键点灯-增加了防抖的代码

1. 示例简介:

其他都与上个例程相同,唯一不同的就是增加了防抖代码,在这里是用软件防抖

2. 调试说明:

按下PA0管脚所连的按键(按钮1),每按一次,LED 灯会由亮变灭,或者又灭变亮,因为增加了防抖代码,基本上可以做到按一次,就采集到一次数据,灯由亮变灭或者又灭变亮,非常的稳定。

3. 关键代码:

原理图还是同上个例程一样:

int main(void) //main是程序入口

{

else }

unsigned int key_up =1;

RCC_init(); //初始化配置时钟频率为72MHZ

LED_init(); //LED初始化配置 Key_init(); //初始化控制按键的PA0端口

while (1)

{

Delay(0xfffff); // 增加了防抖功能,如果你按下按键的时候会有抖动 if(key_up)

LEDON; // 开灯

LEDOFF; // 关灯

if(KEY0==0)

key_up = !key_up; //取反

}

代码Delay(0xfffff)就是我们增加的防抖功能,如果你按下按键的时候会有抖动,我们

加一定时间的时间再来判断按键是否按下来,

这样在一定程度上可以起到消抖的作用,但是这里还有一个BUG就是如果长时间按着按键不动,while循环里面就会运行多次灯点亮程次数,大家可以尝试一下按一次键就只亮一次,无论一次按多长时间。

增序,如果是计数器的话,这个就不准了,按一次键,就计算了许多

如何去解决这个问题,

矩阵按键识别技术

矩阵按键识别技术 矩阵按键部份由16个轻触按键按照4行4列排列,连接到JP50端口。将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。 相关原理: 程序运行照片:

接线方法: 1、用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44. 2、接8位数码管的数据线。将数码管部份的数据口 JP5接到CPU部份的P0口JP51. 3、接8位数码管的显示位线。将数码管部份的显示位口 JP8接到CPU部份的P2口JP52. ;本程序实现扫描按键显示功能. ;分别按16个键盘显示分别显示数字123A456B789C*0#D ;键盘口P1,数码管显示第二位p21, 数码管段位p0口 确定矩阵式键盘上何键被按下,介绍一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法. 程序流程图:

8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。 1、检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取 P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。 2、去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。 3、若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出: 在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。 4、为了保证键每闭合一次CPU仅作一次处理,必须去除键释放时的抖动。 汇编语言参考程序: org 0000h ajmp main org 0080h main: mov dptr,#tab ;将表头放入DPTR lcall key ;调用键盘扫描程序 movc a,@a+dptr ;查表后将键值送入ACC mov p0,a ;将Acc值送入P0口

常用电子管管脚接线图

常用电子管管脚接线图(1) 管脚图例管子型号管子型号(1) 管子型号(2) A6AQ8ECC85 A6BQ7A ECC180 A6BZ7A A6CG7 A6FQ7(第9脚为NC) A6DJ8ECC88 A6922E88CC A7308E188CC A8223E288CC A Cca A6N16н1п A6N26н2п A6N66н6п A6N116н23пA6240G(第9脚为IC) A6н30пA12C51 A15670 A16N36н3п 常用电子管管脚接线图(2)

管脚图例管子型号管子型号(1)管子型号(2) B12AT7ECC81 B12AU7ECC82 B12AX7ECC83 B12BH7 B5751 B5814A B6201E81CC B6189E82CC B6681E83CC B7025 B12AY76н4п B ECC99 B E80CC B6N4 B6N10 B2025 B15687 B17119E182CC 常用电子管管脚接线图(3)

管脚图例管子型号管子型号(1)管子型号(2) C6SL7GT C5691 C6SN7GT C5692 C6N8P6н8сC6N9P6н9с C ECC33 C6AS7G C6080 C6N5P6н5сC6N13P6н13сC6BX7GT C6BL7GTA D6BQ5EL84 D7189 D6P146п14п 常用电子管管脚接线图(4)

管脚图例管子型号管子型号(1)管子型号(2) E6F6GT E6L6G E6L6GC E6V6GT E5881 E6550A E KT88(第1脚为BC) E KT66 E1614 E7581A E6P3P6п3сE6P6P6п6сE6G-B8 F2A3 F2c4c F45 F50 F300B F4300B 常用电子管管脚接线图(5)

4乘4矩阵键盘输入数码管显示四位数

综合课程设计三相步进电机控制器电路的设计 学生姓名__________

指导教师_________ 课程设计任务书 一、设计说明 步进电机是工业过程控制及仪表控制中的主控元件之一,作为执行元件其特点为能够快速起启停、精度高且能直接接收数字量,由于这些特点使其在定位场合得到了广泛的应用。 设计一个三相步进电机控制器,使其能够控制步进电机的工作状态,如步进电机正、反转,步进电机的工作方式等。 用键盘设定步进电机的工作频率,工作方式,并用数码管显示设定值,可以通过按键来更换显示内容。用示波器观测三相的输出波形,并用数码管显示电路的工作状态。 二、技术指标 步进电机的工作频率为:<10kHz 三、设计要求 1.进行方案论证,提出一个合理的设计方案并进行理论设计; 2.对所设计的方案部分进行调试; 3.在选择器件时,应考虑成本。 4.设计测量调试电路。 四、实验要求 1.根据技术指标制定实验方案;验证所设计的电路。 2.进行实验数据处理和分析。 五、推荐参考资料 1?谢自美?电子线路设计?实验?测试.[M]武汉:华中理工大学出版社,2000 年 2. 阎石. 数字电子技术基础. [M] 北京:高等教育出版社,2006年 3. 童诗白、华成英.模拟电子技术基础. [M] 北京:高等教育出版社,2006年 4..付家才. 电子实验与实践. [M] 北京:高等教育出版社,2004年 5.沙占友、李学芝著.中外数字万用表电路原理与维修技术. [M] 北京:人民 邮电出版社,1993年

六、按照要求撰写课程设计报告成绩评定表

一、概述 本次毕设的题目是:三相步进电机控制电路的设计。本次毕设使用80C51单片机作为主控芯片,利用ULN2003A集成电路作为三相步进电机的驱动电路,采用单极性驱动方式,使三相步进电机能在(1)三相单三拍,(2)三相双三拍, (3)三相六拍三种工作方式下正常工作;能实现的功能有:启动/停止控制、方向控制;速度控制;用LED数码管显示工作方式。键盘输入工作频率。本次课程设计采用80C51单片机作为主控芯片,程序采用C语言来编写,驱动电路采用ULN2003A集成电路,显示采用 7SEG-MPX4-CC卩四位共阴数码管,P0接段码,并用8只1K欧左右电阻上拉。P2的4位10 口接位选码。正转,数码管显示1。反转,数码管显示2.不转,数码管显示0.采用Proteus软件进行仿真。在Keil uVsuon3编程环境下编程和编译生成HEX文件,导入到 80C51单片机,实现对各个模块的控制,实现我们所需要的功能。 本次课程是对毕业设计的基础设计,即实现4x4键盘输入,数码管显示输入数字的设计。 二、方案论证 1步进电机驱动方案选择 方案1 :使用功率三极管等电子器件搭建成功率驱动电路来驱动电机的运行。这种方案的驱动电路的优点是使用电子器件联接,电路比较简单,但容易受 干扰,信号不够稳定,缺点是器件较大而不便电路的集成,使用时很不方便,联接时容易出错误。 方案2:使用专门的电机驱动芯片ULN2003A来驱动电机运行。驱动芯片的优点是便于电路的集成,且驱动电路简单,驱动信号很稳定,不易受外界环境的干扰,因而设计的三相步进电机控制系统性能更好。 通过对两种方案的比较,我选择方案2使用ULN2003A S机驱动芯片来作为驱动。 2数码管显示方案选择 方案1:把所需要显示的数据通过专用的七段显示译码器(例如7448)的转换输出给LED显示屏。优点是输出比较简单,可以简化程序,但增加了芯片的费用,电路也比较复杂。 方案2:通过程序把所要的数据转化为七段显示的数据,直接通过单片机接 口来显示,其优点是简化了电路,但增加了软件编写的负担。 通过对两种方案进行比较,我选择通过软件编写来输出显示信号,即单片机直接和显示器相连。 3控制状态的读取 方案1:把按键接到单片机的中断口,若有按键按下,单片机接收到中断信 号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。

第六讲 独立按键和矩阵键盘 第七讲 数码管要点

第六讲独立按键和矩阵键盘 按键是什么东西,我想这个就不必由我向各位阐述了。嗯,如你所见,按键种类繁多,功能有简有繁,极大的充斥着我们的生活。但是无论如何,所有的按键其实都有一个原型,来源于同一种原理,所有的按键无论多复杂,多华丽,都是从这样一个原型发展而成的。好比你就算长的再帅,你也是只猩猩变来的,呵呵。我们平日所见到的绝大部分的按键,其实都可以归类为一种,叫“接触式按键”。下图为一个典型的接触式按键(又称轻触开关)。 需要特别说明的是,这里说的“接触”,是指机械层面上的接触,而不是感光或者某些特殊涂层(比如触摸屏)一类的接触。所以,按键的工作特性其实是一种机械特性,下文会详细说明。 , 如上图,请对照图一想象,1、2、3、4 分别对应按键的四个引脚,其中蓝色的线表示按键未被按下之时的状态,我成为初始状态,它是不导通的;而绿色

的线是却永久导通的。各位明白了么,其实是两个相同的结构连在一起了。我们只要将需要按键开关作用的线路分别接在1、3 和2、4 的任意取一组合,概括起来就是(1,2)、(1,4)、(3,2)、(3,4)四种组合,都可以起到我们预期的开关作用。 相信以上说明使大家对按键的工作原理有了个比较清晰的认识了,现在来说说一个小知识。先看下图(图4): 首先说明的是,上图的连法是不允许的,因为当按键按下之后,电源和地短接,会将导线直接烧毁。但是此处用作特例,假设导线不会烧毁。现在来提出一个问题,当按键按下以后,请问如果这时用万用表测量导线上任何一处的电压,得到的结果是VCC 还是GND 的电压? 答案是:GND,即表示测出的电压为0V。为什么呢,因为导线上,对于两端的电平是一种类似于程序语言逻辑运算里面的“与”,即对于导线两端:有零即为零,只有全为一是才为一。理解了这点,按键的工作前提就有了。 键盘分为编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,用的较多的是非编码键盘。非编码键盘又分为独立键盘和行列式键盘(常说的矩阵键盘)。在这一讲中我们介绍一下单片机中键盘使用。 单片机的IO口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该IO口赋一高电平,然后让单片机不断地检测该I/O口是杏变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变为低电平则说明按键被按下,然后执行相应的指令。 我们先来说一下,按键常常遇到的问题—抖动问题。

键盘的按键功能有哪些(20210108115116)

键盘的按键功能*哪些 导读:我根据大家的需要整理了一份关于《键盘的按键功能有哪些》的内容,具体内容:很多电脑新手都不知道键盘的快捷键和一些常用方法,跟着我一起学习吧键盘的按键功能大全吧。键盘的按键功能大全常见用法:F1显示当前程序或者windows的帮助内容... 很多电脑新手都不知道键盘的快捷键和一些常用方法,跟着我一起学习吧键盘的按键功能大全吧。 键盘的按键功能大全 常见用法: F1显示当前程序或者windows的帮助内容。 F2当你选中一个文件的话,这意味着〃重命名〃 F3当你在桌面上的时候是打开〃查找:所有文件〃对话框 F10或ALT激活当前程序的菜单栏 windows键或CTRL+ESC打开开始菜单 CTRL+ALT+DELETE在win9x中打开关闭程丿子对话框 DELETE删除被选择的选择项目,如果是文件,将被放入回收站 SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站 CTRL+N新建一个新的文件 CTRL+O打开〃打开文件〃对话框 CTRL+P打开〃打印〃对话框 CTRL+S保存当前操作的文件

CTRL+X剪切被选择的项目到剪贴板 CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板 SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置 ALT+BACKSPACE或CTRL+Z撤销上一步的操作 ALT+SHIFT+BACKSPACE重做上一步被撤销的操作 Windows键+M最小化所有被打开的窗口。 Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置Windows键+E打开资源管理器 Windows键+F打开"查找:所有文件"对话框 Windows键+R打开"运行"对话框 Windows键+BREAK打开〃系统属性〃对话框 Windows键+CTRL+F打开〃查找:计算机〃对话框 SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单 SHIFT在放入CD的时候按下不放,可以跳过自动播放CD.在打开word 的时候按下不放,可以跳过自启动的宏 ALT+F4关闭当前应用程序 ALT+SPACEBAR打开程序最左上角的菜单 ALT+TAB切换当前程序 ALT+ESC切换当前程序 ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换PRINT SCREEN将当前屏幕以图象方式拷贝到剪贴板

数码管显示4×4键盘矩阵按键

9数码管显示4×4键盘矩阵按键 #include #define uchar unsigned char #define uint unsigned int sbit BEEP = P3^7; uchar code DSY_CODE[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00 }; uchar Pre_KeyNO = 16,KeyNO = 16; void DelayMS(uint ms) { uchar t; while(ms--) { for(t=0;t<120;t++); } }

void Keys_Scan() { uchar Tmp; P1 = 0x0f; DelayMS(1); Tmp = P1 ^ 0x0f; switch(Tmp) { case 1: KeyNO = 0; break; case 2: KeyNO = 1; break; case 4: KeyNO = 2; break; case 8: KeyNO = 3; break; default: KeyNO = 16; } P1 = 0xf0; DelayMS(1); Tmp = P1 >> 4 ^ 0x0f; switch(Tmp) { case 1: KeyNO += 0; break; case 2: KeyNO += 4; break; case 4: KeyNO += 8; break; case 8: KeyNO += 12; } } void Beep() { uchar i; for(i=0;i<100;i++) { DelayMS(1); BEEP = ~BEEP; } BEEP = 1; } void main() { P0 = 0x00; while(1) { P1 = 0xf0; if(P1 != 0xf0)

键盘使用说明书完整版

一、键盘简介键盘是计算机使用者向计算机输入数据或命令的最基本的设备。常用的键盘上有101个键或103个键,分别排列在四个主要部分:打字键区、功能键区、编辑键区、小键盘区。 现将键盘的分区以及一些常用键的操作说明如下: (一)打字键区 它是键盘的主要组成部分,它的键位排列与标准英文打字机的键位排列一样。该键区包括了数字键、字母键、常用运算符以及标点符号键,除此之外还有几个必要的控制键。 下面对几个特殊的键及用法作简单介绍。 键的名称 主要功能说明 空格键 键盘上最长的条形键。每按一次该键,将在当前光标的位置上空出一个字符的位置。 [Enter↙] 回车键 (1)每按一次该键,将换到下一行的行首输入。就是说,按下该键后,表示输入的当前行结束,以后的输入将另起一行。 (2)或在输入完命令后,按下该键,则表示确认命令并执行。[CapsLock]大写字母锁定键 在打字键区右边。该键是一个开关键,用来转换字母大小写状态。每按一次该键,键盘右上角标有CapsLock的指示灯会由不亮变成发亮,或由发亮变成不亮。这时: (1)如果CapsLock指示灯发亮,则

键盘处于大写字母锁定状态:1)这时直接按下字母键,则输入为大写字母;2)如果按住[Shif]键的同时,再按字母键,输入的反而是小写字母。 (2)如果这时CapsLock指示灯不亮,则大写字母锁定状态被取消。 [Shift]换档键 换档键在打字键区共有两个,它们分别在主键盘区(从上往下数,下同)第四排左右两边对称的位置上。 (1)对于符号键(键面上标有两个符号的键,例如:等,这些键也称为上下档键或双字符键)来说,直接按下这些键时,所输入的是该键键面下半部所标的那个符号(称为下档键); 如果按住[Shift]键同时再按下双字符键,则输入为键面上半部所标的那个符号(称为上档键)。如: [Shift] +=% (2)对于字母键而言:当键盘右上角标有CapsLock的指示灯不亮时,按住[Shift]键的同时再按字母键,输入的是大写字母。例如:CapsLock指示灯不亮时,按[Shift] +S键会显示大写字母S [←BackSpace]退格删除键 在打字键区的右上角。每按一次该键,将删除当前光标位置的前一个字符。 [Ctrl]控制键 在打字键区第五行,左右两边各一个。该键必须和其它键配合才能实现各种功能,这些功能是在操作系统或其他应用软件中进行设定的。例如:

LED数码管显示矩阵键盘按键的设计

任务九设计说明2 一、电路原理及仿真图: 二、程序设计: #include #define uchar unsigned char uchar display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0 x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0 x40}; uchar key; void get(){ uchar a; P1=0x0f; //按下按钮// a=P1^0x0f; switch(a) //确定行// { case 1:key=0;break; case 2:key=4;break; case 4:key=8;break; case 8:key=12;break; case 0:key=16;} P1=0xf0; a=P1^0xf0; switch(a) //确定列//{ case 16:key=key+3;break; case 32:key=key+2;break; case 64:key=key+1;break;

case 128:key=key+0;}} void main(){ P0=display[16]; get(); P0=display[key]; } 程序完成两个功能,首先扫描键盘,检测是否有按键按下并计算键值。 然后如果有按键按下则驱动数码管显示相应键值,否则显示”-“符号。 三、设计说明 如电路原理图所示,图中矩阵键盘和P3端口连接,共阳极数码管的段选端和单片机的P0口连接,位选直接接到高电平,使得数码管始终处于选通状态。系统启动后,单片机逐行扫描键盘,当没有按键按下时,驱动数码管显示“-”符号,当检测到有按键按下时,单片机将相应键值对应的数码编码送至P0端口,驱动数码管以十六进制方式显示被按下的按键的键值。四、遇到的问题 首先遇到的问题是系统启动后数码管没有任何显示,仔细查看仿真现象后发现P0口始终为高阻状态,于是怀疑是数码管极性错误。再检查数码管型号后发现果然使用了共阴极数码管,于是换成共阳极数码管后终于有了显示。其次是希望键值从键盘的左下角起始,即左下角键值为0。但由于对键盘的扫描方向理解的不是很透彻,导致调试了很多次,键值排列顺序都不尽人意。不过最终还是达到了设计要求。

常用电子管管脚接线图教案资料

常用电子管管脚接线 图

常用电子管管脚接线图(1) 管脚图例管子型号管子型号(1) 管子型号(2) A 6AQ8 ECC85 A 6BQ7A ECC180 A 6BZ7A A 6CG7 A 6FQ7(第9脚为NC) A 6DJ8 ECC88 A 6922 E88CC A 7308 E188CC A 8223 E288CC A Cca A 6N1 6н1п A 6N2 6н2п A 6N6 6н6п A 6N11 6н23п A 6240G(第9脚为IC) A 6н30п A1 2C51 A1 5670 A1 6N3 6н3п 常用电子管管脚接线图(2) 管脚图例管子型号管子型号(1) 管子型号(2) B 12AT7 ECC81 B 12AU7 ECC82 B 12AX7 ECC83 B 12BH7 B 5751 B 5814A B 6201 E81CC B 6189 E82CC B 6681 E83CC B 7025 B 12AY7 6н4п B ECC99 B E80CC B 6N4 B 6N10 B 2025 B1 5687 B1 7119 E182CC

常用电子管管脚接线图(3) 管脚图例管子型号管子型号(1) 管子型号(2) C 6SL7GT C 5691 C 6SN7GT C 5692 C 6N8P 6н8с C 6N9P 6н9с C ECC33 C 6AS7G C 6080 C 6N5P 6н5с C 6N13P 6н13с C 6BX7GT C 6BL7GTA D 6BQ5 EL84 D 7189 D 6P14 6п14п 常用电子管管脚接线图(4) 管脚图例管子型号管子型号(1) 管子型号(2) E 6F6GT E 6L6G E 6L6GC E 6V6GT E 5881 E 6550A E KT88(第1脚为BC) E KT66 E 1614 E 7581A E 6P3P 6п3с E 6P6P 6п6с E 6G-B8 F 2A3 F 2c4c F 45 F 50 F 300B F 4300B 常用电子管管脚接线图(5) 管脚图例管子型号管子型号(1) 管子型号(2) G 211

MA线机LMALMA键盘按键功能说明书

MAX 线号机LM-370A/LM-380A键盘按键功能说明书 日本MAX公司LM-380A新一代微电脑线号印字机:是针对电力成套及其他需要布线行业制作套管、标签标示的专业设备。 本公司本着“品质优良、价格合理、服务及时”的经营原则。并不断追求更高的企业品质以回馈各界的支持与厚爱!公司所有产品均为终身维护,一年免费保修。 LM-380A微电脑高速套管打印机一套标准配置 机器一台,手提箱一个,专用电源一个,LM-IR310B色带一盘,LM-IR300B色带卡匣1个.中英文说明书各一本. LM-380A微电脑高速套管打印机主要功能: MAX LETATWIN LM-380A电脑线号印字机是针对专业人士制作套管及标签标示所全新设计(中文化的标示,操作更简单轻松) 1、高速打印:LM-380A拥有快速的打印功能,可提供每秒25m的打印速度,能够在一分钟内高速 打印出35个20mm长的套管。 2、最大打印长度:LM-380A一次最大打印套管长度可达20M(LM-370A为6M)、标签贴纸一次最大 打印长度可达5M(LM-370A为1M) 3、LM-380A拥有强大的内存容量:内建大容量记忆体,最大可容纳40000个字元。 4、功能强大的PC专用软件:LM-380A可以使用附赠的专用软件编辑,搭配CF CARD储存大量的标 示文字资料,操作更能让您随心所欲。 5、切刀深度调整:LM-380A拥有独特的切刀调整功能,当半切刀位置太深或太浅时,可以通过调 整半切深度拉杆来调整切刀深度。 6、全中文输入,中文化键盘及界面(除了英文字母、数字和特殊符号,中文字也可以利用键盘直 接拼音输入。 7、高质量打印材料:可打印0.5mm、1.0mm、1.5mm、2.0mm、2.5mm、4.0mm、6.0mm的套管和热收

矩阵键盘控制12864显示最经典程序

#include //这个程序的功能:用4*4的矩阵键盘(接P3口)按键盘k1——k16中的任何一个键ki #include //12864液晶上显示数字i-1 (液晶数据口接P0) #define uint unsigned int//键盘扫描的思想是将行设置为低,列设置为高,来读取P3口的值,就能知道是哪个按键按下了 #define uchar unsigned char #define LCDdata P0 sbit E = P2^7; sbit RW = P2^6; sbit RS = P2^5; void init(); void delayms(uint x); void displaykey(); void write_com(uchar com);//写命令 void write_data(uchar date);//写数据 uchar temp; //--------------主函数----------------- void main() { init();// P3=0xfe;//P3=0xfd;//P3=0xfb;//P3=0xf7; while(1) { displaykey(); } } //-------------液晶初始化---------------- void init() { write_com(0x01); write_com(0x02); write_com(0x06); write_com(0x0e); } //------------毫秒延时--------------- void delayms(uint x) { uchar i; while(x--) {

5款较常用的电子管前级制作电路图

5款较常用的电子管前级制作电路图 第一款介绍为1/2 6DJ8电子管作一级共阴极放大,见图①。由於是实验关系,只求了解各线路的特性及优缺点,也为求简单易制成功,除此机外,全不设稳压线路,特别是高压,相信在一般聆听环境,区别不会太显著,当然是设稳压电路更好。零件方面,除交连电容用较佳品种如VitaminQ、Rel Cap、Wima外;电阻除了6DJ8SRPP用东京光音外,其他均用0.5元一只货色;整流管用Mur1100E;电源变压器分别高低压各用一只,每只约10到20元,效果也算好。另外,以下各比试结论均只以300B单端电子管后级及KEF IS 3/5A为配搭器材,结论当然有其局限性。本线路简单易制,不失为初学者入门之选,成功率极高,也可尝试校声乐趣,即改变输出电容数值,改变负载电阻数值或加设负反馈等。交连电容牌子方面,曾以300B后级最后交连至强放电子管的位置作试听,试用了Mitppmfx、RelCappp、Kimber及Vitamin Q,结果是Mit音质细微通透,但却欠了动态;Rel Cap声厚而有力;Kimber音色通透高贵;SpragueVita-rain Q则醇厚顺滑兼备,泛音丰富,而动态也最好,表现最全面。笔者喜用一些旧的Vitamin0,因不用煲而数值也十分准确。音效方面,此机背景聆静,音质通透,分析力高,全频表现算平均,力度及控制力一般,但却少了厚度及顺滑音色,声底偏向干及清。曾试用1.8mA及4.5mA作偏流,高偏流时声音较细致。笔者未试过加入负反馈,读者可自行尝试,听声选择合乎自己的音色。要注意反馈电阻要接到栅极而不是阴极,因一级共阴极放大输出波形是反相的,如接人阴极,便会使阴极电位下降,相对地是栅极电位提高了而形成正反馈,这区别於两极共阴极放大电路把反馈电阻接回第一级阴极。 6DJ8一级共阴极放大,输出电容并了多只Wima 电容 6SN7 SRPP线路 第二款是6SN7SRPP线路,相信不少读者试制过此线路,见图②。名为分路调节推挽线(Shunt regulated push-pull),一般人相信该线路有下列优点:失真率低、线性度优良、放大率高、过荷量宽及输出阻抗低等。原理是下级电子管为共阴极,其增益取决於屏极阻抗,大部分发生於上级电子管身上,上级电子管为一恒流源,作为下级电子管的有源负载,另外,也作为一阴极跟随器,信号由下级电子管屏极输送至上级电子管栅极。R1及R2均为同值。但上级电子管绝对不是能达到百分百的恒流目的,故后

单片机独立按键和矩阵按键

单片机按键(独立按键和矩阵按键) 独立按键 常用的按键电路有两种形式,独立式按键和矩阵式按键,独立式按键比较简单,它们各自与独立的输入线相连接,如图8-6 所示。 图8-6 独立式按键原理图 4 条输入线接到单片机的IO 口上,当按键K1 按下时,+5V 通过电阻R1 然后再通过按键K1 最终进入GND 形成一条通路,那么这条线路的全部电压都加到了R1 这个电阻上,KeyIn1 这个引脚就是个低电平。当松开按键后,线路断开,就不会有电流通过,那么KeyIn1和+5V 就应该是等电位,是一个高电平。我们就可以通过KeyIn1 这个IO 口的高低电平来判断是否有按键按下。 这个电路中按键的原理我们清楚了,但是实际上单片机IO 口内部,也有一个上拉电阻的存在。我们的按键是接到了P2 口上,P2 口上电默认是准双向IO 口,我们来简单了解一下这个准双向IO 口的电路,如图8-7 所示。

图8-7 准双向IO 口结构图 首先说明一点,就是我们现在绝大多数单片机的IO 口都是使用MOS 管而非三极管,但用在这里的MOS 管其原理和三极管是一样的,因此在这里我用三极管替代它来进行原理讲解,把前面讲过的三极管的知识搬过来,一切都是适用的,有助于理解。 图8-7 方框内的电路都是指单片机内部部分,方框外的就是我们外接的上拉电阻和按键。这个地方大家要注意一下,就是当我们要读取外部按键信号的时候,单片机必须先给该引脚写“1”,也就是高电平,这样我们才能正确读取到外部按键信号,我们来分析一下缘由。 当内部输出是高电平,经过一个反向器变成低电平,NPN 三极管不会导通,那么单片机IO 口从内部来看,由于上拉电阻R 的存在,所以是一个高电平。当外部没有按键按下将电平拉低的话,VCC 也是+5V,它们之间虽然有2 个电阻,但是没有压差,就不会有电流,线上所有的位置都是高电平,这个时候我们就可以正常读取到按键的状态了。 当内部输出是个低电平,经过一个反相器变成高电平,NPN 三极管导通,那么

电脑键盘上各键的基本功能介绍[1]

电脑键盘上各键的基本功能介绍【大】电脑键盘上各键的功能都是很丰富的,除单独使用外,还可跟其它键组合用。本文主要是向电脑初学者讲解一下它们的基本功能,而这些基本功能对每一个学电脑者都必需掌握。一、电脑键盘上的光标移动键 使用电脑在编辑文字过程中,我们经常要和光标(也叫插入点)打交道。输入汉字,删除汉字,都要将光标移到要插入汉字或删除汉字的地方。下面介绍电脑键盘上的光标移动键: 按“↑”键:光标向上移 按“↓”键:光标向下移 按“→”键:光标向右移 按“←”键:光标向左移 按“Home”:将光标移到行首 按“End” :将光标移到行尾 按“PageUp”: 每按一次光标向上移一屏幕 按“PageDown”:每按一次,光标向下移一屏幕 按“Ctrl+Home”:将光标移到文件的最前面 按“Ctrl+End”:将光标移到文件的最后面 二、电脑键盘上的删除键 按“←”键(有的键盘上是“BackSpace”):删除光标前面的字符 按“Delete键(或数字键盘区的“Del”): 删除光标后面的字符 三、插入/改写切换 在输入文本过程中,有两种编辑状态,即:插入状态和改写状态。

当编辑处于插入状态时,会在光标的前面插入新输入的字符。若处于改写状态时,会将光标后面的字符改为新输入的字符。 如果要将某个字改错,可以切换到改写状态,再将光标移到要改掉的错字前面,再输入新的字符。 注意:如果要插入一些字符。就不要切换到改写状态了,否则会把光标后面的文本全改掉了。 插入状态改写状态 插入状态:状态栏上的“改写”二字变灰。 改写状态:状态栏上的“改写”二字变黑 切换的方法: 方法1:按键盘上的“Insert”键或数字键盘区的“Ins”键(非数字状态) 方法2:双击状态栏上的“改写”二字 四、电脑键盘上的空格键 电脑键盘上的空格键是位于电脑键盘底部的最长的那个键。它的作用取决于当前的编辑状态是“插入状态”还是“改写状态” 插入状态:按该键,将在光标前面插入空格字符,可用于调整两字符间的距离。 改写状态:按该键,将把光标后面的字符改为空格字符。 例如:“我们”,这两个字的中间就插入了2个空格字符 注意:用空格调整字符间距时,千万不要切换到“改写”状态了,否则会把光标后面的文字都会改成空格的。

单片机实验报告——矩阵键盘数码管显示

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇 学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日

矩阵键盘 一、实验内容 1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。按其它键没有结果。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。 4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。 5、掌握利用Keil51软件对程序进行编译。 6、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 三、实验原理 1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。 2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然

后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。 行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

电脑键盘上几个功能键的功能介绍

win7系统中妙用F1~F12功能键 单键功能简介:? ?? ??ESC键:亦称逃逸键。上网要填写一些用户名什么的,假如填错了,按ESC键即可清除所有的框内内容而打字时,如果打错了也可以按ESC键来清除错误的选字框。是不是很便捷。(见上图) ?Tab键: Tab键是Table(表格)的缩写,故亦称表格键。一般可以从这个复选框跳到另一个复选框。在编写文本时,按下制表键,光标也会向右移动,它会移动到下一个8n+1位置(n为 便。 ? = @ 复制Ctel+V= ?Fn 【任?, ?鼠标右键:一般在空格键右边Alt键右边,第二个键便是。尽量多使用此键,可以减缓鼠标右键的提前损坏。 ?截屏键: PrtScSysRq键,也有的键盘上是:Print Screen键,亦称拷屏键,按一下即可复制屏幕图形。 ?Del键:或Delete键亦称删除键,一按此键,删除的是光标右边的讯息。 ?退格键: Backspace键也是删除键,使光标左移一格,同时删除光标左边位置上的字符。或删除选中的内容。

?回车键:亦称Enter键,一般为确认或换行,使用频率最高,键盘中最易损坏的键,点击时尽量手下留情。 ?Home键:此键的作用是将光标移动到编辑窗口或非编辑窗口的第一行的第一个字上。 ?PgUp键:向上翻一页,或者向下翻一屏。 ?PgDn键:向下翻一页,或者向下翻一屏。和PgUp键相反。 ?End键:此键的作用是将光标移动到编辑窗口或非编辑窗口的最后一行的第一个字上。和Home 键相反。 ? ? ?F1Win +F1。 +F4 ?F8 ?F9 音量。 ?F10键:用来激活Win或程序中的菜单,按下Shift+F10会出现右键快捷菜单。和键盘中Application键相同。 ?F11键:可以使当前的资源管理器或IE变为全屏显示。 ?F12键:在Windows中同样没有任何作用。但在Word中,按下它会快速弹出另存为文件的窗温馨提示:

矩阵键盘显示系统

1 4×4矩阵式键盘识别显示系统概述 矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O 端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。 矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为N×N个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。 最常见的键盘布局如图1.1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。 图1.1 键盘布局

2系统主要硬件电路设计 2.1单片机控制系统原理 图2.1 单片机控制系统原理框图 2.2单片机主机系统电路 AT89C52单片机是51系列单片机的一个成员,是52单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-52系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C52构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。 图2.2 单片机主机系统图

单片机矩阵键盘

单片机 4*4 矩阵键盘 在单片机按键使用过程中,当键盘中按键数量较多时为了减少端口的占用通常将按键排列成矩阵形式如下图所示,在矩阵式键盘中每条水平线和垂直线在交叉处不直接连通而是通过一个按键加以连接,到底这样做是出意何种目的呢?大家看下面电路图,单片机的整一个8位端口可以构成4*4=16 个矩阵式按键,相比独立式按键接法多出了一倍,而且线数越多区别就越明显,假如再多加一条线就可以构成20个按键的键盘,但是独立式按键接法只能多出1个按键。由此可见,在需要的按键数量比较多时,采用矩阵法来连接键盘是非常合理的,矩阵式结构的键盘显然比独立式键盘复杂一些,单片机对其进行识别也要复杂一些。确定矩阵式键盘上任何一个键被按下通常采用行扫描法。行扫描法又称为逐行查询法它是一种最常用的多按键识别方法。因此,我们就以行扫描法为例介绍矩阵式键盘的工作原理。 首先,不断循环地给低四位独立的低电平,然后判断键盘中有无键按下。将低位中其中一列线(P1.0~P1.3中其中一列)置低电平然后检测行线的状态(高4位,即P1.4~P1.7,由于线与关系,只要与低电平列线接通,即跳变成低电平),只要有一行的电平为低就延时一段时间以消除抖动,然后再次判断,假如依然为低电平,则表示键盘中真的有键被按下而且闭合的键位于低电平的4个按键之中任其一,若所有行线均为高电平则表示键盘中无键按下。再其次,判断闭合键所在的具体位置。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是: 依次将列线置为低电平,即在置某一根列线为低电平时,其它列线为高电平。同时再逐行检测各行线的电平状态;若某行为低,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。下面图5-5是4*4矩阵式按键接法的软件算法操作流程。 图5-4(4*4矩阵式按键的接法) 下面程序按照上述算法流程去编写的,其电路如图5-6,只是在图5-5的基础上多加了P0端口的8只LED灯。从键盘中检测到一个键值,然后将这个值写到LED数码管上显示。

键盘上每个按键的作用和使用方法

键盘上每个按键的作用和使用方法 F1帮助 F2改名 F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 SHIFT+DELETE永久删除 DELETE删除 ALT+ENTER属性 ALT+F4关闭 CTRL+F4关闭 ALT+TAB切换 ALT+ESC切换 ALT+空格键窗口菜单 CTRL+ESC开始菜单 拖动某一项时按CTRL复制所选项目 拖动某一项时按CTRL+SHIFT创建快捷方式 将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放 Ctrl+1,2,3... 切换到从左边数起第1,2,3...个标签 Ctrl+A 全部选中当前页面内容 Ctrl+C 复制当前选中内容 Ctrl+D 打开“添加收藏”面版(把当前页面添加到收藏夹中) Ctrl+E 打开或关闭“搜索”侧边栏(各种搜索引擎可选) Ctrl+F 打开“查找”面版 Ctrl+G 打开或关闭“简易收集”面板 Ctrl+H 打开“历史”侧边栏 Ctrl+I 打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复Ctrl+K 关闭除当前和锁定标签外的所有标签 Ctrl+L 打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...) Ctrl+N 新建一个空白窗口(可更改,Maxthon选项→标签→新建)

Ctrl+O 打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...) Ctrl+P 打开“打印”面板(可以打印网页,图片什么的...) Ctrl+Q 打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表) Ctrl+R 刷新当前页面 Ctrl+S 打开“保存网页”面板(可以将当前页面所有内容保存下来) Ctrl+T 垂直平铺所有窗口 Ctrl+V 粘贴当前剪贴板内的内容 Ctrl+W 关闭当前标签(窗口) Ctrl+X 剪切当前选中内容(一般只用于文本操作) Ctrl+Y 重做刚才动作(一般只用于文本操作) Ctrl+Z 撤消刚才动作(一般只用于文本操作) Ctrl+F4 关闭当前标签(窗口) Ctrl+F5 刷新当前页面 Ctrl+F6 按页面打开的先后时间顺序向前切换标签(窗口) Ctrl+F11 隐藏或显示菜单栏 Ctrl+Tab 以小菜单方式向下切换标签(窗口) Ctrl+Enter 域名自动完成https://www.sodocs.net/doc/244641349.html,(内容可更改,Maxthon选项→地址栏→常规)/另:当输入焦点在搜索栏中时,为高亮关键字 Ctrl+拖曳保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,Maxthon选项→保存) Ctrl+小键盘'+' 当前页面放大20% Ctrl+小键盘'-' 当前页面缩小20% Ctrl+小键盘'*' 恢复当前页面的缩放为原始大小 Ctrl+Alt+S 自动保存当前页面所有内容到指定文件夹(保存路径可更改,Maxthon选项→保存) Ctrl+Shift+小键盘'+' 所有页面放大20% Ctrl+Shift+小键盘'-' 所有页面缩小20% Ctrl+Shift+F 输入焦点移到搜索栏 Ctrl+Shift+G 关闭“简易收集”面板 Ctrl+Shift+H 打开并激活到你设置的主页 Ctrl+Shift+N 在新窗口中打开剪贴板中的地址,如果剪贴板中为文字,则调用搜索引擎搜索该文字(搜索引擎可选择,Maxthon选项→搜索) Ctrl+Shift+S 打开“保存网页”面板(可以将当前页面所有内容保存下来,等同于Ctrl+S) Ctrl+Shift+W 关闭除锁定标签外的全部标签(窗口) Ctrl+Shift+F6 按页面打开的先后时间顺序向后切换标签(窗口) Ctrl+Shift+Tab 以小菜单方式向上切换标签(窗口) Ctrl+Shift+Enter 域名自动完成https://www.sodocs.net/doc/244641349.html,(内容可更改,Maxthon选项→地址栏→常规) Alt+1 保存当前表单 Alt+2 保存为通用表单 Alt+A 展开收藏夹列表 资源管理器 END显示当前窗口的底端 HOME显示当前窗口的顶端

相关主题