学单片机这么久了,今天又时间把以前做过的电子表proteus仿真拿出来跟立志想学单片机的各位分享一下,希望能给予帮助。/********电子表源程序********/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num,a1,a2,a3,a4,a5,a6;
uchar code LED[]={
0xC0, //"0"
0xF9, //"1"
0xA4, //"2"
0xB0, //"3"
0x99, //"4"
0x92, //"5"
0x82, //"6"
0xF8, //"7"
0x80, //"8"
0x90, //"9"
};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void jisuan()
{
a1++;
if(a1==9)
{
a1=0;
a2++;
if(a2==6)
{
a2=0;
a3++;
if(a3==9)
{
a3=0;
a4++;
if(a4==6)
{
a4=0;
a5++;
if(a5==9)
{
a5=0;
a6++;
if(a6==2)
{
a6=0;
}
}
}
}
}
}
}
void display(uchar a1,uchar a2,uchar a3,uchar a4,uchar a5,uchar a6)
{
P2=0x01;
P0=LED[a6];
delay(5);
P2=0x02;
P0=LED[a5];
delay(5);
P2=0x04;
P0=0xb7;
delay(5);
P2=0x08;
P0=LED[a4];
delay(5);
P2=0x10;
P0=LED[a3];
delay(5);
P2=0x20;
P0=0xb7;
delay(5);
P2=0x40;
P0=LED[a2];
delay(5);
P2=0x80;
P0=LED[a1];
delay(5);
}
void timer()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
void init()
{
num=0;
a1=0;
a2=0;
a3=0;
a4=0;
a5=0;
a6=0;
}
void main()
{
init();
timer();
while(1)
{
if(num==20)
{
num=0;
jisuan();
delay(10);
}
display(a1,a2,a3,a4,a5,a6);
}
} |