【STM32学习】(14)两个74HC595控制四个数码管显示

76 篇文章 123 订阅
订阅专栏

74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用74HC595可以节约单片机mcu的io口资源,用3个io就可以控制8个数码管的引脚,他还具有一定的驱动能力,可以免掉三极管等放大电路,所以这块芯片是驱动数码管的神器.应用非常广泛。

74HC595引脚图

74HC595管脚功能

我选用的单片机型号为:STM32L052K8系列的低功耗芯片,其实与F4系列和F1系列都是一样使用。

下面来看一下接线:

可以从上图中清晰的看到与单片机的连线。

两个595通过级联的形式进行连接。

两个数码管为共阳极

那如何进行代码实现呢?

这样我们就可以写出595的驱动程序,如下:

/**********************************/
/** 函数名称:void HC595_Write_Data(unsigned char dis_data) **/
/** 输入参数:unsigned char dis_data 需要输入的数据  */
/** 函数功能:将数据写进74HC595中*/
/** ****************************** **/
void HC595_Write_Data(unsigned char dis_data)
{
	unsigned char i;
	unsigned char temp;
	temp = dis_data;
	for(i=0;i<8;i++)    //    循环将一个字节的八位依次写入到寄存器
	{
		HAL_GPIO_WritePin(SRCLK_GPIO_Port,SRCLK_Pin,GPIO_PIN_RESET);// 	SRCLK低电平
		if(temp & 0X80)
		{
			HAL_GPIO_WritePin(DATA_GPIO_Port,DATA_Pin,GPIO_PIN_SET);
		}
		else
		{
			HAL_GPIO_WritePin(DATA_GPIO_Port,DATA_Pin,GPIO_PIN_RESET);
		}
		temp = temp<<1;
		HAL_GPIO_WritePin(SRCLK_GPIO_Port,SRCLK_Pin,GPIO_PIN_RESET);	// 	SRCLK低电平
		HAL_GPIO_WritePin(SRCLK_GPIO_Port,SRCLK_Pin,GPIO_PIN_SET);		// 	SRCLK高电平
	}
}

/****************************************/
/**函数名称:void Disp_out(void)*/
/**函数参数:无参*/
/**函数功能:将写入到寄存器的数据输出到端口显示*/
/****************************************/
void Disp_out(void)
{
	HAL_GPIO_WritePin(RCLK_GPIO_Port,RCLK_Pin,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(RCLK_GPIO_Port,RCLK_Pin,GPIO_PIN_SET);
}

IO口初始化函数为:  都设置成推完输出,无上拉就行

static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, SRCLK_Pin|DATA_Pin, GPIO_PIN_SET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(RCLK_GPIO_Port, RCLK_Pin, GPIO_PIN_SET);

  /*Configure GPIO pins : SRCLK_Pin DATA_Pin */
  GPIO_InitStruct.Pin = SRCLK_Pin|DATA_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pin : RCLK_Pin */
  GPIO_InitStruct.Pin = RCLK_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(RCLK_GPIO_Port, &GPIO_InitStruct);

}

现在要动态显示1234

主函数代码为:

int main(void)
{
  
  MX_GPIO_Init();
  
  while (1)
  {
	
	HC595_Write_Data(0x01);	//	片选第一个数码管
	HC595_Write_Data(0x99);
	Disp_out(); 
	HAL_Delay(2);    //    延时2ms
	 
	 
	HC595_Write_Data(0x02);	//	片选第二个数码管
	HC595_Write_Data(0xb0);
	Disp_out(); 
	HAL_Delay(2);    //    延时2ms
	 
	
	HC595_Write_Data(0x04);	//	片选第三个数码管
	HC595_Write_Data(0xa4);	
	Disp_out();
	HAL_Delay(2);    //    延时2ms
	 
	
	HC595_Write_Data(0x08);	//	片选第四个数码管
	HC595_Write_Data(0xf9);	//	
	Disp_out();
	HAL_Delay(2);    //    延时2ms
  }

}

效果如图:

 

 

有一个小的提示:当有595级联的时候,如有两个快595级联。

