TM1652驱动方法@支持硬件奇偶校验的单片机名单
项目中用到了TM1652数码管驱动芯片,简单明了的分享一下驱动方法[*]波特率19200bps 停止位1 数据位8 校验位Odd(奇校验) ,8个数据位中 1 的个数为奇数,校验位设为 0(置低电平),否则为 1(置高电平)
[*]数据帧分为两种:显示数据帧和控制命令帧,分别用来刷新显示数据和设置显示模式,数据无帧头,通过超时结束帧,超时时间3ms以上,
[*]显示帧:地址0x08 + 显示数据+显示数据n,6个显示缓存地址分别为0x08 0x88 0x48 0xC8 0x28 0xA8, 一帧可以设置一个数据,也可以多个,
[*]控制帧:0x18 + 控制指令,控制指令的位4~7控制驱动占空比,位1~3控制驱动电流,位0控制8x5或者7x6显示模式
[*]寄存器的具体含义需自行查看手册,
另外,STC大家庭中,支持硬件奇偶校验的芯片如下:
STC8H2K32U系列
STC8H2K12U系列
STC32全系仅USART1~2
STC32G144K246的USART1~8
如有遗漏请大家回帖补充
关键驱动代码如下:
//串口配置代码
void Uart1_Init(void) //19200bps@11.0592MHz
{
USARTCR2 = 0x06; //使能硬件校验,使能奇校验
SCON = 0xD0; //9位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0x70; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
}
void main()
{
EAXSFR();
Uart1_Init();
SBUF = 0x18; //控制帧 帧头
while(TI==0); TI = 0;
SBUF = 0x15; //控制命令,占空比为 8/16,段驱动电流为 3/8,显示模式 7 段 6 位
while(TI==0); TI = 0;
delay_ms(10); //大于3ms的延时 用于结束帧
SBUF = 0x08; //显示地址,0x08对应GR1地址,
while(TI==0); TI = 0;
SBUF = 0xff; //GR1 数据
while(TI==0); TI = 0;
SBUF = 0xff; //GR2 数据
while(TI==0); TI = 0;
SBUF = 0xff; //GR3 数据
while(TI==0); TI = 0;
SBUF = 0xff; //GR4 数据
while(TI==0); TI = 0;
SBUF = 0xff; //GR5 数据
while(TI==0); TI = 0;
SBUF = 0xff; //GR6 数据
while(TI==0); TI = 0;
delay_ms(10); //大于3ms的延时 用于结束帧
while (1);
}
页:
[1]