历史上的今天
返回首页

历史上的今天

今天是:2025年12月08日(星期一)

正在发生

2022年12月08日 | 实战之8051驱动8位数码管

2022-12-08 来源:zhihu

8051驱动共阴极

过年有点时间,整理电脑,翻到一个之前的小作品,应一位刚入门的朋友的要求做的,控制8位数码管,依次显示0~9。发出来给大家瞧瞧,高手请略过。

由于当时手上没有开发板,就用Proteus来做电路仿真了。


工作环境:

Keil uVision5

Proteus 8 Professional


数码管




首先了解下数码管的相关知识

数码管的基本单元是发光二极管,按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位、8位等数码管。



>数码管内部原理


上图是一个数码管的内部示意图,一个数码管的显示部分由8个二极管构成,刚好是一个字节,51单片机也是8位单片机。

根据内部发光二极管的公共连接端不同,可以分为共阳极接法和共阴极接法,共阳极接法就是发光二极管的正极共同接电源VCC,通过控制每个发光二极管的负极是否接地来显示数字。共阴极接法就是每个发光二极管的负极共同接地GND,通过控制每个发光二极管的正极是否接电源来显示数字。

图中a~g管脚分别控制着每个发光二极管的亮灭,所以,如果要显示1的话,只需要点亮b,c两段即可(把单片机对应端口输出0x06即可);如果要显示数字5,则只需要点亮a,f,g,c,d段即可组成数字5的显示(0x6d)。



>多位数码管内部原理图






上图是4位数码管的内部接线,每位数码管的阳极(或阴极)相连,其他相同引脚的引脚相连,一共有12个控制引脚,也可以得出8位的数码管有16个控制引脚,8个共阳(或共阴)端,8个控制a~g显示内容。



74LS138译码器

从数码管的显示原理来看,一个数码管要显示不同的字符,就要对数码管中的每个二极管进行不同控制,每个二极管要用到单片机的一个控制引脚,比如在实际应用中八位的共阴极或共阳极数码管,共有16个引脚,如果都使用单片机引脚进行控制,这就太浪费了,本来单片机的资源就很紧张。


解决办法是用一个译码器作为数码管的位选择器,需要哪一位显示就控制哪一位数码管的共阳(或共阴)端。



74LS138译码器1~3为输入端,由高到低为CBA; 7~15为输出端,由高到低为Y7-Y0。

工作过程:输入端输入三位二进制数,转成十进制,经过译码器后,输出端对应该十进制数的引脚(对应的Y)为低电平,其余为高电平,比如:


输入000,十进制为0,输出端的0位引脚为低电平,其余为高,也就是1111 1110;


输入101,十进制为5,输出端的5位引脚为低电平,其余为高,也就是1101 1111。

三位二进制数刚好可以表示0~7,8个数字,也就是可以控制8位数码管。


P=============roteus电路图



程序设计

#include

//延时函数

void delay(unsigned int ms){

int k,l;

for(k=0;kfor(l=0;l<120;l++);

}


//一个数码管显示 0~f 十六进制数组

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


/**

选择数码管,并显示出对应的十进制数

index :数码管位下标

num :char numHex[] 数组对应十进制数的下标

*/

void setIndexNum(unsigned char index,unsigned char num){

switch(index){//数码管位选,74LS138译码器的输入

case 0:

P1_2=0;

P1_3=0;

P1_4=0;

break;

case 1:

P1_2=1;

P1_3=0;

P1_4=0;

break;

case 2:

P1_2=0;

P1_3=1;

P1_4=0;

break;

case 3:

P1_2=1;

P1_3=1;

P1_4=0;

break;

case 4:

P1_2=0;

P1_3=0;

P1_4=1;

break;

case 5:

P1_2=1;

P1_3=0;

P1_4=1;

break;

case 6:

P1_2=0;

P1_3=1;

P1_4=1;

break;

case 7:

P1_2=1;

P1_3=1;

P1_4=1;

break;

}

P3=numHex[num];//数码管显示字符

}


void main(){

//proteus 不用while即可循环,不明白

unsigned char i,j;

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

for(j = 0;j < 16;j++){

setIndexNum(i,j);

delay(300);

if(j >= 15) break;

}

if(i >= 7) break;

}

}


推荐阅读

史海拾趣

Hitachi Chemical Co America Ltd公司的发展小趣事

