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.pswp.cn/bicheng/71854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71854.shtml
英文地址,請注明出處:http://en.pswp.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…