實(shí)驗(yàn)環(huán)境
Matlab版本: 2021b
操作系統(tǒng) :Win10專業(yè)版
硬件平臺(tái) :YF-STM32-ALPHA 1R4
實(shí)驗(yàn)內(nèi)容 :I2C驅(qū)動(dòng)數(shù)碼管芯片顯示‘0’~‘A’字符
模型與原理圖
本次實(shí)驗(yàn)所用到的simulink模型如圖5.2所示,電路原理圖如圖5.3所示,實(shí)驗(yàn)效果為數(shù)碼管從‘0’~‘A’輪流顯示,如圖5.1所示。

圖5.1 數(shù)碼管驅(qū)動(dòng)顯示實(shí)驗(yàn)效果

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

圖5.3 CH422G共陰數(shù)碼管電路連接
基礎(chǔ)模型介紹與分析
1、數(shù)碼管簡介
數(shù)碼管簡單來說就是將多個(gè)LED有規(guī)律的排列在一起,實(shí)驗(yàn)中用到的數(shù)碼管外觀如圖5.4所示,其型號(hào)為:FJ3461AH,三維尺寸:30.00mmx14.00mmx7.20mm,數(shù)碼管內(nèi)部為共陰極,內(nèi)部電路原理和引腳定義如圖5.5圖所示。

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

圖5.5 數(shù)碼管尺寸及內(nèi)部電路原理圖
2、CH422G芯片介紹
數(shù)碼管驅(qū)動(dòng)芯片CH422引腳分布如圖5.6所示,引腳定義解釋參考表5.1。

圖5.6 數(shù)碼管驅(qū)動(dòng)芯片
表5.1 CH422G芯片引腳功能說明
| 引腳號(hào) | 引腳名稱 | 類型 | 引腳說明 |
|---|---|---|---|
| 14 | VCC | 電源 | 正電源,持續(xù)電流不小于 100mA |
| 7 | GND | 電源 | 公共接地,持續(xù)電流不小于 100mA |
| 1~4、12、13、15、16、 | SEG0~SEG7 | 三態(tài)輸出及輸入 | 數(shù)碼管的段驅(qū)動(dòng),高電平有效,雙向輸入輸出,內(nèi)置弱上拉電阻 |
| 8~11 | DIG0~DIG3 | 推挽或開漏輸出 | 數(shù)碼管的字驅(qū)動(dòng),低電平有效,通用輸出,可選開漏輸出,低電平有效 |
| 5 | SDA | 開漏輸出及輸入 | 2 線串行接口的數(shù)據(jù)輸入和輸出,內(nèi)置上拉電阻 |
| 6 | SCL | 輸入 | 2 線串行接口的數(shù)據(jù)時(shí)鐘 |
3、simulink模型分析
本次實(shí)驗(yàn)中只用到I2C寫模型,寫I2C數(shù)據(jù)核心模型如圖5.7所示,其參數(shù)設(shè)置如圖5.8所示,其中“I2C module”用于設(shè)置選用哪個(gè)I2C,即STM32中常說的I2C0,I2C1,I2C2,實(shí)驗(yàn)中用到的I2C芯片連接在I2C2(PB10->SCL,PB11->SDA)上,"Slave address"用于設(shè)置I2C器件地址,圖中為了便于理解,使用了一個(gè)hex2dec('24')模型轉(zhuǎn)換函數(shù),“Slave register addr”用于設(shè)置寄存器地址,參數(shù)設(shè)置基本就介紹這些,后面用到其它方式再逐一介紹,這里面的具體參數(shù)含義稍后為大家解答。

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

圖5.8 I2C寫模型參數(shù)設(shè)置
在驅(qū)動(dòng)CH422芯片前,我們首先要知道進(jìn)行哪些參數(shù)設(shè)置和數(shù)據(jù)寫入才能使數(shù)碼管正常工作,如下代碼所示,先對(duì)芯片進(jìn)行設(shè)置(讀者朋友對(duì)著操作即可,此代碼為官方提供的參考代碼,官方手冊(cè)上只有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ū)動(dòng)數(shù)碼管工作,如圖5.9所示,這是參數(shù)設(shè)置過程正確時(shí)邏輯分析儀捕獲到的I2C波形,圖5.10為正常顯示數(shù)字過程中捕獲到的I2C波形。

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

