标题: 请教各位大神,单片机ADC0804测电压,输出数据为一直为255? [打印本页]

作者: 用户21111412    时间: 2020-8-17 09:16
标题: 请教各位大神,单片机ADC0804测电压,输出数据为一直为255?
程序如下!
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit w1=P2^0;
sbit w2=P2^1;
sbit w3=P2^2;
sbit _CS=P2^4;                        //ADC0804片选位定义
sbit _RD=P2^5;                        //ADC0804读信号输入位定义
sbit _WR=P2^6;                        //ADC0804写信号输入位定义
uchar code dula1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};                //数码管显示0~9数组(不带小数点)
uchar code dula2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xed,0x87,0xff,0xef};                //数码管显示0~9数组(带小数点)
uchar a,A1,A2,A3,num;

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void display()                                        //数码管显示子函数,将ADC0804得到的电压显示在数码管上面
{
        w1=0;
        w2=1;
        w3=1;
        P0=dula2[A1];
        delay(10);
        w1=1;
        w2=0;
        w3=1;
        P0=dula1[A2];
        delay(10);
        w1=1;
        w2=1;
        w3=0;
        P0=dula1[A3];
        delay(10);
}

void Adc_0804()
{
        _WR=0;                //启动ADC0804进行ADC采集
        _nop_();                //延时片刻
        _WR=1;               
        delay(10);
        P1=0xff;
        _RD=1;
        _nop_();
        _RD=0;
        _nop_();
        num=P1;
        _RD=1;
        A1=num/100;
        A2=num%100/10;
        A3=num%10;
        display();
}
main()
{
        _CS=0;                        //ADC0804置零,以后就不用再管ADC0804选择位了
        while(1)
        {
                Adc_0804();
        }
}



作者: 用户21111412    时间: 2020-8-17 10:51
解决了,写程序手误整错了端口!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1