IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32 学习12 库函数实现静态数码管显示 -> 正文阅读

[嵌入式]STM32 学习12 库函数实现静态数码管显示

一、说明

前面已经多次学习到点亮LED的操作。我使用的这个开发板,数码管与LED是连接在一起的,本文对数码管的操作是对LED操作的函数的进一步封装。

LED 数码管由发光二极管作为显示字段,7只发光二极管构成,加上一个小数点,称为八段码。
数据管可能采用共阳或共阴接法,使用方法与发光二极管相同,不同材料的压降有所不同,一般为1.5~2V,额定电流为10mA,最大电流为40mA,静态显示时10mA为宜。

LED与STM32相连,一般按某一顺序连接到某一个并行I/O口的D0~D7,当该I/O口输出某一特定数据时,可以让LED显示出某个字符。 我使用的开发板采用共阴接法,接线图如下:
在这里插入图片描述

二、数码管显示方式

数码管显示有静态显示和动态显示两种方式。

  • 静态显示时,每一位显示器的字段需要一个8位I/O口控制,I/O口支持锁存功能。静态显示编程实现容易,硬件成本较高。
  • 动态显示时,是将多个数码管的相同字段线连在一起,由一个8位I/O口控制多个数码管。而每一位的公共端由另一个I/O口控制。
    动态显示需要采取轮流显示的方式显示信息,占用I/O端口线少,编程较为复杂。

三、静态显示的实现

1. 封装数码管操作函数

smg.h

#ifndef _smg_H
#define _smg_H

#include "system.h"


/*  数码管时钟端口、引脚定义 */
#define SMG_PORT 			GPIOC   
#define SMG_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)
#define SMG_PORT_RCC		RCC_APB2Periph_GPIOC


void SMG_Init(void);//数码管初始化


#endif

smg.c

#include "smg.h"



/*******************************************************************************
* 函 数 名         : SMG_Init
* 函数功能		   : 数码管初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void SMG_Init()
{
	GPIO_InitTypeDef GPIO_InitStructure;  //声明一个结构体变量,用来初始化GPIO
	/* 开启GPIO时钟 */
	RCC_APB2PeriphClockCmd(SMG_PORT_RCC,ENABLE);

	
	/*  配置GPIO的模式和IO口 */
	GPIO_InitStructure.GPIO_Pin=SMG_PIN;	  //选择你要设置的IO口
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(SMG_PORT,&GPIO_InitStructure);		/* 初始化GPIO */
}


2. 主函数




#include "system.h"
#include "SysTick.h"
#include "smg.h"

//0~F 数码管段选数据
u8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
             0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

int main()
{
	u8 i=0;
	SysTick_Init(72);
	SMG_Init();
	
	while(1)
	{
		for(i=0;i<16;i++)
		{
			GPIO_Write(SMG_PORT,(u16)(~smgduan[i]));
			delay_ms(1000);	
		}	  
	}
}
调用 smgduan的不同数组下标,即可实现显示不同数字的功能。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:48:04  更:2021-10-16 19:50:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:03:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码