返回首頁
18902855590

QQ客服

微信客服

歡迎光臨, HTH体育登录入口!

24小時全國服務熱線:18902855590

hth体育官
聯係我們
HTH体育登录入口
電話:18902855590
地址:深圳市龍華新區民清路50號油鬆民清大廈701

首頁 » hth体育官 » 產(chan) 品新聞

TM1637驅動的工作原理是怎樣的?深入解析
類別:產品新聞 發布時間:2025-01-17 11:09:28 瀏覽人數:14388

TM1637是一款廣泛應用於(yu) 數碼管顯示的驅動芯片,它通過簡單的兩(liang) 線接口(時鍾線CLK和數據線DIO)與(yu) 微控製器進行通信,實現對數碼管的控製。本文將詳細介紹TM1637的驅動原理,幫助您更好地理解和使用這款芯片。



一、引腳功能


TM1637通常有20個引腳,分別為VCC、GND、CLK、DIO、KEY1和KEY2。各引腳功能如下:
  • VCC:電源正極,接3.3V或5V電源。
  • GND:電源負極,接GND。
  • CLK:時鍾引腳,與微控製器的IO口相連。
  • DIO:數據輸入/輸出引腳,與微控製器的IO口相連。
  • KEY1、KEY2:按鍵引腳,可接至微控製器的IO口,實現按鍵功能。
  • SG1~SG8:輸出(段) 2-9 段輸出(也用作鍵掃描),N 管開漏輸出
  • GRID6~GRID1:輸出(位) 10-15 位輸出,P 管開漏輸出


二、通信協議


TM1637采用串行通信協議,通過CLK和DIO與(yu) 微控製器進行通信。通信過程中,微控製器首先發送起始信號,然後發送指令和數據,最後發送結束信號。


1. 起始信號


起始條件是CLK為(wei) 高電平時,DIO由高變低。具體(ti) 實現如下:


c

void TM1637_Start(void){ TM1637_W_SDA(1); TM1637_W_SCL(1); TM1637_W_SDA(0); TM1637_W_SCL(0);}


2. 結束信號


結束條件是CLK為(wei) 高電平時,DIO由低變高。具體(ti) 實現如下:


c

void TM1637_Stop(void){ TM1637_W_SCL(0); TM1637_W_SDA(0); TM1637_W_SCL(1); TM1637_W_SDA(1);}


3. 數據傳輸


數據傳(chuan) 輸過程中,當CLK為(wei) 高電平時,DIO上的信號必須保持不變;隻有CLK為(wei) 低電平時,DIO上的信號才能改變。數據輸入的開始條件是CLK為(wei) 高電平時,DIO由高變低;結束條件是CLK為(wei) 高時,DIO由低電平變為(wei) 高電平。


TM1637的數據傳(chuan) 輸帶有應答信號ACK,當傳(chuan) 輸數據正確時,會(hui) 在第八個(ge) 時鍾的下降沿,芯片內(nei) 部會(hui) 產(chan) 生一個(ge) 應答信號ACK將DIO管腳拉低,在第九個(ge) 時鍾結束之後釋放DIO口線。發送一個(ge) 字節的具體(ti) 實現如下:


c

void TM1637_Write_Byte(uint8_t data){ uint8_t i; TM1637_W_SCL(0); for (i = 0; i < 8; i++) { if(data & 0x01) { TM1637_W_SDA(1); } else { TM1637_W_SDA(0); } data = data >> 1; TM1637_W_SCL(1); TM1637_W_SCL(0); }}


4. 接收應答


主機在發送完一個字節之後,在下一個時鍾接收一位數據,判斷從機是否應答,數據0表示應答,數據1表示非應答(主機在接收之前,需要釋放SDA)。具體實現如下:


c

uint8_t TM1637_ReceiveAck(void){ uint8_t AckBit; TM1637_W_SDA(1); TM1637_W_SCL(1); AckBit = TM1637_R_SDA(); TM1637_W_SCL(0); return AckBit;}


三、指令格式


TM1637的指令格式包括起始位、數據位和結束位。起始位為(wei) 高電平,數據位為(wei) 8位,結束位為(wei) 低電平。指令可以分為(wei) 顯示指令、設置指令和讀取指令等。


1. 顯示指令


顯示指令用於(yu) 控製數碼管的顯示內(nei) 容。通過發送特定的指令和數據,可以設置數碼管顯示的數字或字符。


2. 設置指令


設置指令用於(yu) 配置TM1637的各種參數,如顯示亮度、掃描頻率等。


3. 讀取指令


讀取指令用於(yu) 讀取TM1637的狀態或按鍵輸入數據。


四、顯示原理


TM1637內(nei) 部集成了驅動芯片和LED數碼管。驅動芯片負責接收微控製器發送的指令,並將其轉換為(wei) LED數碼管的控製信號,LED數碼管則根據控製信號顯示相應的數字或字符。



1. 讀鍵掃數據


在有按鍵按下時,讀鍵數據如下表所示:

SG1SG2SG3SG4SG5SG6SG7SG8
K11110_11110110_11111010_11110010_11111100_11110100_11111000_11110000_1111
K21111_01110111_01111011_01110011_01111101_01110101_01111001_01110001_0111


在無按鍵按下時,讀鍵數據為(wei) :1111_1111,低位在前,高位在後。


五、初始化配置


上電後,需要對TM1637進行初始化,設置顯示亮度、掃描頻率等參數。具體初始化代碼如下:


c

void TM1637_Init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_10 | GPIO_Pin_11);}

六、顯示數據


通過DIO和CLK引腳,將顯示數據寫入TM1637內部寄存器,從而控製數碼管的顯示內容

。具體(ti) 顯示數據的代碼如下:


c

void TM1637_WriteData(uint8_t u8Addr, uint8_t u8Data){ TM1637_Start(); TM1637_Write_Byte(u8Addr); TM1637_ReceiveAck(); TM1637_Write_Byte(u8Data); TM1637_ReceiveAck(); TM1637_Stop();}


七、設置亮度


TM1637支持調節顯示亮度,滿足不同環境需求

。設置亮度的代碼如下:

c

void TM1637_SetBrightness(uint8_t u8Brt){ TM1637_WriteCmd(0x88 | u8Brt);}


八、顯示開關(guan)


可以通過指令控製TM1637的顯示開關。具體代碼如下:
c

void TM1637_Switch(bool bState){ bState ? TM1637_WriteCmd(0x88) : TM1637_WriteCmd(0x80);}


九、總結


TM1637是一款功能強大、易於使用的數碼管驅動芯片。通過簡單的兩線接口與微控製器通信,可以實現對數碼管的精確控製。本文詳細介紹了TM1637的引腳功能、通信協議、指令格式、顯示原理和初始化配置等內容,希望能幫助您更好地理解和使用這款芯片。
聯係我們
HTH体育登录入口
電話:0755-85279055
地址: 深圳市龍華新區民清路50號油鬆民清大廈701
手機:18902855590
友情鏈接: 小家電方案 網站地圖
©版權所有 2024~2028 HTH体育登录入口