基于STM32F0xx单片机的74HC595驱动程序

发布者:Blissful5最新更新时间:2021-10-14 来源: eefocus关键字:STM32F0xx  单片机  74HC595  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

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

关键字:STM32F0xx  单片机  74HC595  驱动程序 引用地址:基于STM32F0xx单片机的74HC595驱动程序

上一篇:STM32F07xx单片机串口4配置
下一篇:STM32F07xx单片机串口1重映射配置

推荐阅读最新更新时间:2024-11-17 12:08

理解51单片机串口通信的波特率与USB转串口通信
串口通信的基本认识 通信分为并行通信和串行通信,并行通信时的数据各个位同时传送,可以实现字节为单位通信,但通信线多占用资源,成本高。以前用到的的P1=0x55,一次给P1口的8个管脚分别赋值,同时进行信号输出,类似于8个车道可以过去8辆车,这样的形式是并行的,一般称P0,P1,P2,P3为51单片机的4组并行总线。 串行通信,就是一个车道,一个只能通过一辆车,如果一个0x55这样一个字节的数据要传输过去的话,假如低位在前,高位在后的话,那发送方式是:0-1-0-1-0-1-0-1,一位一位的进行传输,要发送8次才能发送完一个字节 STC89C52有两个引脚是专门用来做串口通信的,一个是P3.0(RXD),一个是P3.1(TXD
[单片机]
理解51<font color='red'>单片机</font>串口通信的波特率与USB转串口通信
PIC16F877单片机在直流电机闭环调速系统中的应用
0引 言        现代工业生产中,电动机是主要的驱动设备,目前在电力拖动系统中已大量采用晶闸管(即可控硅)装置向电动机供电的KZ-D拖动系统,取代了笨重的发电动一电动机的F-D系统,又伴随着微电子技术的不断发展,中小功率直流电机采用单片机控制,调速系统具有频率高,响应快,本文论述了采用PIC16F877单片机作为主控制元件,充分利用了PIC16F877单片机捕捉、比较、模/数转换模块的特点作为触发电路,其优点是:结构简单,能与主电路同步,能平稳移相且有足够的移相范围,控制角可达10000步,能够实现电机的无级平滑控制,脉冲前沿陡且有足够的幅值,脉宽可设定,稳定性与抗干扰性能好等。       1 直流电机调速原理分析   
[工业控制]
pic单片机学习教材(一):接口设计
PIC单片机(Peripheral Interface Controller)是一种用来开发去控制外围设备的集成电路(IC)。现在PIC单片机应用领域已经相当广泛,为了方便广大工程师能够很好的学习PIC单片机,电子发烧友网整理了PIC单片机的相关知识应用,现在先带您学习下PIC单片机在接口设计中的应用吧。 一、SPI串行EEPROM与PIC单片机的接口设计 目前市场上有许多种单片机用在嵌入式控制系统设计中,这些嵌入式控制系统中的很大一部分都要用到非易失性存储器。由于串行EEPROM 具有封装尺寸小,存储容量灵活,对I/O 引脚要求低,和低功耗低成本等特点,已成为非易失性存储器的首选。 二、触摸传感器QST108与PI
[单片机]
pic<font color='red'>单片机</font>学习教材(一):接口设计
MSC51单片机交通灯程序
/*************************************************************** * 程序名称:MSC51单片机交通灯 晶振:12.00 P1口 * 实验对象:HC6800单片机学习开发板 * 单 片 机:AT89S52或STC89C52 时间:红绿灯各亮10s * * 更多的资料和程序共享请关注51hei.com ****************************************************************/ /#include reg52.h #define uchar unsigned char /*宏定义 */ #defin
[单片机]
51单片机学习——8.3--串口通信
串口通信原理 计算机串口通信基础 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 计算机通信 计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换 。可以分为两大类:并行通信与串行通信。 串行通信 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。 串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。 并行通信 并行通信
[单片机]
51<font color='red'>单片机</font>学习——8.3--串口通信
51单片机 超声波测距组件
/** * 超声波测距组件 * 文件名:ultrasonic.h */ #ifndef _ULTRASONIC_H #define _ULTRASONIC_H #define somenop(); { _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); } sbit TX = P1^0; //发射引脚 sbit RX = P1^1; //接收引脚 void tmr1_specialInit(); uint8_t ult_getDis(); #endif // _ULTRASONI
[单片机]
用89C2051单片机制作的电话回拨器
  该电话回拨器采用单片机控制,具有电路简单、接触可靠、使用方便等优点。   一、工作原理   电路见附图所示,系统由摘机,挂机电路、单片机拨号控制电路、DTMF号码产生及放大电路、电源电路等四部分组成,下面分别予以介绍   1.摘机/挂机电路   图中,J1为电话线进线插座,J2为该装置所并联的电话机插座,Rl为保险电阻;DI—D4为极性保护电路,用于将线路上极性不确定的电压转换成极性固定的电压,保证无论电话线的正负极如何连接,都能使进入开关管VI发射极的一端始终是正电压;V1是电子开关,该开关的通、断受单片机P3.7口控制,当P3.7为高电平时.V2、VI相继导通,电话线路上的48V电压通过VI加到R5两端,电话线上有
[单片机]
用89C2051<font color='red'>单片机</font>制作的电话回拨器
瑞萨MCU这几年的崛起之路
经常阅读我公公众号文章的小伙伴,应该看到了我今年分享关于瑞萨MCU的内容比较多。 再次,你会发现瑞萨电子这几年发展的比较迅猛,不管是线上还是线下的活动都特别多,还有不断涌现出新的MCU产品。 瑞萨MCU 我们先来说说我们接触最多的MCU,瑞萨MCU在这几年之中增加了多个系列、N个型号,可以说涵盖了低功耗、高性能、车规级、性价比等目前几乎市面上都有的各个领域的MCU。 我们先来看下官网目前在售的MCU情况: https://www.renesas.cn/zh/products/microcontrollers-microprocessors 目前有7大系列,包括: Cortex-M内核32位
[汽车电子]

推荐帖子

LM3S 系列单片机如何做到掉电检测
LM3S系列单片机如何做到掉电检测有没有具体文档说明!!!LM3S系列单片机如何做到掉电检测注意看器件手册,看该MCU是否带有片内电源电压检测器,注意要看具体型号的器件手册,如果没有可以外置。楼上你好LM3S308是有这个功能那要用什么方式来检测回复沙发chunyang的帖子原帖由zhong1214于2011-5-3017:23发表楼上你好LM3S308是有这个功能那要用什么方式来检测貌似一般是检测到掉电的时候,会发生一个中断,在中断里
zhong1214 微控制器 MCU
有源滤波器的Q值有什么意义?
《基于运算放大器和模拟集成电路的电路设计》一书中有源滤波器章节里提到了Q值,这个Q值越大,峰化越明显,可峰化同时也放大了增益。请问这个Q值到底有什么意义呢?有源滤波器的Q值有什么意义?Q越大带宽越窄做滤波器设计时可以用来调整通带外每倍频程的衰减速度,Q越大衰减越快,同时f0处幅度更加陡峭,相位突变更迅速;
3kone 模拟电子
wince能否在运行的时候再次加载display driver?
我知道有的驱动可以动态loadunload不知道displaydriver是否可以?怎样实现?wince能否在运行的时候再次加载displaydriver?你又开一个贴啊,顶一下了。估计做驱动的高手了解一些吧是啊,我不是做驱动的,只能顶一下。去看看PB的驱动帮助吧,可能会不行的!就这个问题我搞了好几天了!实在想不出怎么解决!!不行,显示驱动是built-in类型的,它是由GWES来调用,不能反复加载。我试过,不可以,或者说没成功。不行的,这和device.exe管理的驱动
MCU—杨博 WindowsCE
热烈祝贺STM32互联型产品STM32F105/107荣获2009年度EDNChina创新奖
继STM32在2009年度EDNChina创新奖评选活动中,荣获微处理器与DSP组的“最佳产品奖”之后,STM32的互联型产品STM32F105/107在2009年度EDNChina创新奖评选中,再拔头筹,荣获今年的微处理器与DSP组的“最佳产品奖”。详细情况请看:http://award.ednchina.com/year/2009.aspxhttp://award.ednchina.com/Product/Product_Detail.aspx?ProductId=801热
whl0808 stm32/stm8
为什么UWB可以进行精准测距,而蓝牙和WIFI不行?
UWB的测距原理是计算信号在空中的飞行时间,简单来说就是信号发送时间到接收的时间差,再减去对向设备处理的时间(对向设备会把处理时间放在数据包里传过来),然后用光速乘以最终计算的时间,这样就可以得到两个设备之间的距离。那蓝牙和WIFI按道理来说应该也是可以像这样操作来测距的才对,大家觉得为什么只有UWB能精准测距?为什么UWB可以进行精准测距,而蓝牙和WIFI不行?可能是因为蓝牙和Wi-Fi的测距方法有一些区别,导致其无法像UWB一样精准测距 感觉蓝牙和WIFI测距靠的是信号
wangerxian RF/无线
ARM处理器系统初始化过程
本问节选自《嵌入式系统Linux内核开发实战指南(ARM平台)》一书每次系统上电/复位启动时,处理器都处于一种最低性能即只有最基本功能的状态,此时它只能从复位向量地址处去读取指令,其他功能模块都处于禁止或者不可预知状态,而一旦处理器从复位向量地址位置读取到第一条指令开始执行,那么从软件的角度看,处理器和整个系统就开始进入了软件可控状态,系统下面的行为就由软件流程决定,软件要做的第一件事就是初始化整个系统。系统初始化的一般顺序为:1)禁止MMU,关闭中断,禁止cache;2)根据硬
hnzpzg ARM技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved