文档视界 最新最全的文档下载
当前位置:文档视界 › 6.4 STM32F103ZET独立按键功能深入剖析(神舟王103)

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

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

6.4 独立按键 (2)

6.1.1 按键的分类 (2)

6.1.2 按键属性 (2)

6.1.3 STM32的位带操作 (3)

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

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

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。因此单片机在检测键盘是否按下时都要加上去抖动操作。

消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或软件两种方法,硬件的去抖主要是用专用的去抖动电路,也有专用的去抖动芯片;另外一种方式就是用软件延时的方法就能很容易解决抖动问题,而没有必要再添加多余的硬件电路。所以软件消抖适合按键比较多的情况,而硬件消抖适合按键比较少的情况。

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

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

6.1.3STM32的位带操作

1.什么是位带操作

还记得51单片机吗?单片机51中也有位的操作,以一位(BIT)为数据对象的操作;例如51单片机可以简单的将P1端口的第2位独立操作,P1.2=0或者P1.2=1,就是这样把

P1口的第三个脚(bit2)置0(输出低电平)或者置1(输出高电平)。

而现在STM32的位段、位带别名区这些就是为了实现这样的功能,可以在SRAM、I/O 外设空间实现对这些区域的某一位的单独直接操作。

2.为什么要用位带操作?

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

3.如何设计和实现位带操作的?

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

那STM32内部是如何解决的呢?它是在支持位带操作的地方,取个别名区空间,而这个别名区空间可以让一次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

下面是内部空间映射图:

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

0x2000_00000

Bit1 0x2200_0000

跨度一个字 = 4个字节 = 32个bit Bit2 0x2200_0004

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

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

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

跨度一个字 = 4个字节 = 32个bit

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

Bit7 0x2200_0018

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

跨度一个字 = 4个字节 = 32个bit 可以看到上表和上图,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,就变成以下的公式:

(A‐0x20000000)*8+n

好了,最后整理整个换算公式如下,FLASH与SRAM的原理都是想通的:SRAM :0x22000000 +((A‐0x20000000)*8+n)*4

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

6.举例说明:

比如我要访问如下寄存器GPIOB_BSRR中的第12bit位BS13,注意因为寄存器内部是从0开始计数到31截止,所以第12bit相当于是第13。

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

那么通过公式:

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

