ESP32-C3 控制TM1652 驱动两位数码管 代码
时间: 2023-12-09 08:04:42 浏览: 315
以下是ESP32-C3控制TM1652驱动两位数码管的代码:
```c++
#include <Wire.h>
#define TM1652_I2C_ADDRESS 0x24
byte SEG_TAB[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};
void writeByte(byte data) {
Wire.beginTransmission(TM1652_I2C_ADDRESS);
Wire.write(data);
Wire.endTransmission();
}
void writeCmd(byte cmd) {
Wire.beginTransmission(TM1652_I2C_ADDRESS);
Wire.write(0x40);
Wire.write(cmd);
Wire.endTransmission();
}
void setDisplay(byte data, byte index) {
writeCmd(0xc0 + index * 2);
writeByte(data);
}
void setup() {
Wire.begin();
writeCmd(0x8f);
}
void loop() {
for (int i = 0; i < 100; i++) {
setDisplay(SEG_TAB[i / 10], 0);
setDisplay(SEG_TAB[i % 10], 1);
delay(100);
}
}
```
在setup函数中,我们初始化Wire对象并发送一个命令0x8f,该命令用于开启TM1652的显示功能。
在loop函数中,我们循环计数器i从0到99,每次调用setDisplay函数来设置两位数码管的显示值。setDisplay函数的第一个参数是要显示的数据,第二个参数是要设置的数码管的索引(0或1)。我们使用SEG_TAB数组来将数字转换为对应的7段数码管编码。
在每次循环结束时,我们延迟100毫秒,以便我们可以看到数码管上的数字变化。
阅读全文