Để mở rộng dùng HC595 vừa tiết kiệm số chân
Chương trình:
#define DATA1_ON GPIO_SetBits(GPIOB ,GPIO_Pin_7)
#define SCK1_ON GPIO_SetBits(GPIOB ,GPIO_Pin_9)
#define SCL1_ON GPIO_SetBits(GPIOB ,GPIO_Pin_8)
#define DATA1_OFF GPIO_ResetBits(GPIOB , GPIO_Pin_7)
#define SCK1_OFF GPIO_ResetBits(GPIOB , GPIO_Pin_9)
#define SCL1_OFF GPIO_ResetBits(GPIOB , GPIO_Pin_8)
void SEND_595(unsigned char x,unsigned char x2)
{
int i,temp,temp1;
for(i=0;i<8;i++)
{
temp=x;//gan bien
temp=temp&0x80;//lay ra bit dau tien (bit 7)
if(temp==0x80)//so sanh bit
DATA1_ON ; //bang 1 thi xuat vao chip =1
else
DATA1_OFF; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK1_OFF; //tao xung tren chan 11
SCK1_ON ; //1 xung dua vào 1 bít
}
for(i=0;i<8;i++)
{
temp1=x2;//gan bien
temp1=temp1&0x80;//lay ra bit dau tien (bit 7)
if(temp1==0x80)//so sanh bit
DATA1_ON ; //bang 1 thi xuat vao chip =1
else
DATA1_OFF; //nguoc lai bang 0
x2*=2; //dich bit lay bit trong so thap
SCK1_OFF; //tao xung tren chan 11
SCK1_ON ; //1 xung dua vào 1 bít
}
SCL1_OFF; //xuat du lieu ra output
SCL1_ON;
}