历史上的今天
返回首页

历史上的今天

今天是:2024年10月29日(星期二)

正在发生

2021年10月29日 | 让51单片机八段数码管亮起来

2021-10-29 来源:eefocus

一、八段数码管基础部分

1.八段数码管的共阴极和共阳极

一个八段数码管由八段二极管组成即a,b,c,d,e,f,g,dop(点),共八段。其中数码管分两种,共阴极和共阳极(共阳极:数码管的阳极全部接在一起,低电平点亮它,如果是共阳极,低电平点亮它。)

2.八段数码管的位码和段码

一般四位数码管,有四个引脚控制选取哪一位数码管(位选),还有8位段选是公用的,就是当位选为第一位时,段选码只对第一位点亮那些段有关,同理选中第二个位时,段码只对第二位有效,依此类推。。。 一般硬件结构确定后,就会出现段码位码的说法。比如说四个位选引脚分别连接单片机p2.2 2.3 2.4 (这三个口分别是74HC138译码器端口),发光管是共阴 那么第一位的位码是xxxx1110;第二位是xxxx1101;第三位是xxxx1011;第四位是xxxx0111;这样我在显示时,如果显示第一位数据,则往p2口送xxxx1110,再送第一位的段码。


二、八段数码管动态显示

所谓静态显示,就是每一个数码管的段码都要独占具有锁存功能的输出口,CPU把要显示的字码送到输出口上,就可以使数码管显示对应的字符,直到下一次送出另一个字码之前,显示的内容一直不会消失。动态显示有显示稳定、亮度大、节约CPU时间等优点,但占有I/O口较多,硬件成本高。


1.八个八段数码管动态扫描0到7流水显示

#include

#define uchar unsigned char

#define uint unsigned int

sbit LSA=P2^2; //74HC138译码器端口

sbit LSB=P2^3;

sbit LSC=P2^4;


//共阳数码管编码表

uchar code table1[] ={0xc0,0xf9,0xa4,0xb0,

                      0x99,0x92,0x82,0xf8,

                      0x80,0x90,0x88,0x83,

                      0xc6,0xa1,0x86,0x8e};


//共阴数码管编码表

uchar code table2[] ={0x3f,0x06,0x5b,0x4f,

                      0x66,0x6d,0x7d,0x07,

                      0x7f,0x6f,0x77,0x7c,

                      0x39,0x5e,0x79,0x71};

//延时

void DelayMS(uint x)

{

  uchar t;

  while(x--) 

    for(t=0;t<120;t++);

}

//主程序

void main()

{

  uchar i;

  while(1)

  {

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

    {

  P0=0xff;

  LSA=0;LSB=0;LSC=0;

  P0=table2[0];

  DelayMS(100);

  LSA=1;LSB=0;LSC=0;

  P0=table2[1];

  DelayMS(100);

  LSA=0;LSB=1;LSC=0;

  P0=table2[2];

  DelayMS(100);

  LSA=1;LSB=1;LSC=0;

  P0=table2[3];

  DelayMS(100);

  LSA=0;LSB=0;LSC=1;

  P0=table2[4];

  DelayMS(100);

  LSA=1;LSB=0;LSC=1;

  P0=table2[5];

  DelayMS(100);

  LSA=0;LSB=1;LSC=1;

  P0=table2[6];

  DelayMS(100);

  LSA=1;LSB=1;LSC=1;

  P0=table2[7];

  DelayMS(100);

    }

  }

}


2.八个八段数码管动态扫描0到7常亮显示

#include

typedef unsigned int uint;

typedef unsigned char uchar;

sbit LSA=P2^2; //74HC138译码器端口

sbit LSB=P2^3;

sbit LSC=P2^4;

