第一章 第一节 STM32F1系列 一位数码管的使用

系列文章目录

第一章 第一节 STM32F1系列 一位数码管的使用



前言

`本人从事机械行业工作,随着时代发展,想转换到嵌入式行业中。这是我开始学习的第一篇试验记录,主要是记录自己的过程与经历,希望大佬看到多多指正,本人不胜感激!

例如:这篇文章的起源是我在字母2站看到的一个软广,它是一个EDU仿真试验平台邀请的评测,由此开始我的试验记录。


一、控制器与数码管

作为STM32的入门第一课,当然是点灯了。当然,由于初学了一段时间,电灯的操作我已经熟悉,因此直接上来就对数码管进行操作。
数码管本质就是LED,而称之为数码管是因为使用了8个LED组成的阵列,可以通过控制其不同组合亮灭,达到显示数字的功能,因此称为数码管。
数码管有两种类型,分别为:共阴极、共阳极两种类型。其最大的不同就是其触发模式是高电平点亮还是低电平点亮。

由于暂时还不了解版权问题,所以这里并不做带有版权的插图。
数码管图片
一位数码管,需要8个引脚,7个片选引脚,1个电源引脚

使用的单片机
使用的是STM32F1系列的单片机,其引脚数量有限

二、使用步骤

1.主函数

这是main函数的代码(示例):

#include "stm32f10x_conf.h"
#include "stm32f10x_it.h"
#include "sys.h"
#include "digtal_led.h"


// 延时函数,abc应该设置为100的,因为我使用单步执行比较久,所以就改成1了
__attribute__((optimize("-O0")))
void delay(uint32_t a)
{
    uint32_t b, c;
    a=2;
    while (a--)
    {
        b=1;
        while (b--)
        {
            c=1;
            while (c--);
        }
    }
}


int main(void)
{
    // 数字1
    unsigned int number = 0;
    // 初始化数码管控制引脚
    digtal_LED_Init();
    
    while (1)
    {
        show_digtal_one_segment((number++)%10);
        //如果在这里插入延时函数,应该就可以控制间隔时间了
        //我自己写的show_digtal_one_segment((number++));
        delay(100);
    }
}

2.代码心得

//一位数码管,只能实现0-9的显示
//因此,在这里能玩的花样不多,一个是现实的内容,一个是间隔时间

//show_digtal_one_segment((number++)%10);
//数字从0到n,对10取余的话,1%10=0,1;2%10=0,1;10%10=1,0;11%10=1,1;
//循环往复

//digtal_led.c函数,控制数码管组合的代码在哪里(本质就是点灯,电灯的代码在哪里呢)
// GPIO_Write(GPIOA, table[num]);
//我懂了,一位数码管,刚好用完PA组,然后一个十进制———转换———十六位二进制

//已经将数码管点亮的位参数写好在这里uint16_t table[]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//在show_digtal_one_segment(uint32_t num)函数中
//用数组的形式,循环调用已经写好的数码管位参数
//然后由GPIOwrite进行引脚电平控制

总结

软件使用总结:这款EDU工具看起来还是比较好用的,对于初学者来说,一个的新的学科需要的是建立其正向反馈,以便更好的进入到下一个环节。然而现实世界中的单片机由于有太多实际问题,很难让新手一上来就熟悉。 比如在该系列中,新手不需要去新建工程,不需要用老版的keil去把文件配置进去,也不需要接入VCC与GND,更不需要了解不同的贴片商对其封装的类型,以及其他的冗杂的说明文档,更没有那些又臭又长的教程视频。

数码管使用总结:对于数码管来说,使用思路主要是调包侠的工作。01-空白框架代码 02-LED点灯子函数 03-主函数(使用内部计算运算时间实现延时)(使用对10取余实现0-10循环现实 ) (调用封装好的电灯子函数)(电灯子函数用数组形式调用)

完结,撒花!希望大家天天开心!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值