当前位置:网站首页>Tm1637 four digit LED display module Arduino driver with second dot
Tm1637 four digit LED display module Arduino driver with second dot
2022-07-25 13:50:00 【Wuyu】
I bought a few yuan online LED Display module ,IIC Interface ,TM1637 drive , Four digit display , With second dot . Write a for ESP32 Modular ARDUINO The driver , Put your notes here , For future use .

Module file :TM1637.C
#ifndef TM1637_H
#define TM1637_H
/*TM1637 Four place LED Nixie tube ( With second dot ) Display drive , Each digital tube can display one hexadecimal data 0~F, Support second dot display and brightness adjustment .
* _________________________________
*GND---- | __ __ __ __ |
*VCC---- | |__| |__| . |__| |__| |
*DIO---- | |__| |__| . |__| |__| |
*CLK---- |_________________________________|
* LED3 LED2 LED1 LED0
*/
class TM1637{
private:
//1/4 Pulse width setting . Using different clock frequencies requires adjusting this parameter to accommodate IIC Bus operation speed .
#define TM1637_DELAY_US 1
const uint8_t displayChar[16]={0X3F,0X30,0X5B,0X79,0X74,0X6D,0X6F,0X38,0X7F,0X7D,0X7E,0X67,0X0F,0X73,0X4F,0X4E};// Hexadecimal number BCD code ( Please use different coding arrays according to the connection of the digital tube of the printed board ).
uint8_t DIO=26;//IIC cable .
uint8_t CLK=27;//IIC Clock line .
uint8_t Brightness=0;// Brightness value .
boolean secondPoint=true;// Whether to display the second dot .( The actual is LED1 The decimal point of )
uint8_t displayBuffer[6];// memory .
protected:
void init(void){uint8_t index;pinMode(DIO, OUTPUT);pinMode(CLK, OUTPUT);iic_stop();for(index=0;index<6;index++){displayBuffer[index]=0xff;}Brightness=7;writeBuffer();}
void iic_start(void){digitalWrite(CLK,LOW);delayMicroseconds(TM1637_DELAY_US);digitalWrite(DIO,HIGH);delayMicroseconds(TM1637_DELAY_US);digitalWrite(CLK,HIGH);delayMicroseconds(TM1637_DELAY_US);digitalWrite(DIO, LOW);delayMicroseconds(TM1637_DELAY_US);}
void iic_stop(void){ digitalWrite(CLK,LOW);delayMicroseconds(TM1637_DELAY_US);digitalWrite(DIO, LOW);delayMicroseconds(TM1637_DELAY_US);digitalWrite(CLK,HIGH);delayMicroseconds(TM1637_DELAY_US);digitalWrite(DIO,HIGH);delayMicroseconds(TM1637_DELAY_US);}
void iic_waitACK(void){uint16_t Index;digitalWrite(CLK, LOW);delayMicroseconds(TM1637_DELAY_US);digitalWrite(DIO, HIGH);for(Index=0;Index<10;Index++){if(!digitalRead(DIO)){break;}delayMicroseconds(TM1637_DELAY_US);}digitalWrite(CLK,HIGH);delayMicroseconds(TM1637_DELAY_US);digitalWrite(CLK,LOW);delayMicroseconds(TM1637_DELAY_US);}
void iic_writeByte(uint8_t InData){uint8_t Index;for(Index=0;Index<8;Index++){digitalWrite(CLK, LOW);delayMicroseconds(TM1637_DELAY_US);if(InData&0x01){digitalWrite(DIO, HIGH);}else{digitalWrite(DIO, LOW);}delayMicroseconds(TM1637_DELAY_US);digitalWrite(CLK, HIGH);delayMicroseconds(TM1637_DELAY_US);delayMicroseconds(TM1637_DELAY_US);InData=InData>>1;}digitalWrite(CLK, LOW);delayMicroseconds(TM1637_DELAY_US);}
void writeBuffer(void){uint8_t Index;iic_start();iic_writeByte(0x40);iic_waitACK();iic_stop();iic_start();iic_writeByte(0xc0);iic_waitACK();for(Index=0;Index<6;Index++){if(secondPoint==true && Index==1){iic_writeByte(displayBuffer[Index]|0x80);}else{iic_writeByte(displayBuffer[Index]);}iic_waitACK();}iic_stop();iic_start();iic_writeByte(Brightness&0x07|0x88);iic_waitACK();iic_stop();}
public:
TM1637(void){;}
TM1637(uint8_t In_DIO,uint8_t In_CLK){DIO=In_DIO;CLK=In_CLK;}
void begin(void){init();}
void begin(uint8_t In_DIO,uint8_t In_CLK){DIO=In_DIO;CLK=In_CLK;begin();}
uint8_t read(uint8_t Address){if(Address>=6){return 0;}else{return displayBuffer[Address];}}
uint8_t write(uint8_t Address,uint8_t Data){if(Address>=6||Data>=16){return 1;}displayBuffer[Address]=displayChar[Data];writeBuffer();return 0;}// Write video memory (00H~05H). Successfully returns 0, Failure to return 1.
uint8_t brightness(uint8_t In_Data){if(In_Data>7){Brightness=7;}else{Brightness=In_Data;}writeBuffer();return Brightness;}// Set brightness (0~7).
uint8_t brightness(void){return Brightness;}// Get brightness value .
void point(void){secondPoint=!secondPoint;writeBuffer();}// Change the display state of the second dot .
void point(boolean In_secondPoint){secondPoint=In_secondPoint;writeBuffer();}// Show ( Extinguish ) Second point .
void point(int In_secondPoint){if(In_secondPoint==0){secondPoint=false;}else{secondPoint=true;}writeBuffer();}// Show ( Extinguish ) Second point .
};
#endifMain program file :TM1637.INO( Demonstrate nixie tube display , Second dot flashing , Brightness adjustment )
#include "TM1637.C"
TM1637 LED_FOR;
void setup() {
LED_FOR.begin(26,27);// initialization , Set up IIC Communication pin .
LED_FOR.brightness(7);//LED Maximum brightness .
}
void loop() {
uint8_t index;
uint16_t TemNum;
TemNum=millis();
if(TemNum%1000<500){LED_FOR.point(true);}else{LED_FOR.point(false);}// Second dot flashing .
for(index=0;index<4;index++){
TemNum=TemNum/10;
LED_FOR.write(index,TemNum%10);// Display four digits .
}
}边栏推荐
猜你喜欢

