想显示ADC0831转换后的数值,但是一直都不对,请帮我找一下原因。下面是我的程序:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD_CLK=P1^7;
sbit AD_CS=P3^7;
sbit AD_DO=P1^1;
sbit W1=P0^0;
sbit W2=P0^1;
sbit W3=P0^2;
sbit W4=P0^3;
uchar table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
}; //共阴极数码管8段码
uchar vol0=0;
void LED(uchar shu,uchar wei) //位选某个数码管显示数
{
switch(wei)//位选
{
case 1:{W1=0;W2=1;W3=1;W4=1;} break;
case 2:{W1=1;W2=0;W3=1;W4=1;} break;
case 3:{W1=1;W2=1;W3=0;W4=1;} break;
case 4:{W1=1;W2=1;W3=1;W4=0;} break;
}
_nop_();
P2=table[shu];//段选
_nop_();
}
void LED_show()//调节显示
{
LED((uchar)((int)vol0/100) ,2);
_nop_();
LED((uchar)((int)vol0%100/10),3);
_nop_();
LED((uchar)((int)vol0%10),4);
_nop_();
}
void ADC()
{
uchar i;
AD_CS=1;
AD_CLK=0;
AD_CS=0;
_nop_();
_nop_();
AD_CLK=1;
_nop_();
_nop_();
AD_CLK=0;
_nop_();
_nop_();
AD_CLK=1;
_nop_();
_nop_();
AD_CLK=0;
_nop_();
for(i=0;i<8;i++)
{
if(AD_DO)
vol0=vol0|0x01;
vol0=vol0<<1;
AD_CLK=1;
_nop_();
_nop_();
AD_CLK=0;
_nop_();
_nop_();
}
AD_CS=1; //释放总线
}
void main()
{
uchar i;
while(1)
{
i++;
LED_show();
if(i==255)
{
ADC();
i=0;
}
LED_show();
}
}
http://bbs.elecfans.com/forum.php?mod=attachment&aid=MTUzNjcxfDc1ZDU5ZmU0NGIyZDM3YTE2MjBlNjU5NzliMDNiZWRkfDE1NTczNjIwNTc%3D&request=yes&_f=.rar
-
-
ADC0831.rar
下载积分: 积分 -1 分
47.44 KB, 下载次数: 10, 下载积分: 积分 -1 分
一周热门 更多>