历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2021年11月26日 | 【单片机】实战篇:Keil+Proteus数码管计数99

2021-11-26 来源:eefocus

本篇文章:

主要内容:静态点亮数码管显示数字99、动态点亮数码管显示12345678(8位数码管)。

功能一:静态点亮数码管显示数字99(2位数码管)

功能二:动态点亮数码管显示12345678(8位数码管)


正文如下:

一、静态点亮数码管

1)Proteus绘图

第一步:根据给定元器件进行绘图

如果不知如何绘图,(新手请看:https://blog.csdn.net/qq_44366571/article/details/107053338)

在这里插入图片描述

注:遇到新知识:

在这里插入图片描述

注:点击出现,属性赋值工具

在这里插入图片描述

自定义名字:

在这里插入图片描述

注意: 一般的话,框中输入NET=P1#(#表示的意思是:0-9),点击圆圈即可命名。

例如: NET=A1#,点击之后依次显示:A10、A11、A12、A13…

作用: 可以减少连线,名字相同的两个圈,默认是已经连接上线了。我们绘制的图中,左数码管已经和P0引脚相连,右数码管已经和P1引脚相连

第二步:

绘图完成,进行Keil代码


2)Keil代码

第一步:创建一个单片机工程

如果不知如何创建单片机工程,(新手请看:)

第二步:根据Proteus绘制,代码实现数码管点亮:

数码管器件: 数码管分为共阴极和共阳极,如果是共阴极的话,我们需要在连接的引脚输入高电平才可以点亮数码管;如果数码管是共阳极的话,我们需要在连接的引脚输入低电平才可以。


数码管:

在这里插入图片描述
在这里插入图片描述

#include

#define uchar unsigned char

#define uint unsigned int

#define smg_r P1

#define smg_l P0

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

//延时函数

void delay(unsigned int x) //延时 x ms

{

uint i,j;

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

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

}


void main(){

uint i, ge, shi;

while(1){

i=0;

//数码管从00显示到99

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

ge = i%10;

shi = i/10;

smg_l = date[shi];

smg_r = date[ge];

delay(1000);

}

}

}


到这里,静态的数码管显示就实现了,我们来看看如何实现动态数码管。


二、动态点亮数码管

1)Proteus绘图

绘图元器件:

下图左方即绘图所需元器件,按照改图绘制即可。

在这里插入图片描述

提示:

点击工具,选择自动连线,操作如下,双击即可实现

在这里插入图片描述
在这里插入图片描述

提示:

名字相同的就是连接到一起的意思。

绘图完成,进行代码部分。


2)Keil代码部分

#include

#include

 

#define uchar unsigned char

#define uint  unsigned int


uchar code Discode[]={0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0xc0};   //共阳极数码管


void delay(uint t)    //毫秒级延时函数

{

uchar i;

while(t--)

{

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

}

}

void main()

{

  uchar i,j=0x80;

P0=0xff;   //先关闭数码管

P2=0x00;   

while(1)

{

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

{

P2=0x00; //显示一次关闭一次位选端,去除重影的作用

j=_crol_(j,1);    //10000000——00000001

P2=j; //每次选通一个位选端口

P0=Discode[i];   //段码送P0口

delay(5);

}

}

}


效果展示:

在这里插入图片描述

完结,撒花…


本篇文章主要是单片机数码管的使用,更多Keil+proteus项目,持续学习中…

推荐阅读

史海拾趣

得倍(DBIC)公司的发展小趣事

在技术创新的基础上,倍(DBIC)公司积极拓展市场,加强品牌建设。公司制定了详细的市场营销策略,针对不同区域和行业进行精准推广。同时,倍(DBIC)公司还积极参与国际展会和论坛,与全球合作伙伴建立联系。这些努力使倍(DBIC)公司的品牌知名度不断提高,市场份额也逐步扩大。

Dearborn Electronics Inc公司的发展小趣事

