1、数码管显示 4X4 矩阵键盘按键号#include #define uchar unsigned char #define uint unsigned int /段码 uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00; sbit BEEP=P37; /上次按键和当前按键的序号,该矩阵中序号范围 015,16 表示无按键 uchar Pre_KeyNo=16,KeyNo=16; /延时 void DelayMS(uint x) ucha
2、r i; while(x-) for(i=0;i40x0f;/按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个仍为 1;高 4 位转移到低 4 位并异或得到改变的值switch(Tmp) /对 03 行分别附加起始值 0,4,8,12 case 1: KeyNo+=0;break; case 2: KeyNo+=4;break; case 4: KeyNo+=8;break; case 8: KeyNo+=12; /蜂鸣器 void Beep() uchar i; for(i=0;i100;i+) DelayMS(1); BEEP=BEEP; BEEP=0; /主程序 void main() P0=0x00; BEEP=0; while(1) P1=0xf0; if(P1!=0xf0) Keys_Scan(); /获取键序号 if(Pre_KeyNo!=KeyNo) P0=DSY_CODEKeyNo; Beep(); Pre_KeyNo=KeyNo; DelayMS(100);