标题:
请大神看看,为什么数码管只有一个位在变化
[打印本页]
作者:
靠右行驶_
时间:
2017-10-31 20:57
标题:
请大神看看,为什么数码管只有一个位在变化
我真的尽力了,请帮我看下问题出在哪,这是一个38译码器的数码管。谢谢了。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i,a;
uint dis[4];
sbit aa=P2^2;
sbit bb=P2^3;
sbit cc=P2^4;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
void delays(uchar xms)
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
for(a=0;a<3;a++)
{
switch(a)
{
case 0:aa=0;bb=0;cc=0;break;
case 1:aa=1;bb=0;cc=0;break;
case 2:aa=0;bb=1;cc=0;break;
}
P0=dis[a];
delays(10);
}
}
void datapros()
{
dis[0]=table[i/100];
dis[1]=table[i/100%10];
dis[2]=table[i%10];
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
datapros();
display();
}
}
void T0_time()interrupt 1
{
uchar k;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
k++;
if(k==20)
{k=0;i++;}
}
作者:
yzwzfyz
时间:
2017-10-31 23:11
画出方框图,在画的过程中你就知道了。
作者:
wulin
时间:
2017-11-1 09:18
你试试看:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit aa=P2^2;
sbit bb=P2^3;
sbit cc=P2^4;
uint i=0,k=0;
uchar a=0;
bit b=0;
//uint dis[4];
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
/*
void delays(uchar xms)
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
*/
void display()
{
switch(a)
{
case 0:aa=0;bb=0;cc=0;
P0=table[i/100];
a=1;break;
case 1:aa=1;bb=0;cc=0;
P0=table[i%100/10];
a=2;break;
case 2:aa=0;bb=1;cc=0;
P0=table[i%10];
a=0;break;
}
}
/*
void datapros()
{
dis[0]=table[i/100];
dis[1]=table[i/100%10];
dis[2]=table[i%10];
}
*/
void main()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
// datapros();
if(b==1)
{
b=0;
display();
}
}
}
void T0_time()interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
k++;
if(k>=1000)
{
k=0;
if(i<1000)
i++;
else i=0;
}
b=1;
}
作者:
靠右行驶_
时间:
2017-11-1 13:08
wulin 发表于 2017-11-1 09:18
你试试看:
#include
#define uchar unsigned char
我天呐,大神啊。果然可以了。话说我那样写到底哪里不对了呢?
作者:
1539254879
时间:
2017-11-1 13:21
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit aa=P2^2;
sbit bb=P2^3;
sbit cc=P2^4;
uint i=0,k=0;
uchar a=0;
bit b=0;
//uint dis[4];
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
/*
void delays(uchar xms)
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
*/
void display()
{
switch(a)
{
case 0:aa=0;bb=0;cc=0;
P0=table[i/100];
a=1;break;
case 1:aa=1;bb=0;cc=0;
P0=table[i%100/10];
a=2;break;
case 2:aa=0;bb=1;cc=0;
P0=table[i%10];
a=0;break;
}
}
/*
void datapros()
{
dis[0]=table[i/100];
dis[1]=table[i/100%10];
dis[2]=table[i%10];
}
*/
void main()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
// datapros();
if(b==1)
{
b=0;
display();
}
}
}
void T0_time()interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
k++;
if(k>=1000)
{
k=0;
if(i<1000)
i++;
else i=0;
}
b=1;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1