uchar out[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

 

void delay(uint num)

{

while(num--);

}

 

void display()

{

uint i;

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

{

switch(i) //位选,选择点亮的数码管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//显示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//显示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//显示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//显示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//显示第5位

case(6):

LSA=0;LSB=1;LSC=1; break;//显示第6位

case(7):

LSA=1;LSB=1;LSC=1; break;//显示第7位

}

P0=out[i];//发送段码

delay(100); //间隔一段时间扫描

P0=0x00;//消隐

}

}

 

void main()

{

while(1)

{

display(); 

}

}


三、八段数码管静态显示

动态显示就是把所有显示器的8个段码中的A-dp的各个相同段连接在一起,接到一个公共的输出口上,而数码管的位端分别接在另外的输出口上,通过这两个输出口的两组信号相互作用来产生显示效果。即让各位数码管按照一定顺序轮流显示,只要扫描频率足够高,由于人眼的“视觉暂留”现象,就能连续稳定地显示。动态显示能显著降低显示部分成本,大大减少显示接口的连线结构。


1.一个数码管的静态显示0到9

#include

#define uchar unsigned char

#define uint unsigned int


//共阳数码管编码表

uchar code table1[] ={0xc0,0xf9,0xa4,0xb0,

                      0x99,0x92,0x82,0xf8,

                      0x80,0x90,0x88,0x83,

                      0xc6,0xa1,0x86,0x8e};


//共阴数码管编码表

uchar code table2[] ={0x3f,0x06,0x5b,0x4f,

                      0x66,0x6d,0x7d,0x07,

                      0x7f,0x6f,0x77,0x7c,

                      0x39,0x5e,0x79,0x71};


//延时

void DelayMS(uint x)

{

uchar t;

while(x--) 

  for(t=0;t<120;t++);

}


//主程序

void main()

{

uchar i=0;

P0=0x3f;

for(; i < 10; ++i)

    {


      P0 = table2[i];

      if(i == 9)

      i = 0;

  DelayMS(300);

    }

    while(1);

}

推荐阅读

史海拾趣

Grayhill公司的发展小趣事
为防止过流和短路情况对电路造成损害,应设置合适的限流电阻和过流保护电路。
德国ACAM公司的发展小趣事

2014年,ACAM公司迎来了一个重要的里程碑事件——被奥地利微电子股份有限公司收购。这次收购极大地增强了ACAM公司在时间数字转换器(TDC)技术领域的实力。奥地利微电子在半导体行业有着深厚的积累和丰富的经验,与ACAM公司的技术优势相结合,进一步提升了ACAM公司在市场上的竞争力。

泰科天润(GPT)公司的发展小趣事

德国ACAM公司成立于1996年,总部位于施图登湖,毗邻斯图加特和卡尔斯鲁厄。公司从创立之初,就专注于时间到数字转换技术及其应用的研发。ACAM公司凭借其创新的技术和卓越的研发实力,在极短的时间内就取得了显著的成果。特别是在时间数字转换器(TDC)技术上,ACAM公司成功开发出业界领先的产品,为后续的快速发展奠定了坚实的基础。

Custom Connector Corporation公司的发展小趣事

随着电子行业的不断发展,CCC始终将技术创新作为公司发展的核心驱动力。公司投入大量研发资金,引进先进技术和设备,不断提升产品的性能和品质。同时,CCC还积极与高校、科研机构合作,共同研发具有自主知识产权的新产品。这些创新成果不仅为CCC赢得了市场的认可,也推动了整个电子连接器行业的技术进步。

迪一电子公司的发展小趣事

随着数字化和智能化技术的不断发展,迪一电子公司意识到必须跟上时代的步伐。于是,公司开始推进数字化转型和智能化生产。通过引入先进的生产设备和信息系统,优化生产流程,提高生产效率。同时,公司还注重人才培养和引进,建立了一支高素质的技术和管理团队。这些努力使迪一电子在数字化和智能化方面取得了显著成果,提高了公司的竞争力和市场地位。

Genesis Microchip公司的发展小趣事

