实验二 键盘控制LED灯

实验二 键盘控制LED灯

ID:44713835

大小:159.64 KB

页数:13页

时间:2019-10-25

实验二 键盘控制LED灯 _第1页
实验二 键盘控制LED灯 _第2页
实验二 键盘控制LED灯 _第3页
实验二 键盘控制LED灯 _第4页
实验二 键盘控制LED灯 _第5页
资源描述:

《实验二 键盘控制LED灯 》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验二键盘控制LED灯一、实验目的1、进一步熟悉keilC仿真软件及单片机实验板的使用。2、了解并熟悉单片机I/O口、LED灯和键盘的电路结构,学会构建简单的键盘及流水灯电路。3、掌握应用KEIL软件编辑、编译源程序的操作方法。4、了解单片机C51语言程序的设计和调试方法。5、编写程序,做出不同按键控制不同流水灯的实验效果。二、实验原理1、实验板硬件电路图1.1MCUBlueSkyC51开发板选择的是STC12C5A60S2作为MCU。它内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D

2、转换(25万次/秒),几乎包含了数据采集和控制中所需的所有单元模块,因此我们选择它作为开发板的MCU。MCU部分原理图如图1.1。图1单片机最小系统电路本实验中将使用P0和P1的I/O口。1.1LEDBlueSkyC51开发板上共有8个LED,它们是共阳极连接,阴极分别接在P0的8个I/O口上。但开发板中不直接将VCC接上,而是当读者需要使用LED做实验的时候通过跳线帽将VCC与排阻公共端接上。这样做主要是因为两个液晶接口使用了P0.5、P0.6、P0.7作为控制端,而且读者在开发板外部扩展功能时会使用

3、到P0口,这时我们可以拔掉跳线帽,LED就不会产生影响。该部分电路原理图如图2。图28个LED灯电路1.14*4矩阵键盘BlueSkyC51开发板上带有4*4的矩阵键盘,它们分两组连接到MCU的P3.0~P3.3和P3.4~P3.7上。该部分电路原理图如图3。图34*4矩阵键盘电路2、键盘控制LED灯程序设计2.1程序设计思路及程序流程(重点介绍键盘实现原理及多种流水灯实现方法)2.1.1键盘扫描原理C51实验板上的矩阵键盘跟单片机的P3口连接,P3端口的低4位分别对应于矩阵键盘的行,高4位分别对应于矩

4、阵键盘的列。整个扫描过程大致如下:先赋值P3端口为0xF7,这样相当于P3.3为低电平,其余管脚为高电平。接着再把P3端口的状态读回来,并检测高4位的状态。若高4位有1位为0,说明这一行有键按下。因为两个电平不同的管脚通过被按下的按键接在一起后,会使原来高电平的管脚变为低电平,再检测出现低电平的是哪一个管脚,这样,就可以根据刚才赋值为0的行和检测到0的列来定位是哪一个按键被按下了;若高4位全为1,说明这一行并没有键按下,接着依次赋值P3端口为0xFB、0xFD、0xFE,并在每次赋值后按上述方法作列扫描

5、,直到扫描完每一行为止。若所有行都扫描完,但没有一列出现低电平,则说明没有任何按键按下。在实现按键扫描时还有一点需要注意的,那就是按键消抖和松手检测。无论是独立按键还是矩阵键盘,都会存在按键的机械抖动。通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。机械抖动会严重影响按键扫描的准确性。这是按键的物理性质,这是无法避的,但是可以通过程序消抖和松手检测来尽量减少影响

6、。本实验中采用自行编写键盘扫描子函数,函数返回值则是按键的编号。并且我们会把键盘扫描的子函数做成头文件key_scan.h,以后需要用到键盘时就可以直接在工程中把key_scan.h头文件包含进去即可,而不需要重新编写该程序。头文件key_scan.h在附录中给出。2.1.2流水灯的多种实现方法键盘控制LED显示:开发板上的8个LED灯是共阳极方式连接,即LED正极已接到高电平。当I/O口输出低电平时,在LED灯上会产生压降导通,LED灯会亮。而当I/O口输出高电平时,LED灯正负极没有压降,灯不亮。通

7、过对P0端口电平的控制即可实现流水灯效果。此处介绍三种流水灯的实现方法(相关程序见2.2):(1)使用C51提供的库函数,利用循环左移函数_crol_(),实现单方向的亮灯循环;(2)使用移位运算符“>>”、“<<”,把送P1口显示控制数据进行移位,从而实现发光二极管依次熄灭;(3)使用C51提供的库函数,即循环左移n位函数和循环右移n位函数,控制二极管左到右,再右到左的依次点亮。2.1.3键盘控制实现流水灯原理本实验中采用键盘扫描子函数,函数返回值则是按键的编号。通过返回的键值即可跳到不同流水灯的模式

8、。下面用一个例子对控制方法进行说明。实现按下BlueSkyC51开发板上任意一个按键都会令与P0.0相连的LED0状态翻转,即亮变灭或灭变亮。main.c程序如下:#include#include#defineucharunsignedchar#defineuintunsignedintsbitLED0=P0^0;voidDelay_ms(uinttime){uinti,j;for(i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。