本帖最后由 chen3220 于 2019-4-18 16:51 编辑
4*4矩阵按键数码管显示0-F字码
内容包含:keil+protues
适合刚接触单片机的同学;
有什么单片机的问题大家也可以留言评论!
4_4矩阵按键.rar
(199.88 KB, 下载次数: 63)
后期补充:4*4KEYPAD行扫描程序
- /**********************************************************
- 程序功能:4*4矩阵键盘按照行扫描的方式进行按键的确定
- 本程序适应上次正反转电平的方式进行确定按键的Protues仿真图
- ***********************************************************/
- #include<reg52.h> //头文件
- #define uchar unsigned char //宏定义
- #define uint unsigned int
- //0-F字码
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- void delay(uint z)
- {
- uint x,y;
- for(x=0;x<z;x++)
- for(y=0;y<123;y++);
- }
- void main(void)
- {
- while(1)
- {
- P1 = 0XF0;
- if(P1 != 0XF0)
- {
- delay(5);
- if(P1 != 0XF0)
- {
- P1 = 0xEF;
- if(P1 != 0xEF)
- {
- switch(P1)
- {
- case 0xEE:P2 = 0;P0 = table[0];while(P1 == 0XEE);break;
- case 0xED:P2 = 0;P0 = table[4];while(P1 == 0XED);break;
- case 0xEB:P2 = 0;P0 = table[8];while(P1 == 0XEB);break;
- case 0xE7:P2 = 0;P0 = table[12];while(P1 == 0XE7);break;
- }
- }
- P1 = 0xDF;
- if(P1 != 0xDF)
- {
- switch(P1)
- {
- case 0xDE:P2 = 0;P0 = table[1];while(P1 == 0xDE);break;
- case 0xDD:P2 = 0;P0 = table[5];while(P1 == 0xDD);break;
- case 0xDB:P2 = 0;P0 = table[9];while(P1 == 0xDB);break;
- case 0xD7:P2 = 0;P0 = table[13];while(P1 == 0xD7);break;
- }
- }
- P1 = 0xBF;
- if(P1 != 0xBF)
- {
- switch(P1)
- {
- case 0xBE:P2 = 0;P0 = table[2];while(P1 == 0xBE);break;
- case 0xBD:P2 = 0;P0 = table[6];while(P1 == 0xBD);break;
- case 0xBB:P2 = 0;P0 = table[10];while(P1 == 0xBB);break;
- case 0xB7:P2 = 0;P0 = table[14];while(P1 == 0xB7);break;
- }
- }
- P1 = 0x7F;
- if(P1 != 0x7F)
- {
- switch(P1)
- {
- case 0x7E:P2 = 0;P0 = table[3];while(P1 == 0x7E);break;
- case 0x7D:P2 = 0;P0 = table[7];while(P1 == 0x7D);break;
- case 0x7B:P2 = 0;P0 = table[11];while(P1 == 0x7B);break;
- case 0x77:P2 = 0;P0 = table[15];while(P1 == 0x77);break;
- }
- }
- }
- }
- }
- }
复制代码 这里不添加程序包了,这里我直接把程序贴出来,有想学习的同学可以直接复制下来贴到你自己建立的工程中,
这里的行扫描程序和上述程序包中的Protues是匹配的,可以直接替换新的HEX文件进行实验!
|