(7.1)--4.1LED控制与独立按键检测.ppt

上传人:奉*** 文档编号:96451692 上传时间:2023-11-29 格式:PPT 页数:27 大小:1.37MB
返回 下载 相关 举报
(7.1)--4.1LED控制与独立按键检测.ppt_第1页
第1页 / 共27页
(7.1)--4.1LED控制与独立按键检测.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《(7.1)--4.1LED控制与独立按键检测.ppt》由会员分享,可在线阅读,更多相关《(7.1)--4.1LED控制与独立按键检测.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机单片机I/OI/O口方式的应用口方式的应用第四章第四章1.掌握LED灯控、开关按钮检测、行列式键盘应用、数码管显示器等基本外设的应用方法2.掌握单片机电路设计、C51编程和联合仿真的基本方法。本章目标本章目标第第 节节4.1 LED4.1 LED控制与控制与独立按键检测应用独立按键检测应用1 1作为基本输出元件:具有电路简单、功耗低、寿命长、响应速度快等特点低电平驱动“0”电平点亮高电平驱动,“1”电平点亮灌电流拉电流4.1.1输出电路输出电路:发光二极管发光二极管灌入的最大电流为10mA拉出的最大电流为1mA一般采用低电平驱动电路,限流电阻100200基本输入元件:输入元件:按钮(Bu

2、tton)或开关(Switch)当按键或开关闭合时,对应口线电平发生反转;当按键未按下压时,Px.n端口为高电平;按压按键后为低电平。4.1.2输入电路输入电路:按键P0口在通用IO方式时,其内部结构为漏极开路状态,需外加上拉电阻实例实例 1 独立按键识别独立按键识别【要求】采用独立按键方式实现下述功能:开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯状态保持到按压其它键时为止。独立按键独立按键每个按键都彼此独立地各占有一位I/O口线。特点是电路简单,但占用I/O口线较多。P2口低四位接4个指示灯,低电平点亮P0口高4位引脚空置,电平不确定。为读取P0口时得到仅与按键状态有关的读入值,将

3、高4位强制为0:key=P0&0 x0f,使,使P0高高4位始位始终为终为0。【解题分析解题分析】if(key!=0 x0f)P2=key 作用:仅仅在低在低4位读入值不为位读入值不为0 x0f时才时才向向P2输出输出P0状态值状态值,保持先前的亮灯状态,直至有新按键压下时才刷新显示。参考程序如下参考程序如下:#include /51 头文件void main()主函数 char key=0;/定义按键变量KEY 并赋初值为0 while(1)/无限循环 key=P0&0 x0f;/读取按键状态,高4位清零,if(key!=0 x0f)P2=key;/有按键动作时,P0状态值送P2(LED),

4、否则不刷新指示灯 实例实例1编程编程界面界面第4章单片机的单片机的C51语言语言仿真运行表明,所有功能都符合题意要求,程序设计结束。实例实例1 仿真运行仿真运行实例实例2 键控流水灯键控流水灯【要求】在实例2电路图的基础上,实现以下功能:K1为“启动键启动键”,首次按压K1可产生“自下向上”的流水灯运动;K2为“停止键停止键”,按压K2可终止流水灯的运动;K3和K4为“方向键方向键”,分别产生“自上向下”和“自下向上”运动。思路分析思路分析:通过读取键值引导程序进行分支控制。需设立两个可根据键值修改的标志变量,然后再根据标志变量的组合关系控制流水灯的流向与启停。分支控制流程图流水灯的控制:将4

5、种亮灯花样数据作为数组元素存入数组led中,利用下标法依次调用。按键键状态值值:无按键xxxx1111B按压K1xxxx1110B按压K2xxxx1101B按压K3xxxx1011B按压K4xxxx0111B按键动作判断(P0&0 x0f)是否等于0 x0f?若是,说明无按键动作,反之则有按键动作。0 x0f 0 x0e 0 x0d 0 x0b 0 x07获取按键状态获取按键状态修改方向和启停标志值修改方向和启停标志值根据键值修改方向和启停标志变量dir和run值,采用switch语句实现P2口亮灯编码口亮灯编码:xxxx1110 xxxx1101xxxx1011xxxx0111D1D4循环方

6、向控制循环方向控制charled=0 xfe,0 xfd,0 xfb,0 xf7;for(i=0;i=0;i-)P2=led i;/移动查表方法用花样数据作为亮灯码数组led 的元素,下标法依次调用输出到P2口#include“reg51.h”/头文件unsigned char led=0 xfe,0 xfd,0 xfb,0 xf7;/亮灯花样数据数组void delay(unsigned char time)/延时函数 unsigned int j=15000;for(;time0;time-)for(;j0;j-);void main()bit dir=0,run=0;/标志位变量定义及初

7、始化,使的灯处于熄灭状态char i;while(1)/无限循环 switch(P0&0 x0f)/读取键值,高四位强制为0 case 0 x0e:run=1;break;/当前键值与K1键值0e比较,若相同,则是K1按下,启动标志位run=1 case 0 x0d:run=0,dir=0;break;/;键值不等于K1的值后与K2的值0D比较,若相同,则run=0 dir=0,表示K2按下,要终止流水灯的运动,case 0 x0b:dir=1;break;/如果当前键值与K3的键值0B相同,则dir=1,表示流水灯自上而下 case 0 x07:dir=0;break;/表示K4动作,流水灯

8、自下而上 dir=0if(run)/根据run的值判断是否运行,若run=1,继续根据dir的值判断是流水灯的方向 if(dir)在run=1的情况下 dir=1,自上而下流动for(i=0;i=0;i-)P2=ledi;delay(200);else P2=0 xff;/若run=0,灯全灭 实例2仿真运行仿真结果:可以产生题意要求的可以产生题意要求的效果效果,但存在按键滞后现象但存在按键滞后现象问题现象:问题现象:按键切换时按键切换时流水灯会有明显滞后效果流水灯会有明显滞后效果,原因:原因:按键检测函数的调用按键检测函数的调用非非实时进行导致实时进行导致。解决解决方法:采用中断检测,方法:

9、采用中断检测,将按键检测置于中断函数里将按键检测置于中断函数里实例实例3 循环彩灯循环彩灯要求:在P2口处连接8个LED。采用循环移位法实现:首先点亮D8,延时一定时间后熄灭,再点亮D7,如此依次顺序点亮每个LED,直至最后的D1。再从头开始无限循环,产生流水灯效果。解题思路解题思路:本题采用低电平驱动,P2口低电平对应于LED点亮。采用循环移位方法,即设法使P2口中的8位二进制数依次循环移位,每次只有一只LED亮7只灭,产生流水灯效果。方法:方法:采用 c51的intrins.h库函数库函数中的函数_cror_(x,n):功能:字符循环右移,将低位移出值补到高位的功能。正确调用库函数_cror_需要查看库函数的声明:常用的C51标准库函数_cror_函数函数:具有具有将低位移出值补到高位的功能将低位移出值补到高位的功能。该函数有两个无符号字符型的形参,有两个无符号字符型的形参,前者前者为为被被移位的数移位的数据,据,后者后者为为移位移位次数,函数返回值是无符号字符型次数,函数返回值是无符号字符型。循环右移1位可以用以下语句:P2=_cror_(P2,1);实例3的源程序如下:实例3的编程界面和运行界面仿真结果:实现自下而上的流水灯效果,达到题意要求。关于关于发光二极管与独立按键检测发光二极管与独立按键检测应用应用我们我们就就讲讲到这里,同学们到这里,同学们再见再见

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