HC595_Write_Data(0x01);	//	片选第一个数码管    先发的数据会级联到第二块595芯片中
HC595_Write_Data(0x99);    //    后发的这个数据才是第一块595芯片的数据
Disp_out();                 //    最后将数据传输到各自的端口,进行功能操作

   到这里就结束了,大家可以互相学习,提出建议。      

15.[STM32]一篇文章教会你使用75HC595芯片驱动四位数码管
依点_DW的博客
05-10 1万+
74HC595驱动四位数码管
stm32控制74h595驱动四位数码管
09-21
stm32控制74h595芯片驱动数码管显示,两片74h595采用级联,单片机节省引脚,供大家采纳
stm32 HC595驱动数码管
08-16
stm32利用HC595芯片驱动8段7位的数码管,程序简单易懂
基于STM32通过SN74HC595驱动4位数码管详细解析
最新发布
时光の尘的博客
09-09 2381
数码管的内部基本单元是发光二极管,数码管是发光器件之一,内部由七个条形发光二极管(a、b、c、d、e、f、g)和一个圆点发光二极管(dp)构成。按照数码管的公共接线不同,数码管又可分类为共阴极数码管和共阳极数码管两种,共阴极数码管的公共端接地,而共阳极数码管的公共端接电源。
stm32程序)74hc595驱动4位数码管程序
06-28
stm32程序)74hc595驱动4位数码管程序
STM32+2片74HC595驱动四位共阳极数码管
01-03
用的任何GPIO口都可以 只要送数据到你的全局变量就可以 四位共阳极如何要打小数点,只要在段码 & 0X7F就可以 程序思路清晰, 简单可靠
STM32学习记录——74HC595四位数码管显示
热门推荐
stm_white的博客
04-23 2万+
数码管显示前言一、数码管的分类二、使用步骤1.引入库2.读入数据总结 前言 数模管作为STM32的一个重要外设,由于其成本低、稳定,被用于许多场景中。 一、数码管的分类 数码管分为共阴数码管和共阳数码管 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarni
stm32采用HC595驱动四位数码管模块.rar
02-23
本资源是采用stm32驱动4位数码管双片hc595芯片,在网上买的参考例程只有51驱动例程、ardunio驱动例程,提供stm32驱动例程。
两个74HC595驱动共阳4位段选数码管
action20的专栏
01-11 2万+
74HC595-串入/串并出带锁存的移位寄存器,实在是灰常magic,用它来驱动8段数码管太方便了!除了静态驱动可无限串联的一位数码管,它还能用来动态驱动4位段选数码管,而且由于串入/串并出和锁存特性,动态驱动也能够不闪烁显示并无限串联。 原理图 (两个74HC595分别做段选和段显,数码管为0.56寸4位共阳SR410561N) PCB板 需不需要使用三极管? 74HC
STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)
XiaoCaiDaYong的博客
05-21 6958
我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.
硬件探索——STM32F4控制74HC595数码管
123-wqy的博客
07-28 3315
使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管 使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个GPIO,将其与数码管模块对应连接 程序中使用了延时函数,需要包含系统滴答定时器延时函数使用的头文件delay.h 头文件smg.h #ifndef __74HC595_H__ #define __74HC595_H__ #include "sys.h" #define DIGIT_NUM 4 /* SMG时钟端口、引脚定义 */ #define
两片74HC595控制8个数码显示
04-13
两块74HC595分别用来作为段码和片选,U1作为段码驱动(高电平有效),U2作为片选(低电平有效),程序中先发送高8位的片选码,然后发送低8位的段码,每发送一次只能显示以个数码管,通过延时防止闪烁,然后循环发送8次之后,正好8个数码管显示一遍。所以这是一个串行动态显示方式,要保持正常显示就必须定时调用显示程序。
多个74HC595级联
11-15
多个74HC595级联,用于扩展IO口。
单片机控制74HC595动态扫描数码管显示
08-10
【单片机控制74HC595动态扫描数码管显示】是一种常见的显示技术,用于在有限的IO资源下驱动多个数码管74HC595是一款8位串行输入、并行输出的移位寄存器和存储器芯片,具有三态输出功能,广泛应用于单片机系统中。 ...
基于51单片机的74HC164驱动六位数码管动态显示程序
sandform的博客
06-22 7383
基于51单片机的74HC164驱动六位数码管动态显示程序 有需要资料的请回原文下载 #include #include #define uchar unsigned char #define uint unsigned int //74HC164 sbit CLK=P1^0;        // μíμçƽμ&fr
使用74HC595驱动数码管动态显示实验
weixin_46799775的博客
04-11 1872
通过Vivado软件对驱动74HC595芯片进行数码管动态显示做了仿真验证。
stm32工程和算法分享(11)--74HC595驱动数码管之按键加减显示
li520_fei的博客
12-26 3469
74HC595驱动数码管之按键加减显示 所需材料: stm32核心板,74HC595,我这里使用的是共阳极四段数码管四个电阻(可有可无),按键,搭建电路所需物品等 1.CubeMX配置工程 按照 stm32工程和算法分享(10)–74HC595驱动数码管之静态显示配置完成后 ,新增两个按键配置,KEY_UP和KEY_DOWN 配置完成后生成代码 2.在main.c中添加代码,完成工程的编写 定义全局变量,和函数,在main函数的while中循环调用,按键处理函数和数码管函数通过一个全局变量 inde
stm32工程和算法分享(10)--74HC595驱动数码管之静态显示
li520_fei的博客
12-26 2793
所需材料: stm32核心板,74HC595,我这里使用的是共阳极四段数码管四个电阻(可有可无),搭建电路所需物品等 1.CubeMX配置工程 这里使用的是stm32最小系统核心板和自己搭建的小电路实现的。 CubeMX新建工程,选择芯片,配置时钟树,外部晶振以及调试接口。具体设置可参考使用cubemx配置stm32(二)__核心配置 然后按照下表配置A0 - A3 ,芯片74HC595的 DS RCK (STCP)SCK(SHCP), 配置完成后生成代码 2.在main.c中添
基于STM32F103C8T6的74HC595驱动8位数码管模块学习
凉风有信的博客
10-17 1万+
基于STM32F103C8T6的74HC595驱动8位数码管模块学习 相信很多玩STM32的小伙伴都用过数码管来做什么数字时钟、数字秒表、数字计数器等等数显的有趣好玩的东西;我这里就简单说明一下对数码管的理解和应用吧。先上图给大家看看我的数字字母滚动显示屏效果吧! 简要介绍 对于初学者来说,数码管是一个很简单却又不简单的东西,应用场景非常多,对于一些普通的数码管我了解到的大概有以下这些: 那...
74HC595四位数码管显示stm32f103库代码
05-19
以下是使用74HC595驱动四位数码管STM32F103库代码: ```c #include "stm32f10x.h" #define DATA_PIN GPIO_Pin_7 #define LATCH_PIN GPIO_Pin_6 #define CLOCK_PIN GPIO_Pin_5 void HC595_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DATA_PIN | LATCH_PIN | CLOCK_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void HC595_WriteByte(unsigned char data) { GPIO_ResetBits(GPIOB, LATCH_PIN); for (int i = 0; i < 8; i++) { if (data & 0x80) GPIO_SetBits(GPIOB, DATA_PIN); else GPIO_ResetBits(GPIOB, DATA_PIN); GPIO_SetBits(GPIOB, CLOCK_PIN); GPIO_ResetBits(GPIOB, CLOCK_PIN); data <<= 1; } GPIO_SetBits(GPIOB, LATCH_PIN); } void HC595_DisplayDigit(unsigned char digit, unsigned char position) { static const unsigned char digitCode[] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F, // 9 0x77, // A 0x7C, // b 0x39, // C 0x5E, // d 0x79, // E 0x71 // F }; unsigned char code = digit < sizeof(digitCode) ? digitCode[digit] : 0; code |= position << 6; HC595_WriteByte(code); } void HC595_DisplayNumber(unsigned int number) { unsigned char digit[4]; digit[3] = number % 10; digit[2] = (number / 10) % 10; digit[1] = (number / 100) % 10; digit[0] = (number / 1000) % 10; HC595_DisplayDigit(digit[0], 0); HC595_DisplayDigit(digit[1], 1); HC595_DisplayDigit(digit[2], 2); HC595_DisplayDigit(digit[3], 3); } ``` 使用方法: ```c int main(void) { HC595_Init(); while (1) { for (int i = 0; i < 10000; i++) { HC595_DisplayNumber(i); for (int j = 0; j < 100000; j++); } } } ``` 其中,`HC595_DisplayDigit`函数用于在指定位置显示一个数字,`HC595_DisplayNumber`函数用于在四个位置上分别显示一个数字。在`main`函数中,可以使用`HC595_DisplayNumber`函数不断循环显示数字。
写文章

