1、/*远程 116*2012.sunmer*双 74HC595 级联,驱动 8 位动态数码管,*/#include sbit ser=P10;sbit rck=P12;sbit sck=P11;unsigned char seg10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/共阳段码 unsigned char no8=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;/位码 unsigned char num8=2,0,1,2,0,7,1,3;/显示 2012.07.1
2、3 unsigned char al;unsigned int add;/*延时函数*/*延时 t 毫秒*/void delay_ms(unsigned int delaytime)unsigned int i,j;for(i=0;idelaytime;i+)for(j=0;j125;j+);/*对于 11.0592M 时钟,约延时 1ms*/*联级 595 数据传送函数*传送格式(位码,段码)*/void send_595_data(unsigned char send_address,unsigned char send_data)unsigned char i,j,temp0,temp1
3、;temp0=send_address;temp1=send_data;if(al=3)|(al=5)/加小数点 if(add300)temp1&=0 x7f;for(i=0;i8;i+)/传送位码 if(temp0&0 x80)ser=1;else ser=0;temp0=1;rck=0;rck=1;for(j=0;j8;j+)/传送段码 if(temp1&0 x80)ser=1;else ser=0;temp1=1;rck=0;rck=1;sck=0;sck=1;/产生上升沿,数据移位并行输出 sck=0;/*主函数*/void main(void)for(;)for(al=0;al8;al+)send_595_data(no7-al,segnumal);/显示 2012.07.13 add+;if(add=600)add=0;