圖5.10 C語言方式正常顯示數(shù)字波形
為了實(shí)現(xiàn)上述相同的效果,我們需要在simulink對(duì)參數(shù)進(jìn)行設(shè)置來達(dá)到上述效果,0x48,0x44,0x46參數(shù)設(shè)置如圖5.11~5.13所示,細(xì)心的讀者應(yīng)該有發(fā)現(xiàn),器件地址與C語言寫的地址不一樣,這里作者暫時(shí)沒找到原因,但是好在還有一定的規(guī)律可循,最終得到的波形如圖5.14所示,與C語言驅(qū)動(dòng)的還是有點(diǎn)不一樣,只代表其能工作,圖中首次出現(xiàn)一個(gè)脈沖符號(hào)樣式,"Enable"模型它是作為子模型的使能用,另外就是每一個(gè)寫入模型都是放在一個(gè)子模型中,方便對(duì)數(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'指令波形
最后我們來看下整個(gè)模型,參考圖5.2中,除最后一個(gè)顯示模型,其它所有的I2C寫入模型都是順序執(zhí)行,且都只執(zhí)行一次,最終停留在在顯示字符'A'處。
實(shí)驗(yàn)代碼統(tǒng)一放在碼云上,有問題歡迎給我留言?。?/p>
總結(jié)
本節(jié)實(shí)驗(yàn)中實(shí)現(xiàn)了一個(gè)基本I2C驅(qū)動(dòng)數(shù)碼管顯示實(shí)驗(yàn),模型中初步做到了參數(shù)初始化和數(shù)據(jù)顯示寫入,但是這里有個(gè)問題,我們無法使用硬件在環(huán)修改參數(shù)達(dá)到同步修改數(shù)碼管數(shù)據(jù)的效果,這里讀者朋友可以研究研究下。另外本節(jié)中還有個(gè)問題就是數(shù)據(jù)顯示不是循環(huán)顯示,大家也可以修改模型實(shí)現(xiàn)循環(huán)滾動(dòng)顯示。
-
電路原理圖
+關(guān)注
關(guān)注
40文章
356瀏覽量
39822 -
STM32
+關(guān)注
關(guān)注
2307文章
11150瀏覽量
372410 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1894瀏覽量
93922 -
I2C
+關(guān)注
關(guān)注
28文章
1554瀏覽量
130852 -
Simulink
+關(guān)注
關(guān)注
23文章
549瀏覽量
65707
發(fā)布評(píng)論請(qǐng)先 登錄
ZLG7290 I2C接口鍵盤及LED驅(qū)動(dòng)器
I2C總線接口模塊設(shè)計(jì)
LED數(shù)碼管顯示驅(qū)動(dòng)芯片 BL1616
基于EasyFPGA030的I2C總線接口模塊
數(shù)碼管顯示實(shí)驗(yàn)
LED數(shù)碼管顯示控制實(shí)驗(yàn)
數(shù)碼管循環(huán)顯示實(shí)驗(yàn)
LED數(shù)碼管顯示實(shí)驗(yàn)
使用單片機(jī)實(shí)現(xiàn)兼容I2C接口的MAX6955驅(qū)動(dòng)16段數(shù)碼管顯示的C語言實(shí)例
單片機(jī):數(shù)碼管顯示實(shí)驗(yàn)
C51單片機(jī)實(shí)驗(yàn)——7段數(shù)碼管實(shí)驗(yàn)
STM32F103單片機(jī)驅(qū)動(dòng)TM1637數(shù)碼管顯示模塊
STM32--數(shù)碼管顯示使用
STM32 Cubemx實(shí)現(xiàn)串口通信、I2C與GPIO的綜合應(yīng)用
STM32 I2C寫入驅(qū)動(dòng)數(shù)碼管顯示實(shí)驗(yàn)
評(píng)論