(八)Proteus仿真STM32单片机GPIO驱动数码管

news2024/11/27 20:30:05

1,参考上篇,将LED点阵屏更换成数码管如下图

2,修改驱动函数,数组seg[14]前10个是0-9数字的编码,后四个是空格,点,横线,下划线

char seg_decode(char num)//数字解码
{
	const char seg[14]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,  0xff,0x7f,0xbf,0xf7};
	return seg[num];
}
void disp_set_row(unsigned char dat,char sel)//单个数码管显示
{
	GPIOB->ODR=0xff;
	GPIOA->ODR=~seg_decode(dat);
	switch(sel)
	{
		case 0:GPIOB->ODR=0xfe;break;
		case 1:GPIOB->ODR=0xfd;break;
		case 2:GPIOB->ODR=0xfb;break;
		case 3:GPIOB->ODR=0xf7;break;
		case 4:GPIOB->ODR=0xef;break;
		case 5:GPIOB->ODR=0xdf;break;
		case 6:GPIOB->ODR=0xbf;break;
		case 7:GPIOB->ODR=0x7f;break;
	}
}
unsigned char dispbuff[8];
void disp_scan()//定时刷新函数,毫秒级调用
{
	static char scan=0;
	disp_set_row(dispbuff[scan],scan);
	scan++;
	if(scan>=8)
		scan=0;
}
char char_decode(char ch)//字符解码
{
	if((ch>='0')&&(ch<='9'))
		return ch-'0';
	else if(ch == ' ')
		return 10;
	else if(ch =='.')
		return 11;
	else if(ch =='-')
		return 12;
	else if(ch =='_')
		return 13;
	else 
		return 10;
}
void disp_string(char *str)//字符串显示
{
	char len = strlen(str);
	char i;
	if(len>8)
		len=8;
	memset(dispbuff,10,8);
	for(i=0;i<len;i++)
	{
		dispbuff[i]=char_decode(str[i]);
	}
}

void key1_action()//更新屏幕字符
{
	disp_string("1.4 -2_5");
}
void key2_action()//更新屏幕字符
{
	disp_string("12-30-00");
}

git源码:stm32_proutes: Protues仿真STM32单片机教程源码-WWW.ARMFUN.CN

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为欧拉】国产OpenEuler服务器系统安装以及图形界面

openEuler下载 | openEuler ISO镜像 | openEuler社区官网 下载安装iso 本次选择4G的社区版本 安装&#xff0c;复制到光盘&#xff0c;光盘引导安装。虚拟机安装&#xff0c;准备好iso文件引用&#xff0c;指定好安装源&#xff0c;安装界面和centOS基本一样。选择最小安装就…

JVM系列(二) -类的加载过程介绍

一、背景介绍 我们知道 Java 是先通过编译器将.java类文件转成.class字节码文件&#xff0c;然后再通过虚拟机将.class字节码文件加载到内存中来实现应用程序的运行。 那么虚拟机是什么时候加载class文件&#xff1f;如何加载class文件&#xff1f;class文件进入到虚拟机后发…

彻底理解TypeScript函数语法

目录 参数类型基本声明默认参数剩余参数可选只读匿名函数回调函数 返回值类型函数类型表达式调用签名构造签名 函数的重载this可推导的编译选项this类型内置工具 函数是JavaScript非常重要的组成部分&#xff0c;TypeScript中也是如此&#xff0c;TypeScript 提供了强大的类型系…

网关在不同行业自动化生产线的应用

网关在不同行业自动化生产线的应用&#xff0c;展示了其作为信息与物理世界交汇点的广泛影响力&#xff0c;尤其在推动行业智能化、自动化方面发挥了不可估量的作用。以下是网关技术在污水处理、智慧农业、智慧工厂、电力改造及自动化控制等领域的深入应用剖析。 1. 污水处理 …

盒子模型的简单运用

1.块内元素与行内元素 HTML_code <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

Scala面试题大全~基础题(15题)

1&#xff1a;Scala是什么? Scala是一种多范式的编程语言&#xff0c;它结合了面向对象编程和函数式编程的特性&#xff0c;它支持面向对象、函数式和命令式编程方法。Scala运行在Java虚拟机&#xff08;JVM&#xff09;上&#xff0c;这意味着它可以与Java代码无缝集成。它还…

【多版本并发控制(MVCC)】

并发事务问题&#xff1a; MySQL隔离级别-未提交读&#xff0c;提交读&#xff0c;可重复读&#xff0c;序列化 隔离级别对于并发事务的解决情况 隔离级别脏读不可重复读幻读未提交读不可不可不可读已提交可不可不可可重复读 &#xff08;默认&#xff09;可可不可串行化&…

现货黄金价格走势图策略分析 先看“势”

