
这个显示的设置方法如下:
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个数码管显示出不一样的数值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)