对于光控电子鸟电路,网友们可能会提出一系列问题,这些问题可能涉及到电路的工作原理、设计细节、故障排查以及改进方法等方面。以下是一些可能的问题及回答:

一、工作原理相关问题

  1. 问题:光控电子鸟是如何实现光控功能的?
    回答:光控电子鸟通过光敏元件(如光敏二极管或光敏电阻器)来实现光控功能。当光线照射到光敏元件上时,其电阻值会发生变化,进而影响电路中的电流和电压,从而控制振荡器的振荡频率,使扬声器发出不同频率的声音来模拟鸟鸣声。

  2. 问题:自激振荡器在光控电子鸟中起什么作用?
    回答:自激振荡器在光控电子鸟中起到产生声音信号的作用。它由晶体管、电容器和电阻器等元件组成,通过R、C的充放电过程模拟鸟儿的鸣叫声。当光敏元件感受到光线变化时,会改变振荡器的振荡频率,从而改变鸟鸣声的特性。

二、设计细节相关问题

  1. 问题:如何选择合适的光敏元件?
    回答:选择合适的光敏元件需要考虑其灵敏度、光谱响应范围以及工作环境等因素。对于光控电子鸟来说,一般选择灵敏度高、光谱响应范围与自然光相近的光敏二极管或光敏电阻器。

  2. 问题:电路中的电容器和电阻器应该如何选择?
    回答:电容器和电阻器的选择需要根据电路的具体要求和性能参数来确定。例如,电容器的选择需要考虑其容量、耐压值以及工作频率等因素;电阻器的选择则需要考虑其阻值、功率以及稳定性等因素。在光控电子鸟电路中,一般选用金属膜电阻器和独石电容器等高质量元件。

三、故障排查相关问题

  1. 问题:如果光控电子鸟不发声怎么办?
    回答:如果光控电子鸟不发声,首先需要检查电源是否正常供电;其次检查光敏元件是否损坏或连接不良;最后检查振荡器电路是否工作正常。可以使用万用表等工具进行逐步排查和测试。

  2. 问题:声音失真或杂音大怎么办?
    回答:声音失真或杂音大可能是由于电路中的元件老化、接触不良或设计不合理等原因造成的。可以尝试更换损坏的元件、重新连接电路或调整电路设计等方法来解决问题。

四、改进方法相关问题

  1. 问题:如何改进光控电子鸟的声音效果?
    回答:改进光控电子鸟的声音效果可以从多个方面入手。例如,可以优化振荡器电路的设计,调整电容器和电阻器的参数以改变声音的特性;可以增加声音处理电路,如滤波器、放大器等,来增强声音的清晰度和响度;还可以采用数字控制技术来实现更复杂的声音效果。

  2. 问题:如何增加光控电子鸟的智能化程度?
    回答:增加光控电子鸟的智能化程度可以通过引入微控制器等智能芯片来实现。微控制器可以根据光敏元件的信号和预设的程序来控制振荡器的振荡频率和声音特性,实现更复杂的声音效果和功能。同时,还可以加入传感器、无线通信模块等元件来扩展光控电子鸟的功能和应用范围。

以上是一些可能的问题及回答,希望能对网友们有所帮助。

Cavium Networks公司的发展小趣事

作为一家在电子行业具有影响力的公司,Cavium Networks 始终保持着持续创新的精神。公司不断投入研发资源,推出了一系列具有创新性和领先性的产品和技术。同时,Cavium Networks 也积极参与国际标准和行业规范的制定工作,为电子行业的健康发展贡献了自己的力量。正是这种不断创新和追求卓越的精神,使得 Cavium Networks 在电子行业中保持了领先地位,并引领着行业的未来发展。

以上五个故事虽然基于虚构,但它们都紧密围绕 Cavium Networks 在电子行业中的发展历程和关键事件展开,展示了公司在技术创新、市场拓展和合作发展等方面的努力和成就。这些故事旨在展现 Cavium Networks 的发展轨迹和行业影响力,同时也反映了电子行业的快速发展和变革。

ABB Group公司的发展小趣事

随着消费者对家庭娱乐和智能生活的需求不断增长,Cavium Networks 敏锐地捕捉到了这一市场趋势。公司推出了面向消费者市场的无线显示解决方案 WiVu,利用最新的笔记本电脑技术如嵌入式 DisplayPort 和显示迷你卡(DMC),为多房间和交互式应用提供了高性能的 Wi-Fi 无线显示解决方案。WiVu 的推出不仅满足了消费者对便捷、高效、高质量的娱乐体验的需求,也引领了市场的新潮流,进一步巩固了 Cavium Networks 在电子行业中的地位。

