74HC595芯片级联的测试万能代码【neneduck】
5片595测试代码
1 coil.h文件
#ifndef __COIL_H
#define __COIL_H
#include "sys.h"
#include "delay.h"
#define MOSIO PGout(6)
#define R_CLK PGout(7)
#define S_CLK PGout(8)
extern u8 SingalChoice[];
void coilSingalGpio_Init(void);
void HC595SendData(u8 data);
#endif
2.coil.c文件
#include<coil.h>
u8 SingalChoice[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void coilSingalGpio_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
GPIO_Init(GPIOG,&GPIO_InitStructure);
GPIO_ResetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
}
3.main.c文件
#include "stm32f10x.h"
#include "coil.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "usmart.h"
int main(void)
{
u8 i;
u8 j;
vu8 key=0;
delay_init();
LED_Init();
KEY_Init();
coilSingalGpio_Init();
LED0=0;
while(1)
{
key=KEY_Scan(1);
if(key==1)
{
for(i=0; i < 40; i++)
{
MOSIO=1;
S_CLK=1;
__NOP();
__NOP();
S_CLK=0;
R_CLK=1;
__NOP();
__NOP();
R_CLK=0;
}
LED0=!LED0;
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
}
else if(key==2)
{
for(i=0; i < 40; i++)
{
MOSIO=1;
S_CLK=1;
__NOP();
__NOP();
S_CLK=0;
R_CLK=1;
__NOP();
__NOP();
R_CLK=0;
}
LED0=!LED0;
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
}
else {
LED0=0;
delay_ms(100);
}
}
}