基于STM32仿真proteus分立式数码管循环显示(0~9)

环境:Proteus8.9 MDK5
选用的MCU是STM32F103C6。共阴极的八段数码管。

仿真电路图如下:
在这里插入图片描述
MCU的Crystal Frequency设置成72M。
在这里插入图片描述
需要注意的是要把排阻的Mode Type设置为ANALOG。不然显示数据时2 3两根连线一直处于高电平。
在这里插入图片描述

代码部分:
定义一个数码管显示的数组:

uint8_t SEG_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

初始化GPIOB端口的低八位引脚

void GPIOB_init()
{
	GPIO_InitTypeDef LED_GPIO;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PC端口时钟
	LED_GPIO.GPIO_Mode = GPIO_Mode_Out_PP;		//推挽输出模式
	LED_GPIO.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;	
	LED_GPIO.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&LED_GPIO);		
	GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
}

主函数:

void Delay_ms(int time)//延时函数
{
	time*=1000;
    while(time--);
}
int main(void)
{
	int i=0;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	GPIOB_Init();
	GPIOB->CRL=0X33333333; //控制低8位的输出
	while(1)
	{
		for( i= 0;i<10;i++)
		{
			GPIO_Write(GPIOB,SEG_CODE[i]);
			Delay_ms(1000);
		}
	}
	return 0;
}

完整代码:

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include <stdio.h>

uint8_t SEG_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void GPIOB_init()
{
	GPIO_InitTypeDef LED_GPIO;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PC端口时钟
	LED_GPIO.GPIO_Mode = GPIO_Mode_Out_PP;		//推挽输出模式
	LED_GPIO.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;	
	LED_GPIO.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&LED_GPIO);		
	GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
}

void Delay_ms(int time)//延时函数
{
	time*=1000;
    while(time--);
}
int main(void)
{
	int i=0;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	GPIOB_Init();
	GPIOB->CRL=0X33333333; //控制低8位的输出
	while(1)
	{
		for( i= 0;i<10;i++)
		{
			GPIO_Write(GPIOB,SEG_CODE[i]);
			Delay_ms(1000);
		}
	}
	return 0;
}

最终的效果图
在这里插入图片描述

  • 8
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值