LED显示、键盘操作及程序.ppt
- 文档编号:2753741
- 上传时间:2022-11-11
- 格式:PPT
- 页数:41
- 大小:1.11MB
LED显示、键盘操作及程序.ppt
《LED显示、键盘操作及程序.ppt》由会员分享,可在线阅读,更多相关《LED显示、键盘操作及程序.ppt(41页珍藏版)》请在冰豆网上搜索。
I/O接口与简单应用接口与简单应用I/O端口的输入输出特性端口的输入输出特性I/O端口的应用端口的应用11I/O端口的简单控制端口的简单控制22LED数码管显示数码管显示33键盘键盘I/O接口与简单应用接口与简单应用I/O端口的应用端口的应用1I/O的简单控制的简单控制例例11:
在在P3.2-P3.4P3.2-P3.4三个引脚上分别接有三个发光二极三个引脚上分别接有三个发光二极管,用管,用C51C51编程实现三个发光二极管依次闪亮,循环不止。
编程实现三个发光二极管依次闪亮,循环不止。
分析:
分析:
要让发光二极管闪烁,只需隔一段要让发光二极管闪烁,只需隔一段时间,时间,P3P3口输出的高低电平转换一次。
口输出的高低电平转换一次。
为避免发光二极管烧毁,需加为避免发光二极管烧毁,需加430430左右的限流电阻。
左右的限流电阻。
四川省精品课单片机原理与应用西华大学机械工程与自动化学院黄惟公教授编程序:
程序:
四川省精品课单片机原理与应用#includesbitLED1=P32;/LED数码管位连接定义数码管位连接定义sbitLED2=P33;sbitLED3=P34;voiddelayms(unsignedintx)/毫秒延时函数毫秒延时函数unsignedcharj;while(x-)/非非0,为真,即,为真,即x=0时退出循环时退出循环for(j=0;j123;j+);voidmain(void)/主程序主程序while
(1)/非非0为真,此为无限循环为真,此为无限循环LED1=0;LED2=1;LED3=1;delayms(1000);LED1=1;LED2=0;LED3=1;delayms(1000);LED1=1;LED2=1;LED3=0;delayms(1000);电阻电阻R,其计算公式如下:
,其计算公式如下:
为电源电压,为电源电压,取取5V5V;为发光二极管压降,取为发光二极管压降,取1.2V1.2V-1.8V1.8V;为驱动器压降为驱动器压降,取取0.3V-0.5V,0.3V-0.5V,本例未使用本例未使用驱动器驱动器;为发光二极管工作电流为发光二极管工作电流,取取8mA-20mA8mA-20mA。
发光二极管工作电流,其值越大,二极管越亮。
发光二极管工作电流,其值越大,二极管越亮。
发光二极管工作电流,其值越大,二极管越亮。
发光二极管工作电流,其值越大,二极管越亮。
为了提高亮度,可减少限流电阻。
也可以选用驱为了提高亮度,可减少限流电阻。
也可以选用驱为了提高亮度,可减少限流电阻。
也可以选用驱为了提高亮度,可减少限流电阻。
也可以选用驱动器件以提供更大的电流,常用的驱动器件有动器件以提供更大的电流,常用的驱动器件有动器件以提供更大的电流,常用的驱动器件有动器件以提供更大的电流,常用的驱动器件有74LS0674LS0674LS0674LS06、74LS0774LS0774LS0774LS07、小功率三极管等。
、小功率三极管等。
、小功率三极管等。
、小功率三极管等。
5.2.2LED显示显示(Light-EmittingDiode)共阳极共阳极共阴极共阴极外形图外形图8段段LED字型码(段码)字型码(段码)“1”的段码(共阳极):
的段码(共阳极):
“F9H”dpgfedcbaP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.011111001“5”的段码(共阴极):
的段码(共阴极):
“6DH”dpgfedcbaP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.001101101共阳极段码:
共阳极段码:
0123456789Ab“黑黑”C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,FFH共阴极段码:
共阴极段码:
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H静态静态LEDLED显示显示显示显示0000,每秒钟加,每秒钟加11,至,至9999,如此循环不止。
,如此循环不止。
P1P1、P3P3各接一个数码管:
各接一个数码管:
#includeucharcodedispcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;voidmain(void)/主程序主程序ucharnum=0;while
(1)P1=dispcodenum/10;P3=dispcodenum%10;delayms(1000);num+;if(num=100)num=0;常用简化缩写来定义数据类型:
常用简化缩写来定义数据类型:
#defineucharunsignedchar#defineuintunsignedint图图5.9两位两位LED数码管动态显示数码管动态显示动态动态LEDLED显示显示例:
显示例:
显示“86”86”#includesbitLED1=P27;/十位十位sbitLED0=P26;/个位个位ucharcodedispcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;voidmain(void)/主程序主程序ucharnum=86;while
(1)P1=dispcodenum/10;LED11;LED0=0;delayms(5);P1=dispcodenum%10;LED10;LED0=1;delayms(5);33独立式键盘独立式键盘键盘处理程序任务键盘处理程序任务:
*检查键盘是否有键被按下;检查键盘是否有键被按下;*确定被按键的键号确定被按键的键号,获取键号。
获取键号。
*硬件电路消除抖动或软件消除抖动。
硬件电路消除抖动或软件消除抖动。
按键抖动按键抖动10ms10ms“1”“0”释放抖动释放抖动1010msms+5v稳定闭合稳定闭合1.1.独立式键盘电路独立式键盘电路延时等待延时等待10ms仍有按键信号?
仍有按键信号?
Y有按键信号?
有按键信号?
NYN键盘处理键盘处理89c51P1.0P1.1P1.2/*-key.h头文件头文件功能:
三独立键处理函数功能:
三独立键处理函数-*/#ifndef_KEY_H_#define_KEY_H_#include#defineucharunsignedchar#defineUP0x01/定义键号定义键号#defineDOWN0x02#defineENTER0x03sbitUP_key=P10;/键引脚,改正键引脚,改正sbitDOWN_key=P11;sbitENTER_key=P12;/*-功能:
毫秒延时函数功能:
毫秒延时函数参数:
当晶振为参数:
当晶振为11.0592MHz时,时,x为为ms数,数,误差为误差为16us;x1000为为1秒秒-*/voiddelayms(unsignedintx)ucharj;while(x-)for(j=0;j123;j+);/*-功能:
功能:
获取键号获取键号返回:
返回:
key=键号键号1-3;key=0无键按下。
无键按下。
-*/ucharKeyscanNUM(void)ucharkey=0;/key=0无键按下无键按下UP_key=1;DOWN_key=1;ENTER_key=1;if(UP_key=0)delayms(10);if(UP_key=0)key=UP;elsekey=0;if(DOWN_key=0)delayms(10);if(DOWN_key=0)key=DOWN;elsekey=0;if(ENTER_key=0)delayms(10);if(ENTER_key=0)key=ENTER;elsekey=0;returnkey;#endif#includekey.h“sbitLED_RED=P32;/补充补充sbitLED_YELLOW=P33;sbitLED_GREEN=P34;/键处理子函数键处理子函数/功能:
按功能:
按UP键红灯亮,按键红灯亮,按ENTER键黄灯亮,键黄灯亮,/按按DOWN键绿灯亮,键绿灯亮,voidKeyProc(ucharkey)switch(key)caseUP:
LED_RED=0;LED_YELLOW=1;LED_GREEN=1;break;caseDOWN:
LED_RED=1;LED_YELLOW=0;LED_GREEN=1;break;caseENTER:
LED_RED=1;LED_YELLOW=1;LED_GREEN=0;break;独立键处理演示程序独立键处理演示程序/*主程序主程序voidmain(void)ucharkey;while
(1)key=KeyscanNUM();if(key=UP|key=DOWN|key=ENTER)KeyProc(key);key=0;44行列式键盘模块行列式键盘模块独立式键盘只适合按键少的场合。
独立式键盘只适合按键少的场合。
按键较多时,常采用行列式键盘电路。
按键较多时,常采用行列式键盘电路。
行列式键盘的程序复杂,需采用键盘扫描技术。
行列式键盘的程序复杂,需采用键盘扫描技术。
常用的键盘扫描方式有:
常用的键盘扫描方式有:
扫描法、扫描法、反转法、反转法、状态矩阵法等。
状态矩阵法等。
本节只介绍(线)反转法本节只介绍(线)反转法Line-Reverse原理如图原理如图5.125.12。
反转法原理图反转法原理图反转法接线图反转法接线图先从先从P1口的高口的高4位输出低电平(列),位输出低电平(列),低低4位输出高电平(行);位输出高电平(行);即即P1=0x0f0;从从P1口读取键盘状态:
口读取键盘状态:
低低4位中只要有一位出现位中只要有一位出现“0”,说明此行中有键按下。
,说明此行中有键按下。
各行有键按下的数值依次为各行有键按下的数值依次为0EH000011100DH000011010BH0000101107H00000111步骤步骤1:
再从再从P1口的低口的低4位输出低电平(行),位输出低电平(行),高高4位输出高电平(列);位输出高电平(列);即即P1=0xf;从从P1口读取键盘状态:
口读取键盘状态:
高高4位中只要有一位出现位中只要有一位出现“0”,说明此行中有键按下。
,说明此行中有键按下。
各列有键按下的数值依次为各列有键按下的数值依次为E0H11100000D0H11010000B0H1011000070H01110000将两次读取的数值组合,得到将两次读取的数值组合,得到“键值的特征码键值的特征码”。
步骤步骤2:
步骤步骤3:
/*-4x4KEY.h头文件头文件功能:
对功能:
对4x4KEY.c函数的申明函数的申明-*/#ifndef_4x4KEY_H_#define_4x4KEY_H_#include#defineucharunsignedchar#defineKey_PortP1/定义键盘接口定义键盘接口/*-检测按键函数检测按键函数功能:
消抖后判断是否真正有键按下功能:
消抖后判断是否真正有键按下返回值:
返回值:
1有按键;有按键;0无按键无按键-*/ucharKey_Down(void);/*-获取键键号扫描函数获取键键号扫描函数返回键号(返回键号(0x000x0f);无按键返回无按键返回0xff;-*/ucharKey_Code(void);#endif/*-函数功能:
函数功能:
4x4KEY的驱动函数的驱动函数-*/#include4x4key.hvoiddelayms(uintx)/省略省略./判断是否有键按下函数,为判断是否有键按下函数,为Key_Down服务的函数服务
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 显示 键盘 操作 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)