stm32仿真 74hc238流水灯 数码管动态数字显示

请添加图片描述

f103c6t6a_hex文件

#include "main.h"![请添加图片描述](https://i-blog.csdnimg.cn/direct/8c0d44b121134cf08f5186df316ea07f.gif)#include "stdlib.h"void SystemClock_Config(void);
static void MX_GPIO_Init(void);
// 自定义abc引脚
#define A_PIN GPIO_PIN_1
#define B_PIN GPIO_PIN_2 
#define C_PIN GPIO_PIN_0 //y0到y7输出
void segment(char c){if(c == 'a'){GPIOB->BRR = A_PIN | B_PIN | C_PIN; }else if(c == 'b'){GPIOB->BSRR = A_PIN; GPIOB->BRR =  B_PIN | C_PIN; 
}else if(c == 'c'){GPIOB->BSRR = B_PIN; GPIOB->BRR =  A_PIN | C_PIN; 
}else if(c == 'd'){GPIOB->BSRR = A_PIN|B_PIN ; GPIOB->BRR =   C_PIN; 
}else if(c == 'e'){GPIOB->BSRR = C_PIN; GPIOB->BRR =  A_PIN | B_PIN; 
}else if(c == 'f'){GPIOB->BSRR = A_PIN| C_PIN; GPIOB->BRR =  B_PIN ; 
}else if(c == 'g'){GPIOB->BSRR =B_PIN| C_PIN; GPIOB->BRR = A_PIN ; 
}else if(c == 'p'){GPIOB->BSRR =A_PIN |B_PIN| C_PIN; 
}}char segment_list[]={'a','b','c','d','e','f','g','p'};
int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){for(int i=0;i<=7;i++){segment(segment_list[i]);HAL_Delay(500);}} }void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the CPU, AHB and APB busses clocks */RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB busses clocks */RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK){Error_Handler();}
}/*** @brief GPIO Initialization Function* @param None* @retval None*/
static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIOInitStruct = {0}; // 初始化 GPIO 结构体// 使能 GPIO 端口时钟__HAL_RCC_GPIOB_CLK_ENABLE();// 设置 GPIO 的通用配置GPIOInitStruct.Mode = GPIO_MODE_OUTPUT_PP;    // 设置为推挽输出模式GPIOInitStruct.Pull = GPIO_NOPULL;            // 不使用上拉或下拉GPIOInitStruct.Speed = GPIO_SPEED_FREQ_LOW;   // 设置为低速// 配置 GPIOB 端口的所有引脚GPIOInitStruct.Pin = GPIO_PIN_All; // 指定所有引脚HAL_GPIO_Init(GPIOB, &GPIOInitStruct); // 初始化配置}void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state *//* USER CODE END Error_Handler_Debug */
}#ifdef  USE_FULL_ASSERT

控制74hc238显示变化的数字
请添加图片描述

c6t6控制74hc238 hex文件

#include "main.h"
#include "stdlib.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
// 定义74hc238输入引脚
#define A_PIN GPIO_PIN_1
#define B_PIN GPIO_PIN_2 
#define C_PIN GPIO_PIN_0 // 数码管段码
const uint16_t num_to_segment[] = {0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};void segment(char c){//74HC238三位输入对应八位输出GPIOB -> BRR = GPIO_PIN_8;//E3拉低 关闭输出if(c == 'a'){GPIOB->BRR = A_PIN | B_PIN | C_PIN; }else if(c == 'b'){GPIOB->BSRR = A_PIN; GPIOB->BRR =  B_PIN | C_PIN; 
}else if(c == 'c'){GPIOB->BSRR = B_PIN; GPIOB->BRR =  A_PIN | C_PIN; 
}else if(c == 'd'){GPIOB->BSRR = A_PIN|B_PIN ; GPIOB->BRR =   C_PIN; 
}else if(c == 'e'){GPIOB->BSRR = C_PIN; GPIOB->BRR =  A_PIN | B_PIN; 
}else if(c == 'f'){GPIOB->BSRR = A_PIN| C_PIN; GPIOB->BRR =  B_PIN ; 
}else if(c == 'g'){GPIOB->BSRR =B_PIN| C_PIN; GPIOB->BRR = A_PIN ; 
}else if(c == 'p'){GPIOB->BSRR =A_PIN |B_PIN| C_PIN; 
}GPIOB -> BSRR = GPIO_PIN_8;//E3拉高 输出
HAL_Delay(1/100);//显示1ms
}void hc238_disnumber(int num){//74hc238显示数字for(int i7=0;i7<2;i7++){GPIOB->BSRR = GPIO_PIN_5|GPIO_PIN_6; //拉高公共端(阴极),关闭显示	int num_1 = num%10;num = num/10;if(i7==0){GPIOB->BRR = GPIO_PIN_6; //显示个位//HAL_Delay(1);//	break;
}
else{GPIOB->BRR = GPIO_PIN_5; //显示十位//HAL_Delay(1);//	break;
}
switch(num_1){case 0://显示0segment('a');segment('b');segment('c');segment('d');segment('e');segment('f');break;case 1://显示1segment('b');segment('c');break;case 2://显示2segment('a');segment('b');segment('g');segment('d');segment('e');break;case 3:segment('a');segment('b');segment('c');segment('d');segment('g');break;case 4:segment('b');segment('c');segment('f');segment('g');break;case 5:segment('a');segment('f');segment('c');segment('d');segment('g');break;case 6:segment('a');segment('c');segment('d');segment('e');segment('f');segment('g');break;case 7:segment('a');segment('b');segment('c');break;case 8:segment('a');segment('b');segment('c');segment('d');segment('e');segment('g');segment('f');break;case 9:segment('a');segment('b');segment('f');segment('c');segment('d');segment('g');break;}if (num==0){
break;
}}
}void display_number1(int n);//函数声明int main(void){SystemClock_Config();MX_GPIO_Init();
while (1)	//while (1){for(int i=0;i<=9;i++){for(int t=0;t<13;t++){//显示时间控制display_number1(i+50);//直连数码管数字显示hc238_disnumber(i*10);//控制74hc238显示数字}}} //while}//mainint p1;
int i1;void display_number1(int n1){for (i1=0;i1<2;i1++){GPIOA->BRR = GPIO_PIN_All;//清除GPIO端口A的所有引脚p1 = n1%10;//求余数,47%10=7,4%10=4GPIOA->ODR =num_to_segment[p1];//向gpioA端口写入段码n1 = n1/10;//进位,47/10=4GPIOA->BSRR = GPIO_PIN_11|GPIO_PIN_12; //共阴极拉高,清除显示switch(i1){case 0:GPIOA->BRR = GPIO_PIN_12; //个位break;case 1:GPIOA->BRR = GPIO_PIN_11; //十位break;}HAL_Delay(1);if (n1 == 0){break;}}}void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the CPU, AHB and APB busses clocks */RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB busses clocks */RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK){Error_Handler();}
}/*** @brief GPIO Initialization Function* @param None* @retval None*/
static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIOInitStruct = {0}; // 初始化 GPIO 结构体// 使能 GPIO 端口时钟__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();// 设置 GPIO 的通用配置GPIOInitStruct.Mode = GPIO_MODE_OUTPUT_PP;    // 设置为推挽输出模式GPIOInitStruct.Pull = GPIO_NOPULL;            // 不使用上拉或下拉GPIOInitStruct.Speed = GPIO_SPEED_FREQ_LOW;   // 设置为低速// 配置 GPIOA和B 端口的所有引脚GPIOInitStruct.Pin = GPIO_PIN_All; // 指定所有引脚HAL_GPIO_Init(GPIOB, &GPIOInitStruct); // 初始化B配置HAL_GPIO_Init(GPIOA, &GPIOInitStruct);// 初始化A配置 }void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state *//* USER CODE END Error_Handler_Debug */
}#ifdef  USE_FULL_ASSERT
/*** @brief  Reports the name of the source file and the source line number*         where the assert_param error has occurred.* @param  file: pointer to the source file name* @param  line: assert_param error line source number* @retval None*/
void assert_failed(uint8_t *file, uint32_t line)
{ /* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/71854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构型模式 - 代理模式 (Proxy Pattern)

结构型模式 - 代理模式 (Proxy Pattern) 代理模式是一种结构型设计模式&#xff0c;它允许通过代理对象来控制对另一个对象&#xff08;目标对象&#xff09;的访问。代理对象充当目标对象的接口&#xff0c;客户端通过代理对象间接访问目标对象。 分为两大类 静态代理&#…

网络层(IP)

基本概念 子网和局域网是一个概念主机: 配有 IP 地址, 也能进行路由控制的设备;路由器: 即配有 IP 地址, 又能进行路由控制;节点&#xff1a; 路由器和主机的统称。 背景 两主机并不是直接连接的&#xff0c;路径选择问题&#xff1f;为什么&#xff1f; 由网络层&#xff08…

JMeter性能问题

性能测试中TPS上不去的几种原因 性能测试中TPS上不去的几种原因_tps一直上不去-CSDN博客 网络带宽 连接池 垃圾回收机制 压测脚本 通信连接机制 数据库配置 硬件资源 压测机 业务逻辑 系统架构 CPU过高什么原因 性能问题分析-CPU偏高 - 西瓜汁拌面 - 博客园 US C…

创建型模式 - 建造者模式 (Builder Pattern)

创建型模式 - 建造者模式 (Builder Pattern) 建造者模式是一种创建型设计模式&#xff0c;它将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 需求描述 在游戏开发中&#xff0c;创建一个复杂的游戏角色&#xff0c;角色具有多种属性&…

代码随想录第二十天|二叉树part08--669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

刷题小记&#xff1a; 上期学习了二叉搜索树的插入和删除操作&#xff0c;这次学习如何按区间修剪二叉搜索树。还有两题&#xff0c;关于借助二叉搜索树的有序特性进行转换。 669.修剪二叉搜索树&#xff08;669.修剪二叉搜索树&#xff09; 题目分析&#xff1a; 给定一个…

Fisher信息矩阵(Fisher Information Matrix,简称FIM)

Fisher信息矩阵简介 Fisher信息矩阵&#xff08;Fisher Information Matrix&#xff0c;简称FIM&#xff09;是统计学和信息理论中的一个重要概念&#xff0c;广泛应用于参数估计、统计推断和机器学习领域。它以统计学家罗纳德费希尔&#xff08;Ronald Fisher&#xff09;的名…

【初阶数据结构】链表的柔光之美

目录 一、为什么需要链表&#xff1f; 二、链表与数组的对比 三、链表节点定义 四、链表基本操作 1. 创建链表 2. 插入节点 头插法&#xff08;时间复杂度O(1)&#xff09; 尾插法&#xff08;时间复杂度O(n)&#xff09; 3. 删除节点 4. 遍历链表 五、进阶操作 1. 反…

《论湖仓一体架构及其应用》审题技巧 - 系统架构设计师

软考论文写作框架 一、考点概述 “湖仓一体架构及其应用”这一论题&#xff0c;主要考察了考生对现代数据管理系统中湖仓一体架构的理解、应用及问题解决能力。随着5G、大数据、人工智能、物联网等技术的快速发展&#xff0c;企业数据的管理需求正发生深刻变化。传统的数据管…

MybatisPlus-扩展功能-枚举处理器

在Mybatis里有一个叫TypeHandler的类型处理器&#xff0c;我们常见的PO当中的这些成员变量的数据类型&#xff0c;它都有对应的处理器&#xff0c;因此它就能自动实现这些Java数据类型与数据库类型的相互转换。 它里面还有一个叫EnumOrdinalTypeHandler的枚举处理器&#xff0…

北京大学第二弹《DeepSeek提示词工程和落地场景》

大家好&#xff0c;我是吾鳴。 之前给大家分享过北京大学出品的DeepSeek教程《DeepSeek与AIGC应用》&#xff0c;今天吾鳴发现北京大学又出第二版教程了&#xff0c;教程的名称叫做《DeepSeek提示词工程和落地场景》&#xff0c;在此分享给大家。文末有完整版PDF下载地址。 教程…

deepseek自动化代码生成

使用流程 效果第一步&#xff1a;注册生成各种大模型的API第二步&#xff1a;注册成功后生成API第三步&#xff1a;下载vscode在vscode中下载agent&#xff0c;这里推荐使用cline 第四步&#xff1a;安装完成后&#xff0c;设置模型信息第一步选择API provider&#xff1a; Ope…

322.零钱兑换

class Solution(object):def coinChange(self, coins, amount):""":type coins: List[int]:type amount: int:rtype: int"""n len(coins) dp [float(inf)]*(amount 1) # 初始值为正无穷大dp[0] 0 # 一定要初始化为0if amount 0:return 0 …

ARM Cortex-M处理器中的MSP和PSP

在ARM Cortex-M系列处理器中&#xff0c;MSP&#xff08;主堆栈指针&#xff09;和PSP&#xff08;进程堆栈指针&#xff09;是两种不同的堆栈指针&#xff0c;主要用于实现堆栈隔离和提升系统可靠性。以下是它们的核心区别和应用场景&#xff1a; 1. 基本定义 MSP&#xff08;…

交换机与路由器连接方式

交换机和路由器连接的三种主要方式如下&#xff1a; 一、直连连接 这是最简单直接的连接方式。通过一根网线将交换机的一个端口与路由器的一个LAN端口相连。这种连接方式适用于小型网络&#xff0c;其中交换机负责局域网内部的数据交换&#xff0c;而路由器则负责将内部网络连接…

Python代码片段-Excel导入到MongoDB

有一次遇到一个需求&#xff0c;需要把Excel的数据导入到MongoDB中&#xff0c;表面上感觉就是导入数据很简单&#xff0c;但实际操作后&#xff0c;发现是比较麻烦的一个事情&#xff0c;一般图形化的工具对于MongoDB而言&#xff0c;导入选项都是json的&#xff0c;根本没有E…

axios几种请求类型的格式

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;广泛用于浏览器和 Node.js 中发送 HTTP 请求。它支持多种请求格式&#xff0c;包括 GET、POST、PUT、DELETE 等。也叫RESTful 目录 一、axios几种请求类型的格式 1、get请求 2、post请求 3、put请求 4、delete请求 二…

手写系列——MoE网络

参考&#xff1a; MOE原理解释及从零实现一个MOE&#xff08;专家混合模型&#xff09;_moe代码-CSDN博客 MoE环游记&#xff1a;1、从几何意义出发 - 科学空间|Scientific Spaces 深度学习之图像分类&#xff08;二十八&#xff09;-- Sparse-MLP(MoE)网络详解_sparse moe…

Linux的基础指令和环境部署,项目部署实战(下)

目录 上一篇&#xff1a;Linxu的基础指令和环境部署&#xff0c;项目部署实战&#xff08;上&#xff09;-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…

【蓝桥杯】第十五届省赛大学真题组真题解析

【蓝桥杯】第十五届省赛大学真题组真题解析 一、智能停车系统 1、知识点 &#xff08;1&#xff09;flex-wrap 控制子元素的换行方式 属性值有&#xff1a; no-wrap不换行wrap伸缩容器不够则自动往下换行wrap-reverse伸缩容器不够则自动往上换行 &#xff08;2&#xff0…

flink operator v1.10对接华为云对象存储OBS

1 概述 flink operator及其flink集群&#xff0c;默认不直接支持华为云OBS&#xff0c;需要在这些java程序的插件目录放一个jar包&#xff0c;以及修改flink配置后&#xff0c;才能支持集成华为云OBS。 相关链接参考&#xff1a; https://support.huaweicloud.com/bestpracti…