|
以下是選用stc15f2k60s2的芯片
少了一個矩陣按鍵,后續(xù)會補(bǔ)上
#include<stc15f2k60s2.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar yi,er,san,si,wu,liu,qi,ba;
void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);
void keyscan(void);
void delayms(uint ms);
void allint(void);
void main(void)
{
allint();
yi=1;er=2;san=3;si=4;wu=5;liu=6;qi=7;ba=8;
while(1)
{
keyscan();
display1(yi,er);
display2(san,si);
display3(wu,liu);
display4(qi,ba);
}
}
void allint(void)
{
P2 = 0X80;
P0 = 0XFF;
P2 = 0XA0;
P0 = 0X00;
P2 = 0XC0;
P0 = 0XFF;
P2 = 0XFF;
P0 = 0XFF;
}
void display1(uchar yi,uchar er)
{
P2 = 0XC0;
P0 = 0X01;
P2 = 0XFF;
P0 = tab[yi];
delayms(1);
P2 = 0XC0;
P0 = 0X02;
P2 = 0XFF;
P0 = tab[er];
delayms(1);
}
void display2(uchar san,uchar si)
{
P2 = 0XC0;
P0 = 0X04;
P2 = 0XFF;
P0 = tab[san];
delayms(1);
P2 = 0XC0;
P0 = 0X08;
P2 = 0XFF;
P0 = tab[si];
delayms(1);
}
void display3(uchar wu,uchar liu)
{
P2 = 0XC0;
P0 = 0X10;
P2 = 0XFF;
P0 = tab[wu];
delayms(1);
P2 = 0XC0;
P0 = 0X20;
P2 = 0XFF;
P0 = tab[liu];
delayms(1);
}
void display4(uchar qi,uchar ba)
{
P2 = 0XC0;
P0 = 0X40;
P2 = 0XFF;
P0 = tab[qi];
delayms(1);
P2 = 0XC0;
P0 = 0X80;
P2 = 0XFF;
P0 = tab[ba];
delayms(1);
}
void keyscan()
{
if(P30 == 0)
{
delayms(5);
if(P30 == 0)
{
yi = 0;
}
while(!P30);
}
else if(P31 == 0)
{
delayms(5);
if(P31 == 0)
{
er = 8;
}
while(!P31);
}
else if(P32 == 0)
{
delayms(5);
if(P32 == 0)
{
san = 10;
}
while(!P32);
}
else if(P33 == 0)
{
delayms(5);
if(P33 == 0)
{
si = 11;
}
while(!P33);
}
}
void delayms(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=845;j>0;j--);
}
|
|