单片机两位数码管的控制
我现在控制51单片机上的数码管,是使用不停刷新的方法,但到想要操控数码管显示两位数10到20滚动时却遇到了问题,我无法同时控制两位数码管显示数字,由1到20,求程序解答 这个问题曾经学过,但是已经忘得差不多了 Sungne_jer 发表于 2020-2-19 16:22这个问题曾经学过,但是已经忘得差不多了
额 你写过的程序贴一下呗 数码管同时只能亮一个,看起来一起亮是因为延时时间端,人眼的视觉停留效应。 这是我之前写的一个99秒的计时程序,看能不能帮到你(写的不好,还请见谅)
#include<reg52.h>#define uchar unsigned charuchar code tab[]={0X82,0xE7,0X4A,0X46,0X27,0X16,0X12,0XC7,0X2,0X6};uchar num,num1,i,j,shi,ge,num2;void delay(uchar x){for(i=x;i>0;i--) for(j=110;j>0;j--); } void main(){ TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) { P0=tab; P1=0xfe; delay(5); P0=tab; P1=0XFD; delay(5); }}void T0_time()interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; num1++; if(num1==20) { num1=0; num++; if(num==99) { num=0; } } shi=num/10; ge=num%10; } 额,我发出去咋成这样了... 用位选和段选具体的程序我有一个三位数的你看看
#include<reg52.h>
#define ucharunsignedchar
#define uint unsignedint
void delay(uint z);
void display (uchar x);
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
char code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x3f,
0x7c, 0x39,0x5e,0x79,0x71}; /*ìí¼óêyÂë1ü*/
uchar codetablewela[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf};
ucharge,shi,bai;
uchar tt=0;
uint temp;
void main()
{
temp=0;
TMOD=0X01;
EA=1;
TH0=(65536-50000)/256;/*50MS¼Æê±*/
TL0=(65536-50000)%256;
ET0=1;/*ê1óö¨ê±Æ÷0*/
TR0=1;/*¿aÆô¶¨ê±Æ÷0*/
while(1)
{
if (tt==20)
{
tt=0;
temp++;
}
display (temp);
}
}
void delay(uint z)
{
uint x,y;
for(x=0;x<11;x++)
{
for(y=z;y>0;y--);
}
}
void display (ucharx)
{
bai=x/100;
shi=x%100/10;
ge=x%10;
dula=1;
P0=table;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
dula=1;
P0=table;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
dula=1;
P0=table;
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;/*50MS¼Æê±*/
TL0=(65536-50000)%256;
tt++;
}
本帖最后由 物火卿腾 于 2020-4-2 10:16 编辑
%5BPhoto%5D这样的行吗? 物火卿腾 发表于 2020-4-2 10:15
这样的行吗?
略过{:10_266:}
页:
[1]