历史上的今天
返回首页

历史上的今天

今天是:2024年09月09日(星期一)

正在发生

2021年09月09日 | 基于STM32F0xx单片机的74HC595驱动程序

2021-09-09 来源:eefocus

74HC595.c源文件


#include "74HC595.h"


void LED595Init(void)

{                

   GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOC , ENABLE);

   //Data Pin

// GPIO_InitStructure.GPIO_Pin = LED595_DATA_PIN;

//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

//   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

//   GPIO_Init(LED595_DATA_PIN, &GPIO_InitStructure);

   //Clk Pin

GPIO_InitStructure.GPIO_Pin = LED595_CLK_PIN;

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

   GPIO_Init(LED595_CLK_PORT, &GPIO_InitStructure);

   //Latch Pin

GPIO_InitStructure.GPIO_Pin = LED595_LATCH_PIN | LED595_DATA_PIN;

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

   GPIO_Init(LED595_LATCH_PORT, &GPIO_InitStructure);

}


/**

  * @brief  将输入的数据输出到74HC595的引脚.

  * @param  Input 1 byte data.

  * @retval None.

**/

void LED595SendData(unsigned char OutData)

{

    unsigned char i; //发送数据时做循环使用临时变量

    for(i=0; i<8; i++) //将8位数据按位发送,先发送高字节后发送低字节

    {

        LED595_CLK_RESET;//时钟线低电平

        if( (OutData & 0x80) == 0x80)//判断数据高低位

        {

            LED595_DATA_SET;                   //数据线高电平

        }

        else

        {

             LED595_DATA_RESET;          //数据线低电平

        }

        OutData = OutData << 1;         //数据左移1位

        LED595_CLK_SET;                 //时钟线高电平

    }

    //上升沿输出数据

    LED595_LATCH_RESET;  

    LED595_LATCH_SET;

}


74HC595.h头文件


//74HC595口线定义宏定义.当驱动74HC595引脚改变时,只需更改底层引脚宏定义即可


#ifndef __74HC595_H

#define __74HC595_H


#include "stm32f0xx.h"

//#include "stm32f0xx_gpio.h"


#define    LED595_DATA_PORT     GPIOC

#define    LED595_DATA_PIN      GPIO_Pin_8

#define    LED595_CLK_PORT      GPIOA

#define    LED595_CLK_PIN       GPIO_Pin_12

#define    LED595_LATCH_PORT    GPIOC

#define    LED595_LATCH_PIN     GPIO_Pin_12

//74HC595口线高低电平宏定义

#define    LED595_DATA_SET      GPIO_SetBits(LED595_DATA_PORT,LED595_DATA_PIN)

#define    LED595_DATA_RESET    GPIO_ResetBits(LED595_DATA_PORT,LED595_DATA_PIN)

#define    LED595_CLK_SET       GPIO_SetBits(LED595_CLK_PORT,LED595_CLK_PIN)

#define    LED595_CLK_RESET     GPIO_ResetBits(LED595_CLK_PORT,LED595_CLK_PIN)

#define    LED595_LATCH_SET     GPIO_SetBits(LED595_LATCH_PORT,LED595_LATCH_PIN)

#define    LED595_LATCH_RESET   GPIO_ResetBits(LED595_LATCH_PORT,LED595_LATCH_PIN)


void LED595Init(void);

void LED595SendData(unsigned char OutData);

#endif


main函数调用


LED595SendData(0x00);

Delay_Ms(1000);

LED595SendData(0xff);

Delay_Ms(1000);

推荐阅读

史海拾趣

FUJIKURA公司的发展小趣事

FUJIKURA(株式会社藤仓)在电子及光纤通信行业中有着悠久而辉煌的发展历程。以下是五个关于FUJIKURA公司发展起来的相关故事,每个故事均基于事实描述,并尽量保持字数在500字以上:

1. 创立与早期发展

