求 用基于单片机ADuC848 4*4矩阵键盘 LED数码管 实现计算器的功能的C程序 .原理图 硬件

2024-12-25 17:13:37
推荐回答(2个)
回答1:

uchar keyval()
{
uchar a,b,i;
b=0xfe;
for(i=0;i<4;i++) //i为行号
{
KEY=b;a=KEY;
if((a&0x10)==0) keynum=i*4; //第一列
if((a&0x20)==0) keynum=i*4+1; //第二列
if((a&0x40)==0) keynum=i*4+2; //第三列
if((a&0x80)==0) keynum=i*4+3; //第四列
b<<=1;b++;
}
SpeakContinue(1);
return (keynum);
}
/********************延时*********************/
void delay(uchar t)
{
uchar i=100;
while(t--)
{while(i--);}
}
void delay1(uchar time)
{
while(time--);
}
/*******************LCD驱动**************************/
//写控制字函数
void lcdcmd(uchar cmd)
{
RS=0;
RW=0;
DAT=cmd;
E=1;
_Nop();
_Nop();
E=0;
delay(2);
}
//写数据函数
void lcddata(uchar dat)
{ RS=1;
RW=0;
DAT=dat;
_Nop();
E=1;
_Nop();
_Nop();
E=0;
delay(2);
}
//LCD初始化函数
void lcdinit() //显示初始化
{
lcdcmd(0x38);
delay(2);
lcdcmd(0x38);
delay(2);
lcdcmd(0x38);
delay(2);
lcdcmd(0x01);
lcdcmd(0x06);
lcdcmd(0x0c);
}

回答2:

查看一下接口高低电平。 小键盘用矩阵键盘做输入。 逻辑判断超出范围发出提示音, 北京时间么,参考网上电子时间设计的程序。