#include
***it ser=P1^0;
***it rck=P1^2;
***it sck=P1^1;
unsigned char seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳段码
unsigned char no[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码
unsigned char num[8]={2,0,1,2,0,7,1,3}; //显示2012.07.13
unsigned char al;
unsigned int add;
/****************************************************************************** * *
延时函数 *
******************************************************************************/
/* 延时t毫秒 */
void delay_ms(unsigned int delaytime)
{
unsigned int i,j;
for(i=0;i
for(j=0;j<125;j++); /* 对于11.0592M时钟,约延时1ms */ } /****************************************************************************** * *
联级595数据传送函数 *
传送格式(位码,段码) * ******************************************************************************/
void send_595_data(unsigned char send_address,unsigned char send_data)
{
unsigned char i,j,temp0,temp1;
temp0=send_address;
temp1=send_data;
if((al==3)||(al==5)) //加小数点
{
if(add<300)
temp1&=0x7f;
}
for(i=0;i<8;i++) //传送位码
{
if(temp0&0x80)
ser=1;
else
ser=0;
temp0<<=1;
rck=0;
rck=1;
}
for(j=0;j<8;j++) //传送段码
{
if(temp1&0x80)
ser=1;
else
ser=0;
temp1<<=1;
rck=0;
rck=1;
}
sck=0;
sck=1; //产生上升沿,数据移位并行输出
sck=0; }
/****************************************************************************** *
* 主函数 * ******************************************************************************/
void main(void)
{
for(;;)
{
for(al=0;al<8;al++)
{
send_595_data(~no[7-al],seg[num[al]]); //显示2012.07.13 }
add++; if(add==600)
add=0;
}
}
}
这个就是了 |