4位數(shù)碼管顯示模塊驅(qū)動(dòng)
TM1637四位數(shù)碼管模塊是一個(gè)帶時(shí)鐘點(diǎn)的4位共陽(yáng)數(shù)碼管(0.36英寸)的顯示模塊,驅(qū)動(dòng)芯片為TM1637,驅(qū)動(dòng)方式為IIC,因此只需2根信號(hào)線即可使單片機(jī)控制4位8段數(shù)碼管(數(shù)碼管8級(jí)亮度可調(diào))。
模塊特點(diǎn)如下:
-
顯示器件為4位共陽(yáng)數(shù)碼管
-
數(shù)碼管8級(jí)亮度可調(diào)
-
控制接口電平可為5V或3.3V
-
IIC驅(qū)動(dòng),只需要占用兩個(gè)IO引腳即可實(shí)現(xiàn)驅(qū)動(dòng)顯示功能
-
帶有時(shí)鐘點(diǎn),應(yīng)用于電子鐘顯示很方便
TM1637管腳定義
硬件連接
模塊共4個(gè)引腳(GND、VCC、DIO、CLK),GND為地,VCC為供電電源,DIO為數(shù)據(jù)輸入輸出腳,CLK為時(shí)鐘信號(hào)腳。
用4根母對(duì)母杜邦線將4位數(shù)碼管顯示模塊和STM32核心板連接起來(lái),如下圖、下表所示:
四位數(shù)碼管 | 連接線 | STM32核心板 |
---|---|---|
CLK | 黃色 | PA3 |
DIO | 藍(lán)色 | PA2 |
VCC | 紅色 | 3.3V |
GND | 黑色 | GND |
IIC總線時(shí)序分析
因?yàn)門M1637是IIC總線驅(qū)動(dòng),所以驅(qū)動(dòng)TM1637的總線時(shí)序需滿足IIC總線的規(guī)定。
下圖是指令數(shù)據(jù)傳輸過(guò)程(讀按鍵數(shù)據(jù)時(shí)序):
上面時(shí)序圖需要注意以下幾點(diǎn):
-
IIC總線對(duì)數(shù)據(jù)的有效性要求:在輸入數(shù)據(jù)時(shí),當(dāng)CLK是高電平時(shí),DIO上的信號(hào)必須保持不變;只有CLK上的時(shí)鐘信號(hào)為低電平時(shí),DIO上的信號(hào)才能改變。
所以我們封裝的寫字節(jié)的函數(shù),都是在CLK引腳為低電平的時(shí)候,修改DIO的數(shù)據(jù);
-
數(shù)據(jù)輸入的開始條件是CLK為高電平時(shí),DIO由高變低;
具體代碼實(shí)現(xiàn)如下:
//IIC開始
void TM1637_start(void)
{
CLK_1;
DIO_1;
delay_us(2);
DIO_0;
}
-
結(jié)束條件是CLK為高電平時(shí),DIO由低電平變?yōu)楦唠娖健?
具體代碼實(shí)現(xiàn)如下:
//IIC停止
void TM1637_stop(void)
{
CLK_0;
delay_us(2);
DIO_0;
delay_us(2);
CLK_1;
delay_us(2);
DIO_1;
delay_us(2);
}
-
TM1637的數(shù)據(jù)傳輸帶有應(yīng)答信號(hào)ACK,在傳輸數(shù)據(jù)的過(guò)程中,在時(shí)鐘線的第九個(gè)時(shí)鐘芯片內(nèi)部會(huì)產(chǎn)生一個(gè)應(yīng)答信號(hào)ACK將DIO管腳拉低。
寫命令的實(shí)現(xiàn)
根據(jù)上面實(shí)現(xiàn)的IIC 寫字節(jié)函數(shù),實(shí)現(xiàn)下面地址自動(dòng)加1模式下向SRAM寫數(shù)據(jù),下圖中時(shí)序圖和代碼部分,顏色、形狀相同部分相互對(duì)應(yīng)。
起始信號(hào)之后,由DIO輸入TM1637的第一個(gè)字節(jié)作為一條指令。經(jīng)過(guò)內(nèi)部譯碼,取這個(gè)字節(jié)的B7、B6兩位比特位以區(qū)別不同的指令。
B7 | B6 | 指令 |
---|---|---|
0 | 1 | 數(shù)據(jù)命令設(shè)置 |
1 | 0 | 顯示控制命令設(shè)置 |
1 | 1 | 地址命令設(shè)置 |
數(shù)據(jù)命令設(shè)置
該指令用來(lái)設(shè)置數(shù)據(jù)寫和讀,B1和B0位不允許設(shè)置01或11,有上面表格可以查到B7=0,B6=1。
比如:
0x40這個(gè)命令,就對(duì)應(yīng)上表中第一行:寫數(shù)據(jù)到顯示寄存器。
地址命令設(shè)置
該指令用來(lái)設(shè)置顯示寄存器的地址,如果地址設(shè)為06H或更高,數(shù)據(jù)將被忽略,直到有效地址被設(shè)定;上電時(shí),地址默認(rèn)為00H。
比如:
0xC0這個(gè)就是地址命令,對(duì)應(yīng)顯示地址00H,即第一個(gè)數(shù)碼管的地址,后面發(fā)送數(shù)據(jù)就可以給第一個(gè)數(shù)碼管設(shè)置顯示內(nèi)容。
顯示控制
比如:
0x8F對(duì)應(yīng)二進(jìn)制1000 1111,B3=1代表開顯示,B2~B0的111代表脈沖寬度,即顯示亮度,通過(guò)表格可以得出0x8F代表最高亮度。
結(jié)果展示
這種數(shù)碼管可以顯示的內(nèi)容有:0123456789AbcdEFHLnPU,下面視頻對(duì)這些內(nèi)容進(jìn)行了循環(huán)顯示。
資料獲取
微信公眾號(hào)后臺(tái)回復(fù)“四位數(shù)碼管”,可以下載本文對(duì)應(yīng)的工程源碼。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!