热门文章

  • LCD1602芯片的使用——简单易懂 58900
  • 计算并输出给定正整数n的所有因子(不包括1和自身)之和 58507
  • C语言中putchar()函数的使用 50564
  • ESP8266 WIFI模块学习之路(3)——用手机APP进行功能控制LED灯 49966
  • 使用android studio环境新建一个工程——helloworld 48883

分类专栏

  • 工具使用 2篇
  • Java学习 1篇
  • C语言基础 47篇
  • 单片机c语言 76篇
  • android学习 6篇

最新评论

  • 【STM32学习】(17)STM32实现LCD12864显示 - 串行实现

    2301_80447963: 你好 请问一下能不能发一下你的原工程看看 因为我也是出现了这个问题无法解决

  • 【STM32学习】(28)STM32实现光照度采集(标准库和HAL库实现)

    將灬進酒丿: 之前实习做光照传感器,当时按着上一任敲的代码来弄,ADC读到值后那份代码咋处理我就咋处理,最后老板喊我们拿手机上那种光强软件来对比,最后我都不知到他那个处理值得依据是啥,报告得时候老板掏出了我们所有实习生手机来对比,发现各家手机同一位置测出来结果还不一样,直接想死

  • STM32实现MLX90614非接触测温串口显示(标准库与HAL库实现)

    Sui_Xin_L: 大佬,可以分享一下HAL库源码吗表情包表情包感谢🙏🏻1176395394@qq.com

  • 【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

    weixin_45848869: 膜拜大佬3330420494@qq.com

  • C语言实现浮点数或整数转成字符串

    CSDN-Ada助手: Java 技能树或许可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

