版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南科技大学课程设计湖南科技大学单片机课程设计题目数字电压表姓名刘峥嵘学院机电工程学院专业测控技术与仪器学号指导教师戴巨川成绩二O二年六月二日制湖南科技大学课程设计湖南科技大学课程设计 i摘要本课题实验主要采用AT89S52芯片和ADC0809芯片来完成一个简易的数字电压表,完成对输入05V的模拟直流电压的测量,并通过一个4位一体的8段LED数码管进行显示,测量误差约为0.02V。由AT89S52和ADC0809组成的数字电压表具有结构简单,易于操作,灵敏度高的特点。该电压表的测量电路方案由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。A/D转换主要由芯片ADC0809来完成,它负
2、责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。数据处理则由芯片AT89S52来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。显示模块主要由7段数码管组成,显示测量到的电压值。以上方法能较准确的对电压的测量。从而实现电压表的功能。目录第一章数字电压表的功能要求说明及设计方案介绍TOC o 1-5 h z HYPERLINK l bookmark8 o Current Document 1.1课题设计实验任务1 HYPERLINK l bookmark10 o Current Document
3、1.2功能要求说明1 HYPERLINK l bookmark12 o Current Document 1.3数字电压表设计方案1 HYPERLINK l bookmark14 o Current Document 数字电压表工作原理2第二章硬件电路的设计 HYPERLINK l bookmark18 o Current Document 2.1数字电压表各模块功能简要介绍3 HYPERLINK l bookmark38 o Current Document 电路原理图5 HYPERLINK l bookmark40 o Current Document 元器件清单6第三章系统程序的设计 H
4、YPERLINK l bookmark44 o Current Document 3.1初始化程序7 HYPERLINK l bookmark46 o Current Document 主程序7 HYPERLINK l bookmark48 o Current Document C程序清单8第四章调试及性能分析 HYPERLINK l bookmark52 o Current Document 4.1电压表仿真结果及误差分析10 HYPERLINK l bookmark54 o Current Document 4.2电压表设计结论10 HYPERLINK l bookmark56 o Cur
5、rent Document 4.3设计体会11参考文献湖南科技大学课程设计湖南科技大学课程设计- - -第一章数字电压表的功能及设计方案介绍1.1课题设计实验任务利用单片机AT89S52和ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,要求使用的元器件数目尽量少。1.2功能要求电路通电或按复位键时,通过改变电位器的阻值改变模拟输入电压,不断的将模拟电压转换成数字量,通过LED显示出所测得的模拟电压。在测试中测试的电压值必须和实际的电压值不超过0.05V的电压。在改变电压时,能够准确的侧量出电压的变化值。1.3数字电压表设计方案要实现电压的测试有多种方案,其中
6、两种比较简单的且精确度比较高的可以分别采用并行ADC0809芯片和TLC549芯片,其中各芯片都有可取之处。方案一:用TLC549串行芯片作模数采样芯片,占用的单片机的I/O口线少,且占用电路面积小,只是编程复杂点。方案二:用ADC0809并行芯片作模数采样芯片,需要占用一个I/O口,不过可以循环采样8路模拟通道,占用板子的面积大,编程相对来说简单点。本程序采用方案二,采用常用的51单片机作为控制芯片,ADC0809芯片的CLK时钟信号脚接单片机的ALE脚;ADC0809的参考电压接VCC,IN0接输入电压,ADC0809通过采样进来的数据信号送给单片机,再通过V=DxV/255计算可以得到电
7、压值,inREF再通过显示电路,将所求得的电压值显示出来。通过调节连接IN0引脚的电位器及可以调节电压是电压在05V左右变化。其硬件流程图如下所示:图1.1硬件流程图1.4数字电压表工作原理数字电压原理:这里主要是利用ADC0809模数串口芯片,ADC0809芯片的基准电压脚外接电压为5V,则最大可以测得的电压为5V,ADC0809芯片的模拟输入脚通过电位器接5V电压,进行模拟采样,通过调整电位器的值改变模拟量。输入的模拟量经过ADC0809芯片的内部8位开关电容逐次逼近A/D转换器,转换成8为二进制数,其最小的分辨率为0.0196(VRE=0.0196V),D为转化的数字量,再通过V二DxV
8、/255可以求得模REFINREF拟电压,最后通过LED就可将所测得电压显示出来。第二章系统硬件电路的设计数字电压表各模块功能简要介绍2.1.1时钟电路ADC0809的时钟取自AT89S52的ALE的信号,接在ADC0809的CLK端。2.1.2复位电路按键复位具有上电复位功能,若要复位,只要按图中的RESET键,电源VCC经电阻Rl、R2分压,在RESET端产生一个复位高电平。上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片
9、机就可以进行复位操作。2.1.3单片机系统电路单片机系统电路采用AT89S52芯片,40引脚的双列直插封装方式,允许RAM、定时器/计数器、串口、中断继续工作;作为输出口,每位能驱动8个TTL逻辑电平,能进行定时器/计数器、串口、中断等系列实验。LED显示电路它的连接方式为8位LED显示器的段控口a,b,c,d,e,f,g,dp分别接单片机的P1口;位控口1,2,3,4分别接单片机的P2口。AD转换电路把“单片机系统”区域中的P3.6与“模数转换模块”区域中的ST和ALE端用导线相连接;把“单片机系统”区域中的P3.7与“模数转换模块”区域中的OE端用导线相连接;把“单片机系统”区域中的P3.
10、3与“模数转换模块”区域中的EOC端用导线相连接;把“单片机系统”区域中的ALE与“模数转换模块”区域中的CLK端用导线相连接;把“模数转换模块”区域中的A2A1A0端子连接到“电源模块”区域中的GND端;把“模数转换模块”区域中的INO端子连接到“三路可调电压模块”区域中的VR1端;把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到与“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子。ADC0809的简介ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。湖南科技大学课程设计湖南科技大
11、学课程设计- - -IN0IN1IN2IN3IN4IN5IN6IN7ABCALE(1)ADC0809的内部逻辑结构图2.1ADC0809结构图由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。(2)引脚结构IN0IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不
12、变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示。丄234568卫W1T17TT14m3IN2IN4IN1IN5IN0IN6AJN7BSTCEOCALED3D7OED6CLKD5VCCD4YREF十DOGNDVREF-D1D2图2.2ADC0809引脚图2827262524232221201918171615CBA选择的
13、通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7表2.1数字量输出及控制线:11条。ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。0E为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=O,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为5
14、00KHZ,VREF(+),VREF()为参考电压输入。2.2电路原理图RP10uF-Q030pF|C2R1010XTAL1P0.0/AD0XTAL2P0.1/AD1P0.2/AD2P0.3/AD3RSTP0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9PSENP2.2/A10P2.3/A11ALEP2.4/A12EAP2.5/A13P1.0/T2P2.6/A14P2.7/A15P3.0/RXDP1.1/T2EXP3.14XDP1.2P3.2/INT0P1.3P3.3/INT1P1.4P3.4T0P1.5P3.5/T1P1.6P3.6/WR18_929
15、303139373433322+1346P1.7AT89C52+-3-4-5-46P3.7/RD17D0D1D2567DDD4.7KR1;U1dIN0CLOCKIN1STARTIN2IN3EOCIN4IN5OUT1IN6OUT2IN7OUT3OUT4ADDAOUT5ADDBOUT6ADDCOUT7ALEOUT8VREF(+)VREF(-)Oe1216-24292240672120-19188-44179ADC0808D7D6D5D4D3D2D1D0fi&ZDEFGOF1S34湖南科技大学课程设计湖南科技大学课程设计- - -2.3元器件清单名称规格数量备注电阻47016个4.7K4个10K1个
16、1K2个电容30pF2个10口F1个极性电容发光二极管1个按键1个晶振12MHz1个排阻102若干单排针若干电位器W5031个芯片AT89S521块ADC08091块LED数码管4位1块脚座401个81个表2.2元器件清单第三章系统程序的设计初始化程序系统上电时,将A/D转换芯片初始化,并将A,B,C三条地址线的地址信号进行锁存。主程序结束开始A/D转换结束并输出数据A/D芯片读入数据数码管显示电压值数据转换并输出单片机读入数据初始化调节电位器图3.1主程序流程图当进行一次测量后,将显示出每一通道的A/D转换值。每一个位的数据延时时间在40us左右。其流程图如上所示:而输出数据采用动态扫描法实
17、现4位数码管的数值显示。测量所得的A/D转换数据传送到P0口,测量数据在显示时需经内部转换为十进制电压值由P1口输出中,其中P2口控制段选。C程序清单#includeunsignedcharcodedispbitcode=0 xfb,0 xfd,0 xe,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;unsignedcharcodedispcode=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x00;unsignedchardispbuf8=10,10,10,10,10,0,0,0;unsignedc
18、hari;sbitST=P3人6;sbitOE=P3A7;sbitEOC=P3A2;unsignedcharchannel=0 x8c;/IN0unsignedchargetdata;voidmain(void)TMOD=0 x01;TH0=(65536-4000/12)/256;TL0=(65536-4000/12)%256;TR0=1;ET0=1;EA=1;P3=channel;while(1)ST=0;ST=1;ST=0;while(EOC=0);OE=1;getdata=P0;OE=0;getdata=getdata*500/256;dispbuf2=getdata/100;getda
19、ta=getdata%100;dispbuf1=getdata/10;dispbuf0=getdata%10;voidt0(void)interrupt1using0TH0=(65536-4000/12)/256;TL0=(65536-4000/12)%256;P1=dispcodedispbufi;if(i=3)P2=dispbitcodei;i+;if(i=8)i=0;第四章调试及性能分析4.1电压表仿真结果及误差分析次数123456789理论值/V0.501.001.351.852.003.504.124.505.00实际测量值/V0.480.981.331.831.973.474.09
20、4.475.00仿真值0.501.001.351.852.003.504.114.495.00表4.1电压表测试结果仿真图如下图。仿真结论,通过多次的反复测试,发现当电压比较小时电压的实际测量值和ADC0809芯片的测量显示值误差几乎为零,当电压不断增大时两者的电压值相差慢慢增大,但误差不大,大约在0.010.06V左右,实际电压值比测得的电压值小。在实物中通过改变电位器的输入电压可以,ADC0809转换芯片测得的电压值和万用表测得的电压值相差0.02V,而ADC0809芯片的精确度为0.019左右,误差大小为2%。在制作的数字电压表中,所测得的数字电压值和实际电压值相差0.02V,这个误差可
21、能由于单片机能够精确的小数为小数点后的6位,及小数点后的7位之后的全部去掉,会引起一定误差。在本次设计中重要的是如何将ADC0809芯片所采集的数据送给单片机,同时在将数据送给单片机后如何将ADC0809芯片读得的数据进行计算,然后进行显示。在按键时如何控制进入电压测试,如何停止电压测试,在电压测试时必须可以不断的调节电压可以测量出电压值的大小。4.2电压表设计结论通过本次设计课程设计,我更加的熟悉了单片机汇编的程序编写,在这次当中遇到了一些问题,当时定义数据时,将整型数据定义成了无符号字符型,去测电压电压值不变,最后通过调试发现是变量类型定义错了,在使用串行芯片ADC0809时要注意A/D转
22、化芯片的时序,只有在正确的时序时才能读得准确的数据,在写程序时先将显示程序写好,将显示程序调好后,在去写其他程序,当要用到显示程序时在去调用它,这样显示程序不用管,在调试程序中采用分步调试可以减少程序的复杂性。设计体会本次设计中采用串行芯片做数字电压表,其中串行芯片可节省单片机的I/O口,单片机总共有32个I/O口其中LDE显示就占用了P1和P2口,P3口作为ADC0809芯片的三根控制线,虽然采用串行芯片在编程方面变得有点复杂,但它占用的地方比较小。在串行芯片使用时,我们必须重点了解串行芯片的时序图,懂得串行芯片的数据传送方式。当时我认为该芯片也就只有三个编程脚,其中分别为CS、DATAOU
23、T、CLK三个脚编程并不是那么简单,串行芯片需要采集的数据需要按照时序,一个一个得发送到单片机,经过计算在在LED上显示出来,当时我采用的时序和芯片的时序不同,调试了好久都没调试出来,后来参照芯片资料,后改过来单还是发现问题,虽然采集到数据但是LED显示的数字和实际的测量值很大区别,我通过调试程序后发现我将变量的类型定义错了,导致了数据发生错误,我将无符号整型变量定义为无符号字符型变量,而变量的实际值远远超过了那个值使得单片机计算错误,调整电压的大小LED总是显示同一个数,在定义变量时要考虑变量的范围否则程序会出错。总之通过这次的课程设计,我们自己可以通过编程更加了解到了单片机的内部资源,懂得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论