1、课程名称 单片机原理及应用 实验名称 数码管显示 4*4 矩阵键盘按键号实验内容:按下任意键时,数码管都会显示其按键的序号,扫描程序首先判断按键发生在那一列,然后根据所发生的行附加不同的值,从而得到按键的序号。实验步骤:1. 根据以下电路图,在 Proteus 中找到相应元器件并接线。元器件:AT89C51 、button 、cap、res、sounder、respack-8、7SEG-COM-BLUE、CRYSTAL,分别放入开关、红色 LED 灯、电阻。2. 在 Keil 中新建工程,添加 C51 文件,设置生成 Hex 文件。具体的程序如下:#include /数码管段码表,共阳极段码表
2、,实际电路用的共阴极数码管unsigned char code disp_buff = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00;/上次按键和当前按键序号,该矩阵中序号范围 0-15,16 表示无按键unsigned char pre_keyno = 16,keyno = 16;/延时函数void delayms(unsigned int x)unsigned char i;while(x-)for(i = 0;i 4 0x0f;/对 0-3 行分别附件起始值swit
3、ch(i)case 1: keyno += 0;break;case 2: keyno += 4;break;case 4: keyno += 8;break;case 8: keyno += 12;break;/ 主函数void main(void)P0 = 0x00;while(1)P1 = 0xf0;if(P1 != 0xf0) /扫描键盘获得按键序号key_scan(); if(pre_keyno != keyno)P0 = disp_buffkeyno; /显示,共阳极段码取反作为共阴极段码pre_keyno = keyno;delayms(100);实验效果:当按下 K1 时,数码管显示数字 1:当按下 KF 时,数码管显示字符 F: