STM32驱动CH422点亮多位数码管

         CH422 具有硬件实现的 2 线串行接口,包含 2 根信号线:串行数据时钟输入线 SCL、串行数据输入和输出线 SDA。采用的IIC通信,时序如下:
        从实例得出,上表的48H为寄存器操作地址,01H为操作命令,也就是说驱动CH422的写入时序为:起始信号—发送寄存器地址—接收应答—发送操作命令—接收应答—终止信号。
CH422写指令代码:
void CH422_WriteReg(uint8_t RegAddress, uint8_t Data)
{
	MyI2C_Start();						//I2C起始
	MyI2C_SendByte(RegAddress);			//发送寄存器地址
	MyI2C_ReceiveAck();					//接收应答
	MyI2C_SendByte(Data);				//发送要写入寄存器的数据
	MyI2C_ReceiveAck();					//接收应答
	MyI2C_Stop();						//I2C终止
}

CH422初始化: 

       CH422分IO扩展功能和数码管自动扫描功能,使用数码管自动扫描功能,由手册得出,配置CH422功能的寄存器地址为01001000B,即0x48;数码管模式为05H;
void CH422_Init(void)
{
		MyI2C_Init();					//先初始化底层的I2C
		CH422_WriteReg(0x48, 0x05);		//配置CH422为数码管模式
}


CH422显示数码管:

           由数据手册得出:控制数码管的地址为70H、72H、74H、76H,对这些地址写入相应的数据驱动数码管显示。

uint8_t bcdcode[16] = {0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F,\
											0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71};
                                          //数码管显示0—F

uint16_t i = 123 ;
uint8_t Num,tNum,mNum;

Num = i % 10;
tNum = i /10 %10;
mNum = i / 100;
		
CH422_WriteReg(0x74,bcdcode[Num]);
CH422_WriteReg(0x72,bcdcode[tNum]);
CH422_WriteReg(0x70,bcdcode[mNum]);

### 回答1: 要驱动四位数码管tm,需要使用STM32的GPIO(通用输入输出端口)来控制LED的亮灭,而数字的显示需要借助定时器(TIM)的输出来扫描数码管。下面是具体的步骤: 1. 确定驱动方式:共阳极还是共阴极。STM32的GPIO输出只能为低电平或高电平,因此在连接数码管时,需要根据数码管的类型来选择适合的接口。 2. 连接数码管:将四个数码管的相应引脚连接到STM32的GPIO引脚上,并接上对应的限流电阻,以避免LED受到过大的电流而烧坏。 3. 配置GPIO输出:使用STM32的库函数来配置GPIO口为输出模式,并设置其状态为高电平或低电平,以控制数码管的亮灭。 4. 配置定时器(TIM):用于控制数码管的扫描,可以使用STM32的库函数来配置TIM,设定其工作模式为定时器模式,并设置定时器的计数周期和分频器等参数。 5. 编写扫描函数:使用STM32的库函数来编写扫描函数,以实现对四个数码管的扫描。扫描函数需要在定时器中断中被调用,通过改变GPIO的输出状态来控制数码管的显示。 6. 编写主函数:在主函数中完成硬件初始化的工作,并调用扫描函数,以实现对四个数码管的连续显示。 总之,驱动四位数码管tm需要合理配置STM32的GPIO和定时器,编写相应的库函数和扫描函数,以实现对数码管的控制和显示。 ### 回答2: 要使用STM32驱动四位数码管TM,需要将数字信号转换为七段显示的格式,并且按照时序规则向数码管发送数据。具体实现步骤如下: 1.定义引脚:在程序开头,需要定义数码管所使用的引脚。通常情况下,每个数码管有七条控制引脚,即A~G,以及一个表示位数的COM引脚。 2.编写显示函数:此函数将数字转换为七段显示的格式,并输入到引脚。 3.编写定时器中断函数:第一步中定义的COM引脚需要周期性的切换,以便依次控制每个数码管的显示。这可以通过定时器中断来完成。 4.编写主函数:在主函数中,设置定时器和中断,以及调用显示函数显示数字。 总的来说,STM32驱动四位数码管TM需要对硬件有一定的了解,并具有较强的编程能力。实现起来较为复杂,需要深入研究相关知识。同时可以借助一些开源的数码管驱动库,简化开发过程。 ### 回答3: 要驱动四位数码管,可以使用STM32的IO口和定时器来实现。首先需要连接四位数码管的引脚,将共阴(或共阳)的接到GND(或VCC),并将每个数码管的七段管对应的引脚分别接到对应的IO口,并在程序中配置为输出模式。然后需要设置一个定时器,用来刷新数码管的显示。最后,根据需要显示的数字或字母,设置对应的IO口状态和定时器刷新周期,就可以实现数码管驱动。 具体实现步骤如下: 1. 在工程中添加定时器库文件和4位数码管驱动库文件。 2. 在程序中初始化IO口和定时器。配置IO口为输出模式,定时器的计数频率为1 kHz。 3. 在主函数中设置一个无限循环,并在其中循环显示需要显示的数字或字母。通过位运算和查表法,将数字或字母对应的控制码写入到对应的IO口中,实现四位数码管的显示。 4. 设置定时器中断,定时器每隔一定时间会触发中断函数。在中断函数中更改IO口状态,实现数码管的刷新。 5. 在主函数中延时一定时间,等待数码管显示后再显示下一个数据。 最终实现的效果是,可以通过STM32的IO口驱动四位数码管显示任意数字或字母,并且可以设置刷新频率控制显示效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值