0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机的数码管电路设计

CHANBAEK 来源:郎哥编程课堂 作者: 郎宏林 2023-10-31 14:57 次阅读

前面一课通过流水灯实验,学会了流水灯电路模型设计,掌握了循环移位和时间延迟算法的程序编写。本次实验完成数码管显示电路模型设计和编程,在实验过程中,学习数码管显示电路设计、数码管循环显示数字的算法。

认识数码管

数码管是半导体发光器件,用于显示数字、字母、简单图形符号等内容。数码管基本单元是发光二极管,数码管内部由多个发光二极管管构成,多个发光二极管在同一时间的不同状态,组合为不同的数字、字母或图形符号。

数码管型号多样,有单位数码管、双位数码管、四位数码管、八位数码管等等,单位数码管仅能显示一个数字、字母或图形符号,多位数码管可以显示多个数字、字母或图形符号。实际上,多位数码管都可以由单位数码管构成,例如4个单位数码管可以构成四位数码管。

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面我们来看看单位数码管是如何显示数字的。

单位数码管一般由7个发光二极管组成,有共阴,共阳两种,八个引脚,七个引脚接7个发光二极管,一个引脚是公共端,若共阴,该引脚接地,若共阳,该引脚接电源的正极。

图片

单位数码管内部基础电路如上图所示,显示一个数字需要7个小段,每个小段需要一个发光二极管,因此数码管的引脚至少为8个,其中7个引脚分别接二极管的正极或负极,另外1个引脚为公共端,若数码管为共阴极,该引脚接地,若数码管为共阳极,该引脚接电源。

对于共阳极数码管来说,7个发光二极管的正极连接在一起形成公共端,该公共端接电源,负极分别接单片机的I/O端口,当我们给数码管任一个阴极低电平时,对应的这个发光二极管就点亮了。例如:若需要数码管显示数字0,g引脚送低电平,其它引脚送高电平,这样数码管就显示数字0了;若需要数码管显示数字8,将所有引脚(公共端除外)送入低电平,数码管就显示数字8了。因此,若需要数码管显示数字,只需要给发光二极管引脚送入低电平或高电平就可以了。

数码管电路设计

本次实验设计要求通过单片机P0口控制数码管循环显示数字0 ~ 9,实验需要用到单位数码管器件。在“Pick Devices”对话框搜索关键词“7SEG”,选择“7SEG-MPX1-CA”型号的数码管,该数码管是7段共阳极数码管,可以显示数字0~9和小数点,它有9个引脚,8个引脚用于连接P0口的8位端口,1个引脚为公共端,连接电源的正极。

图片

数码管内部发光二极管点亮时,大约需要几个毫安以上的电流,而且电流不可过大,电流过大可能会烧毁发光二极管,因此需要在P0端口和数码管引脚之间接入限流电阻,限流电阻值不能太大,也不能大小。限流电阻的阻值计算过程如下:一个发光二极管的额定电压一般是1.5~2.5V,电阻不大于50欧姆,电流约为0.04A,单片机引入的电源电压为5V,限流电阻的阻值约为R=U/I=5/0.04=125欧姆。计算值仅是个近似值,可以选择100~500欧姆以内的阻值。

电路设计如下图所示:

图片

数码管编程

让数码管循环显示数字0 ~ 9,需要对数字0~9进行编码,对应数字的编码值用于控制P0各端口的电平输出,从而控制数码管内部各发光二极管的状态,显示出编码对应的数字。

“7SEG-MPX1-CA”型号的数码管数字0~9的编码为:

unsigned char led[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

0xC0为数字0的编码,其二进制数为11000000,该值送入单片机P0口,P0口的第7、6端口为高电平,5、4、3、2、1、0端口为低电平,与5、4、3、2、1、0端口连接的发光二极管被点亮,与7、6端口连接的发光二极管为熄灭状态,其中端口7位小数点,端口6位g段,显示数字0。

0xF9为数字1的编码,其二进制数为11111001,该值送入单片机P0口,P0口的7、6、5、4、3、0端口为高电平,与其连接的发光二极管为熄灭状态,P0口的2、1端口为低电平,与其连接的发光二极管被点亮,即b、c段点亮,显示数字1。

同学们可以自行分析2~9数字的编码。C程序代码如下:

#include < reg51.h >
#include < stdio.h >
unsigned char led[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(unsigned int millisecond)
{
       unsigned int i,j;
       for(i=millisecond;i >0;i--)
              for(j=120;j >0;j--);
}
void main(void)
{
    unsigned int i;
while(1)
        {
               for(i=0;i< 10;i++)
               {
                            P0 = led[i];
                            delay(500);
               }
        }
 }

led[]为数字0~9编码数组,delay()为时间延迟函数,在main()函数内部,使用while循环让程序持续执行,在while循环内部,使用for循环遍历led[]数组,获取每个数字的编码,并将编码赋值给P0。

实验小结

通过这次实验,了解了数码管显示数字和字符的原理,学会了数码管显示电路设计,掌握了数码管显示控制编程技术。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620826
  • 电路设计
    +关注

    关注

    6565

    文章

    2317

    浏览量

    195396
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89946
  • 显示电路
    +关注

    关注

    6

    文章

    94

    浏览量

    32947
  • 流水灯
    +关注

    关注

    21

    文章

    432

    浏览量

    59104
收藏 人收藏

    评论

    相关推荐

    单片机的静态数码管

    怎么让单片机静态数码管在按键按下时数码管闪烁,再按一次时进入设置状态?
    发表于 11-07 20:24

    51单片机入门之数码管介绍

    ,但是却浪费单片机的IO口。数码管的动态显示(使用专用芯片)可以做到节省IO的目的。 动态显示的原理:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
    发表于 07-19 01:11

    keil单片机数码管显示数字

    keil单片机数码管显示数字,(C51单片机与keil uvision的简单运用——数码管的使用)51单片机入门相信很多人对51
    发表于 07-14 07:29

    基于普中单片机按键的数码管显示

    基于普中单片机按键-数码管显示简介1.硬件部分普中单片机开发板 数码管 独立按键2.软件部分keil软件硬件部分普中单片机开发板
    发表于 07-14 06:31

    怎样去设计基于单片机的共阴极数码管显示电路

    课程设计-基于单片机的共阴极数码管显示电路物理与电子工程学院《单片机原理与接口技术》课程设计报告书设计题目:基于单片机的LED
    发表于 07-19 06:39

    基于单片机的按键控制LED数码管共阴极动态显示电路设计

    基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文)物理与电子工程学院2014级课程设计PAGE IV物理与电子工程学院《单片机原理与接口技术》课程设计报告书设计题目
    发表于 07-20 06:30

    单片机数码管静态显示原理

    单片机数码管静态显示原理,复位电路详细电路分析,数码管静态显示,上拉电阻,共阴极共阳极,锁存器,实例
    发表于 07-21 07:36

    单片机数码管显示实验报告

    单片机数码管显示实验报告,一、 实验目的(一) 掌握单片机 I/O 口的输出控制;(二) 熟悉开发板上单片机 I/O 口与数码管
    发表于 07-21 09:12

    51单片机是怎样控制LED数码管

    51单片机是怎样控制LED数码管的?其电路原理是什么?
    发表于 10-18 11:34

    单片机是如何实现数码管的动态扫描的

    单片机作品中,我们常常能看到数码管的身影。现在通过这篇文章来介绍数码管的工作原理,单片机是如何实现数码管的动态扫描...
    发表于 11-18 06:38

    使用51单片机实现数码管的显示

    写在前面:以下涉及到的程序及电路图不保证为最优方案,会存在很多不足之处,望谅解。正文学习目标:使用51单片机实现数码管的显示。学习内容:1.程序一:点亮数码管-静态
    发表于 11-22 07:11

    完成单片机与LED数码管的接口电路设计以及程序设

    实验目的和任务目的:利用“模块化单片机教学实验平台”,加深对单片机与LED数码管的接口电路设计以及程序设计的理解。任务:完成单片机与LED
    发表于 11-23 07:52

    proteus单片机数码管显示要求

    proteus单片机数码管显示要求:单片机AT89C51外接6个共阳LED数码管,P3.0和P3.1引脚分别外接一独立按键。开机时数码管显示
    发表于 12-06 07:01

    单片机引脚去驱动数码管

    反思:此项目在做的时候我是直接用单片机引脚去驱动数码管(P1口控制段选,P3口控制位选),发现单片机引脚不能直接控制驱动数码管,所以我在思考后加了74HC138和74HC573来驱动,
    发表于 01-17 09:10

    单片机--LED 数码管实验

    实验目的和任务目的:利用“模块化单片机教学实验平台”,加深对单片机与LED数码管的接口电路设计以及程序设计的理解。任务:完成单片机与LED
    发表于 11-14 19:21 19次下载
    <b class='flag-5'>单片机</b>--LED <b class='flag-5'>数码管</b>实验