|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
#include <reg52.h>
sbit wr=P3^6;
sbit rd=P3^7;
sbit duan=P2^6;
sbit wei=P2^7;
#define rty unsigned int
#define wer unsigned char
wer bai,shi,ge,temp;
wer code table[]={
0x40,0x79,0x24,0x30,
0x19,0x12,0x02,0x78,
0x00,0x18,0x08,0x03,
0x46,0x21,0x06,0x0e,0xff};
void display (wer bai,wer shi,wer ge);//数码管显示
void delay(rty z);//延时
void main()
{ P0=0x7f;//P0的第七口选通ADC0804的片选cs
rd=1;
temp=0;
while(1)
{
wr=1;
wr=0;
wr=1;
delay(10);
rd=0;
delay(10);
rd=1;
delay(10);/*从上面到此为ADC0804的启动
此时变化ADC0804的输入端电压,
P1口的灯呈现动态变化。*/
temp=P1; // 欲将P1口变化的值赋给temp
if(temp<10)
{ bai=16; //table[16]中bai=0xff;
shi=16;
ge=temp%10;
}
else if(temp>9&&temp<100)
{bai=16;
shi=temp%100/10;
ge=temp%10;
}
else
{ bai=temp/100;
shi=temp%100/10;
ge=temp%10;
}
display(bai,shi,ge);
}
}
void display (wer bai,wer shi,wer ge)
{ duan=1;
P0=table[bai];
duan=0;
wei=1;
P0=0x01;
wei=0;
delay(5);
duan=1;
P0=table[shi];
duan=0;
wei=1;
P0=0x02;
wei=0;
delay(5);
duan=1;
P0=table[ge];
duan=0;
wei=1;
P0=0x04;
wei=0;
delay(5);
}
void delay(rty z)
{ rty x,y;
for(x=80;x>0;x--)
for(y=z;y>0;y--);
}
上面是小弟编写的一个AD转换程序,每步有具体的说明,程序中有一部分成功实现,即随着ADC芯片的电压输入端电压变化,单片机的P1口得到变化的数据,连接P1口的灯变化可证明,然后小弟将P1口的值赋给temp,然后数码管从temp中读值,望数码显示也随着变化,可是显示的始终是255啊,咋的?难道temp=P1;没有成功,为什么呢 |
|