STM32 数码管显示

这篇具有很好参考价值的文章主要介绍了STM32 数码管显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 认识二级管

常用的二级管分为两种

1,(b)图共阴极结构:是把所有 LED 的阴极作为公共端(COM) 连起来,接低电平,通常接地。通过控制每一个 LED 的阳极电平使其发光或熄灭,阳极为高电平时LED 发光,为低电平时 LED熄灭。如显示数字0时,a、b、ad.e、t端为高电平,其他各端为低电平。

2,(c)图共阳极结构:是把所有 LED 的阳极作为公共端(COM) 连起来,接高电平,通常接电源(如+5V )。通过控制每一 个LED 的阴极电平使其发光或熄灭,阴极为低电平时LED 发光,为高电平时 LED熄灭。

如下图

STM32 数码管显示

STM32 数码管显示

我们以共阴极结构举例,进行计算,其过程就是二进制转化为16进制,做法如下

STM32 数码管显示 STM32 数码管显示

 以此列表可以看出,对于同一个字符,共阴极和共阳极的字形码是相反的

二 程序的实现

数码管静态显示电路图

STM32 数码管显示

 代码实现数码管也有两种方式

一如上电路图,亮两个数码管

#include "stm32f10x.h"
//定义0~9十个数字的字形码表
uint16_t table[]={0x3f,0x06,0x5b,0x4f,0x66,0x7d,0x07,0x7f,0x6f};
uint16_t disp[2];
uint16_t temp,i;

void Delay(unsigned int count)               //延时函数
{
    unsigned int i;
    for(;count!=0;count--)
    {
        i=5000;
        while(i--);
    }
}
void main(void)
{
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 		//使能GPIOB时钟
		GPIO_InitStructure.GPIO_Pin = 0xffff;                       //PC0-PC15引脚配置
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;            //配置引脚为推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;           //GPIOB速度为50MHz
		GPIO_Init(GPIOB, &GPIO_InitStructure);                      //初始化PC0-PC15
        while(1)                
        {
            for(i=0;i<=20;i++)
            {
              disp[1] = table[i/10];              //数码管显示十位数字的字形码
              disp[0] = table[i%10];              //数码管显示个位数字的字形码
              //十位数的字形码左移8位,然后与各位数的字形码合并
              temp = (disp[1]<<8)|(disp[0]&0x0ff);
              GPIO_Write(GPIOC,temp);
              Delay(100);
            }                                 
        }

}

代码说明:

(1)语句"GPIO_InitStructure.GP1O_ Pin = Oxfff:” 用来配置 PCO~PC15 引1脚。为什么使用Oxfit)参数就可以配置 PCO-PC15引1脚呢?可以参考stm32110x_gpio.h 头对 GPIO Pin_x的定义。
(2)disp1数组存放数码管将显示十位和个位数字的字形码,是经常用到的显示缓冲区。

(3)语句"temp = (disp[1]<<8)|(disp[0]&0x0ff);” 的作用:disp[1]<<8是把显示十位数字的字形码左移8 位(移到高 8位),disp[0]&0x0ff 是保留低8位,其他位清零(高8 位清零),然后把高8位(十位)和低8 位(个位)合并,完成循环显示 0-20字形码的显示效果。

二 第二种代码实现的方法

//头文件
#include "stm32f10x.h"
#include "GPIOLIKE51.h"        


#define CLK  PBout(8)
#define DAT  PBout(9)
#define W1   PBout(4)
#define W2   PBout(5)
#define W3   PBout(6)
#define W4   PBout(7)


//函数声明
void GPIO_Configuration(void);

void delay(int m)   
{
   int i,j;
   for(i=0;i<m;i++)
      for(j=0;j<1000;j++);
}

void Delay(uint32_t nCount)           //延时函数
{
  for(; nCount != 0; nCount--);           //函数说明:nCount:延时长短
}

void Smginit(void)                  //定义数码管,进行配置
{
    GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE); 	
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);    	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); 		
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | 
                                   GPIO_Pin_8 | GPIO_Pin_9; 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
	GPIO_Init(GPIOB, &GPIO_InitStructure);

}

//定义字形码
unsigned char code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void Disled(int m)  
{
   int i;
   CLK=0;  
   for(i=0;i<8;i++)
   {
      CLK=0; 
	  delay(1);
      if (m&0x80) 
      DAT=1;
      else
      DAT=0;
      CLK=1; 
	  delay(1);
      m=m<<1; 
   }
}

int main(void)
{
	  int i;
	  Smginit();
	  W1=1;            
	  W2=1;
	  W3=1;
	  W4=1;
    while (1)
		{
			for(i=0;i<10;i++)
			{
			 Disled(code[i]);
			 delay(10000);
			}
    }
}

代码说明:

(1)这个程序是电亮4个数码管。