刷题-洛谷-P1047 校门外的树

Redux usage and analysis

手把手教学Yolov7的搭建及实践

window unbutu20 LTS apt,wget 安装时 DNS 解析错误

Install mujoco and report an error: distutils.errors DistutilsExecError: command ‘gcc‘ failed with exit status 1
HTTP cache tongtianpian, there may be something you want

DNS resolution error during windows unbutu20 lts apt, WGet installation

音视频技术开发周刊 | 255

包管理 apt,dpkg
![Error of Tencent cloud [100007] this env is not enable anonymous login](/img/a2/a209a0d94e3fbf607242c28d87e2dd.png)
Error of Tencent cloud [100007] this env is not enable anonymous login
随机推荐
0716RHCSA
刷题-洛谷-P1146 硬币翻转
Azure Devops (XIV) use azure's private nuget warehouse
From input URL to web page display
Audio and video technology development weekly | 255
Mujoco+spinningup for intensive learning training quick start
百度搜索打击盗版网文站点,SEOer应该关注哪些问题?
Namespaces and libraries
Hcip day 6 notes
Brush questions - Luogu -p1059 clear random number
Redux usage and analysis
The whole process of 6w+ word recording experiment | explore the economical data storage strategy of alluxio
Canal realizes MySQL data synchronization
职场「数字人」不吃不睡007工作制,你「卷」得过它们吗?
Leetcode -- addition of four numbers II
What is your revenue rank among global developers in 2022?
mysql 01: source命令
0715RHCSA
Internal error of LabVIEW
NoSQL, relational database, row and column database comparison and analogy