电路图
总图
部分图1
部分图2
部分图3
元件清单
C语言程序
#include
#define uint unsigned int
#define uchar unsigned char
//共阳数码管编码表&LED灯
uchar code table[] =
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
//函数声明
void delay(uint time); //延时函数
void display(uchar k); //数码管显示0-F以及LED灯的亮灭
uchar getKey(); //读取键盘的数值
//主程序
void main(){
uchar keyValue;
while(1){
keyValue = getKey(); //读取键盘值
display(keyValue); //数码管显示&LED亮灭
}
}
void delay(uint time)
{
uint i,j;
for(i = 0; i for(j = 0; j<110; ++j);
}
void display(uchar k)
{
P0 = table[k];
P1 = table[k];
}
uchar getKey()
{
uchar x , y ;
uchar result;
// 计算行数X的值
P2 = 0x0f; // 从P2口输出,写P2口
if (P2 != 0x0f)// 从P2口输入,P2口
{
// 读出的不是0x0f说明有按键被按下
delay(20);
// 判断在哪一行
switch (P2)
{
case 0x0e: x = 0; break;
case 0x0d: x = 1; break;
case 0x0b: x = 2; break;
case 0x07: x = 3; break;
default: break;
}
delay(10);
// 计算列数y的值
P2 = 0xf0;
if (P2 != 0xf0)
{
delay(20);
switch (P2)
{
case 0xe0:y = 0; break;
case 0xd0: y = 1; break;
case 0xb0: y = 2; break;
case 0x70: y = 3; break;
default: break;
}
// 计算出结果,确定数码管显示的数字以及字母与LED的亮灭
}
}
result = x * 4 + y;
return result;
}