一天的堅持沒有白費了,呵呵。又一個模塊學會了,下午的時間利用了定時器編了一下數碼管的動態顯示程序,其實數碼管動態就是使單片機不斷地向數碼管輸送數據,使其速度極快地顯示內容,當然極快是快到人的眼睛分辨不出來它在送數據時的間隙,下面我把程序編了人的眼睛看得分辨出來的效果和程序寫出來一下。
程序如下:#include<reg52.h>
unsigned char wei[]={
0x00,
0x01,
0x02,
0x03,
0x04,
0x05,
0x06,
0x07
};//數碼管位的數據組
unsigned char duan[]={
0x06,
0x5b,
0x4f,
0x66,
0x6d,
0x7d,
0x07
};//數碼管段的數據組
int x,y;
void main()
{int a=0;
TMOD |= 0x01;//打開單片機計時工作方式
TMOD &= 0xfd;
TH0 = (65536-5000)/256;//賦初值
TL0 = (65536-5000)%256;
TR0 = 1;//定時器打開
while(1)
{
if(TF0==1)
{
TF0=0;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
a++;
if(a==1)
{
a=0;
P0 = wei[x];//位操作顯示
x++;
if(x==7)
x=0;
P1 = duan[y];//段操作顯示
y++;
if(y==7)
y=0;
}
}
}
}
在這里要聲明一下,我的開發板是P0.0 ,P0 .1 P0.2控制位操作的。P1口控制段選內容的。
當然這個程序如果把時間調快一點的話,我們看到的是數碼管顯示1至7的內容了。這就是數碼管動態顯示。加油。努力。相信我行的。