ADC0804引脚功能ADC0804为一只具有20引脚8位CMOS连续近似的A/D转换器,其规格如下:(1) 高阻抗状态输出(2) 分辨率:8位(0~255)(3) 存取时间:135 ms(4) 转换时间:100 ms(5) 总误差:-1~+1LSB(6) 工作温度:ADC0804C 为0度~70度;ADC0804L 为-40 度~85 度⑺ 模拟输入电压范围:0V~5V(8) 参考电压:2.5V(9) 工作电压:5V(10) 输出为三态结构1. 接脚说明见下图三:2. PIN1 (CS ): Chip Select,与RD、WR接脚的输入电压高低一起判断读取或写 入与否,当其为低位准(Iow)时会active3. PIN2 ( RD ): Read当CS、RD皆为低位准(low)时,ADC0804会将转换后的数字讯号经由DB7 ~ DB0输出至其它处理单元4. PIN3 (WR ):启动转换的控制讯号当CS、WR皆为低位准(low)时ADC0804做清除的动作,系统重置当WR由0—1且CS =0时,ADC0804会开始转换信号,此时INTR设定为高位准(high)5. PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。
频率输入可连接处理单元的讯号频率范围为100 kHz至800 kHz而频率输出频率最大值无法大于640KHZ, —般可选用外部或内部来提供频率若在CLK R及CLK IN加上电阻及电容,则可产生ADC工作所需的时序,其频率约为:6. PIN5 ( INTR ):中断请求转换期间为高位准(high),等到转换完毕时INTR会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据7. PIN6、PIN7 (VIN(+)、VIN(-)):差动模拟讯号的输入端输入电压VIN=VIN(+)—VIN(-),通常使用单端输入,而将VIN(-)接地8. PIN8 (A GND):模拟电压的接地端9. PIN9 (VREF2):模拟参考电压输入端°VREF为模拟输入电压VIN的上限值若PIN9空接, 则VIN的上限值即为VCC10. PIN10 (D GND):数字电压的接地端11. PIN11 ~ PIN18 (DB7 ~ DB0):转换后之数字数据输出端12. PIN20 (Vcc):驱动电压输入端图1 ADC0804引脚图图2 AD0804基本电路I1Vcc 202CLKR 193184CLK IN175166 Vin(+)157 Vin {-)14S A GND139 v昭总12j 0 DGND11INTR-# —□3FF INPUTS、 c 二 SPAN ADJO CS-RD-丽一o—DBO(LSB)—DB1-DB2—DB3—DB4— DBS—DB6—DB7(MSB)ANYtlPROCESSCRCS2RDCLK RWRCLK WINTRDBtdb4db3V|N (-)db2AGhFDDBivref^DB0DGIMDlI D|FF].pNPUTSA BET RESOLUTION ] OVER ANYDESIRED >ANALOG INPUTVOLTAGE RANGE J实验六单通道电压釆集系统一、 实验目的:掌握AD0804的工作原理及使用方法。
二、 实验要求:设计电路,通过调节滑动变阻器改变电压,在LCD液晶屏上显示其相应的电压值,要求 电压精确到小数点后第四位,显示格式为,LCD第一行为“The Voltage is”,第二行为 电压值,单位为“V”三、 实验原理:通过在Keil C51中对单片机AT89C52进行编程,硬件电路中单片机与ADC0804及LCD显 示屏连接P0与ADC0804相连接,P2与LCD连接通过st ar t()子程序启动ADC0804, 通过init ()子程序初始化LCD模拟信号通过ADC0804的VIN+引脚输入到ADC0804中 转换为数字信号,P0获得此数字量后,经过处理得到每位的数据后,通过P2 口写数据到 LCD屏上四、 实验电路图U1C2:-XrjU.1■Il■o.■ o.PIUT2P> JI■ ran?py P«>■rfI—| 1 itulHZgg91 ■F3ETJ ALLnllHq 已 nn.nPDPDPDPDPDPDPDPDrzhuP2JI.UP2J1AIIPTUAl^P2.HAI5RanR^riE」I「XDR3J urgraarlrTEU「[JRaariRaanRra.nro■ mE2"■mDl0"■nrBQ■39D3■AEMH"ra■mma"■S2~pr-3"■25■ IQ ¥
/#include〈reg52.h〉#define uchar unsigned char#define uint unsigned intsbit lcdrs二P3"0;sbit lcden二P3"l;sbi t wrad二P3飞;sbit rdad二P3"7;uint t emp,wan,qian,bai,shi,ge,num;uchar code t able□二"0123456789.";//显示数字uchar code table1[]="The Voltage is";void delay(uint z){uint x,y;for(x二z;x〉0;x—)for(y=100;y〉0;y—);void st ar t( )//AD 启动{wrad=l;wrad=0;wrad=l;}void writ e_command(uchar com)//lcd 写命令{lcdrs=0;P2=com;delay(2);lcden=1;delay(2);lcden=0;}void writ e_da ta(uchar dat e)//lcd 写数据{lcdrs=1;P2=date;delay(2);lcden=1;delay(2);lcden=0;}void ini t( )//lcd 初始化{lcden=0;write_command(0x38);//设置 16x2 显示writ e_command(0x0c);//设置光标write_command(0x06);//写字符指针加1,光标加1writ e_command(0x01);//清屏}void main(){init();//LCD 初始化write_command(0x80);//LCD 写地址 for(num=0;num〈14;num++){write_data(table1[num]); delay(5);}while(1){start ();//启动 ADdelay(l);rdad=0; //rd低脉冲读数据delay(1);temp=P0;wan=(temp*50000/255)/10000;//区分百十个,为LCD写作准备,最高位255*50000/255 = 5.0000Vqian=(temp*50000/255)%10000/1000;bai=(temp*50000/255)%1000/100;shi=(temp*50000/255)%100/10;ge=(temp*50000/255)%10;write_command(0x80+0x40);//LCD 写地址writ e_da ta(t able[wan]);delay(1);writ e_da ta(t able[10]);delay(1);writ e_da ta(t able[qian]);delay(1);writ e_da ta(t able[bai]);delay(1);writ e_da ta(t able[shi]);delay(1);writ e_da ta(t able[ge]);delay(1);writ e_da ta('V');delay(1);。