您的位置 首页 > 数码极客

如何让每个数码管—如何让数码管显示1 如何让数码管显示3

补发上节课原理图,如果是多个数码管,只需要把所有数码管的a连在一起,所有的b连在一起,所有的c连在一起,所有的d连在一起,所有的e连在一起,所有的f连在一起,所有的g连在一起,所有的h连在一起, 把控制位分别接P1.0,P1.1,P1.2,P1.3,只有控制位为0时被控制的那个数码管才会显示。

上节课只能显示1位数码管而且还是在主循环内一直等待,那我们的程序就只能显示时间了,不符合我们的使用要求,我们可以让时间在定时器中变化。

我们先声明一个最大9999秒的变量,一个int型变量miaoshu。

再定义一个标志位,什么时候刷新,比如到1秒我们再去刷新,不够1秒不去刷新。

定义几个数码管的控制位,让哪个数码管显示。

再定义一个数组 显示的数 的缩写,用来显示数字。

#include<reg52.h>

sbit kongzhi0=P1^0;

sbit kongzhi1=P1^1;

sbit kongzhi2=P1^2;

sbit kongzhi3=P1^3;

unsigned char code shuzi[ ]={ 0xC0,0xF9, 0xA4,0xb0, 0x99,0x92,0x82,0xF8,0x80,0x90};

unsigned int miaoshu=0;

bit shuaxin=0;

unsigned char i=0;

unsigned char xsds[]={0xff, 0xff,0xff,0xff};

void main()

{

EA=1;

TMOD=0x01;

TH0=0xD8;

TL0=0xEF;

ET0=1;

TR0=1;

while(1)

{

if(shuxin==1)

{

shuxin=0;

xsds[0]= shuzi [ miaoshu%10]; 百分比号是取余数的意思,例如85对10取余数 就是85/10=8余5,我们只要余数5.前面的结果8我们不要。

xsds[1]= shuzi [miaoshu/10%10];

xsds[2]= shuzi [miaoshu/100%10];

xsds[3]= shuzi [miaoshu/1000%10];

}

if(i==0)

{kongzhi3=1 ; kongzhi0 = 0 ; i++; P2=xsds[0] ;}

if(i==1)

{kongzhi0=1 ; kongzhi1= 0 ; i++; P2=xsds[1] ;}

if(i==2)

{kongzhi1=1 ; kongzhi2= 0 ; i++; P2=xsds[2] ;}

if(i==3)

{kongzhi2=1 ; kongzhi3= 0 ; i=0; P2=xsds[3] ;} 这里注意一下,让i=0,重新刷新第一 个数码管。

}

}

void dingshiqi0() interrupt 1

{

static unsingned char i=0;

TH0=0xD8;

TL0=0xEF;

i++;

if(i>=100)

{

i=0;

miaoshu++;

shaxin=1;

if(miaoshu>=10000)

{miaoshu=0;}

}

}

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何让每个数码管,如何让数码管显示1,如何让数码管闪烁,如何让数码管显示3,如何让数码管显示,如何让数码管显示0”边界阅读