(2)头文件第二行“#include "GPIOLIKE51.h" ”这个是一个点h文件,具体作用我会写到下一个博客里(STM3中的“GPIOLIKE51.h”_奋发图强的小rui的博客-CSDN博客)。

(3)“nCount”这是一个没有返回值的带形式参数的函数函数名称是Delay,同时函数的参数部分中的_IO是类型修饰符;u32是数据类型,同等于uint_32_t同等于unsigned int型。文章来源地址https://www.toymoban.com/news/detail-477378.html

到了这里,关于STM32 数码管显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32的时钟设计并在六位数码管上显示附proteus仿真

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇

    2024年02月12日
    浏览(51)
  • STM32 HAL库实现三位数码管显示(74HC595+按键+蜂鸣器)

    1、加强数码管学习,实现数码显示变量数据(三位数的显示); 2、3位数码+2个按键+蜂鸣器实现模拟电磁炉功率调节及显示; 关于74HC595的STM32F103的驱动以及数码的显示等请查阅我写的上一篇博客:https://blog.csdn.net/luojuan198780/article/details/136653377 实验效果参考下面网址视频:

    2024年03月17日
    浏览(86)
  • 基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)

          由 STM32单片机+数码管显示模块+键盘模块+L298N电机驱动模块+直流电机 1、采用STM32F103单片机为主控制器 2、四个按键,分别为启动/暂停、方向切换、加速、减速功能 3、数码管显示PWM占空比和电机转动方向(0正转,1反转) 注意:proteus8.11版本才能打开   24、基于STM32单

    2024年02月11日
    浏览(63)
  • STM32 Proteus仿真4x4矩阵15位抢答器数码管TM1637显示-0039

    STM32 Proteus仿真4x4矩阵15位抢答器数码管TM1637显示-0039 Proteus 仿真小实验: STM32 Proteus仿真4x4矩阵15位抢答器数码管TM1637显示-0039 功能: 硬件组成:STM32F103R6单片机 +TM1637驱动4位数码管+4x4矩阵键盘+蜂鸣器 1.有一个开启键,点击后蜂鸣器短响一声,开始抢答。此后4位数码管倒计

    2024年02月08日
    浏览(43)
  • ARM开发,stm32mp157a-A7核SPI总线实验(实现数码管的显示)

            a.数码管显示相同的值 0000 1111 ......9999;         b.数码管显示不同的值 1234; ---spi.h头文件--- ---spi.c函数文件--- ---main.c测试文件--- a.数码管显示相同的值 0000 1111 ......9999; b.数码管显示不同的值 1234;

    2024年02月11日
    浏览(45)
  • 嵌入式开发:使用STM32CubeMX 和 Keil uVision5实现两位数码管循环显示实验

    一、STM32CubeMx实现数码管 1、双击打开STM32CubeMX。 2、点击File选项,在File列表下选择New Project选项新建工程。 3、在图中所示位置的方框中输入我们使用的芯片型号来搜索芯片 4、与我们的搜索相关的芯片型号会在这里呈现,我们只需要选择我们需要的即可,这里我们双击第一个

    2024年02月08日
    浏览(54)
  • STM32F103基于标准库+I2C SSD1306仿数码管RTC时钟显示

    ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取。 🍁对于文中所提供的相关资源链接将作不定期更换。 📺显示效果: 🌿工程基于正点原子标准库3.5版本RTC例程作为模板。 🌿使用IIC SSD1306 OLED 双色屏幕软件IIC驱动显示。 ⛳时钟说明

    2023年04月22日
    浏览(47)
  • Arduino:实现四位LED共阴极数码管显示——从认识、连接、程序到实现功能

    (1)一位八段共阴极数码管        在认识四位共阴极数码管之前我先介绍一下一位八段共阴极数码管。如左图所示为以为数码管的实物图,其中它共有10个引脚,且上下各五个。 小数点位于右下时为数码管正面 ,在四位共阴极数码管中也是如此,在连接组装时尤为重要。

    2024年02月02日
    浏览(50)
  • STM32HAL库驱动数码管

    本文档创建于2023年3月7日 本文记录了我学习数码管驱动的过程,实际是微机原理课上留的一个作业。 本文作者:RobotFreak 本文参考《NANO_STM32F103开发指南-HAL库版本_V2.0》,正点原子官网可下载。 数码管,也称LED数码管,按发光二极管单元连接方式可分为“共阳极数码管”和“

    2024年02月08日
    浏览(39)
  • 学习笔记|小数点控制原理|数码管动态显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第十集:数码管动态显示

    上述图片引用自:51单片机初学2-数码管动态扫描 用一排端口来控制段码,需要显示哪几个就点亮哪几个段,和看电影一样,一个一个的打开,关闭,一个个的画面,组成动画。 具体的控制的流程如图所示,N表示有几个数码管! 其中需要注意每个延时不能太短,我们这边程

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包