CH455G驱动数码管

官方硬件原理图

 这个芯片可以驱动数码管也可以扫描键盘,这里我们只看数码管驱动,所以原理图参考官方这里就行了。最多只能驱动4个数码管。

官方数码管驱动说明

文档中说了芯片是iic通信控制,时序也是标准的iic时序,所以驱动我们用标准的iic驱动就可以了。如果你用的是正常写好可以用的iic驱动,但是驱动不了ch455g,那么不要怀疑,肯定不是你iic的问题,请你好好检查硬件。

看到这一段,我们大致知道ch455g有一个系统参数命令,48H,控制着一些模式,亮度等等,一次需要传输2个字节,第一个是命令,第二个是数据,但是并没有清晰的看出传输字节2的数据位怎么分配的。

如果我没有猜错的话,它的位分布应该是这样,如下图。

 各功能子手册都有介绍,对于数码管应用,一般我们只需要控制ENA,和INTENS亮度即可,

如何显示数据

加载数据,字节1有四个命令68H,6AH,6CH,6E,字节2是要显示的数据,数据位中也是一位控制数码管的一个灯,了解数码管的原理的应该看到这就很熟悉了,

例如数据=0x01(00000001),那么就只有数码管A那一段灯亮,

如果数据=0x80(10000000),那么就只有DP那一段灯亮,其实就是那个小数点,

那么我们就可以写一个BCD码出来显示各种文字了。

//0-f
static u8 bcdcode[16]={ 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F,\
												0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71 };

驱动编写使用

说明:因为iic是通用的驱动,这里就不介绍了,可以用硬件的,也可以用模拟的,关于在网上看到说命令字节需要右移一位,这个可能跟他的iic驱动有关系,正常的是不用的。

应用驱动

ch455g_send_cmd   函数用到了iic的函数,先发送命令字节,然后发送数据字节。

ch455g_init  函数主要是把系统48H命令设置成0x01,等于使能芯片。

ch455g_test  函数测试四个管子显示 0,1,2,3,具体数据在上方的bcd表中

//初始化
void ch455g_init(void)
{
	IIC_Init();
	IIC_ch455_Send_Byte(0x48,0x01);
	
}

 //发送数据
void ch455g_send_cmd(u8 cmd,u8 data)
{
		IIC_Start();
		IIC_Send_Byte(cmd);
		IIC_Wait_Ack();
		IIC_Send_Byte(data);
		IIC_Wait_Ack();
		IIC_Stop();
	
}

//测试
void ch455g_test(void)
{
		ch455g_send_cmd(0x68,bcdcode[0]);
		ch455g_send_cmd(0x6A,bcdcode[1]);
		ch455g_send_cmd(0x6C,bcdcode[2]);
		ch455g_send_cmd(0x6E,bcdcode[3]);

}

显示效果:

 整体上使用还是比较简单的。

例子源码:

https://download.csdn.net/download/HES_C/86832296

写了一个stm32c8t6的小例子,iic用的PB6  PB7模拟。效果如下:

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值