STM32控制數碼管從0顯示到99

首先 先畫電路圖吧!打開proteus,導入相關器件,繪制電路圖。如下:(記得要保存啊!發現模擬一遍程序就自動退出了,有bug,我是解決不了,所以就是要及時保存,自己重畫幾次就長記性了,我是不想重畫了,所以我及時保存了。)

第二步打開CubeMX,新建工程,配置時鐘和GPIO,如下:

第三步先來了解一下數碼管的十六進制碼的來源,我自己畫了個圖,我看著挺明白的,不明白的自己想,想明白了畫出來就明白了,其實很簡單的,就是給電就亮,斷電就滅而已。廢話不說了,看圖:

最后得出共陽極的斷碼為:{0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}

接下來就是修改keil工程中的main文件中的內容了,其實主要就那么點東西,只不過放在了不同的地方而已:

void duanxuan(uint8_t num); ?//聲明斷選函數,傳入每個數字的碼值

void led_clear(void); ? ?// ?清屏函數, 主要將所有的數碼管都關閉。

uint8_t duan[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; ?//斷碼數組
uint8_t num= 0; ? ? ? ? // 定義變量num

for(num=0; num<100; num++)    //  for循環  num的值從0到99{led_clear();             //  清屏GPIOB->ODR = 0x0002;     //  GPIOB的值為0x0002     0000 0000 0000 0010  也就是PB1為高電平duanxuan(duan[num%10]);  //  斷選的值為  數組斷中的  num模10 也就是個位的數字HAL_Delay(2);            //  延時2msled_clear();             // 清屏GPIOB->ODR = 0x0004;     //  GPIOB的值為0x0004     0000 0000 0000 0100  也就是PB2為高電平   duanxuan(duan[num/10]);  //  斷選的值為  數組斷中的  num除10 也就是十位的數字 HAL_Delay(8);            //  延時8ms   控制數碼管中的數字增加的快慢?}

void duanxuan(uint8_t num)? ?//斷碼顯示函數
{
? ? GPIOA->ODR = num; ? // A端口要顯示幾就傳入幾的斷碼
}

void led_clear(void)? ?// 清屏函數
{
? ? GPIOA->ODR = 0x00FF; ?// ?清屏函數 A端口的值:都是1,就是都不亮
}

好了,所有需要添加的代碼都在這里了,只需要按位置填進去編譯就行了,不按位置,填對了也可以,就是下次CubeMX有改動重新生成時自己寫的代碼是否還存在,需不需要重新寫,估計都不想重新寫的,那就按照樣式固定寫代碼的位置吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696905.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696905.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696905.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機組成原理(10)----微程序控制器

目錄 1.微程序控制器的設計思想 2.微指令的基本格式 3.微程序控制器的基本結構 &#xff08;1&#xff09;控制存儲器CM &#xff08;2&#xff09;CMAR &#xff08;3&#xff09;地址譯碼 &#xff08;4&#xff09;CMDR &#xff08;5&#xff09;微地址形成部件 &…

31.云原生Istio可觀測性之官網Bookinfo應用實戰演示

云原生專欄大綱 文章目錄 可觀測性kiali介紹Overview&#xff08;概觀&#xff09;Application&#xff08;應用維度&#xff09;workloads&#xff08;負載維度&#xff09;Services&#xff08;服務維度&#xff09;Istio Config&#xff08;配置維度&#xff09; Kiali部署…

音頻聲波的主觀感受

一、響度 聲壓是“客觀”的&#xff0c;響度是“主觀”的。 響度又稱音量。人耳感受到的聲音強弱&#xff0c;它是人對聲音大小的一個主觀感覺量。響度的大小決定于聲音接收處的波幅&#xff0c;就同一聲源來說&#xff0c;波幅傳播的愈遠&#xff0c;響度愈小…

React18原理: React核心對象之Update、UpdateQueue、Hook、Task對象

Update 與 UpdateQueue 對象 1 ) 概述 在fiber對象中有一個屬性 fiber.updateQueue是一個鏈式隊列&#xff08;即使用鏈表實現的隊列存儲結構&#xff09;是和頁面更新有關的 2 &#xff09;Update對象相關的數據結構 // https://github.com/facebook/react/blob/v18.2.0/pa…

【Nginx】Nginx配置反向代理 和 https

