为什么ADC0808仿真时出来的全是0,求大神指导
proteus吧
全部回复
仅看楼主
level 11
June_yanni 楼主
2018年04月07日 01点04分 1
level 11
June_yanni 楼主
2018年04月07日 01点04分 2
level 11
June_yanni 楼主
这是源程序:
#include <reg51.h>
#include<intrins.h>
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit BF = P1^0;
sbit PinStar = P2^3;
sbit PinOe = P2^7;
unsigned char dangqian=0;
unsigned char shangci=255 ;
unsigned int t0cishu=0;//*******延时1ms*********//
void delaylms()
{
unsigned char i,j;
for(i=0; i<10;i++)
for(j=0; j<33; j++) ;
}
//*******延时1S**********//
void delay1(unsigned char t)
{unsigned char j;
for(;t>0;t--)
for(j=19; j>0; j--) ;
}
//****延时************//
void delay(unsigned char n)
{
unsigned char i;
for(i=0; i<n; i++)
delaylms();
}
void writeinstruction(unsigned char dictate)
{
RS=0;
RW=0;
E=0;
P0=dictate;
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
E=1;
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
E=0;
} void writeaddress(unsigned char x)
{
writeinstruction(x|0x80) ;
} void writedata(unsigned char y)
{
RS=1;
RW=0;
E=0;
P0=y;
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
E=1;
_nop_() ;
_nop_() ;
_nop_() ;
_nop_() ;
E=0;
} void lcdinitiate(void)
{ writeinstruction(0x01);
delay(25);
writeinstruction(0x38);
delay(15);
writeinstruction(0x0c);
delay(15);}
void adc0808()
{
unsigned int value;// = 0;
float temp = 0;
PinStar = 0;
delay1(5) ;
PinStar = 1;
delay1(5) ;
PinStar = 0;
delay1(5) ;
PinOe = 0;
delay1(5) ;
delay(10) ;
PinOe = 1;
delay1(5) ;
value=P1;
//显示读取到的当前电压
temp=value/255*500;
value = temp;
writeaddress(7) ;
delay(15) ;
writedata(dangqian + 0x30) ;
delay(15) ;
writeaddress (5+0x40) ;
delay(15) ;
writedata(value/100 + 0x30) ;
delay(15) ;
writedata('.' );
delay(15) ;
writedata(value/10%10+ 0x30) ;
delay(15) ;
writedata(value%10+ 0x30);
delay(15) ;
writedata(' ');
delay(15) ;
writedata('V' ); }
void inter() interrupt 1
{
TH0 =0xd8;
TL0 =0xf0;
t0cishu++ ;
if (t0cishu==500) //5秒
{
t0cishu=0 ;
dangqian++;
if (dangqian==8)
{dangqian=0 ;
}
}
} void main()
{
unsigned char tongdao=0;
TMOD=0x01;
TH0 =0xd8;
TL0=0xf0;
ET0=1;
EA=1;
lcdinitiate () ;
writeinstruction(0x01) ;
delay(15) ;
writeinstruction(0x06) ;
delay(15) ;
TR0=1;
while(1)
{
if (dangqian!=shangci)
shangci=dangqian;
tongdao=dangqian;
tongdao = tongdao<<5 ;
P2= P2&0x1F;
P2= tongdao|P2 ;
delay( 100) ;
adc0808() ;
}
}
2018年04月07日 01点04分 3
level 1
去百度知道提问,那里回答的人多。
2018年05月17日 12点05分 4
1