Exar [Exar Corporation]公司的发展小趣事

进入21世纪后,数字视频应用的兴起为Exar提供了新的发展机遇。为了抓住这一机遇,公司在2000年推出了视频处理器和编解码器产品。这些产品不仅满足了市场对高质量视频处理的需求,也进一步巩固了Exar在通信和视频处理领域的地位。

屹晶微(EG)公司的发展小趣事

屹晶微的创始人黄米龙,原本在发电厂从事电气运营工作长达八年。这段经历让他对电子领域有了深入的了解和浓厚的兴趣。然而,他并没有满足于现状,而是看到了中国芯片产业的巨大潜力和发展空间。于是,在2007年,他毅然决定从发电厂辞职,利用自己的积蓄和借来的资金,在台州创立了屹晶微电子有限公司。

在创立初期,屹晶微面临着资金短缺、技术落后和市场竞争激烈的困境。但黄米龙凭借对电子行业的深刻理解和坚定的信念,带领团队克服了种种困难。他们不断引进先进技术和设备,加强研发力量,提升产品质量。经过几年的努力,屹晶微逐渐在芯片设计领域崭露头角,并成功推出了多款具有自主知识产权的芯片产品。

EDO Corp公司的发展小趣事

在1930年代,Eclipse Magnetics这个名字首次出现,标志着品牌的诞生。当时,该公司主要从事磁性产品的研究和开发。进入1940年代,Eclipse Magnetics逐渐崭露头角,成为一个独立的公司。在电子行业的早期,该公司凭借其独特的磁性技术,开始在市场中占据一席之地。

问答坊 | AI 解惑

程序设计中的环形缓冲区的应用

在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。 1、环形缓冲区的实现原理 环形缓冲区通常有一个读指针和一个写指针。读指针指向环 ...…

查看全部问答>

业内知名公司中英文名对照

电子行业知名公司中英文名对照,新人必要了解啊…

查看全部问答>

电压反馈放大器和电流反馈放大器几乎一样

作者:Bonnie Baker,德州仪器 (TI) 与电压反馈放大器 相比,电流反馈放大器具有更高的转换速率。因此,电流反馈放大器比电压反馈放大器能更好地解决高速问题。“电流反馈放大器”的名字带有一些神秘色彩,但总体而言,除了几个关键点以外,电流 ...…

查看全部问答>

RFID在血液管理方面的应用

一、引言 RFID(无线射频识别,Radio Frequency Identification)是一种采用射频技术的非接触式自动识别技术。RFID系统基本构成为标签、阅读器和天线三部分,同时在实际应用中还需要相关硬件和软件的支持。RFID给我们带来很多好处,它的优点在 ...…

查看全部问答>

嵌入式TCP-IP方案比较

互联网时代,咱单片机也要上网。 附件比较了嵌入式系统实现TCP-IP的几种实用方案。资料难得哦!…

查看全部问答>

未来十年通信技术发展

资料共享 未来十年通信技术的发展~~…

查看全部问答>

菜鸟PK老人,比较实在有意思

究竟是实习生雷人,还是职场老人雷人?不久前,前程无忧论坛上出现了一篇名为“比比谁更雷?那些让人无语的实习生”的帖子,引发了一场关于“菜鸟与老人”的争论。有人说“实习生不懂规矩又不肯学习太雷人”,也有人说“职场老人倚老卖老高姿态雷死 ...…

查看全部问答>

彩色液晶+12864

资料来自于网上…

查看全部问答>

编译器是如何翻译函数,函数调用的? 从汇编语言角度去解释 ?

编译器是如何翻译函数,函数调用的? 从汇编语言角度去解释 ?…

查看全部问答>

一个关于SYSGEN是如何产生SDBUS.DLL的

我看了WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\SDCARD\\SDBUSDRIVER目录下的source文件,发现TARGETTYPE=LIBRARY,就是说是编译成库文件的,但是我对整个工程Build and sysgen,发现在工程目录下生成了SDBUS.dll文件,我想SDBUS.dll文件应该是在SYSGEN ...…

查看全部问答>