换算0x4200_0000 + ((0x40010c00-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)

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

这样就可以用BITBAND(addr,bitnum)来表示寄存器里的任何一个bit位,大概原理讲到这里,具体使用方法通过例程来体现。

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

1.示例简介

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

2.调试说明:

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

3.关键代码:

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

{

unsigned int key_up =1;

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

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

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

(1)

while

{

if(key_up)

开灯

LEDON; //

else

LEDOFF; // 关灯

==

0)

KEY0

(

If

!key_up;

=

key_up

}

}

STM32芯片的GPIO管脚要采集到按键按下,那么它需要被配置成输入模式,之前有讨论GPIO管脚的几种模式,我们接下来还是复习一下,我们看看端口低配置寄存器CRL 的描述,如下图所示:

该寄存器的复位值为0X4444 4444(4化成二进制为0100),从上图可以看到,复位值其实就是配置端口为浮空输入模式。从上图还可以得出:STM32的CRL控制着每个IO端口(A~G)的低8位的模式。每个IO端口的位占用CRL的4个位,高两位为CNF,低两位为MODE。这里我们可以记住几个常用的配置,比如0X0表示模拟输入模式(ADC用)、0X3表示推挽输出模式(做输出口用,50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用输出(使用IO口的第二功能)。

STM32的IO口位配置表如下表:

可以看到CNFX是上面CRL寄存器里的配置位,这里配置位的不同,就会产生不同的GPIO管脚模式。

STM32输出模式配置如下表:

这里CRL寄存器的MODE配置位的选项,不同的配置就会产生不同的速率。

CRH的作用和CRL完全一样,只是CRL控制的是低8位输出口,而CRH控制的是高8位输出口,大家可以自己看STM32手册,我们在这里CRH就不做详细介绍了。

首先看下代码:RCC_init();这里实现的是初始化配置时钟频率为72MHZ,之前的时钟章节已经将过了,具体细节可以看上一章的内容,有详细的介绍。

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

void Key_init()

{

RCC->APB2ENR |= RCC_APB2Periph_GPIOA; //使能PORTA时钟

GPIOA->CRL &= 0XFFFFFFF0;

GPIOA->CRL |= 0X00000008; //PA0设置成输入,PA0在按键原理图默认被上拉的}

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

可以看到PA0默认是被上拉到3.3V高电平的,GPIOA->CRL &= 0XFFFFFFF0;这句代码是将PA0的GPIO_CRL寄存器的前4位清0,然后GPIOA->CRL |= 0X00000008这句话

是将GPIO_CRL寄存器的前4位赋值0x8,化成二进制就是1000,通过查表:

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

在代码里,我们使用if ( KEY0==0 )来判断按键是否按下了,KEY0就是PA0,如果按键按下,从原理图可以知道PA0被拉到GND变成低电平,这样PA0就等于0即KEY0等于0。

那么KEY0如何反映到PA0的值的呢?接下来继续分析代码:

(1)#define BITBAND(addr, bitnum)

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

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

(3)#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) (4)#define PAin(n) BIT_ADDR(GPIOA_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里的

值给取出来。

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

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

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

这样,这个例程的关键是是否取到了PA0的值,取到了值之后,再进行相关的操作,这个是大家可以自己定义的,在这个例程中,按一下按键,我们就将LED灯取反,原来是亮的就变成灭的,原来是灭的就变成亮的。

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

1.示例简介:

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

2.调试说明:

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

3.关键代码:

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

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

{

unsigned int key_up =1;

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

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

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

while (1)

{

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

if(key_up)

LEDON; // 开灯

else

LEDOFF; // 关灯

if(KEY0==0)

key_up = !key_up; //取反

}

}

代码Delay(0xfffff)就是我们增加的防抖功能,如果你按下按键的时候会有抖动,我们增加一定时间的时间再来判断按键是否按下来,这样在一定程度上可以起到消抖的作用,但是这里还有一个BUG就是如果长时间按着按键不动,while循环里面就会运行多次灯点亮程序,如果是计数器的话,这个就不准了,按一次键,就计算了许多次数,大家可以尝试一下如何去解决这个问题,按一次键就只亮一次,无论一次按多长时间。

常用电子管管脚接线图

常用电子管管脚接线图(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)

按键控制键盘检测原理与应用

按键控制键盘检测原理与应用 一、任务目标: 认知目标 1、 掌握按键分类及工作原理 2、 掌握IF 条件选择结构和使用方法 3、 掌握循环结构和使用原理 4、 掌握独立按键子函数的编写原理及方法 1、独立键盘 在简单的单片机应用系统中,往往只需要几个功能键就能满足要求, 此时,可采用独立 式按键结构。 独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键的典型应用如图 1.2.1 所示。 独立式按键示意图 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,因此, 在按键较多时,I/O 口线浪费较大,不宜采用。 程序开始,检测按键是否被按下,若按下,则移动机器人启动,未被按下,继续检测。 这里将程序分成三个部分,分别是延时子函数、按键子函数、主函数。 延时子函数,通过参数 t 设置延时时间;按键模块子函数需用到延时函数,对按键进行 消抖;主函数主要调用按键检测程序,实现对移动机器人的控制。程序流程图如图 1.2.2所 示 xnu Lnu Jnu L] iu lu o 1 3 4 5 6 - IL I 」 IL IL IL IL IL IL- PPPPFFPP 3 S-I

程序示例: 在编写程序开始的部分,将系统头文件“STC89C52RC.H ”包含进来,对常用的变量类 型进行宏定义,规划各函数和变量,对变量进行定义和初始化,对自定义子函数进行声明并添加相应标注,程序开始部分如下 sbit IN仁P1A0; sbit IN2=P1A1; Void key(); 编写主函数,在主函数中就是调用按键检测函数。 Void mai n() { key(); } 编写key()按键检测函数,按键按下,输出低电平,通过if语句检测低电平,延时10ms 后,再次检测,若检测为高电平,则表示为机械抖动,若检测到低电平表示按键按下。 Void key() { if(IN1==0) { delay_ms(10); if(IN 仁=0) { while(IN 仁=0); IN2=~IN2 ; } } } 在上面的程序中,就只有一个检查按键扫描的函数key(),key()函数是检查有没有按键

基于51单片机的USB键盘设计与实现

三江学院 本科生毕业设计(论文)题目基于51单片机的USB键盘设计与实现高职院院(系)电气工程及其自动化专业 学生姓名梁邱一学号 G105071013 指导教师孙传峰职称讲师 指导教师工作单位三江学院 起讫日期 2013年12月10日至2014年4月12日

摘要 随着计算机技术的不断更新和多媒体技术的快速发展,传统的计算机外设接口因为存在许多缺点已经不能适应计算机的发展需要。比起传统的AT,PS/2,串口,通用串行总线USB,具有速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。 本论文阐述了51系列单片机和USB的相关内容,详细介绍了系统的一些功能设计,包括硬件设计和软件设计。在程序调试期间用简单的串口通信电路,通过串口调试助手掌握了USB指令的传输过程,这对整个方案的设计起到了很大的指导作用。论文以单片机最小系统配合模拟键盘组成的USB键盘硬件系统,通过对D12芯片的学习与探索,在其基本命令接口的支持下,结合硬件进行相应的固件程序设计,使其在USB协议下,实现USB模块与PC的数据通信,完成USB键盘的功能模拟。 总结论文研究工作有阐述USB总线的原理、对本设计的系统要求作出了分析、根据要求选定元件和具体编程方案、针对系统所要实现的功能对相关芯片作了详细介绍以及在硬件部分设计了原理图。 关键词:USB;D12;PC

Abstract With the rapid development of computer technology and multimedia technology constantly updated, traditional computer peripheral interface because there are many shortcomings have been unable to meet the development needs of the https://www.docsj.com/doc/f910011598.html,pared to traditional AT, PS / 2, serial, Universal Serial Bus USB, with fast, flexible and easy to use, easy to expand, support Plug and Play, a series of advantages, such as low cost, has been widely used. This paper describes the 51 series and USB related content, detailing some of the features of the system design, including hardware and software design.During debugging a simple serial communication circuit, through the serial port debugging assistant master USB transfer instructions, which designed the entire program has played a significant role in guiding.Thesis smallest single-chip system consisting of analog keyboard with a USB keyboard hardware system, by learning and exploration D12 chips, with the support of its basic command interface, in conjunction with the corresponding hardware firmware design, making it in the USB protocol, USB module data communication with the PC, the USB keyboard to complete the functional simulation. This paper summarizes research work has elaborated the principle of the USB bus, the system is designed to require the analysis, components and solutions based on the specific requirements of the selected programming for the system to achieve the function of the relevant chips are described in detail in the hardware part of the design as well as the principle of Figure. Keywords:USB;D12;PC

独立按键控制LED灯

项目五独立按键控制LED灯 1.掌握独立按键消抖原理 2.掌握独立按键接口电路设计 1.设计独立按键控制LED的硬件电路 2.编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同 3.下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试 键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。本项目要求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。 本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈现不同的电平。独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者低电平,读者可以根据自己的需求自行设计。单片机应用中的独立按键多是机械弹性开关,在按键按下和弹开时,由于按键的机械特性,有抖动产生。消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms~10ms延时后,再次读取I/O端口电平,以确认按键是否按下或弹开。

1.独立按键与矩阵按键 键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。非编码键盘按连接方式可分为独立按键和矩阵按键。 独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适合所需按键较少的场合。矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O口利用率高,适合需要大量按键的场合。下图为常见独立按键和矩阵按键接口电路。 图独立按键接口电路与矩阵按键接口电路上图四个按键(常开触点开关)S1,S2,S3,S4分别与单片机的四个I/O端口连接。当按键没有按下时,四个I/O端口的电压为高电平;当按键按下

51单片机独立按键程序查询法和外部中断两种

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //用//11111111111111111代表第一个程序。//2222222222222222222222222代表第二个程序,以此类推 //1111111111111111111111111111111111111111111111111111111111111111111 //1111111111111111111111111111111111111111111111111111111111111111111 /****************************************************************************** * * 实验名: 左右流水灯实验 * 使用的IO : LED使用P2,键盘使用P3.1 * 实验效果: 按下K1键, * 注意: ******************************************************************************* / #include #include #define GPIO_LED P2 sbit K1=P3^1; void Delay10ms( ); //延时10ms /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main(void) { unsigned int i,j; j=0xfe; //1111_1110 while(1) { GPIO_LED=j; if(K1==0) //检测按键K1是否按下 { Delay10ms(); //消除抖动 if(K1==0) {

第13讲51单片机按键电路

标题:键盘接口电路 教学目标与要求: 1.键盘去抖动和连接、控制方式 2.独立式按键及其接口电路 3.矩阵式键盘及其接口电路 授课时数:2 教学重点:.矩阵式键盘及其接口电路 教学内容及过程: 一、键盘接口概述 1、按键开关去抖动问题 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图9-11所示,抖动时间的长短与开关的机械特性有关,一般为5 10 ms 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图9-12是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。 软件上采取的措施是:在检测到有按键按下时,执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步 骤进行确认,从而可消除抖动的影响。

2.编制键盘程序 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3) 准确输出按键值(或键号),以满足跳转指令要求。 二、独立式按键 单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。 1. 独立式按键结构 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图7.4所示。 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。 2.矩阵式键盘 I/O端线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线与列线发生短路。特点: ①占用I/O端线较少; ②软件结构教复杂。 适用于按键较多的场合。 3.键盘扫描控制方式 ⑴程序控制扫描方式 键处理程序固定在主程序的某个程序段。 特点:对CPU工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。 ⑵定时控制扫描方式 利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描。 特点:与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时/计数器定时控制。定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。 ⑶中断控制方式 中断控制方式是利用外部中断源,响应键输入信号。 特点:克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。 三、独立式按键及其接口电路 1、按键直接与I/O口连接

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

常用电子管管脚接线 图

常用电子管管脚接线图(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

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

单片机按键(独立按键和矩阵按键) 独立按键 常用的按键电路有两种形式,独立式按键和矩阵式按键,独立式按键比较简单,它们各自与独立的输入线相连接,如图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 三极管导通,那么

基于单片机的键盘和LED数码管工作原理

基于单片机的键盘和LED数码管工作原理 摘要:键盘和显示器是微机最常见的输入输出设备。本文介绍键盘和LED显示器的基本工作原理,并给出在8051基础上的电路结构及C语言代码。 关键字:键盘,LED,单片机 键盘是微型计算机系统中最基本、最常见的输入设备。在各种工业过程的计算机控制和监视系统中,广泛应用发光二极管向用户提供提示。由发光二极管可以构成7段/8段LED显示器,用于显示工作状态、参数数值和故障位置。一.键盘的工作原理 键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。 (一)键盘的基本介绍 1.键盘的功能 键盘接口必须具有4个基本功能: 1.去抖动 2.防串键 3.识别被按键并产生与之对应的键码 4.释放键 而键码产生后如何去实现按键的特定功能,是操作系统和应用程序的任务2.键盘的分类 根据按键开关的排列方式,键盘可分为线性键盘和矩阵键盘。 线性键盘:硬件连接和接口程序都很简单,只适用于按键少的场合,因为线性键盘有多少按键,就需要有多少根连线与微机输入端口相连。 矩阵键盘:将按键排成n行m列,每个按键占据行列的一个交点,需要的外连接线数目是m+n,而容许的最大按键数是m*n,显然可以减少微机接口的连线,是一般微机常采用的键盘结构。 3.键盘与单片机的连接方式 矩阵键盘的连接方法有多种。可直接连接于单片机的I/O口线;可利用扩展的并行I/O口连接;也可利用可编程的键盘、显示接口芯片(如8297)进行连接等等。其中,利用扩展的并行I/O口连接方便灵活,在单片机应用系统中比较常用。下图就是通过8255A芯片扩展的并行I/O口连接的矩阵键盘。

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均为同值。但上级电子管绝对不是能达到百分百的恒流目的,故后

4×4矩阵键盘原理及其在单片机中的简单应用(基Proteus仿真)

4×4矩阵键盘原理及其在单片机中的简单应用 基于Proteus仿真 1、4×4矩阵键盘的工作原理 如下图所示,4×4矩阵键盘由4条行线和4条列线组成,行线接P3.0-P3.3,列线接P3.4-P3.7,按键位于每条行线和列线的交叉点上。

按键的识别可采用行扫描法和线反转法,这里采用简单的线反转法,只需三步。 第一步,执行程序使X0~X3均为低电平,此时读取各列线Y0~Y3的状态即可知道是否有键按下。当无键按下时,各行线与各列线相互断开,各列线仍保持为高电平;当有键按下时,则相应的行线与列线通过该按键相连,该列线就变为低电平,此时读取Y0Y1Y2Y3的状态,得到列码。 第二步,执行程序使Y0~Y3均为低电平,当有键按下时,X0~X3中有一条行线为低电平,其余行线为高电平,读取X0X1X2X3的状态,得到行码。 第三步,将第一步得到的列码和第二步得到的行码拼合成被按键的位置码,即Y0Y1Y2Y3X0X1X2X3(因为行线和列线各有一条为低电平,其余为高电平,所以位置码低四位和高四位分别只有一位低电平,其余为高电平)。 也就是说,当某个键按下时,该键两端所对应的行线和列线为低电平,其余行线和列线为高电平。比如,当0键按下时,行线X0和列线Y0为低电平,其余行列线为高电平,于是可以得到0键的位置码Y0Y1Y2Y3X0X1X2X3为01110111,即0X77。当5键按下时,行线X1和列线Y1为低电平,其余行列线为高电平,于是可得到5键的位置码Y0Y1Y2Y3X0X1X2X3为10111011,即0XBB。全部矩阵键盘的位置码如下: 2、4×4矩阵键盘在单片机的简单应用举例(一) 如下图所示,运行程序时,按下任一按键,数码管会显示它在矩阵键盘上的序号0~F,并且蜂鸣器发出声音,模拟按键的声音。此处采用线反转法识别按键。 C程序如下:

51单片机键盘设置

\\\§8.3 键盘接口技术 一、键盘输入应解决的问题 键盘是一组按键的集合,它是最常用的单片机输入设备. 操作人员可以通过键盘输入数据或命令,实现简单的人机通讯。 键是一种常开型按钮开关,平时(常态)键的二个触点处于断开状态,按下键时它们才闭合(短路)。 键盘分编码键盘和非编码键盘。 键盘上闭合键的识别由专用的硬件译码器实现并产生编号或键值的称为编码键盘, 如:ASCⅡ码键盘、BCD码键盘等; 靠软件识别的称为非编码键盘。 在单片机组成的测控系统及智能化仪器中用得最多的是非编码键盘。 本节着重讨论非编码键盘的原理、接口技术和程序设计。 键盘中每个按键都是—个常开关电路,如图所示。

1.按键的确认:P1.7=1 无按键; P1.7=0 有按键; 2.去抖动 去抖动的方法: ①硬件去抖动采用RS触发器: 优点: 速度快,实时, 缺点: 增加了硬件成本 ②软件去抖动采用延时方法 延时5—10ms 延时5—10ms P1.7=0 确认P1.7=0 P1.7=1 (去前沿抖动) (去后沿抖动) 二、独立式键盘

每个I/O口连接一个按,S1 P1.0 S2 P1.1 ………………………. S8 P1.7 软件: START:MOV P1,#0FFH ;置P1口为高电平 JNB P1.0, RS1 ; S1按下,程序去执行RS1 JNB P1.1, RS2 ; S2按下,程序去执行RS2

JNB P1.2, RS3 ; S3按下,程序去执行RS3 JNB P1.3, RS4 ; S4按下,程序去执行RS4 JNB P1.4, RS5 ; S5按下,程序去执行RS5 JNB P1.5, RS6 ; S6按下,程序去执行RS6 JNB P1.6, RS7 ; S7按下,程序去执行RS7 JNB P1.7, RS8 ; S8按下,程序去执行RS8 AJMP START ; 继续扫描按键 …………. RS1: AJMP PK1 ; RS2: AJMP PK2 ; RS3: AJMP PK3 ; RS4: AJMP PK4 ; RS5: AJMP PK5 ; RS6: AJMP PK6 ; RS7: AJMP PK7 ; RS8: AJMP PK8 ; AJMP START ; 无键按下,继续扫描………………… PK1: ……….. ;按键S1功能处理程序 AJMP START ;处理S1按键后, 继续扫描PK2: ……….. ;按键S2功能处理程序

单片机4×4矩阵键盘设计方案教学文案

1、设计原理 (1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。 (2)键盘中对应按键的序号排列如图14.1所示。 2、参考电路 图14.2 4×4矩阵式键盘识别电路原理图

3、电路硬件说明 (1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。 (2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。 4、程序设计内容 (1)4×4矩阵键盘识别处理。 (2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 5、程序流程图(如图14.3所示)

6、汇编源程序 ;;;;;;;;;;定义单元;;;;;;;;;; COUNT EQU 30H ;;;;;;;;;;入口地址;;;;;;;;;; ORG 0000H LJMP START ORG 0003H RETI ORG 000BH

基于某51单片机地键盘盘可调万年历

开放性实验报告 题目: 基于80C51的万年历设计_ 院系:

专业班级: 学号: 姓名: 指导老师:________________________ 时间:2014年9月8号 摘要 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。本系统选用DALLAS 公司生产的日历时钟芯片DS1302来作为实时时数字万年历采用直观数字显示,可以同时显示年、月、日、周、时、分、秒等信息,还具有键盘时间校准等功能。该电路采用AT89C52单片机作为核心,用以5V电压供电。 本系统硬件部分由AT89C52单片机、DS1302时钟芯片、LCD1602液晶显示环境下以C51语言编写,包括时间设置、时间显示、时间修正等功能。在仿真的时候,以Proteus 与Keil uVision4软件为基础,编写了MCS-51单片机对LCD1602显示控制的软件,绘制其原理图,并使用Proteus软件与Keil uVision4软件建立联合仿真。本设计主要论述了原理图各个模块的作用,以及控制软件的各个模块的编程。

关键词:时钟芯片DS1302;单片机AT89C52;液晶显示1602;独立键盘等

目录 第1章绪论 (1) 1.1实时万年历的简介 (1) 1.2系统所实现的功能 (3) 第2章开发工具软件简介 (4) 2.1K EIL U V ISION4软件简介 (4) 2.2P ROTEUS软件简介 (4)

2.3K EIL U V ISION4与P ROTEUS软件联合仿真 (5) 第3章LCD1602显示控制技术 (6) 3.11602字符型LCD简介 (6) 3.2LCD1602功能 (7) 3.3 LCD1602的指令说明及时序 (8) 3.4LCD1602的RAM地址映射及标准字库表 (7) 3.5 LCD1602的一般初始化(复位)过程 (8) 第4章系统硬件概况 (13) 4.1系统概况 (13) 4.2 MCS-51单片机最小系统模块 (14) 4.3 DS1302时钟芯片控制与键盘设置时间模块 (15) 4.4 LCD1602显示模块 (16) 第5章软件控制系统概况 (18) 5.1程序流程概况 (18) 5.2 流程图 (18) 5.3 源程序代码 (19) 参考文献 (25)

独立按键和矩阵按键

第八章独立按键和矩阵按键 我们和单片机之间进行信息交互,主要包含两大类,输入设备和输出设备。前边讲的LED小灯、数码管、点阵都是输出设备,这节课我们学习一下最常用的输入设备——按键。在本节课的学习过程中我们还会穿插介绍一点硬件设计的基础知识。 8.1 单片机最小系统电路解析 8.1.1 电源 我们在学习过程中,很多指标都是直接用的概念指标,比如我们说+5V代表1,GND代表0等等这些。但在实际电路中是没有这么精准的,那这些指标允许范围是什么呢?随着我们所学的内容不断增多,大家要慢慢培养一种阅读手册的能力。 比如我们使用STC89C52RC单片机的时候,我们找到他的手册的11页,第二个选项,工作电压:5.5V-3.4V(5V单片机),这个地方就说明我们这个单片机正常的工作电压是个范围值,只要电源VCC在5.5V到3.4V之间都可以正常工作,电压超过5.5V是绝对不允许的,会烧坏单片机,电压如果低于3.4V,单片机不会损坏,但是也不能正常工作。而在这个范围内,最典型、最常用的电压值就是5V,这就是后面括号里“5V单片机”这个名称的由来。除此之外,还有一种常用的工作电压范围是2.7V-3.6V、典型值是3.3V的单片机,也就是所谓的“3.3V单片机”了。日后随着大家接触的东西慢慢增多,对这点会有更深刻的理解。 现在我们再顺便多了解一点,大家打开74HC138的数据手册,会发现74HC138手册的第二页也有一个表格,上边写了74HC138的工作电压范围,最小值是4.75V,额定值是5V,最大值是5.25V,可以得知它的工作电压范围是4.75V-5.25V。这个地方讲这些目的是让大家清楚的了解,我们获取器件工作参数的一个最重要,也是最权威的途径,就是通过器件的数据手册。 8.1.2 晶振 晶振通常分为无源晶振和有源晶振两种类型,无源晶振一般称之为crystal(晶体),而有源晶振则叫做oscillator(振荡器)。 有源晶振是一个完整的谐振振荡器,他是利用石英晶体的压电效应来起振,所以有源晶振需要供电,当我们把有源晶振电路做好后,不需要外接电路,它就可以主动产生振荡频率,并且可以提供高精度的频率基准,信号质量比无源信号好。 而无源晶振自身无法振荡起来,它需要芯片内部的振荡电路一起工作才能振荡,它允许不同的电压,但是信号质量和精度较有源晶振差一些。相对价格来说,无源晶振要比有源晶振价格便宜很多。无源晶振两侧通常都会有两个电容,一般其容值都选在10pF~40pF之间,如果手册中有具体电容大小的要求则要根据要求来选电容,如果手册没有要求,我们用20pF 就是比较好的选择,这是一个长久以来的经验值,具有极其普遍的适用性。 我们来认识下比较常用的两种晶振的样貌,如图8-1和图8-2所示。

基于单片机的键盘和LED数码管工作原理

摘要:键盘和显示器是微机最常见的输入输出设备。本文介绍键盘和LED显示器的基本工作原理,并给出在8051基础上的电路结构及C语言代码。 关键字:键盘,LED,单片机 键盘是微型计算机系统中最基本、最常见的输入设备。在各种工业过程的计算机控制和监视系统中,广泛应用发光二极管向用户提供提示。由发光二极管可以构成7段/8段LED显示器,用于显示工作状态、参数数值和故障位置。 一.键盘的工作原理 键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。 (一)键盘的基本介绍 1.键盘的功能 键盘接口必须具有4个基本功能: 1.去抖动 2.防串键 3.识别被按键并产生与之对应的键码 4.释放键 而键码产生后如何去实现按键的特定功能,是操作系统和应用程序的任务2.键盘的分类 根据按键开关的排列方式,键盘可分为线性键盘和矩阵键盘。 线性键盘:硬件连接和接口程序都很简单,只适用于按键少的场合,因为线性键盘有多少按键,就需要有多少根连线与微机输入端口相连。 矩阵键盘:将按键排成n行m列,每个按键占据行列的一个交点,需要的外连接线数目是m+n,而容许的最大按键数是m*n,显然可以减少微机接口的连线,是一般微机常采用的键盘结构。 3.键盘与单片机的连接方式 矩阵键盘的连接方法有多种。可直接连接于单片机的I/O口线;可利用扩展的并行I/O口连接;也可利用可编程的键盘、显示接口芯片(如8297)进行连接等等。其中,利用扩展的并行I/O口连接方便灵活,在单片机应用系统中比较常用。下图就是通过8255A芯片扩展的并行I/O口连接的矩阵键盘。 图 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п

管脚图例管子型号管子型号(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)

基于MCS51系列单片机实现键盘按键与数字动态显示计数器课程设计

毕业设计论文 摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用音乐倒数的计数器。本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。当倒计数为0时,蜂鸣器就发出音乐声响等等。该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。 关键词:AT89C51、键盘、LCD1602显示、蜂鸣器

目录 摘要............................................................... I 1 项目概述和要求 (1) 1.1 单片机基础知识 (1) 1.2 单片机的发展趋势 (1) 1.3 项目设计任务与要求 (3) 2 系统设计 (4) 2.1 框图设计 (4) 2.2部分硬件方案论述 (4) 2.3电路原理图 (4) 2.4元件清单 (5) 2.4.1AT89C51芯片 (5) 2.4.2字符型LCD1602 (6) 2.4.3按键控制模块 (8) 2.4.4其它元件 (8) 3软件设计 (9) 3.1 程序流程图 (9) 3.2 程序关键问题的部分代码 (11) 4 系统的仿真与调试 (16) 4.1 硬件调试 (16) 4.2 软件调试 (16) 4.3 软硬件调试 (16) 5总结 (17) 参考文献 (18)

相关文档
相关文档 最新文档