nginx.conf配置 進入linux /etc/nginx/ 打開nginx.conf 進行以下配置 http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {#監聽443端口listen 443 ssl;#你的域名server_name huiblog.top;#ssl證書的pe…

VSCode The preLaunchTask ‘C/C++: clang++ 生成活動文件‘ terminated with exit code -1

更改tasks.json文件里面的type為shell 選擇g 選擇g&#xff0c;然后點回到text.c&#xff0c;按下F5. 得到結果。 文中內容參考: 從零開始手把手教你配置屬于你的VS Code_嗶哩嗶哩_bilibili https://blog.csdn.net/qq_63872647/article/details/128006861

【EasyV】QGIS轉換至EasyV

QGIS轉換至EasyV 第一步&#xff1a;導入QGIS第二步 坐標系轉換第三步 集合修正第四步 重命名字段第五步 導出WGS geojson坐標第六步 導入EasyV 第一步&#xff1a;導入QGIS 第二步 坐標系轉換 第三步 集合修正 第四步 重命名字段 第五步 導出WGS geojson坐標 第六步 導入EasyV…

【es6】模版字面量/模版字符串,標簽函數/String.raw()靜態方法

模版字符串經常用&#xff0c;但是這個標簽函數的功能你肯定不知道&#xff0c;請看官網文檔 看完你需要知道 可以自定義標簽函數String.raw 的用法 唯一一個內置的模版字符串標簽函數第一個參數具有 raw 屬性的對象&#xff0c;值時一個類數組字符串對象模版字面量的緩存機制…

【vue vue-seamless-scroll】解決vue-seamless-scroll鼠標懸浮才滾動或者只滾動一次就失效的問題

解決問題&#xff1a;使用vue-seamless-scroll發現只有鼠標懸浮上去才滾動&#xff0c;而且滾動一次停止了 目標效果&#xff1a; 解決方案&#xff1a; 最后發現是因為數據需要在頁面掛載好就賦值&#xff0c;否則頁面在加載完成后&#xff0c;數據無法自動滾動。但因為數據…

c++:藍橋杯的基礎算法2(構造,模擬)+練習鞏固

目錄 構造 構造的基礎概念&#xff1a; 模擬 練習1&#xff1a;掃雷 練習2&#xff1a;灌溉 練習3&#xff1a;回文日期 構造 構造的基礎概念&#xff1a; 構造算法是一種用于解決特定問題的算法設計方法。在C語言中&#xff0c;構造算法通常涉及到創建一個函數或類來實…

ARM服務器上部署zookeeper集群

由于ARM服務器上部署zookeeper集群,會存在加載不到主類問題,現在把遇到的問題進行總結下,問題如下: [rootnode206 apache-zookeeper-3.5.10]# bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data1/software/apache-zookeeper-3.5.10/bin/../conf/…

四、Burpsuite工具之proxy模塊詳解-intercept功能

前言&#xff1a; 過了一個年&#xff0c;感覺好久都沒有更新了&#xff0c;今天就從burpsuite的更新開始吧。 前面已經說過了burpsuite的安裝和proxy代理的配置&#xff0c;今天說一下proxy模塊中非常有用的intercept功能。 intercept功能介紹&#xff1a; intercept是攔截…

Spring之AOP源碼解析(中)

前言 在上一篇文章中,我們講解了Spring中那些注解可能會產生AOP動態代理,我們通過源碼發現,完成AOP相關操作都和ProxyFactory這個類有密切關系,這一篇我們將圍繞這個類繼續解析 演示 作用 ProxyFactory采用策略模式生成動態代理對象,具體生成cglib動態代理還是jdk動態代理,…

算法提升——LeetCode第385場周賽總結

題目 統計前后綴下標對 I 給你一個下標從0開始的字符串數組words。 定義一個布爾函數isPrefixAndSuffix&#xff0c;它接受兩個字符串參數str1和str2&#xff1a; 當str1同時是str2的前綴&#xff08;prefix&#xff09;和后綴&#xff08;suffix&#xff09;時&#xff0c…

APP的UI自動化demo(appium+java)

文章目錄 appium連接手機java代碼實現-第一版第二版-接入testng和隱式等待顯示等待 appium連接手機 準備工作 1、查看連接手機模擬器是否連接成功&#xff0c;獲取設備名稱 執行命令&#xff1a;adb devices 2、查看android內核版本號—>paltformVersion 執行命令&#xf…

MQL語言實現單元測試

文章目錄 一、單元測試是什么二、單元測試的過程三、為什么需要單元測試四、MQL測試代碼實現 一、單元測試是什么 單元測試是對軟件中最小可測單元&#xff08;如類或函數&#xff09;進行獨立驗證和檢查的過程。它是由開發工程師完成的&#xff0c;旨在確保每個單元的功能和邏…

Postman接口關聯實戰解析

在使用postman做接口測試時&#xff0c;有時候后面的接口需要獲取前面接口的某一個返回值做為請求參數&#xff0c;這時就可以使用關聯。 如從A接口提取出a字段的值&#xff0c;供B接口的b字段使用。 一個接口的返回報文如下&#xff1a; {"retCode": "0&quo…

SwiftUI 集合視圖(Grid)拖放交換 Cell 的極簡實現

概覽 自從 SwiftUI 橫空出世那天起&#xff0c;小伙伴們都感受到了它驚人的簡單與便捷。而在本課中&#xff0c;我們將會用一個小“栗子”更直觀的讓大家體驗到它無與倫比簡潔的描述性特質&#xff1a; 如上圖所示&#xff0c;我們在 SwiftUI 中實現了 Grid 中拖放交換 Cell 的…

基于SpringBoot + Layui的社區物業管理系統

項目介紹 社區物業管理系統是基于java編程語言&#xff0c;springboot框架&#xff0c;idea工具&#xff0c;mysql數據庫進行開發&#xff0c;本系統分為業主和管理員兩個角色&#xff0c;業主可以登陸系統&#xff0c;查看車位費用信息&#xff0c;查看物業費用信息&#xff0…