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

这里写目录标题

    • STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888 提取码:8888
    • 1、函数编辑
      • (1)主函数编辑
      • (2)主函数头文件函数(bord.h)
      • (3)静态数码管源文件(nixite.c)
      • (4)静态数码管源文件(nixite.h)
    • 2、知识链接
      • (1)数码管共阴共阳的区别
      • (2)数码管原理
    • 3、工程测试


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

1、函数编辑

(1)主函数编辑

基于STM32的检测定时器超时状态并翻转LED的状态,同时检测AD按键状态并输出按下的按键编号到串口。
在这里插入图片描述

步骤2:主函数main.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); //系统时间初始化 定时100msStaticNixiteInit(); 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)

#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)

#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)

#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、工程测试

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670887.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 介绍

【1】前端发展史 前端的发展史可简述为&#xff1a; 从最初的静态页面编写&#xff0c;依赖后端模板渲染逐步演化为通过JavaScript&#xff08;特别是Ajax技术&#xff09;实现前后端分离&#xff0c;使得前端能够独立地加载数据和渲染页面随后&#xff0c;Angular、React、Vu…

CTF(Web)中关于执行读取文件命令的相关知识与绕过技巧

在我遇到的题目中&#xff0c;想要读取文件必然是要执行cat /flag这个命令&#xff0c;但是题目当然不会这么轻松。让你直接cat出来&#xff0c;必然会有各种各样的滤过条件&#xff0c;你要做的就是尝试各种方法在cat /flag的基础上进行各种操作构建出最终的payload。 下面我…

Vite构造Vue3

环境安装 node.js安装-CSDN博客 初始化Vue项目安装脚手架_vue init webpack安装脚手架-CSDN博客 选择Vue框架 &#xff0c;项目名称可以自定义&#xff0c;我使用默认的 vite-project 选择JS 进入项目安装依赖 安装路由

Leetcode编程练习

面试题-消失的数字 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start 1;end - 1;}}void rotate(vector<int>& …

AI预测体彩排3第3套算法实战化赚米验证第2弹2024年5月6日第2次测试

由于今天白天事情比较多&#xff0c;回来比较晚了&#xff0c;趁着还未开奖&#xff0c;赶紧把预测结果发出来吧~今天是第2次测试~ 2024年5月6日排列3预测结果 6-7码定位方案如下&#xff1a; 百位&#xff1a;2、3、1、5、0、6 十位&#xff1a;4、3、6、8、0、9 个位&#xf…

自动驾驶主流芯片及平台架构(二)特斯拉自动驾驶芯片平台介绍

早期 对外采购mobileye EyeQ3 芯片摄像头半集成方案&#xff0c;主要是为了满足快速量产需求&#xff0c;且受制于研发资金不足限制&#xff1b; 中期 采用高算力NVIDIA 芯片平台其他摄像头供应商的特斯拉内部集成方案&#xff0c;mobileye开发节奏无法紧跟特斯拉需求&#xff…

嵌入式学习

笔记 作业 有如下结构体 struct Student{ char name[16]; int age; double math_score; double chinese_score; double english_score; double physics_score; double chemistry…

Vue 基础语法

【1】模板语法 &#xff08;1&#xff09;差值表达式 {{}}是 Vue.js 中的文本插值表达式。 它用于在模板中输出数据或表达式的值。当数据或表达式的值发生变化时&#xff0c;插值表达式会自动更新。 补充&#xff1a;三目运算符 它的基本语法是 Condition ? A : B&#xff0…

设计模式Java实现-工厂模式

✨这里是第七人格的博客✨小七&#xff0c;欢迎您的到来~✨ &#x1f345;系列专栏&#xff1a;设计模式&#x1f345; ✈️本篇内容: 工厂模式✈️ &#x1f371;本篇收录完整代码地址&#xff1a;https://gitee.com/diqirenge/design-pattern &#x1f371; 楔子 记得刚…

Junit 测试中如何对异常进行断言

本文对在 Junit 测试中如何对异常进行断言的几种方法进行说明。 使用 Junit 5 如果你使用 Junit 5 的话,你可以直接使用 assertThrows 方法来对异常进行断言。 代码如下: Exception exception = assertThrows(NumberFormatException.class, () -> {new Integer("on…

Java的java.util.concurrent.ExecutorService简介

在Java并发编程的璀璨星空中&#xff0c;ExecutorService无疑是那颗最耀眼的明星。它不仅是Java并发编程的核心组件之一&#xff0c;更是构建高并发、高性能应用的秘密武器。今天&#xff0c;我们就来一场说走就走的探索之旅&#xff0c;揭开它的神秘面纱&#xff01; &#x1…

wordpress外贸建站公司歪建站新版网站上线

wordpress外贸建站公司 歪猫建站 歪猫WordPress外贸建站&#xff0c;专业从事WordPress多语言外贸小语种网站建设与外贸网站海个推广、Google SEO搜索引擎优化等服务。 https://www.waimaoyes.com/dongguan