74HC595芯片级联的测试万能代码

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

u8 SingalChoice[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//初始化3个信号线引脚
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);
}

//hc595选择  SH_CP【SCK】上升沿输入,输入一位往后移动一位
/*
  void HC595SendData(u8 data)
{
    u8 i;
    for(i=0; i < 8; i++)
    {
        if(data & 0x80) //判断data第八位是否为1 ,&与,有0为0
           MOSIO=1;    // 如果第八位是1,数据线高电平 1
        else
           MOSIO=0;    //否则,数据线低电平 0
        data = data << 1; //数据左移一位,将低位往高位移,通过if(data >> 7)判断低位是否为1
        
        S_CLK=1; //SCK时钟线高电平
        __NOP();
        __NOP();  //延时作用
        S_CLK=0; //SCK时钟线低电平
    }
//步骤3:ST_CP【RCK】产生一个上升沿,移位寄存器的数据移入存储寄存器  
    R_CLK=1;
    __NOP();
    __NOP();
    R_CLK=0;
}
*/

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();		   //初始化与LED连接的硬件接口
    KEY_Init();         	//初始化与按键连接的硬件接口
    coilSingalGpio_Init();
	  
	  LED0=0;					     //先点亮红灯
  // HC595SendData(SingalChoice[8]);  
	while(1)
	{
	key=KEY_Scan(1);	//得到键值0,1,2,3  //u8 KEY_Scan(u8 mode), mode==0不支持连续连按、 mode==1支持连续连按
	   if(key==1)
		 {
       for(i=0; i < 40; i++)
       {
        MOSIO=1;    // 数据线高电平 1 
        S_CLK=1;    //SCK时钟线低电平
		__NOP();
        __NOP();  //延时作用
		S_CLK=0; //SCK时钟线高电平
		/**  步骤3:ST_CP【RCK】产生一个上升沿,移位寄存器的数据移入存储寄存器  **/
         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);
     //HC595SendData(SingalChoice[8]); 
		 }
				 
    else if(key==2)
	{
       for(i=0; i < 40; i++)
       {
        MOSIO=1;    // 数据线低电平 0
        S_CLK=1;    //SCK时钟线低电平
		__NOP();
        __NOP();  //延时作用
		S_CLK=0; //SCK时钟线高电平
		/**  步骤3:ST_CP【RCK】产生一个上升沿,移位寄存器的数据移入存储寄存器  **/
         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);
     //HC595SendData(SingalChoice[8]); 
		 }
		 else {
        LED0=0;
	    delay_ms(100);
		 }
		 
	 }
}


你可能感兴趣的:(74hc595,单片机,stm32,嵌入式硬件)