动态显示与按键消抖

上传人:wt****50 文档编号:49466204 上传时间:2018-07-28 格式:PPT 页数:44 大小:5.34MB
返回 下载 相关 举报
动态显示与按键消抖_第1页
第1页 / 共44页
动态显示与按键消抖_第2页
第2页 / 共44页
动态显示与按键消抖_第3页
第3页 / 共44页
动态显示与按键消抖_第4页
第4页 / 共44页
动态显示与按键消抖_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《动态显示与按键消抖》由会员分享,可在线阅读,更多相关《动态显示与按键消抖(44页珍藏版)》请在金锄头文库上搜索。

1、单击此处编辑母版标题样式三、IO应用 - LED数码管X 位X 段数码管单击此处编辑母版标题样式单击此处编辑母版标题样式 dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D08段LED,段码是按格式:如下图显示位段码位单击此处编辑母版标题样式dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0显示位段码位11000000 即为:0xC0LED数码管 显示“0”编码单击此处编辑母版标题样式dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0显示位段码位11111001即为:0xF9LED数码管 显示“1”编码单击此处编

2、辑母版标题样式七段共阳数码管显示数据表单击此处编辑母版标题样式LED数码管显示器的显示方法有两种:静态显示和动态扫描显示。(一)LED数码管的显示方法单击此处编辑母版标题样式LED静态显示 单击此处编辑母版标题样式例: 利用2位LED静态显示“12” 单击此处编辑母版标题样式#include unsigned char d1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void main() P0=0xff; P2=0Xff; while(1) P0=d11; /笔段码 P2=d12; /笔段码 思考:如是实现 显示完“12”延时一会儿

3、有显示“34”呢?单击此处编辑母版标题样式#include unsigned char d1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void delay(int m) unsigned int i,j; for (i=0; i unsigned char d1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void delay(int m) unsigned int i, j; for (i=0; i unsigned char d1= 0xc0,0xf9,0xa4,0xb0

4、,0x99,0x92,0x82,0xf8,0x80,0x90 ; unsigned char d2= 0xdf,0xef,0xf7,0xfb,0xfd,0xfe ; void delay ( int m) ; void main() unsigned char i; P0=0XFF; P2=0XFF; while(1) for (i=0; i void Delayms(unsigned char); /具体定义省略 void main(void) /main函数 P2_0 =1; /按键初始化,防止误读 while(1) /保证系统一直运行 if (P2_0=0) /如果有按键按下 Delay

5、ms(10); /延时去抖动if (P2_0 =0) /再次确认按键P2_7 = P2_7; while (P2_0 =0); /等待按键释放 单击此处编辑母版标题样式#include sbit LED = P2_7; sbit KEY = P2_0; void Delayms(unsigned char); void main(void) /main函数 KEY=1; /按键初始化 while(1) /死循环,保证系统一直运行 if (KEY=0) /如果有按键按下 Delayms(10); /延时去抖动if (KEY=0) /再次确认按键LED = LED; /将LED取反while (K

6、EY=0); /等待松开 单击此处编辑母版标题样式例2:键控花样流水灯单击此处编辑母版标题样式请大家思考,根据流程图采用C51编出任务程序! 下节课用带来检查,并计入平时成绩!单击此处编辑母版标题样式例2: 2位十进制按键计数器(0099)请大家思考,采用C51编出任务程序,并画出流程图!下节课用带来检查,并计入平时成绩!单击此处编辑母版标题样式单片机系统中,若使用按键较多时,通常采用 矩阵式键盘,其结构如下图所示。(二)矩阵按键( keyboard )单击此处编辑母版标题样式行列式键盘由图可知,一个44的行、列结构,可以构成一个含 有16个按键的键盘,节省了很多I/O口。 单击此处编辑母版标

7、题样式识别矩阵键盘按键的方法1、行扫描法; 2、线反转法单击此处编辑母版标题样式判断哪一行有键按下 写端口(0xf0):行线电平=0;列线电平=1。 读端口进行判断:若P1 = 0xf0没有按键压下;若P10xf0某行有键压下W1 判断哪一列有键按下 写端口(0x0f):行线电平=1;列线电平=0。 读端口进行判断:若P1 = 0x0f没有按键压下;若P1 0x0f某列有键压下W2 将W1与W2相“或” 并存于W(形成键值)闭合键所在行、列的状态均为0,其余皆为1。 利用查表比对法求出闭合按键的键模。 线反转法思路单击此处编辑母版标题样式vccP10P11P12P13P14P15P16P170

8、123456789101112131415AT89C51R1R2R3R4单击此处编辑母版标题样式P10P11P12P13P14P15P16P17012345678910111213141501230123AT89C51EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77 单击此处编辑母版标题样式单击此处编辑母版标题样式例1:矩阵键盘识别,利用LED来显示按键。单击此处编辑母版标题样式 #include unsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xF8,0x80,0x90,

9、0x88,0x83,0xC6,0xA1,0x86,0x8E; unsigned char w; void delay(); /申明函数 void key_scan(); void key_tran(); void main() P1=0XFF; /输入初始化 P0=0x00; /LED开始不亮 while(1) /保证系统一直运行 key_scan(); /键盘扫描程序 key_tran(); /键值译码并显示 单击此处编辑母版标题样式void key_scan() unsigned char w1,w2;P1=0x0F; w1=P1if(w1!=0x0F) delay(); /软件延时去抖动

10、P1=0xF0;w2=P1 w=(w1|w2); /求出相应的键值。 while(P1!=0xF0); /等待释放按键else w=0xFF; 单击此处编辑母版标题样式void key_tran() switch(w) case 0xEE: P0=table0;break; / LED显示0case 0xED: P0=table1;break; / LED显示1case 0xEB: P0=table2;break; / LED显示2case 0xE7: P0=table3;break; / LED显示3case 0xDE: P0=table4;break; / LED显示4case 0xDD:

11、 P0=table5;break; / LED显示5case 0xDB: P0=table6;break; / LED显示6case 0xD7: P0=table7;break; / LED显示7case 0xBE: P0=table8;break; / LED显示8case 0xBD: P0=table9;break; / LED显示9case 0xBB: P0=table10; break; / LED显示Acase 0xB7: P0=table11; break; / LED显示Bcase 0x7E: P0=table12; break; / LED显示Ccase 0x7D: P0=table13; break; / LED显示Dcase 0x7B: P0=table14; break; / LED显示Ecase 0x77: P0=table15; break; / LED显示Fdefault:break; 单击此处编辑母版标题样式Question & Answer 任何建议和疑问,请不要犹豫! 刘强:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号