0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 I2C寫入驅(qū)動數(shù)碼管顯示實驗

CHANBAEK ? 來源: 想啥做啥 ? 作者: 想啥做啥 ? 2023-12-06 16:09 ? 次閱讀

實驗環(huán)境

Matlab版本: 2021b

操作系統(tǒng) :Win10專業(yè)版

硬件平臺 :YF-STM32-ALPHA 1R4

實驗內(nèi)容I2C驅(qū)動數(shù)碼管芯片顯示‘0’~‘A’字符

模型與原理圖

本次實驗所用到的simulink模型如圖5.2所示,電路原理圖如圖5.3所示,實驗效果為數(shù)碼管從‘0’~‘A’輪流顯示,如圖5.1所示。

圖片

圖5.1 數(shù)碼管驅(qū)動顯示實驗效果

圖片

圖5.2 數(shù)碼管顯示I2C驅(qū)動模型

圖片

圖5.3 CH422G共陰數(shù)碼管電路連接

基礎(chǔ)模型介紹與分析

1、數(shù)碼管簡介

數(shù)碼管簡單來說就是將多個LED有規(guī)律的排列在一起,實驗中用到的數(shù)碼管外觀如圖5.4所示,其型號為:FJ3461AH,三維尺寸:30.00mmx14.00mmx7.20mm,數(shù)碼管內(nèi)部為共陰極,內(nèi)部電路原理和引腳定義如圖5.5圖所示。

圖片

圖5.4 數(shù)碼管實物外觀

圖片

圖5.5 數(shù)碼管尺寸及內(nèi)部電路原理圖

2、CH422G芯片介紹

數(shù)碼管驅(qū)動芯片CH422引腳分布如圖5.6所示,引腳定義解釋參考表5.1。

圖片

圖5.6 數(shù)碼管驅(qū)動芯片

表5.1 CH422G芯片引腳功能說明

引腳號引腳名稱類型引腳說明
14VCC電源正電源,持續(xù)電流不小于 100mA
7GND電源公共接地,持續(xù)電流不小于 100mA
1~4、12、13、15、16、SEG0~SEG7三態(tài)輸出及輸入數(shù)碼管的段驅(qū)動,高電平有效,雙向輸入輸出,內(nèi)置弱上拉電阻
8~11DIG0~DIG3推挽或開漏輸出數(shù)碼管的字驅(qū)動,低電平有效,通用輸出,可選開漏輸出,低電平有效
5SDA開漏輸出及輸入2 線串行接口的數(shù)據(jù)輸入和輸出,內(nèi)置上拉電阻
6SCL輸入2 線串行接口的數(shù)據(jù)時鐘

3、simulink模型分析

本次實驗中只用到I2C寫模型,寫I2C數(shù)據(jù)核心模型如圖5.7所示,其參數(shù)設(shè)置如圖5.8所示,其中“I2C module”用于設(shè)置選用哪個I2C,即STM32中常說的I2C0,I2C1,I2C2,實驗中用到的I2C芯片連接在I2C2(PB10->SCL,PB11->SDA)上,"Slave address"用于設(shè)置I2C器件地址,圖中為了便于理解,使用了一個hex2dec('24')模型轉(zhuǎn)換函數(shù),“Slave register addr”用于設(shè)置寄存器地址,參數(shù)設(shè)置基本就介紹這些,后面用到其它方式再逐一介紹,這里面的具體參數(shù)含義稍后為大家解答。

圖片

圖5.7 I2C向寄存器寫數(shù)據(jù)模型

圖片

圖5.8 I2C寫模型參數(shù)設(shè)置

在驅(qū)動CH422芯片前,我們首先要知道進(jìn)行哪些參數(shù)設(shè)置和數(shù)據(jù)寫入才能使數(shù)碼管正常工作,如下代碼所示,先對芯片進(jìn)行設(shè)置(讀者朋友對著操作即可,此代碼為官方提供的參考代碼,官方手冊上只有0x48和0x46有簡要說明),我們只需往0x48,0x44,0x46地址中寫入固定數(shù)據(jù),最后往0x60地址中寫如要顯示的數(shù)據(jù)即可。

/* 共陰數(shù)碼管編碼表 0~F */
unsigned char BCD_decode_tab[ 0x10 ] = { 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71 };   //0--9數(shù)碼管數(shù)字




CH422_Write(0x48,0x01);  /* 設(shè)置輸出引腳 DIG0~DIG3 開漏輸出使能  */
CH422_Write(0x44,0x00);  /* 設(shè)置低8位開漏輸出命令,默認(rèn)方式 */
CH422_Write(0x46,0x00);  /* DIG0~DIG3使引腳輸出低電平 */


