#include <REGX52.H>
#include <INTRINS.H>
sbit WE = P2^7;
sbit DU = P2^6;
tabel[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char Keyvalue;
void Delay(xms) //@11.0592MHz
{
unsigned char i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
WE = 1;
P0 = 0xfe;
WE = 0;
DU = 1;
P0=0x00;
while(1)
{
if(P3!=0xf0)
{
Delay(10);
P3=0xf0;
if(P3!=0xf0)
{
switch(P3)
{
case 0xe0:Keyvalue=0;break;
case 0xd0:Keyvalue=1;break;
case 0xb0:Keyvalue=2;break;
case 0x70:Keyvalue=3;break;
}
P3=0x0f;
switch(P3)
{
case 0x0e:Keyvalue = Keyvalue;break;
case 0x0d:Keyvalue = Keyvalue+4;break;
case 0x0b:Keyvalue = Keyvalue+8;break;
case 0x07:Keyvalue = Keyvalue+12;break;
}
P0=tabel[Keyvalue];
}
}
}
}
« 返回
该程序展示了如何通过矩阵键盘来控制数码管的第一位显示0到f的字符。使用了REGX52.H和INTRINS.H库,通过定义WE和DU引脚进行数码管的写入操作。在主循环中不断检测矩阵键盘的状态,根据按键值更新显示内容,并通过Delay函数实现了延时处理。
6750

被折叠的 条评论
为什么被折叠?



