先明白数码管的编码方式:LED数码管与单片机相连,一般将数码管的个笔端引脚a,b...,g,dp按照某一顺序接到单片机对应配置的一个并行I/O口上,当配置I/O口一定的数值时候,就可以使LED数码管显示固定的字符。

按照公共端链接方式分为共阴极和共阳极,以下为共阴和共阳分别八段编码管:

数码管显示方式有静态显示和动态扫描,我们采用动态扫描,即把每一个数码管的a,b...连接在一起,一共八段,由一个八位I/O口进行控制,而每一位的公共端由宁外一个I/O口进行控制。

则就有控制数码管的位选码啦~

位选码的配置需要根据电路原理图进行配置~

数码管驱动函数

1.数码管显示初始化

void smgInit()

{

GPIO_InitTypeDef  GPIO_InitStructure;
           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG, ENABLE);//使能GPIOF时钟
           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_8|GPIO_Pin_9;

//对应在stm32f103zet6开发板中,PE口的第八位另有其他作用,比如设置外部中断,所以不打开所有的I/O口 
           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;    //速度50MHz    
           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //速度50MHz
            GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; 
           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;    //速度50MHz    
           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //速度50MHz
            GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化

}

2.数码管显示函数

void smgShow()

{
    while(1)
    {
        GPIO_Write(GPIOE,0x7FFF);//选中第一个数码管
        GPIO_Write(GPIOC,0xc0);//送第一个数字的段码
        delay_ms(1000);//延时一段时间
        
        GPIO_Write(GPIOE,0xBFFF);//选中第2个数码管
        GPIO_Write(GPIOC,0xf9);//送第2个数字的段码
        delay_ms(1000);//延时一段时间
    
        GPIO_Write(GPIOE,0xDFFF);//选中第3个数码管
        GPIO_Write(GPIOC,0xa4);//送第3个数字的段码
        delay_ms(1000);//延时一段时间
        
        GPIO_Write(GPIOE,0xEFFF);//选中第4个数码管
        GPIO_Write(GPIOC,0xb0);//送第4个数字的段码
        delay_ms(1000);//延时一段时间
        
        GPIO_Write(GPIOE,0xF7FF);//选中第5个数码管
        GPIO_Write(GPIOC,0x99);//送第5个数字的段码
        delay_ms(1000);//延时一段时间
        
        GPIO_Write(GPIOE,0xFBFF);//选中第6个数码管
        GPIO_Write(GPIOC,0x92);//送第6个数字的段码
        delay_ms(1000);//延时一段时间
    
    }
}

在数码管文件中定义


extern u8 hour,minute,second;//全局变量

u8 smgduan[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90};

u16 smgwei[6]={0x7fff,0xbfff,0xdfff,0xefff,0xf7ff,0xfbff};

在数码管显示函数中我们可以推出

显示时间的函数(考虑到时间情况有两位数,则我们可以采用取余的方法进行分离)

GPIO_Write(GPIOE,smgwei[0]);//选中第1个数码管
        GPIO_Write(GPIOC,smgduan[hour/10]);//送第5个数字的段码
        delay_ms(1000);//延时一段时间

GPIO_Write(GPIOE,smgwei[1]);//选中第2个数码管
        GPIO_Write(GPIOC,smgduan[hour%10]);//送第5个数字的段码
        delay_ms(1000);//延时一段时间

z这样就可以显示小时对应的数字,同理分和秒。