CH422_Write(0x60,BCD_decode_tab[i]); /* 設(shè)置雙向輸入輸出命令,顯示數(shù)據(jù)用 */

這里作者首先用C語言方式正常驅(qū)動數(shù)碼管工作,如圖5.9所示,這是參數(shù)設(shè)置過程正確時邏輯分析儀捕獲到的I2C波形,圖5.10為正常顯示數(shù)字過程中捕獲到的I2C波形。

圖片

圖5.9 C語言方式正常設(shè)置數(shù)碼管波形

圖片

圖5.10 C語言方式正常顯示數(shù)字波形

為了實現(xiàn)上述相同的效果,我們需要在simulink對參數(shù)進(jìn)行設(shè)置來達(dá)到上述效果,0x48,0x44,0x46參數(shù)設(shè)置如圖5.11~5.13所示,細(xì)心的讀者應(yīng)該有發(fā)現(xiàn),器件地址與C語言寫的地址不一樣,這里作者暫時沒找到原因,但是好在還有一定的規(guī)律可循,最終得到的波形如圖5.14所示,與C語言驅(qū)動的還是有點不一樣,只代表其能工作,圖中首次出現(xiàn)一個脈沖符號樣式,"Enable"模型它是作為子模型的使能用,另外就是每一個寫入模型都是放在一個子模型中,方便對數(shù)據(jù)進(jìn)行控制操作。

圖片

圖5.11 simulink中"0x48"寫入“0x01”

圖片

圖5.12 simulink中"0x44"寫入“0x00”

圖片

圖5.13 simulink中"0x46"寫入“0x00”

圖片

圖5.14 使用simulink模型初始化數(shù)碼管I2C波形

數(shù)碼管顯示數(shù)據(jù)顯示模型如圖5.15所示,地址部分還是一樣的問題,只是寄存器部分?jǐn)?shù)據(jù)可以正常使用編碼表中的十六進(jìn)制數(shù)據(jù),最終的波形如圖5.16所示。

圖片

圖5.15 simulink中"0x60"寫入“0x3F”

圖片

圖5.16 simulink模型“0x60”顯示字母'A'指令波形

最后我們來看下整個模型,參考圖5.2中,除最后一個顯示模型,其它所有的I2C寫入模型都是順序執(zhí)行,且都只執(zhí)行一次,最終停留在在顯示字符'A'處。

實驗代碼統(tǒng)一放在碼云上,有問題歡迎給我留言!!

總結(jié)

本節(jié)實驗中實現(xiàn)了一個基本I2C驅(qū)動數(shù)碼管顯示實驗,模型中初步做到了參數(shù)初始化和數(shù)據(jù)顯示寫入,但是這里有個問題,我們無法使用硬件在環(huán)修改參數(shù)達(dá)到同步修改數(shù)碼管數(shù)據(jù)的效果,這里讀者朋友可以研究研究下。另外本節(jié)中還有個問題就是數(shù)據(jù)顯示不是循環(huán)顯示,大家也可以修改模型實現(xiàn)循環(huán)滾動顯示。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電路原理圖
    +關(guān)注

    關(guān)注

    40

    文章

    347

    瀏覽量

    38335
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356012
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1882

    瀏覽量

    91122
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1487

    瀏覽量

    123755
  • Simulink
    +關(guān)注

    關(guān)注

    22

    文章

    535

    瀏覽量

    62400
