初级会员
- 积分
- 147
- 金钱
- 147
- 注册时间
- 2015-11-11
- 在线时间
- 29 小时
|
楼主 |
发表于 2015-11-15 22:08:52
|
显示全部楼层
#include<pic.h>
__CONFIG(0X3F39);
#define ucar unsigned char
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,};
char shi,ge,num,shu;
void delay(uint x);
void scan();
void init();
void disp(uchar shi,uchar ge);
void main()
{
init();
while(1)
{
scan();
if(num==4)
{
num=0;
TMR0=255;
shu++;
shi=shu/10;
ge=shu%10;
}
disp(shi,ge);
}
}
void init()
{
TRISB=0xff;//键盘为输入
TRISA=0;//数码管位选输出
TRISD=0;//段选
PORTA=0x30;//开位选0011 0000
PORTD=0x3f;//开段选,显示0
delay(1);
TMR0=255;//按4下+1,因为4分频
OPTION=0x21;//0010 0001
INTCON=0x0a;//1010 0000
TRISA4=1;
}
void scan()
{
if(RB0==0)
{
delay(10);
if(RB0==0)
{
while(!RB0);
RA4=0;
num++;
}
}
}
void disp(uchar shi,uchar ge)//数码管动态扫描
{
PORTD=table[shi];//显示第一个数码管
PORTA=0x20;//0010 0000
delay(2);
PORTD=table[ge];//显示第二个数码管
PORTA=0x10;//0001 0000
delay(2);
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
还没烧入,不过差不多就是这样了,按键按四下,两位显示的数码管加一 |
|