请问为什么数码管不显示
#include<reg51.h>charcodeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};...
#include<reg51.h>char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};#define ADC P0#define SCANP P1#define SEG7P P2unsigned char disp[4]={0,0,0,0};unsigned char _adc;void dataproc(unsigned char);void display(void);void delay1ms(char);main(){ while(1) { display(); _adc=ADC; dataproc(_adc); }}void dataproc(unsigned char data_in){ int results; results=data_in*196; disp[3]=results/10000; disp[2]=(results/1000)%10; disp[1]=(results/100)%10; disp[0]=results%10;}void diasplay(void){ char i,scan; char times=20; while(--times>=0) { scan=1; for(i=0;i<4;i++) { SEG7P=0xff; SCANP=~scan; SEG7P=TAB[disp[i]]; delay1ms(10); scan<<=1; } }}void delay1ms(char x){ int i,j; for(i=0;i<x;i++) for(j=0;j<120;j++);}
展开
1个回答
展开全部
void diasplay(void)//子程序名字错了,主程序调用时是:display();
这在编译时,有提示的,没有看到吗?程序中的变量,都是正数,所以,声明变量时最好都加上 unsigned。
对你的程序做了一些修改,如下,对照一下你原来的程序,有什么不同。
#include<reg51.h>
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
#define ADC P0
#define SCANP P1
#define SEG7P P2
unsigned char disp[4]={0,0,0,0};
unsigned char _adc;
void dataproc(unsigned char data_in);
void display(void);
void delay1ms(unsigned char x);
void main()
{
while(1)
{
display();
_adc=ADC;
dataproc(_adc);
}
}
void dataproc(unsigned char data_in)
{
unsigned int results;
results=data_in*196;
disp[0]=results/1000; //多一个0,这是disp[0]
disp[1]=(results/100)%10;//多一个0,这是disp[1]
disp[2]=(results/10)%10;//多一个0,这是disp[2]
disp[3]=results%10; //这是disp[3]
}
void display(void)//名字错了,多了一个a
{
unsigned char i,scan;
char times=20;
while(--times>=0)
{
scan=1;
for(i=0;i<4;i++)
{
SEG7P=0xff;
SCANP=~scan;
SEG7P=TAB[disp[i]];
delay1ms(10);
scan<<=1;
}
}
}
void delay1ms(unsigned char x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
这在编译时,有提示的,没有看到吗?程序中的变量,都是正数,所以,声明变量时最好都加上 unsigned。
对你的程序做了一些修改,如下,对照一下你原来的程序,有什么不同。
#include<reg51.h>
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
#define ADC P0
#define SCANP P1
#define SEG7P P2
unsigned char disp[4]={0,0,0,0};
unsigned char _adc;
void dataproc(unsigned char data_in);
void display(void);
void delay1ms(unsigned char x);
void main()
{
while(1)
{
display();
_adc=ADC;
dataproc(_adc);
}
}
void dataproc(unsigned char data_in)
{
unsigned int results;
results=data_in*196;
disp[0]=results/1000; //多一个0,这是disp[0]
disp[1]=(results/100)%10;//多一个0,这是disp[1]
disp[2]=(results/10)%10;//多一个0,这是disp[2]
disp[3]=results%10; //这是disp[3]
}
void display(void)//名字错了,多了一个a
{
unsigned char i,scan;
char times=20;
while(--times>=0)
{
scan=1;
for(i=0;i<4;i++)
{
SEG7P=0xff;
SCANP=~scan;
SEG7P=TAB[disp[i]];
delay1ms(10);
scan<<=1;
}
}
}
void delay1ms(unsigned char x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
追答
在电脑上已经发了修改的程序,用手机看不到,要用电脑看。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询