找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5289|回复: 4
收起左侧

AD转换器一直出错不知错在哪里求大神支招

[复制链接]
ID:66892 发表于 2014-10-2 10:47 | 显示全部楼层 |阅读模式
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define    AD 0x7ff8
sbit CLOCK=P3^5;//给AD一个时钟信号
//uint *p;
uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
   void delay(uint a);
   void int2(void);
   void int3(void);
   IE=0x8C;
   TH1=(65536-200)/256;
   TL1=(65536-200)%256;
   TMOD=0x10;
   TCON=0x44;
   CLOCK=0;
   //p=0x7ff8;//指向AD的地址
   while(1)
   {
   //*p=0;  //打开AD转换器
   *((uint*)AD)=0;
   delay(10);//延时等待执行中断程序
   }

}
void delay(uint a)
{
  uchar j;uint i;
  for(i=0;i<a;i++)
  for(j=0;j<333;j++);
}
void int2(void)    interrupt 2
{
   uint k;uchar i;
   k=*((uint*)AD);//读取转换值
   //k=*p;//读取转换的值
   k=(uint)k*1.0/255*5000;//把转换电压用毫伏表示
   for(i=0;i<10;i++)  //显示转换值
   {
      P1=num[k/1000];P2=0x0e;
      P1=num[k/100%10];P2=0x0d;
      P1=num[k/10%10];P2=0x0b;
      P1=num[k%10];P2=0x07;
   }
}
void int3(void) interrupt 3    //采用定时器给AD一个时钟
{
  TH1=(65536-200)/256;
   TL1=(65536-200)%256;
   CLOCK=~CLOCK;
   return;
}


QQ截图20140930165107.png
回复

使用道具 举报

ID:66891 发表于 2014-10-2 13:18 | 显示全部楼层
再说一下错的时候什么情况。数据错误,还是不显示,亦或读不到数据
回复

使用道具 举报

ID:66892 发表于 2014-10-2 14:34 | 显示全部楼层
显示的是乱码,好像是AD的地址没有得到 不是0x7ff8,*((uint*)AD)没有值,k也没有值,但不知道为什么可以进入到中断函数,执行数码管显示那段程序,可是数码管显示的是乱码,
回复

使用道具 举报

ID:66892 发表于 2014-10-2 14:43 | 显示全部楼层
changmen 发表于 2014-10-2 13:18
再说一下错的时候什么情况。数据错误,还是不显示,亦或读不到数据

我把protues的图给你吧   附件怎么发呀  新手不会发
回复

使用道具 举报

ID:1 发表于 2014-10-2 16:12 | 显示全部楼层
回帖的时候点高级模式  即可上传附件
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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