#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar key_num;
void delay(uint x);
void init();
void scan();
void didi(uchar num);
void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6);
void main()
{
init();
while(1)
{
scan();
disp(key_num,2,3,4,5,6);
}
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TRISB=0xff;
TRISD=0;
TRISA=0;
TRISE0=0;
RE0=0;
PORTD=0;
PORTA=0;
}
void scan()
{
if(RB0==0)
{
delay(10);
if(RB0==0)
{
didi(1);
while(!RB0)
{
disp(key_num,2,3,4,5,6);
key_num=1;//PORTD=0x01;
}
}
}
if(RB1==0)
{
delay(10);
if(RB1==0)
{
didi(2);
while(!RB1)
{
disp(key_num,2,3,4,5,6);
key_num=2;//PORTD=0x02;}
}
}
}
if(RB2==0)
{
delay(10);
if(RB2==0)
{
didi(3);
while(!RB2)
{
disp(key_num,2,3,4,5,6);
key_num=3;//PORTD=0x04;
}
}
}
if(RB3==0)
{
delay(10);
if(RB3==0)
{
didi(4);
while(!RB3)
{
disp(key_num,2,3,4,5,6);
key_num=4;//PORTD=0x08;
}
}
}
}
void didi(uchar num)
{
uchar di_num;
for(di_num=num;di_num>0;di_num--)
{
RE0=1;
delay(50);
RE0=0;
delay(20);
}
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6)
{
PORTD=table[num1];//显示第一个数码管
PORTA=0x20;//0010 0000
delay(2);
PORTD=table[num2];//显示第二个数码管
PORTA=0x10;//0001 0000
delay(2);
PORTD=table[num3];//显示第三个数码管
PORTA=0x08;//0000 1000
delay(2);
PORTD=table[num4];//显示第四个数码管
PORTA=0x04;//0000 0100
delay(2);
PORTD=table[num5];//显示第五个数码管
PORTA=0x02;//0000 0010
delay(2);
PORTD=table[num6];//显示第六个数码管
PORTA=0x01;//0000 0001
delay(2);
}
- 1
- 2
前往页