几块钱网上买了块LED显示模块,IIC接口,TM1637驱动,四位显示,带秒点.写了个用于ESP32模块的ARDUINO驱动程序,将笔记放这里,以备未来使用.

模块文件:TM1637.C

#ifndef TM1637_H#define TM1637_H/*TM1637四位LED数码管(带秒点)显示驱动,每位数码管可以显示一位十六进制数据0~F,支持秒点显示和亮度调节.*         _________________________________ *GND---- |   __      __       __      __   |*VCC---- |  |__|    |__|  .  |__|    |__|  |*DIO---- |  |__|    |__|  .  |__|    |__|  |*CLK---- |_________________________________|*           LED3    LED2     LED1    LED0   */
class TM1637{private://1/4脉冲宽度设置。使用不同的时钟频率需要调节此参数以适应IIC总线操作速度.#define TM1637_DELAY_US 1const uint8_t displayChar[16]={0X3F,0X30,0X5B,0X79,0X74,0X6D,0X6F,0X38,0X7F,0X7D,0X7E,0X67,0X0F,0X73,0X4F,0X4E};//十六进制数字BCD码(请根据印刷板数码管连接情况使用不同的编码数组)。uint8_t DIO=26;//IIC数据线。uint8_t CLK=27;//IIC时钟线。uint8_t Brightness=0;//亮度值。boolean secondPoint=true;//是否显示秒点。(实际就是LED1的小数点)uint8_t displayBuffer[6];//显存。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;}//写显存(00H~05H)。成功返回0,失败返回1。uint8_t brightness(uint8_t In_Data){if(In_Data>7){Brightness=7;}else{Brightness=In_Data;}writeBuffer();return Brightness;}//设置亮度(0~7)。uint8_t brightness(void){return Brightness;}//获取亮度值。void point(void){secondPoint=!secondPoint;writeBuffer();}//改变秒点显示状态。void point(boolean In_secondPoint){secondPoint=In_secondPoint;writeBuffer();}//显示(熄灭)秒点。void point(int In_secondPoint){if(In_secondPoint==0){secondPoint=false;}else{secondPoint=true;}writeBuffer();}//显示(熄灭)秒点。
};
#endif

主程序文件:TM1637.INO(演示数码管显示,秒点闪烁,亮度调节)

#include "TM1637.C"
TM1637 LED_FOR;
void setup() {LED_FOR.begin(26,27);//初始化,设置IIC通信引脚.LED_FOR.brightness(7);//LED亮度最大.
}void loop() {uint8_t index;uint16_t TemNum;TemNum=millis();if(TemNum%1000<500){LED_FOR.point(true);}else{LED_FOR.point(false);}//秒点闪烁.for(index=0;index<4;index++){TemNum=TemNum/10;LED_FOR.write(index,TemNum%10);//显示四位数字.}
}

TM1637带秒点四位LED显示器模块ARDUINO驱动程序相关推荐

  1. 用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统...

    本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统.系统应具有赛程定时设置,赛程时间暂停,及时刷新甲.乙双方的成绩以及赛后成绩暂存等功能. 内容包括:显示.键盘.时钟等内容设计 ...

  2. Arduino使用TM1650四位数码管模块

    相关资料链接 链接:https://pan.baidu.com/s/1eE0rkaSJsKJMU_RUorS5OA 提取码:3ujh 1.1 介绍: 这个模块主要由一个0.36英寸 红色共阳 4位数码 ...

  3. STM32驱动全彩LED灯模块WS2812

    STM32驱动全彩LED灯模块WS2812 WS2812全彩LED灯模块系列,可以进行级联实现灯带的效果,MCU端通过一个管脚可以控制所有级联的LED灯的不同发光颜色显示. 级联电路 WS2811(未 ...

  4. 内存映射和多功能LED控制器驱动芯片/带按键扫描的LED驱动芯片(IC)-VK16K33A/B/C,内置RC振荡器,最大16seg和8com

    品牌:永嘉微电/VINKA ­工程服务,技术支持 型号:VK16K33A/B/C 封装:SOP28/24/20 年份:新年份 概述: VK16K33是一个内存映射和多功能LED控制器驱动程序.VK16 ...

  5. 四位数码管树莓派c语言,用树莓派和四位数码管模块做一个时钟

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 预备知识 如图,这是一个4位数码管模块,由两片 74HC595 级联控制,引脚如图,从上到下,分别为VCC(3.3V/5 ...

  6. 八种显示器技术(放映机、投影仪、CRT显示器、LCD显示器、LED显示器、PDP等离子显示器、激光显示器、VR显示器)

    最近一直在关注显示器方面的资料,经过一段时间的学习,从网上整理了八种显示技术的资料,方便学习理解,可能不够全面和正确,希望各位大师批评指正,发现错误将及时更正. 一.放映机 放映机是把影片上记录的影像 ...

  7. 带以太网和 CAN 的低压模块-德国KLARIC 新款KLARI-FUSE3|新能源静态电压电流数据采集模块

    带以太网和 CAN 的低压模块 KLARI-FUSE3 特征 具有 16 个并行 ADC 和 8 个输入的 16 通道测量模块 所有输入均可灵活用于电流.电压.电流和电压或温度测量,每个输入一个探头 ...

  8. LED显示器和传统CRT显示器的概念与对比

    LED显示器概念 LED显示屏(LED display)是一种平板显示器,由一个个小的LED模块面板组成,用来显示文字.图像.视频等各种信息的设备.         LLED电子显示屏集微电子技术.计 ...

  9. LED显示器和LCD显示器的区别

    LED是指Light Emitting Diode(发光二极管),而我们说的这个LED是指用发光二极管作为光源的液晶显示器.LCD是指Liquid Crystal Display(液晶显示器),它采用 ...

最新文章

  1. test1---peersim 0
  2. 【LDA学习系列】Gibbs采样python代码
  3. Go gin其他数据类型渲染
  4. Web前端如何学?Web前端学习方法分享
  5. CentOS生成自签名证书配置Apache https
  6. linux c头文件#include<sys/types.h>和#include<fcntl.h>头文件总结
  7. 她只用1个方法,就把英语拿下了!
  8. 英语不会读怎么办?它来教你……
  9. 使用vue来开发一个下拉菜单组件(1)
  10. pytorch根据特征图训练LSTM Stacked AutoEncoder
  11. Vue实现按钮和文本框的切换
  12. mysql中表结构语句_mysql中表数据与表结构复制语句
  13. 浅谈深度学习中的激活函数
  14. 基于IHttpAsyncHandler的TCP收发器
  15. 深入理解java虚拟机 - 垃圾回收机制(GC)
  16. php html页面显示乱码怎么解决方法,html网页乱码原因以及解决办法
  17. vs2010专业板产品密钥
  18. [MATLAB App Designer] 在表(UITable)中设置下拉菜单
  19. 《灵飞经》②东岛门人 第四章 星隐真人
  20. 神奇的Navigator对象

热门文章

  1. 鸡兔同笼 【用c语言求解 鸡兔同笼】c语言新手第二天实战
  2. 安装SQLServer2019
  3. 安卓app之按键美化
  4. ddb文件怎么打开?PROTEL 99se软件pcb设计下载安装使用教程(5)
  5. 哈佛大学计算机专业研究生排名,2019USnews美国大学ece研究生专业新排名诞生
  6. Java多线程之Exchanger
  7. python写cdr插件_(如何(用Python)写一个(Lisp)解释器(下))
  8. in_array 二维数组
  9. c语言中abs与labs的区别,C / C ++中的abs(),labs(),llabs()函数
  10. 嵌入式 ssl协议详解