Dearborn Electronics Inc.始终将品质放在首位,建立了严格的质量管理体系。公司从原材料采购到生产、检验、包装等各个环节都进行严格的质量控制,确保每一件产品都符合最高标准。此外,公司还不断引进先进的生产设备和技术,提高生产效率和产品质量。

Glow-Lite Corp公司的发展小趣事

随着技术的不断进步,Dearborn Electronics Inc.不断投入研发,推出了一系列具有创新性的产品,如钽电容、陶瓷电容器等。这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。同时,公司也积极拓展市场,将产品销售到全球各地,特别是医疗、石油、交通、工业等严苛应用领域。

EG & G Inc公司的发展小趣事

EG & G Inc公司成立于20世纪早期,最初专注于电子设备的研发和生产。公司凭借其技术优势和创新能力,在电子行业中逐渐崭露头角。在成立初期,EG & G Inc就与多家知名企业和研究机构建立了合作关系,共同推动电子技术的发展和应用。这些合作关系不仅为公司带来了技术上的支持,也为其在市场上的扩张奠定了基础。

Active-Semi公司的发展小趣事

随着市场竞争的加剧,EG & G Inc公司意识到通过并购和整合来提升自身竞争力的重要性。公司先后收购了多家具有技术优势和市场潜力的企业,将其纳入自己的业务体系。这些并购不仅增强了公司的技术实力和市场地位,也为其未来的发展奠定了坚实的基础。

FCI [First Components International]公司的发展小趣事

为了进一步扩大市场份额,EG & G Inc公司积极开展市场拓展和国际合作。公司在中国、欧洲等多个国家和地区设立了分支机构,与当地企业建立了紧密的合作关系。同时,公司还积极参与国际展览和交流活动,展示了其先进的技术和产品。这些努力使得EG & G Inc公司在国际市场上获得了更多的机会和认可。

问答坊 | AI 解惑

试驾新爱丽舍

新爱丽舍(扭矩传感器)的座椅包裹性得到了加强,后排座椅也增加了专利的分割放倒功能。方向盘皮革缝制的工艺及正中央大号的双人字齿轮标识给人精致的感觉。中控台保留了经典的整体布局,钛银色装饰条则加强了精致感。两组连续的弧形镀铬饰条将四个 ...…

查看全部问答>

单片机入门

快速了解单片机…

查看全部问答>

VHDL教程

VHDL简明教程,下了就知道了,好东西…

查看全部问答>

EPM240与EPM570管脚兼容否???

来自EEWORLD合作群:499581  群主:wangkj…

查看全部问答>

救算法

  单片机学的不好,求用汇编语言实现三字节BCD码除法       …

查看全部问答>

新东西,高手进.

有人在Wince5.0下做过用于vS2005的模拟器吗?…

查看全部问答>

SHFileOperation 复制文件时如何取消操作

   WinCE系统下复制大文件,我想取消复制时好像没反映,虽然进度条关闭了,但是后台copy 过程仍然继续,我晕!! 有什么办法解决吗??…

查看全部问答>

消防指示灯

所需芯片: MAX16804  MAX16823 //以上两款看实用效果决定实用哪一个 MAX4747 ZLF645S2864GR5653T MAX13223E MAX5033A\\B\\C 芯片有TSSOP封装的就要此封装,没有其他形式也可。   实现功能描述之功能。 [ 本帖最后由 murray ...…

查看全部问答>

请问sim300进入省电模式后,如何唤醒呢?

最近在做一个GPRS水位采集器,用单片机+超声波+sim300模块,上下位机程序什么的都搞定了,也都能正常运行,51单片机程序里面也加了单片机低功耗模式代码。当采集周期较大时候,我想让sim300也进入低功耗状态,但是不知道怎么唤醒,AT查完了,怎么没 ...…

查看全部问答>

msp430跟ad9850怎么接

短学期的实习内容是dds信号发生器的设计,单片机老师要求用430,查了几天资料还是一头雾水,想知道msp430f149跟ad9850的管脚是怎么接的,求高手赐教。…

查看全部问答>