找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1211|回复: 1
打印 上一主题 下一主题
收起左侧

请教各位大神,单片机ADC0804测电压,输出数据为一直为255?

[复制链接]
跳转到指定楼层
楼主
ID:814785 发表于 2020-8-17 09:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下!
#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();
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:814785 发表于 2020-8-17 10:51 | 只看该作者
解决了,写程序手误整错了端口!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表