/************************************************
跳線設置:默認跳線位
晶振:12M
本站的51hei單片機開發(fā)板的數(shù)碼管和發(fā)光管,都是用P0控制的,那么有沒有辦法,讓數(shù)碼管和led發(fā)光管同時顯示我們所設置的值呢,答案是肯定的,用定時器分時控制,顯示數(shù)碼管的時候,關掉發(fā)光管顯示發(fā)光管的時候 關掉數(shù)碼管,這是基本思路
下面這個程序就可以讓數(shù)碼管顯示數(shù)字變化,同時發(fā)光二極管做流水燈的實驗
************************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit duan=P2^6;
sbit wei=P2^7;
sbit P14=P1^4;
unsigned long disnum0;
uchar temp;
uint count,num1;
uchar c;
unsigned long disnum0=765432;
uchar code tabduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
display(uchar,uchar,uchar,uchar,uchar,uchar,uchar);
void delay(uint);
void main()
{
EA=1;
ET1=1;
TMOD=0X11;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
P14=0;
wei=0;
c=0xfe;
while(1)
{
if(count==20)
{ P14=1;
wei=0;
count=0;
disnum0--;
if(disnum0==765380)
TR1=0;
}
display(disnum0/100000,disnum0%100000/10000,disnum0%10000/1000,disnum0%1000/100,disnum0%100/10,disnum0%10);
if(num1==10)
{
wei=0;
P14=0;
num1=0;
P0=c;
c=_crol_(c,1);
delay(5);
}
}
}
void tim1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
}
void tim0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
display(uchar shiwan,uchar wan,uchar qian,uchar bai,uchar shi,uchar ge)
{P14=1;
P0=0xff;
wei=1;
wei=0;
P0=tabduan[shiwan];
duan=1;
duan=0;
P0=0xfb;
wei=1;
wei=0;
delay(1);
P0=0xff;
wei=1;
wei=0;
P0=tabduan[wan];
duan=1;
duan=0;
P0=0xf7;
wei=1;
wei=0;
delay(1);
P0=0xff;
wei=1;
wei=0;
P0=tabduan[qian];
duan=1;
duan=0;
P0=0xef;
wei=1;
wei=0;
delay(1);
P0=0xff;
wei=1;
wei=0;
P0=tabduan[bai];
duan=1;
duan=0;
P0=0xdf;
wei=1;
wei=0;
delay(3);
P0=0xff;
wei=1;
wei=0;
P0=tabduan[shi];
duan=1;
duan=0;
P0=0xbf;
wei=1;
wei=0;
delay(1);
P0=0xff;
wei=1;
wei=0;
P0=tabduan[ge];
duan=1;
duan=0;
P0=0x7f;
wei=1;
wei=0;
delay(1);
}
這個程序是一個會員編寫的,已經(jīng)在我們的板子上調試成功了,數(shù)碼管一邊倒計時,流水燈同時,其實是分時的,只是我們的眼睛有視覺暫留效應,看起來是同時進行的.進行我覺得這個程序很有參考價值所以給大家共享出來.