在20世纪中期,GI作为一家新兴的电子设备制造商,以其对新兴技术的敏锐洞察力和创新精神而崭露头角。公司创始人意识到半导体技术的巨大潜力,决定投入大量资源进行研发。通过不懈努力,GI成功推出了多款基于半导体技术的创新产品,如早期的晶体管收音机和电视机,这些产品不仅在当时市场上引起了轰动,也为公司后续的快速发展奠定了坚实基础。这一阶段的成功,标志着GI在电子行业技术创新的道路上迈出了坚实的一步。

问答坊 | AI 解惑

电源管理的奇怪问题

wince6.0 r3,补丁打全了。 1、注册表中配置如下 [HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Power\\Timeouts] \"BattUserIdle\"=dword:0000003c \"BattSystemIdle\"=dword:000000b4 \"BattSuspend\"=dword:00000000 \"ACUse ...…

查看全部问答>

新手求助:Wince下的网络编程

要开发一个类似C/S模式的网络软件 我刚开始接触 什么都不了解 不知哪位达人能发个简单的例程给我看看?? …

查看全部问答>

网卡驱动函数问题请教

来此请教一个问题,由于以前很少接触硬件驱动的编写,甚至都没有做过单片机开发,最近却被迫要在Linux下面的无线网卡驱动里面做一些东西,遇到了很多的不可理解的地方,请教一下牛人。 在驱动中,有好多的程序找不到他的定义之处,在Linux内核中也 ...…

查看全部问答>

evc++4.0始终安装不上

我的系统是XP+SP2 首先安装的是MSASYNC安装上去了 但是接着安装EVC++4.0没有安装成功,就没有接着装EVC了,装了PB5.0但是再装EVC的时候始终都装不上了,系统一直提示VIRTUAL PC/WINDOWS CE ...…

查看全部问答>

MIFARE4Mobile行业集团今天宣布了针对MIFARE4Mobile规格的新发展计划

MIFARE4Mobile行业集团今天宣布了针对MIFARE4Mobile规格的新发展计划。包括恩智浦在内专注#NFC#技术领域的7家公司将合作支持下一代2.0版本MIFARE4Mobile规格,包括新的特性及技术。http://www.mifare.net/products/mifare4mobile1/mifare4mobile/…

查看全部问答>

msp430单片机18B20测温程序

msp430单片机18B20测温程序 #include \"msp430x22x4.h\" typedef unsigned char uchar; typedef unsigned int  uint; #define DQ1 P2OUT |= BIT4 #define DQ0 P2OUT &= ~BIT4 #define DQ_in   P2DIR &= ~BIT4 #define DQ_o ...…

查看全部问答>

头文件

msp430g2553选什么头文件呀?#include怎么不行啊?…

查看全部问答>

【转】FRAM扫盲帖

很多国内的筒子对铁电存储/FRAM、FRAM MCU依然知之胜少,经常被问到一些基础的问题。 这也难怪,毕竟FRAM以前还是个冷僻的技术,而这几年随着智能三表、物联网以及工业传感网络的快速增长,FRAM存储器以及FRAM微控制器的应用越来越多。这里顺便分 ...…

查看全部问答>

Cadence IC610在CIW中新建schematics出警告,求解决

环境:红帽 Enterprise 5 Cadence IC: ic610 这个软件的安装了很久,现在应用上有一点小问题: 1. $cdsdoc -test,测试是没有问题的,直接$cdsdoc也是没有问题的,但是进入cdsdoc对话框之后,要打开一项对应的*.html时, 下载 (417.08 KB) 4 ...…

查看全部问答>

【直播+开源毕设】基于STM32F4的网络收音机设计与实现

        自从考研复试结束以后,就开始了俺的毕业设计了。这个题目说实话,想做出来简单,想做好比较难。好了,言归正传,开始说说设计思路吧。       硬件方案如下: 1.主控制器采用ST公司 ...…

查看全部问答>