键盘程序设计

合集下载

单片机按键程序设计

单片机按键程序设计

单片机按键程序设计单片机按键的基本原理其实并不复杂。

通常,按键就是一个简单的开关,当按键按下时,电路接通,对应的引脚电平发生变化;当按键松开时,电路断开,引脚电平恢复到初始状态。

在程序设计中,我们需要不断检测引脚的电平变化,从而判断按键是否被按下。

在实际的按键程序设计中,有多种方式可以实现按键检测。

其中一种常见的方法是查询法。

这种方法是通过不断地读取按键对应的引脚状态来判断按键是否被按下。

以下是一个简单的查询法示例代码:```cinclude <reg51h> //包含 51 单片机的头文件sbit key = P1^0; //定义按键连接的引脚void main(){while(1) //无限循环{if(key == 0) //如果按键按下,引脚为低电平{//执行按键按下的操作//比如点亮一个 LED 灯P2 = 0xfe;while(key == 0);//等待按键松开}}}```上述代码中,我们首先定义了按键连接的引脚`key`,然后在主函数的无限循环中不断检测按键引脚的状态。

当检测到按键按下时,执行相应的操作,并通过`while(key == 0)`等待按键松开。

除了查询法,还有中断法可以用于按键检测。

中断法的优点是能够及时响应按键动作,不会因为程序的其他操作而导致按键响应延迟。

```cinclude <reg51h> //包含 51 单片机的头文件sbit key = P1^0; //定义按键连接的引脚void int0_init()//中断初始化函数{IT0 = 1; //下降沿触发中断EX0 = 1; //使能外部中断 0EA = 1; //开总中断}void int0() interrupt 0 //外部中断 0 服务函数{//执行按键按下的操作//比如点亮一个 LED 灯P2 = 0xfe;}void main(){int0_init();//初始化中断while(1);//无限循环,保持程序运行}```在上述代码中,我们首先在`int0_init` 函数中对中断进行了初始化设置,然后在`int0` 函数中编写了按键按下时的处理代码。

键盘数字输入训练器设计任务书

键盘数字输入训练器设计任务书

《微机原理综合训练》设计任务书题目:键盘数字输入训练器程序设计学生姓名:学号:班级:题目类型:设计性指导教师:一、课程设计题目键盘数字输入训练器程序设计。

二、题目简介以键盘数字输入训练器为背景,对键盘数字输入、视频显示、键盘扫描程序进行分析和设计。

通过该题目的分析和设计,学习微机软、硬件系统设计开发过程,加深微机原理及应用课程基础知识的理解和综合运用能力,熟悉集成电路芯片的使用方法,熟悉微机编程及接口电路,学习体会工程实际设计的过程,培养学生独立解决实际工程问题的综合能力。

学生初步得到用汇编语言书写程序的训练,全面培养程序设计过程中的分析、设计、编码、测试及文档规范书写的能力,得到运用汇编语言的综合训练,提高解决实际问题的能力。

三、设计任务学生通过该题目的设计过程,可以初步掌握汇编语言的运用、软件开发方法并提高解决实际问题的能力。

利用汇编语言对键盘数字输入训练器进行编写的主要思路如下:在PC机中,对键盘的管理是通过中断机构和8255芯片来实现的,在8255中有两个端口PA和PB,在这个硬件接口的基础上,系统在BIOS中配备了键盘服务功能,可以调用键盘的DOS和BIOS功能编程,也可以直接在硬件接口的基础上编程。

视频显示程序设计:一般由DOS 或BIOS调用来完成。

有关显示输出的DOS 功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。

键盘扫描程序设计:检测键盘状态,有无输入,并检测输入各值。

设计任务包括:1.在缓冲区中预放了一些字符,当有键盘输入,则从缓冲区中取出字符并进行显示。

2.对取出的字符进行队列管理。

3.增加left_shift和right_shift键的功能,即在按下left_shift或right_shift键的同时,又按下0~9或a~z等键,则CPU取得并显示键得上档符号或大写字母。

附加要求:必要的辅助功能(设置、修改等)。

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘摘要:本设计选择STM32为核心控制元件,设计了用4个IO 口实现4*4矩阵键盘,使用C 语言进行编程。

矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

关键词:STM32 矩阵键盘 ARM 显示电路1 引言随着21世纪的到来,以前的单个端口连接的按键已经不能满足人们在大型或公共场合的需求。

电子信息行业将是人类社会的高科技行业之一,4*4矩阵键盘设计师当今社会中使用的最广的技术之一。

4*4矩阵式键盘采用STM32为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C 语言编程。

