历史上的今天
返回首页

历史上的今天

今天是:2025年04月04日(星期五)

2020年04月04日 | C51单片机学习笔记(五)——数码管的静态显示和动态显示

2020-04-04 来源:eefocus

1.数码管的显示原理

数码管有一位和多位一体两类,它是由8个LED(a,b,c,d,e,f,g,dp)排列组成,任意一个LED叫作一个“段”。通过给a,b,c,d,e,f,g,dp各个脚加上不同的控制电压可以使不同的LED导通发亮,从而显示0~9各个数字和ABCDEF各个字母。


由于8个LED共有16个引脚,为了减少引脚,形成了共阳极和共阴极两种数码管,如下图,如果是共阴极,点亮方法就是公共脚加低电平,引出脚加高电平,如果是共阳极,公共脚加高电平,引出脚加低电平即可。(我的数码管是共阳极,所以下面我就使用共阳极进行说明)

在这里插入图片描述

2.数码管的静态显示

所谓静态显示,就是数码管的笔画点亮后,这些笔画就一直处于点亮状态,而不是处于周期性点亮状态。下面我将以我的原理图为例说明如何点亮静态显示。

在这里插入图片描述

我的数码管的a,b,c,d,e,f,g,dp接在P0.0~P0.7脚,故我让哪一个二极管亮,就使其脚加低电平,几个LED组合在一起就可以拼出一个数字或字母,下面给出常用的字形码

在这里插入图片描述

例如要使用‘3’,则数码管的a,b,g,c,d应点亮,其引脚为低电平,其他引脚为高电平,二进制数为dp g f e d c b a 1011 0000,每四位转成十六进制就是b0,所以要先显示‘3’,给P0端口赋值0xb0即可,其他字符的编码类似。


#include 

#define uchar unsigned char 

#define uint unsigned int

sbit DI1=P1^0; //定义四位数码管位选信号 

sbit DI2=P1^1; 

sbit DI3=P1^2; 

sbit DI4=P1^3; 

unsigned char i = 0;

void delay(uint z) //定义延时函数

uint x,y;

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

for(y = 110;y>0;y--); 

} /*定义数码管显示字符跟数字的对应数组关系*/ 

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //数码管显示编码(0-F) 

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; 

void main() 

P0=0x00; //P0口初始化 

DI1=0; //第一位数码管位选 

while(1)

{

P0 = table[i];

delay(1000);   //延时约1s

i++;

if(i>15)   //n=15时显示F,当n=16时从头开始

i = 0;

}

}


3.数码管的动态显示(不用锁存器)

由于我的板子上没有锁存器。。。所以这里只介绍不用锁存器的动态显示,锁存器的好处只是可以节省I/O口,其实不用锁存器依然可以使数码管动态显示。


动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。


所谓动态扫描,即是通过分时轮流送出字形码和相应的位选,使各个数码管轮流受控显示。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。


#include 

#define uchar unsigned char 

sbit DI1=P1^0; //定义四位数码管位选信号 

sbit DI2=P1^1; 

sbit DI3=P1^2; 

sbit DI4=P1^3; 

void delay(uchar x) //定义延时函数 

uchar j; 

while(x--)

for(j=0;j<125;j++) 

{;} 

} /*定义数码管显示字符跟数字的对应数组关系*/ 

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //数码管显示编码(0-F) 

0x80,0x90,0xa0,0x83,0xc6,0xa1,0x84,0x8e,0x00};

 void main() 

 { 

  P0=0x00; //P0口初始化 

  DI1=0; //第一位数码管位选 

  P0=table[0]; //第一位数码管显示0 

  delay(5); 

  DI1=1; //关闭第一位数码管位选 

  DI2=0; //第二位数码管位选 

  P0=table[1]; //第二位数码管显示1 

  delay(5); 

  DI2=1; //关闭第二位数码管位选 

  DI3=0; //第三位数码管位选 

  P0=table[2]; //第三位数码管显示2 

  delay(5); 

  DI3=1; //关闭第三位数码管位选 

  DI4=0; //第四位数码管位选 

  P0=table[3]; //第四位数码管显示3 

  delay(5); 

  DI4=1; //关闭第四位数码管位选 }


4.中断与数码管结合的计时器

#include

#define uchar unsigned char

#define uint unsigned int

uchar num = 0;

sbit DI1=P1^0; 

sbit DI2=P1^1; 

sbit DI3=P1^2; 

sbit DI4=P1^3; 

uchar i4 = 0;

uchar i3 = 0;

uchar i2 = 0;

uchar i1 = 0;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code table2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; 

void delay(uint z) //定义延时函数

uint x,y;

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

for(y = 110;y>0;y--); 

}

void display()

{

P0=0x00; //P0口初始化 

  DI1=0; //第一位数码管位选 

  P0=table[i1]; //第一位数码管显示0 

  delay(5); 

  DI1=1; //关闭第一位数码管位选 

  DI2=0; //第二位数码管位选 

  P0=table2[i2]; //第二位数码管显示1 

  delay(5); 

  DI2=1; //关闭第二位数码管位选 

  DI3=0; //第三位数码管位选 

  P0=table[i3]; //第三位数码管显示2 

  delay(5); 

  DI3=1; //关闭第三位数码管位选 

  DI4=0; //第四位数码管位选 

  P0=table[i4]; //第四位数码管显示3 

  delay(5); 

  DI4=1; //关闭第四位数码管位选

}


void main()

{

//P0 = 0x00;

TMOD = 0x01;//将定时器0设为方式1,即16位定时器

/*TH0中每增加1,就相当于计了256个数,所以TH0装入初值是对256取模,TL0是对256取余*/

TH0 = (65536-45872)/256;//给定时器的高八位赋初值

TL0 = (65536-45872)%256;//给定时器的低八位赋初值

EA = 1;//开总中断

ET0 = 1;//开定时器0中断

TR0 = 1;//启动定时器T0

while(1)

{    

if(num == 20) //num=20代表用了50ms*20  = 1s

{

num = 0;

if(i4 == 9)

{

i4 = 0;

if(i3 == 5)

{

i3 = 0;

if(i2 == 9)

{

i2 = 0;

i1++;

}

else

{

i2++;

}

}

else

{

i3++;

}

}

else

{

i4++;

}

}

display();

}

}

void T0time() interrupt 1

{

TH0 = (65536-45872)/256;

TL0 = (65536-45872)%256;

num++;   

}

推荐阅读

史海拾趣

睿赫(crechip)公司的发展小趣事

随着技术的不断突破和市场需求的日益增长,睿赫公司的芯片产品逐渐得到了广泛的应用。尤其是在智能手机、物联网和智能家居等领域,睿赫芯片凭借其高性能和低功耗的特性,赢得了众多知名企业的青睐。

与此同时,睿赫公司还积极拓展海外市场,与国际知名企业展开合作,共同推动电子行业的发展。通过不断的技术创新和市场拓展,睿赫公司逐渐在电子行业中树立了自己的品牌形象。

Cooper Tools(Eaton)公司的发展小趣事

随着技术的不断突破和市场需求的日益增长,睿赫公司的芯片产品逐渐得到了广泛的应用。尤其是在智能手机、物联网和智能家居等领域,睿赫芯片凭借其高性能和低功耗的特性,赢得了众多知名企业的青睐。

与此同时,睿赫公司还积极拓展海外市场,与国际知名企业展开合作,共同推动电子行业的发展。通过不断的技术创新和市场拓展,睿赫公司逐渐在电子行业中树立了自己的品牌形象。

芯海科技(CHIPSEA)公司的发展小趣事

进入21世纪第二个十年,物联网技术迅猛发展,为芯海科技带来了新的机遇。公司紧跟市场趋势,发布了高精度SoC(系统级芯片)/MCU芯片,广泛应用于智能家居、智能穿戴等领域。这一创新使得芯海科技能够为客户提供一站式的智能硬件解决方案,进一步提升了其市场竞争力。

Continental公司的发展小趣事

