TM1652是天微公司LED驱动控制专用芯片。通讯方式采用异步串口通信(UART)协议,因芯片只接收单片机发来的数据,仅需要单片机的一个TxD端口发送数据给芯片即可。它是TM系列中唯一单接口芯片。两种显示模式(7段×6位,8段×5位)本例采用8段×5位模式,实际用的4位共阴数码管,如果单片机P3.1被占用,还可以用软件将串口切换到其它管脚。此代码适用于STC绝大多数1T芯片。
- //TM1652驱动示例
- //芯片型号AI8051U 使用指令模式8-Bit
- //串口TxD 9位数据 奇校验驱动
- //频率为11.0592MHz 波特率19200
- #include <STC8051U.H>
- #include "intrins.h"
- #define uint unsigned int
- #define uchar unsigned char
-
- #define S1_S0 0x40 //P_SW1.6 串口1切换控制位
- #define S1_S1 0x80 //P_SW1.7
-
- uchar code table[]={//共阴数码管段码
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- //TM1652显示地址:0x08 0x88 0x48 0xc8 0x28 0xa8
- //驱动码缓存:显示首地址0x08,5位显示数据,控制命令0x18,调节命令0x14(占空比8/16,段电流3/8,模式8段5位)
- uchar data dis_buf[8]={0x08,0,0,0,0,0,0x18,0x14};
-
- uint num=0;
-
- void delay_ms(uint ms);
- void Uart1_Init(void);
- void SendData(uchar dat);
- void TM1652_Write(uint dat);
-
- void main()
- {
- P0M0 = 0x00;P0M1 = 0x00;
- P1M0 = 0x00;P1M1 = 0x00;
- P2M0 = 0x00;P2M1 = 0x00;
- P3M0 = 0x00;P3M1 = 0x00;
- P4M0 = 0x00;P4M1 = 0x00;
- P5M0 = 0x00;P5M1 = 0x00;
- P6M0 = 0x00;P6M1 = 0x00;
- P7M0 = 0x00;P7M1 = 0x00;
- Uart1_Init();
- TM1652_Write(0);//初始化显示0
- TM1652_Write(0);//再次初始化确保不显示寄存器残余
- delay_ms(500);
- while(1)
- {
- if(++num>9999)num=0;
- TM1652_Write(num);
- delay_ms(500);
- }
- }
复制代码 完整程序在附件
main.rar
(1.41 KB, 下载次数: 46)
|