FUJIKURA公司成立于1885年,由藤仓善八先生创立,起初专注于发电机用的绢卷线制造。这一初创阶段为公司奠定了坚实的电线电缆制造基础。随着技术的不断积累,FUJIKURA逐渐扩展到更广泛的电气和电子领域,为公司的长期发展奠定了坚实的基础。

2. 技术创新与行业领导地位

在多年的发展中,FUJIKURA始终致力于技术创新,不断推出具有行业影响力的新产品。特别是在光纤通信领域,FUJIKURA凭借其强大的研发能力和技术实力,成为了全球领先的光纤通信产品研发与生产商。公司不仅在光纤制造方面取得了显著成就,还在光纤熔接、光数据传输等领域拥有多项专利技术,推动了整个行业的发展。

3. 全球化战略与市场拓展

随着全球市场的不断开放和竞争的加剧,FUJIKURA积极实施全球化战略,通过设立海外分支机构、与当地企业合作等方式,不断拓展海外市场。目前,FUJIKURA的商务与服务网络已经覆盖全球多个国家和地区,为全球客户提供优质的产品和服务。这一战略不仅提升了公司的国际影响力,还为公司带来了更多的商业机会和发展空间。

4. 企业文化与团队建设

FUJIKURA注重企业文化的建设和团队精神的培养。公司秉承“向客户提供价值”的企业理念,致力于为员工创造一个积极向上、团结协作的工作环境。通过定期的培训、团队建设活动等方式,FUJIKURA不断提升员工的综合素质和团队协作能力,为公司的持续发展提供了有力的人才保障。

5. 应对挑战与持续发展

面对全球经济大萧条等严峻挑战,FUJIKURA展现出了强大的韧性和适应能力。公司全体员工团结一致,以共享目标和积极态度应对挑战,将危机视为机遇。通过实施“第三次创业”和企业文化改革等措施,FUJIKURA不仅成功度过了难关,还实现了持续稳健的发展。未来,FUJIKURA将继续秉持顾客价值创造的理念,积极应对社会需求,为实现赢得客户信赖的承诺而努力。

Fenfa Electronics Ltd公司的发展小趣事

作为一家有社会责任感的企业,Fenfa Electronics Ltd公司始终关注环境保护和社会公益。公司积极推动绿色生产和可持续发展战略,致力于减少生产过程中的能耗和排放。同时,Fenfa还积极参与各种社会公益活动,为当地社区和弱势群体提供帮助和支持。这些举措不仅提升了公司的社会形象,也为公司的可持续发展注入了新的动力。

Hifn Inc公司的发展小趣事

Fenfa Electronics Ltd公司自创立之初,就深知技术创新的重要性。在公司成立初期,面对市场上激烈的竞争,Fenfa团队决定投入大量资源于研发领域。经过数年的不懈努力,公司成功研发出一款具有革命性的电子产品,该产品以其高效能、低能耗和出色的用户体验迅速在市场上崭露头角。这一技术创新的突破,为Fenfa Electronics Ltd公司赢得了市场的认可,也为公司后续的发展奠定了坚实的基础。

Cygnal Integrated Products Inc公司的发展小趣事

随着市场的不断变化和技术的不断进步,Cygnal意识到需要持续创新以保持竞争力。因此,公司投入大量资源进行研发,成功开发出了基于32位架构的新型微控制器。这款微控制器不仅性能强大,而且功耗极低,非常适合用于便携式设备和物联网应用。这一技术突破使Cygnal在行业中获得了领先地位。

Harbour Industries公司的发展小趣事

背景:进入21世纪后,电子行业进入了快速整合阶段,大型企业纷纷通过并购来扩大规模、增强实力。Handok也加入了这一行列,制定了积极的并购扩张战略。

发展:Handok通过精准的市场分析和战略评估,成功并购了几家在电子元器件和电子设备领域具有领先技术的中小企业。这些并购不仅为Handok带来了先进的技术和人才储备,还极大地拓宽了公司的产品线和服务范围。

