找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]菜鸟求助:关于ADC0804与51hei-5开发板问题

[复制链接]
跳转到指定楼层
楼主
ID:44069 发表于 2012-8-21 22:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我用的是51hei-5开发板,用单片机控制ADC0804进行数模转换,当拧动实验板上A/D旁边的电位时,在数码管的前三位以十进制方式显示出A/D转换后的数字量,但为什么一直显示255,而不变换,为什么????


#include <reg52.h>      //52系列单片机头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int 
sbit dula=P2^6;  //申明U1锁存器的锁存端
sbit wela=P2^7;  //申明U2锁存器的锁存端
sbit adwr=P3^6;  //定义AD的WR端口
sbit adrd=P3^7;  //定义AD的RD端口
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint xms)    
{
 uint i,j;
 for(i=xms;i>0;i--)        //i=xms即延时约xms毫秒
  for(j=110;j>0;j--);
}

void display(uchar bai,uchar shi,uchar ge)  //显示子函数
{
    dula=1;
 P0=table[bai];    //送段选数据
 dula=0;
 P0=0xff;  //送位选数据前关闭所有显示,防止打开位选锁存时
 wela=1;   //原来段选数据通过位选锁存器造成混乱
 P0=0x7e;  //送位选数据
 wela=0;
 delayms(5);     //延时

 dula=1;
 P0=table[shi];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0x7d;
 wela=0;
 delayms(5);

 dula=1;
 P0=table[ge];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0x7b;
 wela=0;
 delayms(5);
}


void main()  // 主程序
{

  uchar a,A1,A2,A3,adval;
 wela=1;
 P0=0x7f;           //置CSAD为0,选通ADCS 以后不必再管ADCS
 wela=0;
    while(1)
 {
  adwr=1;
  _nop_();
  adwr=0;   //启动AD转换
  _nop_();
  adwr=1;
  for(a=10;a>0;a--)        //TX-1C实验板AD工作频率较低,所以启动转换后要多留点时间用来转换
  {                        //这里把显示部分放这里的原因也是为了延长转换时间                                                                                                                                                                                                                           
   display(A1,A2,A3);
  }
  P1=0xff;                    //读取P1口之前先给其写全1 
  adrd=1;                    //选通ADCS
  _nop_(); 
  adrd=0;                     //AD读使能
  _nop_();
  adval=P1;   //AD数据读取赋给P1口
  adrd=1;
  A1=adval/100;  //分出百,十,和个位
  A2=adval%100/10;
  A3=adval%10;
  }
}

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

使用道具 举报

沙发
ID:1 发表于 2012-8-21 22:48 | 只看该作者

用跳线帽 把0804旁边的排针短接最后2个 应该就没问题了,,这个跳线是决定那一路信号输入adc0804的

[此贴子已经被作者于2012-8-21 22:58:28编辑过]
回复

使用道具 举报

板凳
ID:44069 发表于 2012-8-21 23:15 | 只看该作者

谢谢,但是这个是ADC0804只有一路输入,而ADC0809有三路输入,且ADC0804旁边只有两个排针,已经短接了。应该不是这个问题

回复

使用道具 举报

地板
ID:1 发表于 2012-8-27 02:13 | 只看该作者
可能需要更换一个adc0804试试,是不是芯片坏掉了?
回复

使用道具 举报

5#
ID:44069 发表于 2012-8-27 22:41 | 只看该作者

但是ADC0804可以控制旁边的发光二级管啊,我可以换个ADC08O4或单片机看看,谢谢!

回复

使用道具 举报

6#
ID:86461 发表于 2015-8-1 08:01 | 只看该作者
大神能不能解答下,为什么ADC转换后数值在0~255变化?
                           这转换的是什么值?
回复

使用道具 举报

7#
ID:65232 发表于 2015-8-1 10:39 | 只看该作者
scx2006114 发表于 2015-8-1 08:01
大神能不能解答下,为什么ADC转换后数值在0~255变化?
                           这转换的是什么值?

这是8位AD所以是
回复

使用道具 举报

8#
ID:86461 发表于 2015-8-1 16:00 | 只看该作者
哦,我知道了,谢谢了
回复

使用道具 举报

9#
ID:147742 发表于 2016-12-19 11:17 来自手机 | 只看该作者
先把转换的屏蔽掉,单独显示数字,看显示程序又没有问题。再看下连接电路是不是共地
回复

使用道具 举报

10#
ID:213995 发表于 2017-6-29 15:53 | 只看该作者
会不会是测量的电压超过它的参考电压?
回复

使用道具 举报

11#
ID:225054 发表于 2017-9-30 20:36 来自手机 | 只看该作者
读取数据前cs要拉低电平
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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