《吉林省电子大赛AD转换器设计报告材料.doc》由会员分享,可在线阅读,更多相关《吉林省电子大赛AD转换器设计报告材料.doc(23页珍藏版)》请在课桌文档上搜索。
1、摘 要此设计是由输入电压信号0-5V、逐次比拟型A/D转换器,单片机AT89C51控制单元,数码管显示局部组成。转换原理是在直接A/D转换器中,逐次比拟型A/D转换器是目前采用最多的一种。逐次逼近转换过程与用天平称物重非常相似。天平称重过程是,从最重的砝码开始试放,与被称物体行进展比拟,假如物体重于砝码,如此该砝码保存,否如此移去。再加上第二个次重砝码,由物体的重量是否大于砝码的重量决定第二个砝码是留下还是移去。照此一直加到最小一个砝码为止。将所有留下的砝码重量相加,就得物体重量。仿照这一思路,逐次比拟型A/D转换器,就是将输入模拟信号与不同的参考电压做屡次比拟,使转换所得的数字量在数值上逐次
2、逼近输入模拟量对应值。它由控制逻辑电路、数据存放器、移位存放器、DA转换器与电压比拟器组成,其工作原理如下:电路由启动脉冲启动后,在第一时钟脉冲作用下,控制电路使移位存放器的最高位置1,其他位置0,其输出经数据存放器将10000,送入DA转换器DAC0832。DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。DA转换器由8位输入锁存器、8位DAC存放器、8位D/A转换电路与转换控制电路构成。关键字: 逐次比拟型,A/D转换器,DAC0832,单片机AT89C51,数码管目 录摘要11A/D
3、转换器的原理2方案的比拟与论证1.2 A/D转换器工作原理21.3 A/D转换器框图.31.4 A/D转换器的特点与设计电路图52 控制单元的AT89C51原理显示局部四位一体共阳数码管原理3 A/D转换电路的仿真与调试分析3.1 EWB软件简介8 电路仿真图4 参考文献265 附录1 A/D转换器的原理1.1方案的比拟与论证DAC0832进展D/A转换,可以采用两种方法对数据进展锁存。第一种方法是使输入存放器工作在锁存状态,而DAC存放器工作在直通状态。具体地说,就是使 和 都为低电平,DAC存放器的锁存选通端得不到有效电平而直通;此外,使输入存放器的控制信号ILE处于高电平、 处于低电平,
4、这样,当 端来一个负脉冲时,就可以完成1次转换。 第二种方法是使输入存放器工作在直通状态,而DAC存放器工作在锁存状态。就是使 和 为低电平,ILE为高电平,这样,输入存放器的锁存选通信号处于无效状态而直通;当 和 端输入1个负脉冲时,使得DAC存放器工作在锁存状态,提供锁存数据进展转换。 根据上述对DAC0832的输入存放器和DAC存放器不同的控制方法,DAC0832有如下3种工作方式:单缓冲方式。单缓冲方式是控制输入存放器和DAC存放器同时接收资料,或者只用输入存放器而把DAC存放器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。 双缓冲方式。双缓冲方式是先使输入存放
5、器接收资料,再控制输入存放器的输出资料到DAC存放器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。 直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此方式适用于连续反应控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。 引脚分布图由于它的转换速度快,所以选择DAC0832。1.2 A/D转换器工作原理在直接A/D转换器中,逐次比拟型A/D转换器是目前采用最多的一种。逐次逼近转换过程与用天平称物重非常相似。天平称重过程是,从最重的砝码开始试放,与被称物体
6、行进展比拟,假如物体重于砝码,如此该砝码保存,否如此移去。再加上第二个次重砝码,由物体的重量是否大于砝码的重量决定第二个砝码是留下还是移去。照此一直加到最小一个砝码为止。将所有留下的砝码重量相加,就得物体重量。仿照这一思路,逐次比拟型A/D转换器,就是将输入模拟信号与不同的参考电压做屡次比拟,使转换所得的数字量在数值上逐次逼近输入模拟量对应值。n为逐次比拟型A/D转换器框图如图1所示。它由控制逻辑电路、数据存放器、移位存放器、DA转换器与电压比拟器组成,其工作原理如下:电路由启动脉冲启动后,在第一时钟脉冲作用下,控制电路使移位存放器的最高位置1,其他位置0,其输出经数据存放器将10000,送入
7、DA转换器。输入电压首先与DA转换器输出电压/2相比拟,如/2,比拟器输出为1,假如/2,如此为0。比拟结果存于数据存放器的位。然后在第二个CP作用下,移位存放器的次高位置1,其他低位置0。如最高位已存1,如此此时=3/4。于是再与3/4相比拟,如3/4,如此次高位存1,否如此=0;如最高位为0,如此=/4,与比拟,如/4,如此位存1,否如此存。以此类推,逐次比拟得到输出数字量。1.2 A/D转换器框图图1逐次比拟型A/D转换器框图为进一步理解助逐次比拟A/D转换器的工作原理与转换过程,下面用实例加以说明。 设图1电路为8位A/D转换器,输入模拟量=6.84V,DA转换器基准电压=-10V。
8、根据逐次比拟DA转换器的工作原理,可画出在转换过程重CP、启动脉冲、 与DA转换器输出电压的波形,如图2所示。 由图2可见,当启动脉冲低电平到后来转换开始。在第一个CP作用下,数据存放器将=10000000送入DA转换器,其输出电压=5V,与与比拟,存1;第二个CP到来时,存放器输出=11000000,为7.5V,再与7.5V比拟,因为7.5V,所以存0;输入第三个CP时,=20200000,=6.25V;再与比拟,如此重复下去,经8个时钟周期,转换完毕。由图的波形可见,在逐次比拟的过程中,与输出数字量对应的模拟电压逐渐逼近值,最后得到A/D转换器转换结果为10101111。该数字量所对应的模
9、拟电压为6.8359375V,与实际输入的模拟电压6.84V的相对误差仅为0.06%。图2 8位逐次比拟型A/D转换器波形图1.3 A/D转换器的特点与设计电路特点(1)转换速度:(n+1)Tcp.速度快。(2)调整VREF,可改变其动态X围。设计电路图3 4位逐次比拟型A/D转换器的逻辑电路电路工作如过程如下:当启动脉冲上升沿到来后,被清零,置1,的高电平开启门,时钟CP脉冲进入移位存放器。在第一个CP脉冲作用下,由于移位存放器的置数使能端F已由0变1,并行输入数据ABCDE置入,=01111。的低电平使数据存放器的最高位置1,即=1000。DA转换器将数字量1000转化为模拟电压,送入比拟
10、器C与输入模拟电压比拟,假如输入电压,如此比拟器C输出为1,否如此为0。比拟结果送。 第二个CP脉冲到来后,移位存放器的串行输入端S为高电平,由0变1,同时最高位的0移至次高位。于是数据存放器的由0变1,这个正跳变作为有效触发信号加到的CP始端的电平得以在保存下来。此时,由于其他触发器无正跳变脉冲,的信号对它们不起作用。变1后建立了新的DA转换器的数据,输入电压再与其输出电压相比拟,比拟结果在第三个时钟脉冲作用下存于。如此进展,直到由1变0,使由1变0后将封锁,转换完毕。于是电路的输出端得到与输入电压成正比的数字量。 由以上分析可见,主次比拟型A/D转换器完成一次转换所需时间与其位数和时钟脉冲
11、频率有关,位数愈少,时钟频率越高,转换所需时间越短。这种A/D转换器具有转换速度快,精度高的特点。 常用集成逐次比拟型A/D转换器有ADC0808/0809系列8位、AD57510位、AD574A12位等。2控制单元的AT89C51原理AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4k bytes存储器和128bytes的随机存取数据存储器RAM。主要性能参数14k字节可重擦写周期21000次擦写周期3全静态操作:0Hz-24MHz4AT89C51是一种带4K字节闪烁可编程可擦除只读存储器FPEROMFalshProgrammableandErasableR
12、eadOnlyMemory的低电压,高性能CMOS8位微处理器,俗称单片机。4管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进展校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内
13、部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在给出地址“1时,它利用内部上拉优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I
14、/O口,可接收输出4个TTL门电流。当P3口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD串行输入口P3.1TXD串行输出口P3.2/INT0外部中断0P3.3/INT1外部中断1P3.4T0记时器0外部输入P3.5T1记时器1外部输入P3.6/WR外部数据存储器写选通P3.7/RD外部数据存储器读选通P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/
15、PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。/EA/VPP:当/EA保持低电平时,如此在此期间外部程序存储器0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加1
16、2V编程电源VPP。XTAL1:反向振荡放大器的输入与内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的上下电平要求的宽度。四位共阳数码管与单片机的连接方法2.3 控制单元的电路原理图3 A/D转换电路的仿真与调试分析3.1Protues软件简介Protues软件是英国Labcenter electronics公司出版的E
17、DA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。它是目前最好的仿真单片机与外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP43
18、0等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译Protues软件具有其它EDA工具软件例:multisim的功能。这些功能是: 1原理布图 2PCB自动或人工布线 3SPICE电路仿真革命性的特点: 1互动的电路仿真。用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,局部SPI器件,局部IIC器件。 2仿真处理器与其外围电路。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示与输出,能看到运行后输入输出的效果
19、。配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。3.2电路仿真图参考文献1 李建中.单片机原理与应用 某某:某某电子科技大学,20082 徐爱韵.8051单片机实践教程 :电子工业 20053 江志红.51单片机技术与应用系统开发案例精选 :清华大学4阎石.数字电子技术根底【M】.5版 :高等教育,2006.5 孙俊人.新编电子电路大全.第3卷.通用数字电路【M】.:中国计量,2001.6 中国集成电路大全编委会.高速S集成电路【M】.:国防工业,1995.附:元件清单序号元件名称型号数量备注1单片机AT89C5112数码管四位共阳23集成块74LS164
20、274LS745HA17741174LS00374LS37324放大器LM39315D/A转换器DAC083216键盘4X417可调电阻10k1100k18排阻1k9晶振12MHz110瓷片电容33p2程序如下:#include#define uchar unsigned char#define uint unsigned intuchar code table=0xc0,0xf9;uchar code table1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code date5=0;uchar ad,temp,temp1,
21、bb=0,flag=0;flag1=0,flag2=3;uchar aa=0,cc=0,dd=0;uchar num=5;sbit dula=P20;sbit wela=P21;sbit tim=P24;/脉冲输出sbit star=P27;/移位存放器启动信号void init();void display1( uchar num);void display( uchar ad);void delay(uint z);void keyscan();void main()uchar i=0;init();while(1)keyscan();if(flag1=0) /如果flag1=0,那么显示
22、实时值ad=P3;if(aa=200)&(flag1=0) / 定时时间到了,并且是实时显示数据,去存储数据到datei如果显示存储数据,就不更新存储数据aa=0;/datei+=ha;if(i=5)i=0;if(flag=0)display(ad);else if(flag=1)display1(num);void display( uchar ad) /显示uchar ad0,ad1,ad2,ad3,ad4,ad5,ad6,ad7;ad7=ad%0x100/0x80;ad6=ad%0x80/0x40;ad5=ad%0x40/0x20;ad4=ad%0x20/0x10;ad3=ad%0x10
23、/0x08;ad2=ad%0x08/0x04;ad1=ad%0x04/0x02;ad0=ad%0x02/0x01; dula=1;/第0位显示P0=tablead0;dula=0;P0=0x00;wela=1;P0=0x01;wela=0;delay(1); dula=1;P0=tablead1;dula=0;P0=0x00;wela=1;P0=0x02;wela=0;delay(1); dula=1;P0=tablead2;dula=0;P0=0x00;wela=1;P0=0x04;wela=0;delay(1); dula=1;P0=tablead3;dula=0;P0=0x00;wela
24、=1;P0=0x08;wela=0;delay(1); dula=1;P0=tablead4;dula=0;P0=0x00;wela=1;P0=0x10;wela=0;delay(1); dula=1;P0=tablead5;dula=0;P0=0x00;wela=1;P0=0x20;wela=0;delay(1); dula=1;P0=tablead6;dula=0;P0=0x00;wela=1;P0=0x40;wela=0;delay(1); dula=1;P0=tablead7;dula=0;P0=0x00;wela=1;P0=0x80;wela=0;delay(1);void disp
25、lay1( uchar num) /显示uchar num1,num2;num1=num/10;num2=num%10; dula=1;/第0位显示P0=tablenum2;dula=0;P0=0x00;wela=1;P0=0x01;wela=0;delay(1); dula=1;P0=tablenum1;dula=0;P0=0x00;wela=1;P0=0x02;wela=0;delay(1); dula=1;P0=0xff;dula=0;P0=0x00;wela=1;P0=0x04;wela=0;delay(1); dula=1;P0=0xff;dula=0;P0=0x00;wela=1;
26、P0=0x08;wela=0;delay(1); dula=1;P0=0xff;dula=0;P0=0x00;wela=1;P0=0x10;wela=0;delay(1); dula=1;P0=0xff;dula=0;P0=0x00;wela=1;P0=0x20;wela=0;delay(1); dula=1;P0=0xff;dula=0;P0=0x00;wela=1;P0=0x40;wela=0;delay(1); dula=1;P0=0xff;dula=0;P0=0x00;wela=1;P0=0x80;wela=0;delay(1);void delay(uint z) /延时uint x
27、,y;for(x=z;x0;x-)for(y=10;y0;y-);void init()/初始化 tim=1; /将脉冲开始拉高,好产生第一次的负边沿触发 star=0;/将启动脉冲拉高dula=1;P0=0xff;dula=0;P0=0x00;wela=1;P0=0x00;wela=0; TMOD=0x01; /定时器初始化TH0=(65536-8000)/256;TL0=(65536-8000)%256;EA=1;ET0=1;TR0=1;void keyscan() /键盘 P1=0xfe;temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp
28、=P1;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:flag=0; /显示电压值数字量break;case 0xd0:flag=1; /显示转换次数十进制break;case 0xb0:flag1=0; /实时显示按键3break;case 0x70:flag1=1; /显示存储的第一个值 按键4ad=date0;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfd;temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P1;temp=
29、temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:flag1=1; /显示存储的第二个值按键5ad=date1;break;case 0xd0:flag1=1; /显示存储的第三个值 按键6ad=date2;break;case 0xb0:flag1=1;/显示存储的第四个值 按键7ad=date3;break;case 0x70:flag1=1; /显示存储的第五个值 按键8ad=date4;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfb;temp=P1;temp=temp&0xf0;if(
30、temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:flag2=3;/脉冲按键 ,周期约为8毫秒 按键9num=5;break;case 0xd0:flag2=2;/脉冲按键 ,周期约为6.5毫秒 按键10num=6;break;case 0xb0:flag2=1;/脉冲按键 ,周期约为5毫秒按键11num=7;break;case 0x70:flag2=0;/脉冲按键,周期约为3毫秒 按键12num=8;break;while(temp!=0xf0)temp=P1;temp=temp&0
31、xf0;P1=0xf7;temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:;break;case 0xd0:;break;case 0xb0:;break;case 0x70:;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;void timer0() interrupt 1 /定时1毫秒TH0=(65536-8000)/256;TL0=(65536-8000)%256;aa+;bb+;cc+;if(cc=16)cc=0; if(flag2=0)&(bb=2)bb=0;tim=tim; if(cc=1)star=1; elsestar=0;else if(flag2=1)&(bb=3) bb=0; tim=tim; if(cc=1) star=0; else star=1;else if(flag2=2)&(bb=4) bb=0; tim=tim; if(cc=1) star=0; else star=1; else if(flag2=3)&(bb=5) bb=0; tim=tim; if(cc=1) star=0; else star=1;