在现货黄金投资市场&#xff0c;对金价走势图的趋势进行分析&#xff0c;是投资者做出明智决策的关键步骤。通过有效的趋势分析&#xff0c;投资者可以更好地预测市场的走向&#xff0c;从而制定相应的交易策略。本文将详细介绍如何分析金价的趋势&#xff0c;并探讨这种分析方…

J1学习打卡

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 # 数据预处理和加载 import torch from torch import nn, optim from torch.utils.data import DataLoader from torchvision import datasets, transforms, …

Python | Leetcode Python题解之第470题用Rand7()实现Rand10()

题目&#xff1a; 题解&#xff1a; class Solution:def rand10(self) -> int:while True:a rand7()b rand7()idx (a - 1) * 7 bif idx < 40:return 1 (idx - 1) % 10a idx - 40b rand7()# get uniform dist from 1 - 63idx (a - 1) * 7 bif idx < 60:retur…

C语言 | Leetcode C语言题解之第472题连接词

题目&#xff1a; 题解&#xff1a; typedef struct Trie {struct Trie * children[26];bool isEnd; }Trie;#define TRIE_INITIAL(node) do { \for (int i 0; i < 26; i) { \(node)->children[i] NULL; \} \(node)->isEnd false; \ }while(0);static void freeTri…

仿IOS桌面悬浮球(支持拖拽、自动吸附、自动改变透明度与点击、兼容PC端与移动端)

使用 pointerdown/pointermove/pointerup 实现仿IOS桌面悬浮球效果&#xff0c;支持拖拽、指定拖拽选对容器&#xff0c;指定拖拽安全区、自动吸附、自动改变透明度与点击&#xff0c;兼容PC端与移动端。 效果展示 https://code.juejin.cn/pen/7423757568268304421 代码实现 …

(27)QPSK信号在非相关平坦莱斯(Rician)衰落信道上的误码率性能MATLAB仿真

文章目录 前言一、Rician衰落信道模型的MATLAB代码二、在非相关的平坦Rician衰落信道上传输QPSK符号模型1.MATLAB仿真代码2.仿真结果 前言 本文首先给出莱斯衰落信道的建模函数&#xff0c;然后基于该函数给出在非相关的平坦Rician衰落信道上传输QPSK数字调制符号的MATLAB仿真…

【OpenCV】基础操作学习--实现原理理解

读取和显示图像 基本操作 cv2.imread(filename , flags)&#xff1a;文件中读取图像&#xff0c;从指定路径中读取图像&#xff0c;返回一个图像数组&#xff08;NumPy数组&#xff09; filename&#xff1a;图像文件的路径flags&#xff1a;指定读取图像的方式 cv2.IMREAD_COL…

IP地址我个人的理解

作为连IP地址都没弄懂的一个网络小白&#xff0c;有时候开发以及建站会接触到IP、DNS等等概念&#xff0c;所以说有必要去查询一下相关知识内容&#xff0c;羞耻地说其实我是有一个计算机网络技术三级证书&#xff0c;但是这个啥用没有死记硬背就行了&#xff0c;许多知识点不能…

软件工程pipeline梳理

文章目录 软件工程pipeline梳理为什么需要梳理软件工程的pipeline软件工程pipeline的概念与注意点软件工程pipeline中的最大挑战rethink相关资料 软件工程pipeline梳理 为什么需要梳理软件工程的pipeline 反思自己日常工作中的认知和行为。以算法/软件工程师为代表的技术工种往…

2024-10-10 问AI: [AI面试题]激活函数在神经网络中的作用是什么?

文心一言 激活函数在神经网络中扮演着至关重要的角色。它们的主要作用包括&#xff1a; 引入非线性&#xff1a; 神经网络中的每一层通常是由线性变换&#xff08;如权重矩阵乘以输入向量再加上偏置&#xff09;构成的。如果没有激活函数&#xff0c;多层神经网络将仅仅是一个…

正点原子讲解SPI学习,驱动编程NOR FLASH实战

配置SPI传输速度时&#xff0c;需要先失能SPI,__HAL_SPI_DISABLE,然后操作SPI_CR1中的波特率设置位&#xff0c;再使能SPI, NM25Q128驱动步骤 myspi.c #include "./BSP/MYSPI/myspi.h"SPI_HandleTypeDef g_spi1_handler; /* SPI句柄 */void spi1_init(void) {g_spi…

前端基础(四十):拖放功能的实现

效果 源码 <div class"draggable-wrap"><div class"draggable-box" draggable"true" data-json{"name": "Lee"}><h1>Lee</h1><div class"drop-box" data-json{"name": &qu…

API网关之Hango

Hango 是基于云原生和服务网格技术的开源 API 网关&#xff0c;专为现代分布式系统设计&#xff0c;提供高效、安全、可扩展的流量管理解决方案。Hango 网关是基于 Envoy Proxy 构建的&#xff0c;能够处理复杂的微服务架构中流量控制、服务治理和安全需求。Hango 强调与 Kuber…