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()); } }
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !