TM1652驱动代码

关于手册和说明资料,网上已经有很多,想看官方手册的可以去立创商城搜索这颗ic,然后点击数据手册,本文提供一份已经跑通的驱动代码,帮助那些看了手册,也调不通的朋友,给一个正确的参考例程。

驱动TM1652很简单,就是串口通信就行,但是会有一个坑,有的人没注意到就会着了道,它虽然是串口通信,但是它是要求带奇校验的串口通信,如果没有这个,数据通信是不成功的,然后初始化设置一下亮度,就可以正常使用了。

首先是初始化

复制代码
extern u8 TM1652_dis_data[7];

#define CMD_DIS_ADDR  0X08 //显示地址命令
#define CMD_DIS_CTRL  0X18  //显示控制命令

#define CMD_COM1_DIS_ADDR 0X08
#define CMD_COM2_DIS_ADDR 0X88
#define CMD_COM3_DIS_ADDR 0X48
#define CMD_COM4_DIS_ADDR 0XC8
#define CMD_COM5_DIS_ADDR 0X28
#define CMD_COM6_DIS_ADDR 0XA8   //SG8和COM6共用一个管脚,只能选一个功能用
/*显示数据说明:B7-B0 对应SG8-SG1*/



#define TM1652_wirte_byte_data                 Uart2Send
#define TM1652_wirte_continuous_data           Uart2PutHex


void TM1652_dis_set(u8 write_enable);
void TM1652_init(void);


u8 TM1652_dis_data[7] = {CMD_DIS_ADDR};

void TM1652_init(void){

  TM1652_dis_set(1); //显示数据初始化  
  Delay_ms(5); 
  TM1652_wirte_byte_data(CMD_DIS_CTRL);
 //显示控制设置
  /*bit7-4设置占空比,bit3-1设置段驱动电流,都是值越大,参数越大,bit0设置显示模式 1;7seg:0:8seg*/
  /*bit7-4全写0则关屏*/
  TM1652_wirte_byte_data(0xff); 

}
void TM1652_dis_set(u8 write_enable){
  if(write_enable){
  TM1652_wirte_continuous_data(TM1652_dis_data,7);
   }
}

需要修改显示的时候就设置一下数组的值,然后TM1652_dis_set参数传递1,就可以了,我写的是TM1652_dis_set函数定时调用,然后根据传递值检查要不要发数据

关于串口的奇偶校验,有个小技巧教大家,这里的P是单片机的状态寄存器,逻辑运算之后,P就能指示当前数据的奇偶状态,不用自己去数个数进行计算,这样效率上提高很多,我这里是查询式的串口发送函数

复制代码
void Uart2Send(char dat)
{
    dat += 0;
    if((P)!=0){ S2CON &= 0xf7;}else{S2CON |= 0x08;}   
    while (uart2_tx_flag);
		uart2_tx_flag = 1;
    S2BUF = dat;

}
void Uart2PutHex(u8 *byte, u16 len){
     u16 i;    
     for(i=0;i<len;i++){
      Uart2Send(byte[i]);
     }
}

下面附上正常通信的抓码器的图片

相关推荐
周周记笔记5 小时前
GD32F450xx MCU Datasheet 解读:硬件测试工程师的测试方法论
单片机·嵌入式硬件
潘潘的嵌入式日记7 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
AOI小白新手上路8 小时前
江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明
单片机·嵌入式硬件·51单片机
HUI-4749 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计10 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯10 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计11 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
AOI小白新手上路11 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机
hongmai66688812 小时前
告别Wi-Fi,专注Mesh:ESP32-H2-MINI-1U-H2S模组规格与应用
单片机·嵌入式硬件·物联网·5g·h.265
Yiran_G12 小时前
BLE通信距离怎么判断?从发射功率、PHY到天线设计分析
单片机·嵌入式硬件