基于STM32的4位数码管模块驱动

数码管型号四位共阳,采用2片595驱动数码管,五个管脚分别如下:

VCC------------------------------------------------------------------------------------------>3.3V~5V
DIO------------------------------------------------------------------------------------------->PE5
RCLK---------------------------------------------------------------------------------------->PE3
SCLK---------------------------------------------------------------------------------------->PE1
GND ---------------------------------------------------------------------------------------->接地

我采用的STM32芯片可以采用STM32f103zet6,实现的功能是四位数码管可以任意显示想要的四位数,主要代码部分如下:

(1)主函数部分:

int main(void)
{	
	 DIGITAL_Init();//使能管脚不能少



	while(1)
	{
		display(5430) ;//显示的是五千四百三十,可以根据需求自己改动

	}
	
}

(2)引脚初始化部分:

void DIGITAL_Init(void)
{


	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOE, &GPIO_InitStructure);
	
	GPIO_ResetBits(GPIOE, GPIO_Pin_1 );
	GPIO_ResetBits(GPIOE, GPIO_Pin_3 );
	GPIO_ResetBits(GPIOE, GPIO_Pin_5 );
}

(3)display() 部分:

void display(unsigned int n) 
{

	static unsigned int thousand_bit, hundred_bit, ten_bit, single_bit;
	const unsigned char  *led_table;          // 查表指针,指针使用
	unsigned char i;  //定义需要放在LED赋值前
	thousand_bit = n / 1000;
	hundred_bit = (n % 1000) / 100;
	ten_bit = n % 1000 % 100 / 10;
	single_bit = n % 10;   //显示千位数
	
	//显示第1位
	led_table = LED_0F + single_bit;	  //LED_OF是首地址,LED[0]移动
	i = *led_table;

	DIGITAL_out(i);			
	DIGITAL_out(0x01);		 //位选

    GPIO_ResetBits(GPIOE, GPIO_Pin_3);       //	RCLK = 0;
    GPIO_SetBits(GPIOE, GPIO_Pin_3);         //	RCLK = 1;
	//显示第2位
	led_table = LED_0F + ten_bit;
	i = *led_table;

	DIGITAL_out(i);		
	DIGITAL_out(0x02);		

    GPIO_ResetBits(GPIOE, GPIO_Pin_3);       //	RCLK = 0;
    GPIO_SetBits(GPIOE, GPIO_Pin_3);         //	RCLK = 1;
	//显示第3位
	led_table = LED_0F + hundred_bit;
	i = *led_table;

	DIGITAL_out(i);			
	DIGITAL_out(0x04);	

    GPIO_ResetBits(GPIOE, GPIO_Pin_3);       //	RCLK = 0;
    GPIO_SetBits(GPIOE, GPIO_Pin_3);         //	RCLK = 1;
	//显示第4位
	led_table = LED_0F + thousand_bit;
	i = *led_table;

	DIGITAL_out(i);			
	DIGITAL_out(0x08);		

    GPIO_ResetBits(GPIOE, GPIO_Pin_3);       //	RCLK = 0;
    GPIO_SetBits(GPIOE, GPIO_Pin_3);         //	RCLK = 1;
}

(4)DIGITAL_out()部分:

