历史上的今天
返回首页

历史上的今天

今天是:2025年07月26日(星期六)

正在发生

2021年07月26日 | 51单片机学习笔记【三】——数码管实验

2021-07-26 来源:eefocus

数码管基础:

数码管由八个发光二极管组成成“8“字型,按极性分为共阴极数码管(阴极链接在一起)和共阳极数码管(阳极连接在一起)。本实验采用的是共阳极,若要亮,则相应位置0,即为低电平。

数码管结构图

可以通过给数码管引脚置值来控制亮和灭,显示不同的图案,如下图所示

共阴极数码管真值表

共阳极数码管再进行取反操作便可以显示相同的图案。


一.静态数码管实验

1.电路原理图

静态数码管

2.说明:实验中使用P0口控制,用排线接P0口和JP3.让数码管依次显示0-9。


3.源代码如下:

/***********************************************

   > File Name: 静态数码管

   > Author: pengshp

   > Mail: pengshp3@outlook.com

   > Date: 2015年 7 月 17 日

*************************************************/


#include

#define uchar unsigned char

#define uint unsigned int

#define GPIO_DIG P0

uchar code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,

                         0x6d,0x7d,0x07,0x7f,0x6f};//显示0-9的值

void Delay(uchar);

void main()

{

    uchar i;

    while(1)

    {

        for(i=0;i<10;i++)           //依次显示0-9

        {

            GPIO_DIG=~DIG_CODE[i];

            Delay(800);             //延时处理

        }

    }

}

void Delay(uchar x)

{

    uint a,b;

    for(a=x;a>0;a--)

    {

        for(b=2000;b>0;b--)

        {

        }

    }

}


备注:程序中的code关键字表示将数据存储在程序存储空间(Flash)中,以节约RAM的空间,存储的数据只能读不能写入。


二.动态数码管(不带译码器)

1.电路原理图

动态数码管

2.说明

本实验通过控制八个数码管分别显示0-7个数字,使用的数码管为共阴极,即要亮时把相应位置1,输出高电平。接线为JP10(P0)接JP12,JP8接JP16右排(注意:有金属触电的一排朝右),再把JP165断开。


3.源代码如下

/**************************************

  >File Name: 动态数码管显示

  > Author: pengshp

  > Mail: pengshp3@outlook.com

  > Date: 2015年 7 月 17 日

***************************************/


#include

#define GPIO_DIG   P0   //段选

#define GPIO_PLACE P1   //位选

#define uchar unsigned char

#define uint unsigned char


uchar code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7,

                           0xef,0xdf,0xbf,0x7f};//位选控制   查表的方法控制

uint code DIG_CODE[17] = {0x3f,0x06,0x5b,0x4f, //0、1、2、3

                          0x66,0x6d,0x7d,0x07, //4、5、6、7

                          0x7f,0x6f,0x77,0x7c, //8、9、A、B

                          0x39,0x5e,0x79,0x71};//C、D、E、F

uchar DisplayDate[8]=0; //存放要显示的8位数字

void DigDisplay();

void main()

{

    uchar i;

    for(i=0;i<8;i++)

    {

        DisplayDate[i]=DIG_CODE[i];

    }

    while(1)

    {

        DigDisplay();

    }

}


void DigDisplay()

{

    uchar i;

    uint j;

    for(i=0;i<8;i++)

    {

        GPIO_PLACE = DIG_PLACE[i];   //发送位选,控制要亮的数码管

        GPIO_DIG = DisplayDate[i];   //发送段码,显示相应的数字

        j = 10;                      //扫描间隔时间设定

        while(j--); 

        GPIO_DIG = 0x00;             //消隐

    }

}

推荐阅读

史海拾趣

Dae Ryung Electronic Co Ltd公司的发展小趣事

随着电子行业的不断发展和变革,Dae Ryung Electronic Co Ltd公司也面临着前所未有的挑战。为了应对这些挑战,公司积极调整战略和业务结构,加强在物联网、人工智能等新兴领域的研发和应用。同时,公司还注重人才培养和引进,吸引了一批高素质的技术和管理人才加入公司。这些努力使得公司在面对行业变革时能够保持领先地位并实现可持续发展。

DESIGNERSYSTEMS公司的发展小趣事

DESIGNERSYSTEMS公司意识到,要在电子行业持续发展,必须不断拓展市场。他们积极寻求跨界合作的机会,与汽车、医疗、航空航天等多个行业的领军企业建立了合作关系。通过跨界合作,DESIGNERSYSTEMS不仅将自身的技术优势应用于更广泛的领域,还从合作伙伴那里学到了更多行业知识和经验,进一步提升了自身的综合实力。

电连(ECT)公司的发展小趣事