收藏 人收藏

    評論

    相關(guān)推薦

    ZLG7290 I2C接口鍵盤及LED驅(qū)動

    ZLG7290 I2C接口鍵盤及LED驅(qū)動器:一特點1 I2C 串行接口提供鍵盤中斷信號方便與處理器接口2驅(qū)動8 位共陰
    發(fā)表于 09-22 17:08 ?12次下載
    ZLG7290 <b class='flag-5'>I2C</b>接口鍵盤及LED<b class='flag-5'>驅(qū)動</b>器

    I2C總線接口模塊設(shè)計

    實驗是基于EasyFPGA030的I2C總線接口模塊設(shè)計,用EasyFPGA030開發(fā)套件通過I2C協(xié)議實現(xiàn)對二線制I2C串行EEPROM的讀寫操作,先把數(shù)據(jù)
    發(fā)表于 11-02 17:01 ?41次下載

    LED數(shù)碼管顯示驅(qū)動芯片 BL1616

    LED數(shù)碼管顯示驅(qū)動芯片 BL1616一、概述:BL1616是8段×16位LED顯示驅(qū)動芯片,內(nèi)置時鐘振蕩電路,可以動態(tài)
    發(fā)表于 11-13 16:17 ?114次下載

    基于EasyFPGA030的I2C總線接口模塊

    實驗是基于EasyFPGA030的I2C總線接口模塊設(shè)計,用EasyFPGA030開發(fā)套件通過I2C協(xié)議實現(xiàn)對二線制I2C串行EEPROM的讀寫操作,先把數(shù)據(jù)
    發(fā)表于 03-11 15:37 ?29次下載

    數(shù)碼管顯示實驗

    數(shù)碼管顯示實驗 一、實驗目的數(shù)碼管是單片機(jī)系統(tǒng)常用的輸出顯示器件,單個
    發(fā)表于 09-28 12:28 ?1.6w次閱讀
    <b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>實驗</b>

    LED數(shù)碼管顯示控制實驗

    實驗 LED數(shù)碼管顯示控制實驗一、實驗目的1.學(xué)會用PLC控制LED數(shù)碼管
    發(fā)表于 09-30 13:18 ?1.4w次閱讀
    LED<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>控制<b class='flag-5'>實驗</b>

    數(shù)碼管循環(huán)顯示實驗

    數(shù)碼管循環(huán)顯示實驗 數(shù)碼管循環(huán)顯示實驗一、實驗目的
    發(fā)表于 03-23 10:42 ?2382次閱讀

    LED數(shù)碼管顯示實驗

    LED數(shù)碼管顯示實驗 一.實驗目的1.掌握數(shù)字、字符轉(zhuǎn)換成顯示段碼的軟件譯碼方法2.掌握靜態(tài)
    發(fā)表于 05-16 02:07 ?6517次閱讀
    LED<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>實驗</b>

    使用單片機(jī)實現(xiàn)兼容I2C接口的MAX6955驅(qū)動16段數(shù)碼管顯示C語言實例

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實現(xiàn)兼容I2C接口的MAX6955驅(qū)動16段數(shù)碼管顯示C語言實例免費(fèi)下載。
    發(fā)表于 03-31 14:45 ?16次下載

    單片機(jī):數(shù)碼管顯示實驗

    一、 實驗目的(一) 掌握單片機(jī) I/O 口的輸出控制;(二) 熟悉開發(fā)板上單片機(jī) I/O 口與數(shù)碼管的電路連接;(三) 掌握 keil C
    發(fā)表于 11-11 11:21 ?10次下載
    單片機(jī):<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>實驗</b>

    C51單片機(jī)實驗——7段數(shù)碼管實驗

    實驗方案通過程序設(shè)計,控制實驗箱上7段數(shù)碼管,顯示出設(shè)計方案的結(jié)果。硬件連線:P2口作為輸出口連接數(shù)碼
    發(fā)表于 11-23 16:36 ?19次下載
    <b class='flag-5'>C</b>51單片機(jī)<b class='flag-5'>實驗</b>——7段<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>實驗</b>

    STM32F103單片機(jī)驅(qū)動TM1637數(shù)碼管顯示模塊

    是TM1637四位數(shù)碼管顯示模塊實際運(yùn)行效果下面先看一下TM1637和數(shù)碼管連接的具體線路圖 實際使用的模塊沒有帶按鍵,只用了4個數(shù)碼管,模塊和單片機(jī)連接只需要4根線VCC、GN
    發(fā)表于 11-25 10:51 ?92次下載
    <b class='flag-5'>STM32</b>F103單片機(jī)<b class='flag-5'>驅(qū)動</b>TM1637<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>模塊

    STM32--數(shù)碼管顯示使用

    STM32數(shù)碼管顯示簡介1.硬件部分STM32F103C8T6 最小系統(tǒng)板 一位共陰數(shù)碼管2
    發(fā)表于 12-24 19:32 ?53次下載
    <b class='flag-5'>STM32</b>--<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>使用

    STM32 I2C存取實驗資料

    STM32 I2C存取實驗資料
    發(fā)表于 12-30 10:36 ?17次下載

    STM32 Cubemx實現(xiàn)串口通信、I2C與GPIO的綜合應(yīng)用

    項目目標(biāo)通過按鍵,按下的值能夠串口接受并顯示出來,串口發(fā)送數(shù)字,使用數(shù)碼管顯示數(shù)字。將串口發(fā)送的數(shù)字使用I2C寫入EEPROM,按復(fù)位鍵并能
    發(fā)表于 01-14 10:43 ?1次下載
    <b class='flag-5'>STM32</b> Cubemx實現(xiàn)串口通信、<b class='flag-5'>I2C</b>與GPIO的綜合應(yīng)用