void DIGITAL_out(unsigned char X) //写程序时此函数需要放在display()前面
{
	unsigned char i;
	for(i=8;i>=1;i--)
	{
		if (X&0x80) GPIO_SetBits(GPIOE, GPIO_Pin_5 ); 
		else GPIO_ResetBits(GPIOE, GPIO_Pin_5 );
		X<<=1;
		GPIO_ResetBits(GPIOE, GPIO_Pin_1); 
		GPIO_SetBits(GPIOE, GPIO_Pin_1); 
	}
}

  • 19
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 3数码管 stm32 是指使用 STM32 微控制器驱动的三数码管显示器。STM32 是意法半导体提供的一系列高性能微控制器产品系列,拥有强大的处理能力和丰富的外设接口。数码管是一种常见的数字显示器,用于在电子系统中显示数字或字符。 使用 STM32 微控制器驱动数码管可实现数字显示功能。通过 GPIO(通用输入/输出)引脚控制数码管的开关以及控制查询或显示刷新,可以按需显示任意数字或字符。STM32 微控制器内部拥有丰富的计时/定时器、串行接口和通信接口等功能模块,可以方便地完成数据传输和驱动控制。 为驱动数码管,通常需要将数据和控制信号连接到 GPIO 引脚,通过编程配置和控制相应的引脚状态和电平。控制流程主要包括使用计时/定时器生成时间序列、根据需要刷新显示和更新显示的数字或字符。此外,还可以通过外部中断或其他外设来触发数字的改变,并及时更新到数码管上。 通过使用 STM32 微控制器和适当的编程方法,可以轻松实现对三数码管驱动和控制。这为各种应用提供了灵活和可扩展的数字显示解决方案,包括计数器、计时器、温度显示等等。在实际的项目中,开发人员可以根据具体需求选择合适的 STM32 微控制器型号,并结合硬件设计和软件开发,实现稳定可靠的数字显示功能。 ### 回答2: STM32是一种3数码管,是由STMicroelectronics开发和生产的一款微控制器系列。它采用先进的32ARM Cortex-M内核,具有强大的处理能力和丰富的外设接口,常被应用于嵌入式系统开发和物联网等领域。 3数码管是一种用于数字显示的显示设备,可以显示0到9的数字。STM32的3数码管通常由7个发光二极管(LED)组成,每个发光二极管代表一个数字段。这些段可以通过STM32的GPIO接口连接到不同的引脚上,通过控制这些引脚的电平来显示不同的数字。 使用STM32驱动3数码管可以通过以下步骤实现: 1. 配置GPIO引脚:选择3个GPIO引脚作为数码管的控制引脚,并设置为输出模式。 2. 编写控制代码:使用STM32的GPIO库函数编写控制代码,通过设置引脚的电平来控制数码管的亮灭状态。根据需要,可以控制不同的数码管段显示不同的数字。 3. 时序控制:使用定时器或延时函数来实现数码管显示的刷新。根据需要,可以设置显示时间间隔和循环次数等参数。 4. 测试和调试:将程序下载到STM32开发板上,连接数码管,并通过观察数码管的显示结果来测试和调试代码。根据需要,可以对代码进行修改和优化。 总之,通过STM32驱动3数码管可以实现灵活的数字显示功能,这在许多应用场景中非常有用,例如计时器、温度显示和计数器等。使用STM32的强大功能,开发者可以简化驱动程序的编写,加快产品的开发速度。 ### 回答3: 3数码管 stm32是一种基于STM32单片机的数字显示器件。这种数码管使用了3个七段数码管,可以显示0到9的数字以及一些字母和特殊字符。它是一种常见的显示器件,广泛应用于计时器、计数器、温度计以及其他数字显示的场合。 这种数码管使用STM32单片机作为控制芯片,通过芯片上的GPIO口来控制数码管的显示内容。通过控制GPIO输出的高低电平以及对应的段选择信号,可以实现不同数字的显示。控制芯片还可以通过定时器来控制数码管的刷新频率,从而实现数码管的动态显示效果。 在使用3数码管 stm32时,首先需要在程序中对GPIO进行初始化和设置,使得它们能够正确控制数码管。接着,根据需要显示的数字,将对应的数码管段选信号和段码数据发送给数码管,这样就能够实现数字的显示。为了实现动态显示效果,还需要使用定时器来触发刷新,并在定时器中更新数码管的显示内容。 总之,3数码管 stm32是一种便捷、简单而又常用的数字显示器件。它可以通过STM32单片机控制芯片来实现数字和字符的显示,并通过定时器来实现动态显示效果。通过合理的硬件和软件设计,可以实现各种各样的数字显示应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值