《LED数码管显示矩阵键盘按键的设计.docx》由会员分享,可在线阅读,更多相关《LED数码管显示矩阵键盘按键的设计.docx(2页珍藏版)》请在三一办公上搜索。
1、LED数码管显示矩阵键盘按键的设计任务九设计说明 2 一、 电路原理及仿真图: 二、 程序设计:uchar key; void get uchar a; P1=0x0f; /按下按钮/ a=P10x0f; switch(a) /确定行/ case 1:key=0;break; case 2:key=4;break; case 4:key=8;break; case 8:key=12;break; case 0:key=16; #include #define uchar unsigned char uchar display=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d
2、,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40; P1=0xf0; a=P10xf0; switch(a) /确定列/ case 16:key=key+3;break; case 32:key=key+2;break; case 64:key=key+1;break; case 128:key=key+0; get; void main P0=display16; P0=displaykey; 程序完成两个功能,首先扫描键盘,检测是否有按键按下并计算键值。然后如果有按键按下则驱动数码管显示相应键值,否则显示”-“符号。 三、 设计说明 如电
3、路原理图所示,图中矩阵键盘和P3端口连接,共阳极数码管的段选端和单片机的P0口连接,位选直接接到高电平,使得数码管始终处于选通状态。系统启动后,单片机逐行扫描键盘,当没有按键按下时,驱动数码管显示“-”符号,当检测到有按键按下时,单片机将相应键值对应的数码编码送至P0端口,驱动数码管以十六进制方式显示被按下的按键的键值。 四、 遇到的问题 首先遇到的问题是系统启动后数码管没有任何显示,仔细查看仿真现象后发现P0口始终为高阻状态,于是怀疑是数码管极性错误。再检查数码管型号后发现果然使用了共阴极数码管,于是换成共阳极数码管后终于有了显示。其次是希望键值从键盘的左下角起始,即左下角键值为0。但由于对键盘的扫描方向理解的不是很透彻,导致调试了很多次,键值排列顺序都不尽人意。不过最终还是达到了设计要求。