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<coil.h>

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);
		 }
		 
	 }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 74hc595是一种集成电路芯片,也是一种移位寄存器。它含有8个输出引脚,可以控制外部设备,比如LED灯。这些输出引脚可以使用三线串行接口进行控制。在移位寄存器中,数据可以被逐位地移动,直到到达所需的位置。当达到目的地时,数据被存储在芯片中,以供后续使用。这个操作过程被称为“串行数据输入”。 要使用74hc595芯片,首先需要使用“串行数据输入”来输入数据。然后使用“输出存储器寄存器”将数据从芯片中取出。可以通过自由选择输出引脚来控制外部设备。这样就可以非常方便地控制大量 LED 灯条或其他存储芯片。 使用74hc595芯片需要注意一些问题。首先,在使用时需要正确接线,确保数据正确传递和处理。还需要根据具体的使用情况合理安排输入数据的时序,保证数据能够在正确的时刻传输。另外,需要根据数据特点和目标设备的要求来设定寄存器。这些细节方面需要仔细考虑,以确保74hc595芯片能够正常工作。 总之,74hc595芯片是一种非常有用的集成电路芯片,适用于控制LED灯、存储器等外部设备。使用74hc595芯片需要谨慎、认真地处理各种细节问题,以确保成功实现相应的功能。 ### 回答2: 74HC595芯片是一种串行输入并行输出的移位寄存器。它由8个输出端口和3个输入端口组成,其中,一个输入端口为时钟信号,另外两个为数据信号和存储信号。74HC595芯片具有高速处理能力和低功耗特点,在很多数字电路和控制系统中得到广泛应用。 通过输入数据端口,可以通过串行方式向芯片中输入8位二进制数据,然后通过时钟信号将这8位数据依次移动到8个输出端口中的8个寄存器中。当移位完成后,就可以通过存储信号将所存储的8位数输出到8个输出端口中。这种移位操作可以实现多路开关控制、数字显示控制、数码管驱动等功能。 在使用74HC595芯片时,需要特别注意电压、电流等参数,并且需要合理配置芯片布局和电路连接。同时,应该按照数据手册中的指示进行编程和操作,以保证芯片能够正常工作。由于该芯片具有高效、可靠、易扩展的特点,因此在嵌入式系统、数字电路控制等领域广泛应用,可以帮助用户实现各种复杂控制和处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值