#define uchar unsigned char #define uint unsigned int sbit SH_CP=P2^0; //移位时钟脉冲 sbit DS=P2^1; //串行数据输入 sbit ST_CP=P2^2; //输出锁存器控制脉冲 uchar temp;
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //延时
void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); }
//串行输入子程序 void In_595() { uchar i; for(i=0;i<8;i++) { temp<<=1;DS=CY; SH_CP=1; //移位时钟脉冲上升沿移位
}
}
_nop_();_nop_(); SH_CP=0;
//并行输出子程序 void Out_595() { ST_CP=0;_nop_(); }
ST_CP=1; _nop_(); ST_CP=0;
//上升沿将数据送到输出锁存器 //锁存显示数据
//主程序 void main() { uchar i; while(1) { for(i=0;i<10;i++) { temp=DSY_CODE[i]; In_595(); //temp中的一字节数据串行输入74HC595 Out_595(); //74HC595移位寄存数据传输到存储寄存器并出现在输出端 DelayMS(200); } } }