STM32将检测到的按键信号转换成数字量,显示于数码管上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

2 总体设计方案该智能键盘电路由ARM 最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO 口完成4*4矩阵键盘。

2.1 总体设计框图本电路主要由3大部分电路组成:矩阵键盘电路、ARM 最小系统电路、按键显示电路。

其中ATM 最小系统主要由复位电路和时钟电路组成。

电路复位后数码管显示字符“—” 表示没有按键,显示电路由STM32的PD0—PD7来控制数码管显示是哪个按键按下。

总体设计方框图,如图1所示。

图1总体设计方框图STM32矩阵键盘电路时钟电路复位电路按键显示电路3 智能键盘设计原理分析3.1 STM32复位和时钟电路设计此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中14脚为STM32的复位端。

时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分别接STM32的12脚和13脚,32.786KHz分别接STM32的8脚和9脚。

图2STM复位和时钟电路设计3.2 矩阵键盘电路的设计该电路的四个端子分别接STM32的PB12—PB15,电路如图3所示。

矩阵键盘程序设计

矩阵键盘程序设计

矩阵键盘程序设计1. 引言矩阵键盘是一种常见的输入设备,广泛应用于电脑、方式等各种电子设备中。

将介绍如何设计一个简单的矩阵键盘程序。

2. 程序设计思路矩阵键盘由多个按键组成,每个按键对应一个特定的字符或功能。

通常情况下,矩阵键盘是通过行列扫描的方式来检测按键的状态,即通过扫描每行和每列的电平来判断是否有按键被按下。

要设计一个矩阵键盘程序,需要确定矩阵键盘的行列数,然后通过相应的硬件电路将其连接到控制器上。

接下来,程序需要循环扫描每行和每列的电平,并记录下按下的按键。

根据按键的状态来执行相应的操作,输出对应的字符或执行特定的功能。

3. 硬件设计硬件设计主要包括确定矩阵键盘的行列数以及将其连接到控制器上的电路设计。

通常情况下,矩阵键盘的行使用输出电平,列使用输入电平。

在连接到控制器之前,还需要添加电阻和二极管来保护电路和消除反馈。

4. 软件设计软件设计主要包括程序的循环扫描和按键状态的处理。

可以使用循环来不断扫描每行和每列的电平,当检测到按键被按下时,记录下按键的位置信息。

接下来,根据按键的状态,进行相应的处理操作,输出对应的字符或执行特定的功能。

程序还需要处理按键的反弹,以避免误操作。

5. 示例代码以下是一个简单的矩阵键盘程序设计的示例代码,采用C语言编写:cinclude <stdio.h>include <stdbool.h>// 定义矩阵键盘的行列数define ROWS 4define COLS 4// 定义矩阵键盘的字符映射表char keys[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'', '0', '', 'D'}};// 定义矩阵键盘状态数组bool keyState[ROWS][COLS] = {0};// 矩阵键盘扫描函数void scanKeyboard() {// 扫描行for (int row = 0; row < ROWS; row++) {// 将当前行的输出电平设置为低电平setRowLow(row);// 扫描列for (int col = 0; col < COLS; col++) {// 检测当前列的输入电平if (getColLevel(col)) {// 当检测到按键被按下时,更新按键状态 keyState[row][col] = true;} else {// 当检测到按键未按下时,更新按键状态 keyState[row][col] = false;}}// 将当前行的输出电平恢复为高电平setRowHigh(row);}}int mn() {while (1) {// 扫描矩阵键盘scanKeyboard();// 处理按键状态for (int row = 0; row < ROWS; row++) {for (int col = 0; col < COLS; col++) {// 检测到按键被按下时,输出对应的字符if (keyState[row][col]) { printf(\。

矩阵键盘程序设计

矩阵键盘程序设计

矩阵键盘程序设计矩阵键盘程序设计概述矩阵键盘是一种常见的输入设备,常用于电子产品和计算机系统中。

它由多个按键组成,采用矩阵排列的方式连接到计算机系统中。

在本篇文章中,我们将讨论矩阵键盘的程序设计。

程序设计步骤步骤一:硬件连接,我们需要将矩阵键盘与计算机系统进行连接。

通常情况下,矩阵键盘的每一行和每一列都通过引脚与计算机系统中的GPIO(通用输入输出)引脚相连接。

步骤二:引脚控制接下来,我们需要使用程序控制GPIO引脚的输入输出状态。

对于矩阵键盘而言,我们通常会将一行的引脚设置为输出,将一列的引脚设置为输入,然后将输出引脚设置为高电平,输入引脚设置为上拉或下拉电阻。

