这个程序烧到单片机上,数码管总是显示9的,是怎么回事
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint num,aa,bb,adval;
uint table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit wr=P3^0;
sbit rd=P3^1;
sbit csad=P3^2;
sbit led=P2^0;
sbit beep=P2^1;
sbit key0=P3^6;
sbit key1=P3^7;
void init();
void start();
void read();
void delay(uint z)
{
uint t1,y;
for(t1=z;t1>0;t1--)
for(y=110;y>0;y--);
}
void main()
{
init();
while(1)
{
start();
delay(200);
read();
num=adval/12;
if(num>9) num=9;
P0=table[num];
if((num>2)||(num==2))
TR0=1;
if(num<2)
{
TR0=0;
beep=0;
led=1;
}
if(key0==0)
{
delay(20);
if(key0==0)
{
TR2=1;
while(!key0);
}
}
if(key1==0)
{
delay(20);
if(key1==0)
{
TR2=0;
beep=0;
led=1;
while(!key1);
}
}
}
}
void init()
{
csad=0;
P2=0x01;
TMOD=0x21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TL2=(65536-50000)%256;
ET2=1;
EA=1;
}
void start()
{
wr=1;
_nop_();
wr=0;
_nop_();
wr=1;
}
void read()
{
P1=0xff;
rd=1;
_nop_();
rd=0;
_nop_();
adval=P1;
rd=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==6)
{
aa=0;
led=~led;
beep=~beep;
}
}
void timer2() interrupt 5
{
TF2=0;
TH2=(65536-50000)/256;
TL2=(65536-50000)%256;
bb++;
if(bb==10)
{
bb=0;
led=~led;
beep=~beep;
}
}
http://max.book118.com/html/2013/0710/4366852.shtm我是想设计这个
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint num,aa,bb,adval;
uint table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit wr=P3^0;
sbit rd=P3^1;
sbit csad=P3^2;
sbit led=P2^0;
sbit beep=P2^1;
sbit key0=P3^6;
sbit key1=P3^7;
void init();
void start();
void read();
void delay(uint z)
{
uint t1,y;
for(t1=z;t1>0;t1--)
for(y=110;y>0;y--);
}
void main()
{
init();
while(1)
{
start();
delay(200);
read();
num=adval/12;
if(num>9) num=9;
P0=table[num];
if((num>2)||(num==2))
TR0=1;
if(num<2)
{
TR0=0;
beep=0;
led=1;
}
if(key0==0)
{
delay(20);
if(key0==0)
{
TR2=1;
while(!key0);
}
}
if(key1==0)
{
delay(20);
if(key1==0)
{
TR2=0;
beep=0;
led=1;
while(!key1);
}
}
}
}
void init()
{
csad=0;
P2=0x01;
TMOD=0x21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TL2=(65536-50000)%256;
ET2=1;
EA=1;
}
void start()
{
wr=1;
_nop_();
wr=0;
_nop_();
wr=1;
}
void read()
{
P1=0xff;
rd=1;
_nop_();
rd=0;
_nop_();
adval=P1;
rd=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==6)
{
aa=0;
led=~led;
beep=~beep;
}
}
void timer2() interrupt 5
{
TF2=0;
TH2=(65536-50000)/256;
TL2=(65536-50000)%256;
bb++;
if(bb==10)
{
bb=0;
led=~led;
beep=~beep;
}
}
http://max.book118.com/html/2013/0710/4366852.shtm我是想设计这个
P1=0xff;
adval=P1;
num=adval/12;
if(num>9) num=9;
这样当然一直显示9了,
那要怎样改,才能达到理想的效果!麻烦帮助一下!
那当传感器检测气体的时候的,还会有浓度显示吗?
我试了一下,但是气体传感器检测有浓度的时候,数码管不显示浓度得数值了。请继续为我解答,谢谢
if(num>9) num=9;
这样写没错啊,你是想表达如果浓度大于9或以上,就显示9吧?
if((num>2)||(num==2))
你这样写有意义么?
if(num>=2)不就行了么