stm32f103系列开发板控制对数码管来显示自定义时间(自主学习)相关推荐

  1. 操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

    SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普.研究前沿热点介绍.科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享 ...

  2. 如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习,来自STM32神舟系列开发板设计师的总结)

    转载: 来源:www.armjishu.com 作者:jesse 我的另一篇文章:<STM32嵌入式入门必看之文章-----介绍非常详细!(学STM32的理由!!!!)>http://ww ...

  3. STM32F103RB 实作笔记(九)- PWM + SPI +MAX6675 整合试验 (正点原子 STM32F103 nano开发板)程式解析

    个人工作上的关系,需要做一款温度控制风扇速度的控制器,还需要能够看到温度和PWM的值.于是我用这个不熟悉的 STM32F103 试试,顺便把 PWM 和 SPI 也了解一番. 一开始当然也是跌跌撞撞, ...

  4. RK系列开发板音频驱动适配指南(一)

    背景: 多媒体系统目前在Linux操作系统,windows操作系统已经非常成熟,并且应用场景广泛,但是,基于OpenAtom OpenHarmony(以下简称"OpenHarmony&quo ...

  5. 英飞凌XMC4000系列开发板软件系统复位死机的问题

    英飞凌XMC4000系列开发板一般都带有J-link仿真器,该仿真器连接了调试对象XMC4000微处理器的启动模式控制引脚.当开发板的DEBUG USB接口通电后开发板上的XMC4200为控制器开始工 ...

  6. STM32F103RB 实作笔记(一)- GPIOC LED 跑马灯(正点原子 STM32F103 nano开发板)程式解析

    这几天被隔离管着无聊,就上淘宝买了一块<正点原子> STM32F103 nano开发板,来练习 stm32f103 的程式.买这块开发板的原因是因为,板子已经有大部分MPU可以应用的线路包 ...

  7. 【致敬未来的攻城狮计划】— 连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下(文字上的初理解)

    系列文章目录 系列文章目录 前言 一.瑞萨MCU(CPK_RA2E1是瑞萨RA系列开发板)是什么? 首先引入是什么? 他的优势在哪? 瑞萨CPK_RA2E1 对标stm32 相似之处和不同之处? 瑞萨 ...

  8. python语言type board_Micropython TPYBoard开发板控制无线加速度小车

    现在无线控制已经成为了电子科学领域的主流,这次就来教大家做一个主流中的主流--无线控制的小车,先给大家看一下最终的成品演示视频: ://v.youku.com/v_show/id_XMTY2MzAzN ...

  9. RK系列开发板音频驱动适配指南(二)

    背景: 上一篇文章RK系列开发板音频驱动适配指南-DAI模块适配中已经阐述音频驱动适配的DAI模块适配步骤以及核心代码的展示,本次主要介绍音频驱动适配中的DMA模块适配. RK系列开发板 DMA模块适 ...

最新文章

  1. Java项目:实现权限管理系统(java+SpringBoot+MyBatis+AOP+LayUI+Mysql)
  2. 「野性消费」也不怕!打造供应链数据平台,业务逻辑模板都在这了
  3. idea 开源项目申请地址
  4. 《网络工程师软考辅导——3年真题详解与全真模拟》主要创新点、关注点
  5. 全民奇迹辅助制作视频教程
  6. windows 安装 docker destop
  7. 网易云、酷狗、QQ音乐歌单接口API
  8. 格雷希尔快速密封接头在燃油泵密封性能检测的作用
  9. 一文看懂P2P原理及UDP穿透
  10. IE不支持使用for in语法
  11. youtube-dl 环境搭建 使用
  12. C++ builder热键处理方式(HotKey)
  13. 通过slave_exec_mode=IDEMPOTENT跳过主从复制中的错误
  14. C++ opengl 漫反射和镜面反射参数
  15. 正式员工、合同工和外包人员有什么区别?
  16. 关于舵机的漂移与不听指挥乱动的问题
  17. react native 实战系列教程之热更新原理分析与实现
  18. 智能手机硬件加速及虚拟内存利弊分析
  19. Linux System Administration
  20. Qt编写物联网管理平台31-用户权限管理

热门文章

  1. 【NDN基础】Named Data Networking 学习笔记
  2. (12)筋斗云案例(导航栏醒目显示跟随)
  3. Swiper + 图片懒加载
  4. yolov5 检测detect.py笔记
  5. Java+MySQL基于SSM的爱心救助车队管理系统的设计与实现 开题 毕业设计
  6. java -p_javap的作用是什么?
  7. 多线程处理大数据量查询
  8. 2022年全球市场次氯酸钠总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. 苹果电脑登不上苹果商店_附近没有苹果商店? 尝试苹果授权服务提供商
  10. 安装x86版 OS X的系统要求