proteus8位共阳数码管如何从0~7循环显示

proteus8位共阳数码管如何从0~7循环显示,第1张

这个显示的设置方法如下:

1、打开Proteus软件,选择“ISISSchematicCapture”模式,然后从元件库中拖拽一个8位共阳数码管和一个计数器(例如74HC161)到画布上。

2、连接8位共阳数码管的引脚和计数器的引脚。

3、双击时钟信号源(例如555计时器)的符号,设置时钟频率为适当的值(例如1Hz)。

4、点击Proteus软件的“Simulate”按钮,选择“Run”模式,然后点击“StartSimulation”按钮,即可开始模拟运行。

5、在模拟运行过程中,可以观察8位共阳数码管的显示内容从0~7循环显示。

仿真图如下

程序如下,程序必须配合上面的仿真图

#include <reg51h>

#define uchar unsigned char

#define uint unsigned int

uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//段码

uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位码

uchar t0n;//T0中断计数

uchar n;//n为第一个显示数

void delay()//延时子程序,写成最简单的

{

uint j;

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

}

void display()

{

uint j;

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

{

P2=wei[j];//送位码

if(j+n>15)

P0=led[j+n-16];//送段码

else

P0=led[j+n];//送段码

delay();

}

}

void main()

{

TMOD=0x01;

TH0 =0x3C;//晶振频率12M

TL0 =0xB0;

IE  =0x82;

TR0 =1;

while(1)

{

display();

}

}

//T0中断程序

void T0_int() interrupt 1

{

TH0 =0x3C;

TL0 =0xB0;

t0n++;

if(t0n>=10)//中断10次,05秒到

{

t0n=0;

n++;

if(n>15)

n=0;

}

}

数码管的显示分为两种方式:一种静态显示,一种动态显示。

以8个数码管显示“12345678”为例,说明如下:

静态显示:8个数码管同时点亮,显示的内容就是“12345678”。这种方式比较“笨”,容易理解,但是占用的资源较多。因一个数码管有7个段,电路则包含1个公共端和7个笔画端,要显示一个数字,需要8个电平输入控制口,8个数码管就需要88=64个。显然,这种方式不适合显示多位数。

动态显示:8个数码管依次显示,首先第1个显示“1”其余7个不点亮,然后第2个显示“2”其余7个不显示……依此类推,循环显示1至8位数字。由于人的眼睛识别闪烁的频率是有范围的,当8个数码管循环显示的频率足够高,人眼观察不到单个数码管的间断点亮,看到的现象是第1个数码管一直显示“1”,第2个一直显示“2”……第8个一直显示“8”,因此实现8个数码管显示不同的内容。动态显示相比静态显示占用的电平控制端口要少很多,因不同的数码管之间可以公共端口,例如7个笔画端共用,则只需要7个笔画端+8个公共端,15个端口即可。通常数码管显示都是采用的动态显示方式。

以上,不知道说清楚了没?~

以上就是关于proteus8位共阳数码管如何从0~7循环显示全部的内容,包括:proteus8位共阳数码管如何从0~7循环显示、用定时器以间隔0.5秒在8位数码管上依次循环显示0、1、2、3….C、D、E、F。实验设、如何让8个数码管显示出不一样的数值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9354869.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存