【STM32嵌入式系统设计与开发】——18StaticNixite(静态数码管应用)

这里写目录标题


STM32资料包:

百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888
提取码:8888

1、函数编辑

(1)主函数编辑

基于STM32的检测定时器超时状态并翻转LED的状态,同时检测AD按键状态并输出按下的按键编号到串口。

步骤2:主函数main.c循环函数编写

c 复制代码
#include "bord.h"

//数码管显示断码 0~9 .
uint8_t NixiteShow[12]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80,0x00}; //共阴

/*********************************************************************
 @Function  : 程序入口
 @Parameter : N/A
 @Return    : N/A
**********************************************************************/
int main(void)
{ 	
	uint8_t i;
	delay_init(); //启动滴答定时器
    usart1_init(9600); //USART1初始化
	LED_Init(); //板载LED初始化
	SystemTinerInit(1000-1,7200-1); //系统时间初始化 定时100ms
    StaticNixiteInit(); 
	
	printf("初始化成功!\r\n");
	
	while(1)
	{	
			if(WaitTimerOut(5))		
			{
					SetStaticNixite(NixiteShow[i]);  // 如果等待定时器 5 到达超时时间,设置数码管显示为数组 NixiteShow 中第 i 个元素的值
					i += 1;                          // 将 i 自增,准备显示下一个元素
					if(i == 13) i = 0;               // 如果 i 达到数组的最大索引(13),将 i 重置为 0,实现循环显示
			}
	}	
}	

(2)主函数头文件函数(bord.h)

c 复制代码
#ifndef __BORD_H_
#define __BORD_H_
#include "system_config.h"

//头文件包含
/*************SYSTEM*****************/
/*#include ".\sys\sys.h"*/
#include ".\delay\delay.h"
#include ".\usart\usart.h"
#include ".\timer\timer.h"

/***********Hardweare***************/
#include ".\led\led.h"
#include ".\nixite\nixite.h"

/***********Funlibrary***************/





#endif

(3)静态数码管源文件(nixite.c)

c 复制代码
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include ".\nixite\nixite.h"
#include ".\sys\sys.h"


/*********************************************************************
 @Function  : 开发板静态数码管 IO初始化
 @Parameter : N/A 
 @Return    : N/A
**********************************************************************/
void StaticNixiteInit(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;  // 定义 GPIO 初始化结构体变量

	// 使能 GPIOA 的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

	// 配置 GPIO 引脚
	GPIO_InitStructure.GPIO_Pin = GPIO_ALL_PINS;       // 设置要配置的 GPIO 引脚,此处为 GPIOA 的所有引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   // 设置引脚为推挽输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  // 设置引脚输出速度为 50MHz

	// 初始化 GPIOA 的引脚配置
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	// 将 GPIOA 的所有引脚置低,关闭数码管的显示
	GPIO_ResetBits(GPIOA, GPIO_ALL_PINS);
}

/*********************************************************************
 @Function  : 开发板静态数码管显示
 @Parameter : show :显示的段码 
 @Return    : N/A
**********************************************************************/
void SetStaticNixite(uint8_t show)
{	
    uint8_t i, temp;
    temp = show;  // 将传入的显示值存储在临时变量 temp 中

    // 循环处理每一位数字
    for(i = 0; i < 8; i++)
    {
        if(temp & 0x01)
            PAout(i) = 1;  // 如果 temp 的最低位为 1,则将对应的 PAout(i) 设置为高电平(1)
        else		
            PAout(i) = 0;  // 如果 temp 的最低位为 0,则将对应的 PAout(i) 设置为低电平(0)

        temp >>= 1;        // 将 temp 右移一位,准备处理下一位数字
    }
}

(4)静态数码管源文件(nixite.h)

c 复制代码
#ifndef __NIXITE_H_
#define __NIXITE_H_
#include <stdint.h> 

/* 宏定义 */
#define GPIO_ALL_PINS (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 StaticNixiteInit(void);
void SetStaticNixite(uint8_t show);

#endif

2、知识链接

(1)数码管共阴共阳的区别

共阴极和共阳极数码管的区别在于电极连接方式。

共阴极数码管的阴极(即数码管的段)连接到地(GND),控制共阴极数码管时,需要将对应的位引脚设置为高电平以点亮数字;

阳极(即数码管的位)需要通过给定的电压(通常是正电源)来点亮对应的数码管,在共阳极数码管中,阳极连接到正电源,而阴极需要连接到地才能点亮数码管。因此,而控制共阳极数码管时,需要将对应的阴极引脚设置为低电平以点亮数字;

(2)数码管原理

数码管由七个独立控制的LED段组成,分别标记为 a, b, c, d, e, f, g。通过控制这些段的点亮或熄灭状态,可以显示数字 0-9、部分字母和特殊符号。共阴极数码管中,将阴极连接到地(GND),给对应的阳极施加正电压可点亮相应段;共阳极数码管中,阳极连接到正电源,将阴极接地可点亮相应段

3、工程测试

相关推荐
Mortal_hhh6 分钟前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司19 分钟前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比1 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie1 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔1 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@2 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^138287988724 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张5 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩
m0_739312878 小时前
【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
stm32·单片机·嵌入式硬件
嵌入式小章8 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频