随着汽车电子化的趋势日益明显,大陆集团也开始将业务拓展到汽车电子领域。在新的架构体系中,车身电子部门被纳入“车联网和信息”这个大的业务板块中。大陆集团致力于实现车身电子的更好互联、更好呈现信息和更好的集成。通过互联技术,数据能够在汽车与外界之间进行传递,并将这些信息通过人机交互界面呈现给驾驶者和乘客。同时,大陆集团还致力于确保数据从车辆到云端的顺畅传输和处理。这些举措使得大陆集团在汽车电子领域取得了显著的进展。

Heraeus公司的发展小趣事

近年来,大陆集团在特种商用车胎领域也取得了重要突破。2014年,大陆集团在亚洲国际物流技术与运输系统展览会上发布了一款全新的产品——SC8特种商用车胎。这款产品是专门针对亚洲物料搬运业而开发出来的,适用于仓库、饮料业、造纸业等多个行业。SC8轮胎具备超深的轮胎花纹和极佳的性能,为物料搬运业提供了更高效、更安全的解决方案。这一产品的推出进一步巩固了大陆集团在商用车胎领域的市场地位。

功得(CONQUER)公司的发展小趣事

随着公司实力的不断增强,功得公司开始将目光投向国际市场。他们积极参加国际电子展会,与全球各地的客户建立联系,拓展销售渠道。同时,功得公司还根据不同国家和地区的市场需求,推出定制化的产品和服务。通过不懈努力,功得公司逐渐在国际市场上打开了局面,产品出口量稳步增长。

问答坊 | AI 解惑

百花齐放--细说主流车载导航主芯片之争

GPS导航是一个新型的市场,在中国,2004年开始逐步有公司进入此行业,2006年出现了竞争的小高潮,至2007年上半年达到顶峰,不论是洋品牌又或是本土企业,一时间几百家电子厂商纷纷投身于GPS浪潮,很多GPS方案设计公司亦大量涌现,欲分一杯羹。白热 ...…

查看全部问答>

跪求电梯控制的设计

小弟欲求电梯控制设计::\'( 实现:显示上下           显示楼层           就近调用           实现满员报警 我已经看了论坛里的那篇电梯的设 ...…

查看全部问答>

TI 推出一款带有射频芯片的单片机---CC430

内容简介:该芯片是集成了MSP430的5*系列和CC1101做成的单芯片,针对不同的应用,目前主要有8款产品,请参考附件。 可以浏览TI的CC430主页:www.ti.com/cc430 来下载源代码、硬件设计以及网络协议。该单芯片可以有效的降低系统功耗、缩减整个电路 ...…

查看全部问答>

2440WINCE向总线读写失败,寻求支持。

#define nGCS4                        0x20000000 ............... ............... #define WRITE_BUS(io_addr, val)        (*((volatile unsigned char * ...…

查看全部问答>

我想搭建一个平台,红外摄像头+图像采集卡,获取红外图像然后进行处理

因为学习需要,我想了解红外图像获取的一些基本知识,现在欲先搭建一个简单的红外图像获取平台。目前的想法是这样的,先买一个性能还比较好的红外摄像头或者国内的可信赖的红外热像仪,然后搭配数据采集卡,在电脑上获取红外图像。 目前的问题是, ...…

查看全部问答>

将运算放大器用作比较器

为什么要将运算放大器用作比较器?••••方便经济低IB低VOS为什么不要将运算放大器用作比较器?• 速度• 不便的输入结构• 不便的逻辑结构• 稳定性/迟滞简介比较器是一种带有反相和同相两个输入端以及 ...…

查看全部问答>

论坛的搜索功能好像不能用了

论坛的搜索功能好像不能用了…

查看全部问答>

现在有stm32f的书吗?

                                 虽然网上stm32的资料很多,但是没有书看着方便。…

查看全部问答>

香主:请推荐一款有5个串口的通用STM32,

                                 香主:请推荐一款有5个串口的通用STM32,其它就是带一个LCD显示屏,没有其它要求…

查看全部问答>

求合适的资料或书籍?关于wince中的cab安装包的制作

如题,关于wince中的cab安装包的制作,点下就能把文件一个个自动copy到指定的目录(以前都是手动一个一个copy到指定的不同目录下的,太麻烦了!)新手!希望能推荐,详细点的资料或书籍…

查看全部问答>