51单片机结构简单,架构体系完备,学习资料丰富,应用领域广泛。通过对51单片机的学习,可帮助小白实现快速入门电子设计,理解电路系统工作原理,为高级嵌入式芯片的学习及开发打下坚实基础。
本篇描述
1、51+Proteus8.10;
2、学习矩阵键盘电路及驱动;
仿真设计
采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,真正实现了从概念到产品的完整设计。
软件设计
采用Keil作为软件设计工具。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
#include#define uchar unsigned char #define uint unsigned int #define KEY P1 uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F}; uchar KeyScan() { uchar Temp=0; uchar ucRow=0,ucLine=0; for(ucLine=0;ucLine<4;ucLine++) { KEY=uca_LineScan[ucLine]; Temp=KEY & 0x0F; if(Temp!=0x0F) { switch(Temp) { case 0x0E: ucRow=10;break; case 0x0D: ucRow=20;break; case 0x0B: ucRow=30;break; case 0x07: ucRow=40;break; default: ucRow=50;break; } break; } } KEY=0x0F; return ucRow+ucLine+1; } void KEY_CTRL(unsigned char KeyCode) { switch(KeyCode) { case 11:P2=0xff;P3=0x7f;break; case 12:P2=0xff;P3=0x3f;break; case 13:P2=0xff;P3=0x1f;break; case 14:P2=0xff;P3=0x0f;break; case 21:P2=0xff;P3=0x07;break; case 22:P2=0xff;P3=0x03;break; case 23:P2=0xff;P3=0x01;break; case 24:P2=0xff;P3=0x00;break; case 31:P3=0x00;P2=0x7f;break; case 32:P3=0x00;P2=0x3f;break; case 33:P3=0x00;P2=0x1f;break; case 34:P3=0x00;P2=0x0f;break; case 41:P3=0x00;P2=0x07;break; case 42:P3=0x00;P2=0x03;break; case 43:P3=0x00;P2=0x01;break; case 44:P3=0x00;P2=0x00;break; default:break; } } void main() { while(1) { KEY_CTRL(KeyScan()); } }
审核编辑:汤梓红
-
led
+关注
关注
242文章
23875浏览量
675312 -
单片机
+关注
关注
6068文章
45032浏览量
651956 -
Proteus
+关注
关注
79文章
1692浏览量
108778 -
51单片机
+关注
关注
277文章
5711浏览量
127706 -
矩阵键盘
+关注
关注
7文章
207浏览量
32164
原文标题:5051-矩阵键盘点亮对应LED
文章出处:【微信号:电子开发圈,微信公众号:电子开发圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
51单片机按键检测--独立按键与矩阵键盘

评论