历史上的今天
返回首页

历史上的今天

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

2022年12月14日 | 51单片机—数码管显示

2022-12-14 来源:zhihu

1.静态数码管显示


对数码管所在管口输入,然后根据二进制计算出6的二进制对应输入101,数码管中输入引脚是7D,这里需要有数码管的显示位置的管口参照,不同单片机可能不同


#include


void main()

{

P2_4=1;

P2_3=0;

P2_2=1;

P0=0x7D;//显示数字6

while(1)

{

}

}

由于引脚冲突,led也会亮

然后设置函数。用Switch来定义所有的输入


#include

void Num(unsigned char Location,Number)

{

switch(Location)

{

case 1:P2_4=1;P2_3=1;P2_2=1;break;

case 2:P2_4=1;P2_3=1;P2_2=0;break;

case 3:P2_4=1;P2_3=0;P2_2=1;break;

case 4:P2_4=1;P2_3=0;P2_2=0;break;

case 5:P2_4=0;P2_3=1;P2_2=1;break;

case 6:P2_4=0;P2_3=1;P2_2=0;break;

case 7:P2_4=0;P2_3=0;P2_2=1;break;

case 8:P2_4=0;P2_3=0;P2_2=0;break;

}

P0=0x7D;

}


void main()

{

Num(6);

while(1)

{

}

}

也可以对数字进行设置,在上面的代码中,number没有定义,所以还是显示6

可以用数组的形式,对每个数字的显示形式放在数组中,在函数中调用


#include


char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F};

void Num(unsigned char Location,Number)

{

switch(Location)

{

case 1:P2_4=1;P2_3=1;P2_2=1;break;

case 2:P2_4=1;P2_3=1;P2_2=0;break;

case 3:P2_4=1;P2_3=0;P2_2=1;break;

case 4:P2_4=1;P2_3=0;P2_2=0;break;

case 5:P2_4=0;P2_3=1;P2_2=1;break;

case 6:P2_4=0;P2_3=1;P2_2=0;break;

case 7:P2_4=0;P2_3=0;P2_2=1;break;

case 8:P2_4=0;P2_3=0;P2_2=0;break;

}

P0=NumTable[Number];

}


void main()

{

while(1)

{Num(4,2);

}

}

2.动态数码管显示


加入延迟函数,不然的话在显示上会有重影,对应位置的显示,也可以用循环语句


#include


void Delay(unsigned int xms)

{

unsigned char i, j;

  while(xms--)

{i = 12;

j = 169;

do

{

while (--j);

} while (--i);}

}


char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F};

void Num(unsigned char Location,Number)

{

switch(Location)

{

case 1:P2_4=1;P2_3=1;P2_2=1;break;

case 2:P2_4=1;P2_3=1;P2_2=0;break;

case 3:P2_4=1;P2_3=0;P2_2=1;break;

case 4:P2_4=1;P2_3=0;P2_2=0;break;

case 5:P2_4=0;P2_3=1;P2_2=1;break;

case 6:P2_4=0;P2_3=1;P2_2=0;break;

case 7:P2_4=0;P2_3=0;P2_2=1;break;

case 8:P2_4=0;P2_3=0;P2_2=0;break;

}

P0=NumTable[Number];

}


void main()

{

while(1)

{ Num(1,1);

Delay(200);

Num(2,2);

Delay(200);

Num(3,3);

Delay(200);

}

}


推荐阅读

史海拾趣

DuPont公司的发展小趣事

随着全球环保意识的提高,对于环保型电子材料的需求也日益增长。DuPont公司积极响应这一趋势,致力于环保型电子材料的研发和生产。公司采用先进的环保技术和生产工艺,开发出了一系列低污染、低能耗的电子材料。这些材料不仅具有良好的性能,而且对环境友好,符合可持续发展的要求。DuPont公司的这一举措,不仅提升了公司的竞争力,也为电子行业的可持续发展做出了积极贡献。

骅讯(Cmedia)公司的发展小趣事

近年来,随着科技的不断进步和市场的不断变化,骅讯公司也积极寻求创新转型和拓展市场。在保持其在音频芯片设计领域领先地位的同时,骅讯还积极开发新的业务领域,如软件研发、数字内容供应等。这些创新举措不仅为骅讯带来了新的增长点,也为其在电子行业中保持领先地位提供了有力支持。

以上是关于骅讯(Cmedia)公司在电子行业中发展起来的相关故事简要概述。这些故事展示了骅讯如何凭借其技术实力和市场洞察力在竞争激烈的电子行业中不断发展壮大。

