完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
我选用的单片机型号为:STM32F103系列
74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数码管显示456,如何实现? 首先需要熟悉74LS595芯片的工作原理: 到这里就可以完成代码了: 代码完成分为标准库和HAL库 接线表设计:
1.标准库实现 /**************************************** 函数名称:void STM3210B_SEG_Init(void) 函数参数:无参 函数返回值:无 函数功能:IO的基本配置初始化 创建作者:王艇 创建时间:2021.5.21 联系方式: 修改作者: 修改时间: 修改说明: ****************************************/ void STM3210B_SEG_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); } /**************************************** 函数名称:void SEG_DisplayValue(u8 value1, u8 value2, u8 value3) 函数参数: u8 value1:取值范围为0-16 如输入0-9则显示0-9 如输入10-15,显示就是a-f,如输入16则表示数码管灭(不亮) u8 value2:取值范围为0-16 如输入0-9则显示0-9 如输入10-15,显示就是a-f,如输入16则表示数码管灭(不亮) u8 value3:取值范围为0-16 如输入0-9则显示0-9 如输入10-15,显示就是a-f,如输入16则表示数码管灭(不亮) 函数返回值:无 函数功能:数码管显示 创建作者:王艇 创建时间:2021.5.21 联系方式: 修改作者: 修改时间: 修改说明: ****************************************/ void SEG_DisplayValue(u8 value1, u8 value2, u8 value3) { u8 i = 0; // u8 code_tmp = 0; code_tmp = Seg[value3]; for(i=0;i<8;i++){ if(code_tmp & 0x80){ SER_H; }else{ SER_L; } SCK_H; code_tmp = code_tmp << 1; SCK_L; } code_tmp = Seg[value2]; for(i=0;i<8;i++){ if(code_tmp & 0x80){ SER_H; }else{ SER_L; } SCK_H; code_tmp = code_tmp << 1; SCK_L; } code_tmp = Seg[value1]; for(i=0;i<8;i++){ if(code_tmp & 0x80){ SER_H; }else{ SER_L; } SCK_H; code_tmp = code_tmp << 1; SCK_L; } RCLK_H; RCLK_L; } 2.HAL库实现 实现效果: 需要的可以留言,我发给你,互相学习共同进步!!!! |
||
|
||
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1856浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 20:47 , Processed in 1.170933 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号