設為***陽極七段數碼管;
char? segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //***陽極七段碼
char? bitCode[]={0x01,0x02,0x04,0x08,0x10,0x20} //***陽極6位位碼,高電平有效/***在指定位顯示數據***/
// m為待顯示的七段碼數據
// k為指定的位顯示數據
void show(char m,char k)
{? char dat;
dat = segCode[m];? // m=0,1,2,3,4,5,6,7,8,9
HC573(dat,1); ? //輸出段碼
dat = bitCode[k];? // k=0,1,2,3,4,5
HC573(dat,2); ? //輸出位碼
}
sbit segm = P2^6;? //段鎖存
sbit bitc = P2^7;? //位鎖存
/*** HC573 接收鎖存數據***/
void HC573(char dat,char nub)
{
P0=dat;
if(nub==1)
{ segm=1;segm=0;} ? //輸出段鎖存信號
if(nub==2)
{ bitc = 1;bitc = 0;}? //輸出位鎖存信號
}
bit intflag;
void main()
{ char times;
intflag=0;? times=5;
P1=0xff;
initime0() ; //初始化定時器0
while(1)
{? if(intflag)?
? { intflag=0 ;?
? show(times,0) ; // 因為僅有壹位顯示,不考慮位掃描問題
? times--;
? if(times==0) { times=5; P1=~P1; }
? }
}
}