最新文章

  • MSP430F149实现1.8寸TFT_LCD真彩屏显示
  • MSP430F149实现0.96寸OLED显示
  • C语言实现浮点数或整数转成字符串
2024年7篇
2023年9篇
2022年11篇
2021年14篇
2020年12篇
2019年23篇
2018年21篇
2017年15篇
2016年20篇

目录

目录

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小材大用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家枣强玻璃钢雕塑设计雕塑玻璃钢卡通造型深圳玻璃钢花盆采购景禾玻璃钢雕塑工艺品上海特色玻璃钢雕塑郑州佛像玻璃钢彩绘雕塑设计园林景观雕塑罗马柱玻璃钢雕塑淮安商场户外美陈苏州商场入口美陈优惠的玻璃钢艺术雕塑艺术玻璃钢雕塑报价江苏正宗玻璃钢雕塑推荐厂家临沧玻璃钢雕塑定做商场美陈外包玻璃钢卡通雕塑猪仔尺寸乐陵玻璃钢雕塑加工广西校园玻璃钢雕塑价格清远玻璃钢动物雕塑怎么样山东仿铜玻璃钢雕塑制作美国史泰龙玻璃钢雕塑太原玻璃钢雕塑介绍句容商场春节美陈做玻璃钢雕塑哪家实惠泡沫玻璃钢人物雕塑制造玻璃钢沙桌雕塑厂家商丘铸铜校园玻璃钢雕塑公司玻璃钢浮雕不锈钢公园雕塑厂石家庄玻璃钢香蕉雕塑玻璃钢雕塑彩绘用什么材料四川节庆商场美陈制作香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化