影响:并购后的Handok实现了从单一产品向多元化产品线的转型,市场竞争力显著提升,为公司的长远发展奠定了坚实的基础。

A/D Electronics Inc公司的发展小趣事

A/D Electronics Inc在创立初期,以其卓越的技术研发团队在模拟到数字转换器(ADC)领域取得了重大突破。公司研发出一款高精度、低噪声的ADC芯片,这一创新产品迅速在市场中获得认可,为公司的初步发展奠定了坚实基础。随着技术的不断迭代,A/D Electronics Inc陆续推出了一系列高性能的电子产品,满足了市场对于高效、稳定电子元件的日益增长需求。

问答坊 | AI 解惑

南京小组DIY情人节礼物方案公布

基于TMS320F28027的语言录放模块的设计 文章介绍了这次活动中的关键模块(语音录放模块)的基本设计思路和整个系统的构架,通过一些实际参量的分析,计算,提高整个系统前期设计的可实现性,虽然这个模型还没有经过实际验证,相关的参考实例也比较少,但他 ...…

查看全部问答>

ADC/DAC专题学习之八——终结篇(设计问答)

Q: 公司的芯片上有一个16Bits的DAC,由于以前一直做Digital IC测试,对这个器件的测试原理没有概念,只知道INL、DNL、THD、SNR等参数的定义,不知道在实际的测试中怎样进行测试?那位高手做过此方面的测试,能否告诉那些参数是必测的,怎样测试? ...…

查看全部问答>

vxWorks 4G cf 分区

我有一个4G的CF卡作为vxWorks的启动盘,我想把它分成2个区,一个1G,第二个3G,请问该如何操作?怎么访问第二个分区? …

查看全部问答>

WinCE死机

为什么我用VS2008的VB编了一个时钟程序(智能设备应用程序),然后部署到WinCE 5.0上,程序跑一会自己就死机了。很奇怪。后来发现死机主要取决于Timer控件,1秒刷新一次,3分多钟后死机,如果1毫秒刷新一次,2秒后就死机。为什么?怎么解决?谢谢!…

查看全部问答>

VS2005基于智能设备的程序,对话框里的组控件里最多放置几个控件

用Vs 2005开发的VC 应用程序里,组控件里最多放几个控件变量啊?我的怎么放了八个就放不下别的了,确切的说是能放下但运行的时候 根本不显示,能不能更改一些设置,让组控件放的控件变多? …

查看全部问答>

小菜鸟刚入道 问问题 希望大家能帮助

在VS。NET 环境中使用WINCE模拟器 怎么建立 SQLCE 数据库啊??…

查看全部问答>

2010年底LED产业见分晓

LED灯饰产业已经大战三年多了,有的企业到现在发展的确实不错,新搬了大厂房,鸟枪换炮了,可是一些企业始终保持维持生存,也倒闭了一些厂,现在由其今年电子工业很火,把一些配套产业也拉了出来,这样火的背后是原材料涨价,而且以前不好销的元器 ...…

查看全部问答>

求救,关于CAN的两个接收FIFO的问题

各位前辈,香主,浪主,小弟在使用STM32的CAN时有一些问题:问题1:我所了解到的,每一个FILTER漏入的数据只能指定放在一个FIFO(0或1),而在应用中绝大多数的数据是从一个FILTER中漏入的,所以,都挤在FIFO0中,FIFO1没有什么用处,能不能把两个FIFO连 ...…

查看全部问答>

买arduino开发板有必要吗

虽然现成的arduino板功能很齐全,而且还配套了软件平台,做到硬件软件一体化,但我总觉得如果已经学会使用51单片机,就没必要买一块arduino板,毕竟很多功能可以DIY,一般的89S52单片机没有PWM输出等功能,但STC12系列的单片机同样有很强大的功能。 ...…

查看全部问答>