/*段碼*/
unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/*位碼*/
unsigned char code T_COM[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit P_SRCLK=P4^3;//移動寄存器
sbit P_RCLK=P5^4;//存儲寄存器
sbit P_SER=P4^0;//串行輸入口
//我們首先定義一個函數
void Sent595_in(unsigned char dat){
unsigned int i=1;
for(i=1;i<=8;i++){
dat<<=1;
P_SER=CY;
P_SRCLK=1;
P_SRCLK=0;
}}
/*這個函數的作用是收到段碼或位碼dat后,8位二進制依次左移,溢出的數存儲在CY中直接賦值給串行輸入口P_SER,移動8次正好將8位二進制碼全部輸入.
然后移動寄存器上升沿有效給它一個高電平,
記得還原低電平.*/
//第二個函數
void Sent595_out(){
Sent595_in(T_COM[2]);
Sent595_in(smgduan[2]);
P_RCLK=1;
P_RCLK=0;
} |