单片机之八段数码管显示矩阵键盘数值
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case 0x0d:Cross=2;break;
case 0x0b:Cross=3;break;
case 0x07:Cross=4;break;
}
P1=0xf0;
DelayMS(1);
switch(P1&0xf0)
{
case 0xe0:Street=1;break;
case 0xd0:Street=2;break;
单片机之矩阵键盘与8段数码管显示
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
uchar tabnum[8];
void DelayMS(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<125;j++);
}
}
void display()
{
uint k;
P2=0x01;
for(k=0;k<7;k++)
{
P0=tab[tabnum[k]];
{
tabnum[m]=tabnum[m+1];
}
tabnum[7]=keynum;
}
display();
while(temp!=0x0f)
{
temp=P1;
temp&=0x0f;
}
}
}
case 0xb0:Street=3;break;
casΒιβλιοθήκη Baidu 0x70:Street=4;break;
}
P1=0x0f;
DelayMS(1);
key=4*(Cross-1)-1+Street;
return(key);
}
void main()
{
uchar keynum,temp,keyflag,m;
P1=0x0f;
DelayMS(1);
for(m=0;m<8;m++)
{
tabnum[m]=16;
}
while(1)
{
temp=P1;
temp&=0x0f;
if(temp==0x0f)
{
keyflag=0;
}
else
{
keyflag=1;
keynum=scankey();
}
if(keyflag==1)
{
for(m=0;m<7;m++)
DelayMS(1);
P2=P2<<1;
}
P0=tab[tabnum[7]];
DelayMS(1);
}
uchar scankey()
{
uchar key=16,Cross=0,Street=0;
P1=0x0f;
DelayMS(1);
switch(P1&0x0f)
{
case 0x0e:Cross=1;break;
case 0x0b:Cross=3;break;
case 0x07:Cross=4;break;
}
P1=0xf0;
DelayMS(1);
switch(P1&0xf0)
{
case 0xe0:Street=1;break;
case 0xd0:Street=2;break;
单片机之矩阵键盘与8段数码管显示
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
uchar tabnum[8];
void DelayMS(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<125;j++);
}
}
void display()
{
uint k;
P2=0x01;
for(k=0;k<7;k++)
{
P0=tab[tabnum[k]];
{
tabnum[m]=tabnum[m+1];
}
tabnum[7]=keynum;
}
display();
while(temp!=0x0f)
{
temp=P1;
temp&=0x0f;
}
}
}
case 0xb0:Street=3;break;
casΒιβλιοθήκη Baidu 0x70:Street=4;break;
}
P1=0x0f;
DelayMS(1);
key=4*(Cross-1)-1+Street;
return(key);
}
void main()
{
uchar keynum,temp,keyflag,m;
P1=0x0f;
DelayMS(1);
for(m=0;m<8;m++)
{
tabnum[m]=16;
}
while(1)
{
temp=P1;
temp&=0x0f;
if(temp==0x0f)
{
keyflag=0;
}
else
{
keyflag=1;
keynum=scankey();
}
if(keyflag==1)
{
for(m=0;m<7;m++)
DelayMS(1);
P2=P2<<1;
}
P0=tab[tabnum[7]];
DelayMS(1);
}
uchar scankey()
{
uchar key=16,Cross=0,Street=0;
P1=0x0f;
DelayMS(1);
switch(P1&0x0f)
{
case 0x0e:Cross=1;break;