#include"STC12C5A.h"
unsigned char reg[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
sbit smg_sck = P0^4;
sbit smg_rck = P0^5;
sbit smg_rst = P0^6;
sbit smg_dat = P0^7;
void delay_ms(unsigned char time)
{
unsigned char t;
while(time--)
{
t=1500;
while(t--);
}
}
void sendbyte(unsigned char byte)
{
unsigned char i;
for( i=0;i<8;i++)
{
unsigned char temp;
temp=byte&(1<<i);
if(temp)
smg_dat=1;
else smg_dat=0;
smg_sck=0;
delay_ms(3);
smg_sck=1;
delay_ms(3);
}
smg_rck=0;
delay_ms(3);
smg_rck=1;
delay_ms(3);
}
void show(unsigned char num)
{
sendbyte(reg[num]);
}
void display(unsigned char dat)
{
show(dat/1000);
P0=(P0&0XF0)|1 ;
delay_ms(2);
show(dat%1000/100);
P0=P0&0XF0|2 ;
delay_ms(2);
show(dat%100/10);
P0=P0&0XF04|4 ;
delay_ms(2);
show(dat%10);
P0=P0&0XF0|8 ;
delay_ms(2);
}
void main ()
{
while(1)
{
unsigned char time,num=0;
P0=0X00;
smg_rst=0;
while(1)
{
num = (num+1)%10000; //动态显示0~9999
time = 2;
while(time--)
display(num) ;
}
}
}
最后数码管只显示到250,怎么回事?
|