宝乘(baocheng)公司的发展小趣事

面对未来电子行业的发展趋势,宝乘公司继续坚持创新驱动的发展战略。公司加大研发投入,不断推出具有创新性和前瞻性的产品。同时,宝乘还积极探索新的市场领域和应用场景,为公司的未来发展奠定坚实的基础。相信在不久的将来,宝乘公司将成为电子行业中的佼佼者,为社会的进步和发展做出更大的贡献。

请注意,这些故事是基于现有信息的推测,并不代表宝乘公司的真实历史。如果您需要更准确和详细的信息,建议直接联系宝乘公司或查阅相关报道和资料。

Frequency Devices公司的发展小趣事

面对快速变化的市场需求,Frequency Devices公司展现出了敏锐的市场洞察力。在21世纪初,随着无线通信技术的快速发展,对高频电子元件的需求急剧增加。公司及时调整产品策略,加大了对无线通信领域高频产品的研发投入,并成功推出了一系列适用于手机、基站等通信设备的高频滤波器、功率放大器等关键元件。这些产品不仅满足了市场需求,还进一步巩固了公司在行业内的市场地位。

南京国博公司的发展小趣事

国博电子在军用领域同样占据重要地位。作为参与国防重点工程的重要单位,公司为陆、海、空、天等各型装备配套了大量的关键产品,确保了以有源相控阵T/R组件为代表的关键军用元器件的国产化自主保障。通过军民融合的发展模式,国博电子不仅为国防建设提供了有力支持,也促进了自身技术的不断升级和产品的持续优化。

Apx-Crystal公司的发展小趣事

随着全球化进程的加速推进,Apx-Crystal公司意识到拓展国际市场的重要性。公司制定了详细的国际化战略,通过参加国际展览、设立海外分支机构、与当地企业建立战略合作关系等方式,积极开拓海外市场。凭借优质的产品和服务,Apx-Crystal逐渐赢得了国际客户的信任和认可,产品远销欧美、亚太等多个地区,实现了从国内市场向国际市场的跨越式发展。

问答坊 | AI 解惑

2007年全国大学生电子设计竞赛 小车类题目 讨论专用帖

本帖最后由 paulhyde 于 2014-9-15 04:20 编辑 2007年全国大学生电子设计竞赛 小车类题目 讨论专用帖 附上2道题目  …

查看全部问答>

ARE C

ARM  的C语言编程!…

查看全部问答>

谈谈单片机和你的梦想

我来这里学习是为了实现我参军的梦想,我要去的地方和单片机息息相关。我要穿上那白色的制服,实现自己的价值,为理想去战斗!所以单片机就是我现在的武器,为了我梦中的战斗生活开路!…

查看全部问答>

红外遥控系统原理及单片机解码实例

本帖最后由 paulhyde 于 2014-9-15 03:23 编辑 红外解码,希望对大家有用。  …

查看全部问答>

三垦模块

系列功率模块资料…

查看全部问答>

我有个板子加了复位程序,搞不清楚在哪复位,帮忙分析下

EEWORLD合作qq群:49900581群主:wangkj 情况是这样的,我接上负载,他就会复位,不接负载,他就不复位,你们看,这是哪里复位呢? 我开始是怀疑电源引起的复位…

查看全部问答>

ARM片内RAM问题

我有块芯片是ARM9EJS的SOC,现在想问下,ARM9EJS是否有片内RAM,我怎么确认其是否可用?从NOR FLASH启动后在片内RAM中建立C环境,然后运行C代码方案是否可行,如果可行是否有什么需要注意的,比如同片外RAM运行C代码有什么不同?…

查看全部问答>

菜鸟问题:模组和解决方案有什么区别啊?

有朋友用EDGE的模组就可以做数据卡,我搞不清楚这和解决方案有什么区别。 请尽量说的详细一点。 多谢了。…

查看全部问答>

wince4.2與wince5.0與wince6.0的差異?

使用wince4.2的bsp如果要移植到wince5.0或6.0 是不是要大幅改寫driver或什麼的,之間的使用方式 是否通用 thx…

查看全部问答>

计算机串口通信

我想通过计算机的COM串口输出高脚电平和低电平,应当怎样做啊? 我是在VB语言中控制的 用MSComm  输出的高电平和低电平以后怎样读取啊? 请各位大侠帮忙。。 最好带一部分解释代码 先谢谢啦!!…

查看全部问答>