步骤三:按键扫描在第二步的基础上,我们可以进行按键的扫描操作。

具体方法是,先将某一行的引脚设置为低电平,然后读取每一列的引脚状态。

如果某一列引脚为低电平,则表示该按键被按下。

步骤四:按键处理一旦我们检测到某个按键被按下,就可以执行相应的按键处理操作。

这可能包括记录按键信息、执行某些特定的功能或触发一些事件。

步骤五:循环扫描,我们需要将以上步骤放入一个循环中进行不断的扫描。

这样可以实现对整个矩阵键盘的实时检测和响应。

示例代码下面是一个简单的矩阵键盘程序设计的示例代码,使用C语言编写:cinclude <stdio.h>include <wiringPi.h>define ROWS 4define COLS 4int rows[ROWS] = { 2, 3, 4, 5 };int cols[COLS] = { 6, 7, 8, 9 };char keyMap[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'', '0', '', 'D'}};void init() {wiringPiSetup();for (int i = 0; i < ROWS; i++) {pinMode(rows[i], OUTPUT);digitalWrite(rows[i], HIGH);}for (int i = 0; i < COLS; i++) {pinMode(cols[i], INPUT);pullUpDnControl(cols[i], PUD_UP);}}char getKey() {while (1) {for (int i = 0; i < ROWS; i++) {digitalWrite(rows[i], LOW);for (int j = 0; j < COLS; j++) {if (digitalRead(cols[j]) == LOW) { return keyMap[i][j];}}digitalWrite(rows[i], HIGH);}}}int mn() {init();while (1) {char key = getKey(); printf(\。

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

操作方完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。

4X4矩阵式键盘输入程序

4X4矩阵式键盘输入程序

4*4键盘程序readkeyboard:begin: acall key_onjnz delayajmp readkeyboard delay:acall delay10msacall key_onjnz key_numajmp beginkey_num:acall key_panl a,#0FFhjz beginacall key_ccodepush akey_off:acall key_onjnz key_offpop aretkey_on: mov a,#00horl a,#0fhmov p1,amov a,p1orl a,#0f0hcpl aretkey_p: mov r7,#0efhl_loop:mov a,r7mov p1,amov a,p1orl a,#0f0hmov r6,acpl ajz nextajmp key_cnext: mov a,r7jnb acc.7,errorrl amov r7,aajmp l_looperror:mov a,#00hretkey_c:mov r2,#00hmov r3,#00hmov a,r6mov r5,#04hagain1:jnb acc.0,out1rr ainc r2djnz r5, again1out1: inc r2mov a,r7mov r5,#04hagain2:jnb acc.4,out2rr ainc r3djnz r5,again2out2: inc r3mov a, r2swap aadd a,r3retkey_ccode:push aswap aanl a,#0fhdec arl a ;行号乘4rl amov r7,apop aanl a,#0fhdec aadd a,r7retdelay10ms:anl tmod,#0f0horl tmod,#01hmov th0,#0d8hmov tl0,#0f0hsetb tr0wait:jbc tf0,overajmp waitclr tr0over:ret单片机键盘设计(二)从电路或软件的角度应解决的问题软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。

矩阵键盘程序设计

矩阵键盘程序设计

矩阵键盘程序设计矩阵键盘程序设计1.引言2.矩阵键盘的工作原理矩阵键盘由多行多列的按键组成,每个按键都与行线和列线相交。

当按下某一个按键时,行线和列线会形成一个闭合电路,通过这个闭合电路来传递按键的信号。

通过扫描行线和列线的状态,可以确定用户按下了哪个按键。

3.矩阵键盘的程序设计在程序设计中,需要初始化矩阵键盘的引脚配置,即将每个行线和列线连接到相应的引脚上。

然后,通过循环扫描行线和列线的状态,判断用户是否按下了某个按键。

一般情况下,矩阵键盘的扫描速度比较快,可以采用中断的方式来进行扫描,提高响应速度。

以下是一个简单的矩阵键盘程序设计示例:import RPi.GPIO as GPIO初始化引脚配置row_pins = [11, 13, 15, 16] 行引脚col_pins = [18, 22, 24, 26] 列引脚GPIO.setmode(GPIO.BOARD)设置行引脚为输出模式,列引脚为输入模式for pin in row_pins:GPIO.setup(pin, GPIO.OUT)for pin in col_pins:GPIO.setup(pin, GPIO.IN)循环扫描矩阵键盘while True:for row in row_pins:设置当前行引脚为低电平GPIO.output(row, GPIO.LOW)for col in col_pins:判断当前列引脚是否为高电平,即判断用户是否按下了某个按键if GPIO.input(col) == GPIO.HIGH:处理按键事件print(\。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

return(88);
3.3.3 利用延时程序防止键盘抖动, 实现键盘输入
按键按下产生的抖动现象持续的时间不会很久, 因此在按键按下后,可延时一段时间跳过抖动, 再对按键的状态检测,从而实现键盘输入。本案 例完成通过两个键盘设计,实现对数码管显示数 据的调整。
一、电路原理
在单片机最系统的基础上,KEY1、KEY2两个键 盘一端分别接P3.0、P3.1,另一端接地,见图3-32所示。数码管仍使用共阳型。在Proteuse软件中, 按键的英文名字为BUTTON,在Switches & Relasy 下的Switches里。
if(P1 != P_scan[i])
//延时一段时间后,分析一下P1口是什么数据
{ for(j = 0;j<16;j++) //如果P1口上的数据与键盘临时数据相同,输出临
时键值
{
if(P1 == key_temp[j])
return(j);
}
}
eles
//如果没有按键按下,输出没有按键按下标志“88”
void main(void) { char i;
while(1) {
key_scan(); if(key1_state = 1) { i++;
key1_state = 0; if(i>9) i = 0; } if(key2_state = 1) { i--; key2_state = 0; if(i < 0) i = 9; } P0 = seven_seg[i]; } }
3.3.1 键盘抖动现象
按键按下都会发出一声响,谁然有的按键 声音很轻微,但这都是导体碰撞产生的震 动。这种现象称为键盘抖动。如果不对键 盘的抖动进行处理,按键会对系统电路或 程序产生意外的干扰。为了观察按键的抖 动现象,我们先做一个小实验,分析一下 一个微触按键产生抖动对系统的影响。
加数计数小系统
从图中可以了解到,按键按下的瞬间由于震 动会是按键内部的导体稳定接触,而是在导 通和不导通之间来回弹跳,虽然时间一瞬间, 但使CP端获得了多个电平的上升沿。按键抖 动时间的长短由按键的机械特性决定,一般 为5ms~10ms。因此不能直接把按键作为1个 脉冲的输入。
在数字电路中,常利用触发器消除键盘抖动, 但在单片机系统中,按键可以直接接在单片 机的I/O口上,常利用键盘程序来消除键盘的 抖动现象。
uchar key1_down_state, key1_up_state,
//变量声明,初始值为0
……
if(key1== 0)
{delay(200)
if(key1== 0)keydownstate = 1; //如果按键按下,按下状态变量 为1
}
if(key1 == 1 && keydownstate = 1) //如果按键按下又放开
3.把键盘扫描key_scan()函数放在主函数的 while循环体中,程序执行时会断调用 key_scan(),如果没有按键按下,执行 key_scan()的时间很短,如果有按键按下, 用于按键扫面函数又调用了延时函数,程 序执行时间会变长。
3.3.4 4×4键盘程序设计
4×4键盘16键盘阵列,本案例采用P1口完成, 见图3-3-5所示,把P18条I/O口分成4条列线4条行 线交叉但不接触,16个按键放置交叉位置,在单 片机复杂系统需要较多按键时,这种接法可以节 省单片机的硬件资源。键盘和P1口之间采用总线 连接布局,在电路原理设计过程中,总线只是图 示引脚之间的相连接关系,但不具有电气连接特 性,相连引脚之间需要标注相同的网络标号采用 电气连接特性,如图3-3-5中,单片机的P1.0与键 盘阵列上的P1.0相连。在设计单片机系统或其它 电子系统时,由于器件引脚较多,器件与器件之 间会经常采用总线连接,并且把电路模块化设计。
//如果按键按下
{ delay(200);
//延时一段时间,消除键抖
while(key1 == 0) key1_state = 1;
//再对按键检测,如果确实按
下,按键状态变量为1
}
if(key2 == 0)
{ delay(200);
while(key2 == 0)
key2_state = 1;
}
}
//调用键盘扫描函数 //判断键盘状态变量,如1,说明有按键按下
//显示数据增加 //数据增加后,键盘状态变量清零
//数据增加超过9后,回到0
//显示键盘调整数据
三、程序说明
1.如果按键按下不放开,程序一直执行语句 while(key1 == 0),这时程序在此处死循环, 不能执行其它程序,所以本案例按键抬起后 数据才能得到调整。此种编程方法并不影响 单片机驱动1个数码管工作,但动态显示电路 在此种情况下不能正常工作。如果把while改 换成if,按键只要按下数据就能调整,但如 果按下不放开按键,数据自动快速增加或减 小。如果按键按下既不让程序死循环,也不 让由于按键按的时间过长而数据调整失控, 最可靠的办法是利用变量记忆按键按下和放 开的两种状态,根据判断实现键盘输入。程 序如下;
3.3.2 利用外部中断INT0实现键盘输入
本案列利用外部中断INT0作为键盘输入端,当按 键按下时,让单片机执行外部中断服务程序,在 中断服务中完成键盘控制。
一、参考电路
在最小系统基础上,单片机的P0.0口接一只 LED,键盘接在P3.2端口,按键不按时,由于P3.2 接有上啦电阻R3,所以P3.2此时为高电平+5V, 如果按键按下,P3.2电源地短路,P3.2为低电平。 为了消除键盘抖动现象,键盘两端并联滤波电容 器C4。
//INT0中断1次,i值改变1次
LED = i;
//INT0中断1次,LED工作状态变化1次
delay();
//调用延时函数
}
void main(void)
{ LED = 0;
//芯片初始化时,LED灭
EA = 0;
EX0 = 1;
//开启INT0中断
PX0 = 1;
//INT0中断优先,可以省去
二、程序设计
#include<reg51.h>
#define uchar unsigned char
code uchar P_scan[] = {0x01,0x02,0x04,0x08};
//键盘行扫描临时数值
code uchar key_temp[] = {0x11,0x12,0x14,0x18 //键盘按下得到的临时数据
EA = 1;
//开启总中断开关
while(1);
//等待按键按下,中断发生
}
三程序说明
这里没有设置INT0是下降沿触发中断或是低电平触发中断, 原因是按键按下,不管产生不产生键抖现象,总能使INT0 引脚产生1个下降沿和低电平。如果设置只有下降沿才触 发INT0中断,需要利用设置计时器控制寄存器TCON的 IT0 = 1位,按键按下是否产生中断,可以利用程序检测 TCON的IE0位。利用外部中断触发作为按键输入很好的解 决了键盘抖动问题。如果需要多个键盘,把INT0口与I/O 口之间用键盘连接,I/O输出低电平扫面信号即可。在数 码管动态显示电路中,为了节省硬件资源,可以在INT0口 和P2口之间接入键盘,实现8只按键输入。
键盘程序设计
按键是一种开关,通过外界作用力,导电金属或导 电非金属接触与分离实现电路通断的控制是按键的 基本机械原理,如计算机键盘、手机、MP3以及电 子表按键。按键是计算机系统输入设备,也是人机 信息交换的主要途径。 按键按下会产生抖动现象,不能安全有效的对系统 控制,本节根据按键产生的抖动机理,提出以中断、 延时等措施消除键盘输入过程中的不稳定因素,实 现单片机系统键盘的稳定输入。
if(key_count == 0 && key == 0); key_flog = 1; } eles if(key == 0)key_count = times; }
2.利用按键调整数据时,有时会调整过量, 需要进行判断重置。本案例i为char型变量,
数值在—128~127之间,语句if(i>9) i = 0是向 上增加过量复位。
sbit key1 = P3.0;
sbit key2 = P3.1;
uchar key1_state,key2_state;
//按键按下的状态变量
void delay(uchar i)
{ while (i) i--; }
void key_scan (void)
//键盘扫描函数
{ if(key1 == 0)
图 3-3-4 利用延时函数消除键盘抖动实现键盘输入电路
二、程序设计
#include<reg51.h>
#define uchar unsigned char
code uchar seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
0x21,0x22,0x24,0x28
0x41,0x42,0x44,0x48
0x81,0x82,0x84,0x88};
code uchar seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uchar i)
图3.3.1
图3.3.2
在图3-3-1所示的一个加数计数小系统中,设 计数器的脉冲输入端CP为上升沿有效,加计 数器初始显示为0。按键不按时,CP = 0,计 数器不加1计数。一般认为:按键按下,CP
端由低电平变为高电平,含有电平上升沿,
计数器加1计数,并且按下1次,计数器加1。 实际实验时会发现,按键按下1次,计数器不 是加1,而是跳跃一次性增加3或4。原因是按 键按下在导体接触的瞬间产生了震动。图33-2是按键按下过程中CP端实际电平改变情况。 T1为不按按键时刻,T2为按键按下瞬间的抖 动,T3为按键按下稳定时刻,T4为按键放开 时刻瞬间,T5为按键放开时刻。
相关文档
最新文档