No.64320 作者:cen761 邮件:cen761@163.com ID:133015 登陆:2次 文章数:1篇 最后登陆IP:122.234.111.234 最后登陆:2009/4/17 10:48:21 注册:2009/4/5 13:34:12 财富:106 发帖时间:2009/4/5 13:39:22 发贴者IP:122.234.34.45 标题:cen761:[求助][贴图]关于AD1674转换和动态显示,POP2总线复用的问题 摘要:No.64320[求助][贴图]关于AD1674转换和动态显示,POP2总线复用的问题 求助各位前辈:我做一个AD1674转换器的实验,输入电压范围Vin是±5V,用POP2总线复用控制AD1674的转换与数据的读入,P0口还用于数码管的动态显示字型的输出口,P1用于字位的控制. 但是我现在结果是AD1674上的13脚Vin即模拟电压输入无论是0V还是几伏,数码管都显示2048,请各位前辈帮看看是软件问题还是硬件问题?谢谢! 附原理图和C程序: 此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
#include <reg52.h> // 引用标准库的头文件 #include <absacc.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ADCOM XBYTE[0xbffc] //A0=0,R/C=0,CS=0; #define ADHI XBYTE[0xbfff] //A0=1,R/C=1,CS=0; #define ADLO XBYTE[0xbffe] //A0=0,R/C=1,CS=0; #define fosc 11.0592 // 晶振频率 #define time0 4000 // 定时4000us sbit adbusy=P3^2; sbit r=P3^6; sbit w=P3^7; uchar code BitTab[4]={0xdf,0xef,0xf7,0xfb}; //4位选,p1.1,1.2,1.3,1.4 //共阳型数码管字型符 uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, 0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF}; uint idata time0_tmp; // 临时变量,用于计算定时 uint data datatab[5]; uint data receave,count0=0,scan=0,dig=0; /* 显示函数 */ void display(uint result) { uchar x; unsigned int d; P1|=0xff; //关显示 if(result> =2047) //12位AD转换大于2047为正数 { d=(result-2047); //200℃对应+5V switch (scan) { case 0: x=d/1000; break; //千位 case 1: x=(d/100)%10; break; //百位 case 2: x=(d/10)%10; break; //十位 case 3: x=d%10; break; //个位 default: break; } P0|=0xff;P1|=0xff; //关显示 if((scan==0)&&(x==0)){P0=0xff; P1=0xff;} //有效位前的零 ......
>>返回讨论的主题
|