随着汽车智能化的发展,ECT看到了车载连接器市场的巨大潜力。从2013年开始,公司开始布局车载连接器领域,并成功开发出多款适用于不同车型和场景的车载连接器产品。这一拓展不仅为ECT带来了新的增长点,也进一步巩固了公司在电子连接器行业的领先地位。

European Crystal Org公司的发展小趣事

ECO始终将产品质量视为公司发展的生命线。公司建立了严格的质量管理体系,对生产过程中的每一个环节进行严格把关。此外,ECO还注重品牌形象的塑造,通过广告宣传、客户案例分享等方式提升品牌知名度和美誉度。这些努力使ECO在行业内树立了良好的口碑,吸引了越来越多的优质客户。

德芯半导体(Doeshare)公司的发展小趣事

德芯半导体在成立之初就明确了其市场定位:以高性价比的特色传感器系列产品为目标市场。公司秉承“以德治企,创造精品”的经营理念,通过深入了解市场需求,不断推出符合市场需求的创新产品。在智能家居、智能制造等领域,德芯半导体的产品凭借其高性能、高品质和低价格,赢得了国内外知名公司的认证和合作。

AverLogic公司的发展小趣事

除了关注业务发展外,AverLogic公司还积极履行企业社会责任,推动可持续发展。公司注重环保和节能,采用环保材料和生产工艺,减少对环境的影响。同时,公司还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为其在电子行业中树立了良好的口碑。

需要注意的是,这些故事是基于一般性的电子行业趋势和公司可能的发展路径构建的,并不代表AverLogic公司的实际发展历程。如需了解AverLogic公司的具体发展故事,建议查阅相关的行业报告、公司年报或新闻报道。

问答坊 | AI 解惑

PADS2005 系列中文教程.pdf

PADS2005 系列中文教程.pdf…

查看全部问答>

关于ARM 及SoC,你想知道些什么?

关于ARM 及SoC,你想知道些什么?…

查看全部问答>

问下,STM32的ADC校准是调整绝对精度还是相对精度

是不是校准了就可以不测量VREFINT 来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)群主:wangkj…

查看全部问答>

wince设备被识别为U盘问题(续)

我的WINCE设备现在已经可以识别为U盘. 还有个问题,当我把USB线插上的时候,WINCE上NAND FLASH的盘符消失,同时PC上显示U盘盘符;但是当我拔掉USB线时,PC上的盘符消失,而WINCE上的盘符却没有显示出来,怎么让FLASH重新MOUNT一次?这个问题怎么解决啊?…

查看全部问答>

vxworks缺省网关设置和修改的问题

问题是这样的: vxWorks下,我用routeAdd \"0.0.0.0\",\"192.168.1.1\"添加了一条路由,但是用routeDelete \"0.0.0.0\",\"192.168.1.1\"删除不掉。其实我是想修改网关的地址(先删再重新加),但是现在删不掉先前设置的。 请各位大大帮帮忙! …

查看全部问答>

请问为什么要这样处理Chache

在使用s3c44b0的时候,看到有这么一条语句 rNCACHBE0=(((Non_Cache_End)>>12)12); 为什么这样就可以设置非cache区的起始和结束地址了? 另外为什么要写成((Non_Cache_End)>>12)…

查看全部问答>

请教pty的使用。。。

假如创建一个pty: ptyDevCreate(\"/pty/my.\", 512, 512);那么得到的主从设备依次为:\"/pty/my.M\"以及\"/pty/my.S\"。按照VxWorks的帮助是这么说的:主进程使用\"/pty/my.M\"进行写,从进程使用\"/pty/my.S\"进行读,按照,这样理解这个pty是单 ...…

查看全部问答>

【全美经典】系列教材

一个朋友最近送给我的一套【全美经典】系列教材,看了一点,感觉还可以,所以传上来给大家分享一下,全部免费下载,需要的朋友可以看一下。 [ 本帖最后由 fengxin 于 2010-10-23 11:49 编辑 ]…

查看全部问答>

大功率LED灯具设计经验分享

1、(定位)我们在开发一款路灯的时候,得先要有个定位(开发灯具条件表,如对灯具的大致结构,,电性能指标,发率,防护性能,期望重量等),目前,很多人对及系统了解得不够深入,知其然不知其所以然的。 目前国内LED道路照明标准尚正式出台,由 ...…

查看全部问答>

launchPad 上移植 os

今天遇到asm(\"pop.w R3\")报错   pop.w R2没报错   想问一下, 1.我们的程序里能用到那些寄存器? 2.那些寄存器是我们可以操作的? 3.移植OS需要操作R0到R15吗? 4。为什么msp430需要常数发生器? 5.常数发生器作用过程是怎样 ...…

查看全部问答>