单片机课程设计报告——数字电压表_第1页
单片机课程设计报告——数字电压表_第2页
单片机课程设计报告——数字电压表_第3页
单片机课程设计报告——数字电压表_第4页
单片机课程设计报告——数字电压表_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数 字 电 压 表单片机课程设计报告班级:姓名:学号:指导教师:2011 年 3 月 29 日数字电压表电路设计报告一、题目及设计要求采用 51 系列单片机和 adc 设计一个数字电压表,输入为05v 线性模拟信号,输出通过 led 显示,要求显示两位小数。二、主要技术指标1、数字芯片 a/d 转换技术2、单片机控制的数码管显示技术3、单片机的数据处理技术三、方案论证及选择主要设计方框图如下:1、主控芯片方案 1:选用专用转化芯片inc7107 实现电压的测量和实现, 用四位数码管显示出最后的转换电压结果。 缺点是京都比较低, 内部电压转换和控制部分不可控制。优点是价格低廉。方案 2: 选用单

2、片机 at89c51 和 a/d 转换芯片 adc0809 实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。缺点是价格稍贵; 优点是转换京都高,且转换的过程和控制、显示部分可以控制。基于课程设计的要求和实验室能提供的芯片,我选用了:方案2。2、显示部分方案 1:选用 4 个单体的共阴极数码管。优点是价格比较便宜;缺点是焊接时比较麻烦,容易出错。方案 2:选用一个四联的共阴极数码管,外加四个三极管驱动。这个电路几乎没有缺点;优点是便于控制,价格低廉,焊接简单。基于课程设计的要求和实验室所能提供的仪器,我选用了:方案2。电压采集模数转换单片机处理数码管显示四、电路设计原理模拟电压经过档

3、位切换到不同的分压电路筛减后,经隔离干扰送到 a/d 转换器进行 a/d 转换。然后送到单片机中进行数据处理。处理后的数据送到led中显示。同时通过串行通讯与上位通信。硬件电路及软件程序。 而硬件电路又大体可分为 a/d 转换电路、 led 显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍; 程序的设计使用汇编语言编程,利用 keil 和 proteus 软件对其编译和仿真。一般 i/o 接口芯片的驱动能力是很有限的,在 led 显示器接口电路中, 输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位led,此时就需要增加 led 驱动电路。驱动电路有多种,常用的是ttl

4、 或 mos 集成电路驱动器,在本设计中采用了74ls244驱动电路。本实验采用 at89c51 单片机芯片配合 adc0808 模/数转换芯片构成一个简易的数字电压表,原理电路如图1 所示。该电路通过adc0808 芯片采样输入口in0 输入的 05 v 的模拟量电压,经过模 /数转换后,产生相应的数字量经过其输出通道 d0d7 传送给 at89c51 芯片的 p0口。 at89c51 负责把接收到的数字量经过数据处理,产生正确的7 段数码管的显示段码,并通过其p1 口传送给数码管。同时它还通过其三位i/o 口 p1.0、p1.1、p1.2、p1.3产生位选信号,控制数码管的亮灭。另外, a

5、t89c51 还控制着 adc0808 的工作。其 ale 管脚为adc0808 提供了 1mhz 工作的时钟脉冲; p2.4控制 adc0808 的地址锁存端(ale) ;p2.1控制 adc0808 的启动端 (start);p2.3控制 adc0808 的输出允许端(oe);p2.0控制 adc0808 的转换结束信号 (eoc)。1、模数转换电路原理图如下所示,三个地址位adda,addb,addc均接高电平 +5v 电压,因而所需测量的外部电压可由adc0808 的 in7 端口输入。由于 adc0808 数据处理及控制模块at89c51 p0 p2 显示模块4 位一体 led 数码

6、管数据采集模块adc0808 控制信号输出显示analog digital led 位控制信号p 2p 3 在进行 a/d 转换时需要有 clk 信,本设计中利用at89c51 的定时中断产生一个 100khz 的脉冲,由 p1.4口送给 adc0808 的时钟端, 通过软件给其输入一个正脉冲,可立即启动a/d 转换。在软件设计中,由于我们对单片机知识还没能很熟练的掌握,用中断方式较复杂,且这个程序cpu 工作量不大,查询方式对速度不会产生影响,所以我们采用查询方式,确保仿真的进度和准确度。系统原理图在 a/d 转换开始之前,逐次逼近寄存器的sar 的内容为0,在 a/d 转换过程中, sar

7、存放“试探”数字量,在转换完毕后,它的内容即为a/d 转换的结果数字量。逻辑控制与定时电路在start 正脉冲启动后工作,没来一个clk 脉冲,该电路就可能告知向sar 中传送一次试探值,对应输出u0 与 u1 比较,确定一次逼近值,经过8 次逼近,即可获得最后转换的结果数字量。此处,eoc 端口的信号显示adc0808 的状态,开始a/d 转换时,eoc 为低电平,转换结束后,输出高电平。2、 数据处理及控制a/d 转换完毕后,单片机的p1.6口接收到一高电平,立马通过p2 将 oe 置1,adc0808 的三态输出锁存器被打开,转换完的数字信号经过与d0d7 相连的 p0 口进入 at89

8、c51。at89c51 根据公式 1-1 将数字信号转换为模拟量,然后利用程序获取模拟量的每一位,分别通过p2 口输出到 led 上。与此同时,at89c51 会通过 p2.0p2.3口选择用哪一段 led 显示所传出的数据。例如,当p2.0p2.3=1110 ,则 led 接收到的数据会在第四段led 上显示。51系列单片机数据显示a/d 电压放大电压输入另外, at89c51 一旦获得了数据后便会将st 置 0,即模数转换器停止转换,知道 led 获得新的数据并显示出来,st 才会重新置 1.由于 at89c51 转换速率很快(微妙量级),所以不会影响其接收新的数据。四、主要元器件的介绍1

9、、at89c51 单片机简介at89c51 是 51 系列单片机的一个型号, 它是 atmel 公司生产的。at89c52是一个低电压、高性能cmos 8 为单片机。将通用的微处理器和flash存储器结合在一起,可反复擦写的 flash存储器可有效地降低开发成本。 at89c51 有 pdip、pqfp/tqfp及 plcc 等三种封装形式,以适应不同产品的需求。主要功能特性:1、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。2、兼容 mcs51 指令系统, 8k 可反复擦写( 1000次)flash rom。3、3 个 16 位可编程定时 /计数器中断,时钟频率0-24mhz。4、32 个双

10、向 i/o 口,256b 内部 ram 。5、2 个串行中断,可编程uart 串行通道。6、2 个外部中断源,共6 个中断源。7、2 个读写中断口线, 3 级加密位。2、adc0808 模数转换芯片简介adc0808 是采样分辨率为 8 位的、以逐次逼近原理进行模/数转换的器件。其内部有一个 8 通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行a/d 转换。 adc0808 是 adc0809 的简化版本,功能基本相同。一般在硬件仿真时采用adc0808 进行 a/d 转换,实际使用时采用 adc0809 进行 a/d 转换。引脚功能(外部特性)adc0808

11、 芯片有 28 条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:15 和 2628(in0in7) :8 路模拟量输入端。8、14、15和 1721:8 位数字量输出端。22(ale) :地址锁存允许信号,输入,高电平有效。6(start) : ad 转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809 复位,下降沿启动 a/d 转换) 。7(eoc) : ad 转换结束信号,输出,当ad 转换结束时,此端输出一个高电平(转换期间一直为低电平) 。9(oe) :数据输出允许信号,输入,高电平有效。当ad 转换结束时,此端输入一个高电平,才能打开输出三态门

12、,输出数字量。10(clk) :时钟脉冲输入端。要求时钟频率不高于640khz。12(vref(+) )和 16(vref(-) ) :参考电压输入端11(vcc) :主电源输入端。13(gnd) :地。2325(adda 、addb 、addc ) :3 位地址输入线,用于选通8 路模拟输入中的一路。3、四位共阴极数码管简介数码管有两种:一种共阴极、另一种为共阳极,本次课程设计用的是共阴极。下面比较详细说明共阴极与共阳极的共同点与区别:图(b)的左边为共阴极数码管,也就是数码管的阴极管接地。那时某段亮,这段就必须接高电平。共阴极数码管09的 c51编码为:1、uchar code table

13、=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x7f,0 x6f; 2、uchar code table=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef; 其中 1 不带小数点, 2 带小数点。共阳极就是数码管的每段都接高电平,这样要是哪段亮就这段就得接地。四、部分电路介绍1、晶振电路接 12mhz 晶振,根据芯片手册,适合并联30pf 微调电容,从而构成并联谐振,帮助和稳定输出波形。2、复位电路at89c51 单片机要求至少两个高电平,以便单片机做好准备工作。当上电时,由于电容

14、的电压不能突变,会输出高电平,当电容充电到一定程度, 就会输出低电平, 单片机利用输出高电平的这段时间复位。电阻和电容的值选择要合适。在这要求r1r2,所以选取r1=1 k,r2=10k。3、 模拟输入电路通过可变电阻一端接电源+5v,一端接地gnd,通过改变电阻的阻值,从而改变所测电压值,实现电压的模拟信号输入。4、 adc0808 芯片与单片机接口电路adc0808 的输出接到p1 口, out1 对应的是最高位,start 与 ale 可以接在一起。在这里, start 接 p3.0,oe 接 p3.1,eoc 接 p3.2,clock 接 p3.4。5、显示电路通过 p0 口控制四位共

15、阴极数码管段选,通过p2口的低四位控制位选。值得注意的是p0 需要接上拉电阻,否则p0 会处于高阻态。总电路如下:设计原理:将模拟量通过in0 输入,经过 adc0808 芯片转换,得到数字量输出到单片机 p0 口,经过单片机处理后,送到四位共阴极数码管上显示。仿真结果如下:五、程序设计为了在 c 语言源程序中直接编写中断服务函数的需要,keilcx51 编译器对函数的定义进行了扩展,增加了一个扩展关键字interrupt,它是函数定义是的一个选项,加上这个选项即可以将一个函数定义成中断服务函数。定义中断服务函数的一般形式为:函数类型函数名(形式参数表)interrupt n using n

16、由于 adc0808 的 clock 的时钟频率不高于640khz, 在这利用定时器 t0 的中断产生时钟频率,则可设置为:void t0(void) interrupt 1 using 0 adc0808 的时序图如下:由时序图可知,只有在转换期间, eoc 处于低电平,因此在 ad 转换开始前 eoc置为低电平, start 在上升沿期间将芯片内的所有寄存器清零,在下降沿来临时开始转换,由于所用的时钟为100khz,比较的缓慢不需要再延时,在此等待转换结束,结束后将其数字量输出。根据上述分析及原理,可设计程序流程图如下:设计程序如下:#include #include #define uc

17、har unsigned char #define uchar unsigned char #define uint unsigned int sbit start=p30; sbit oe=p31; sbit eoc=p32; sbit p07=p07; sbit clk=p34; uchar data led4; uint data tvdata; uchar code tv=0 xfe,0 xfd,0 xfb,0 xf7; uchar code a=0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; void del

18、ay(void) /延时程序 uint i; for(i=0;i5000) tvdata=5000; led0=tvdata%10; led1=tvdata/10%10; led2=tvdata/100%10; led3=tvdata/1000; for(k=0;k4;k+) p2=tvk; i=ledk; p0=ai; if(k=3) p07 =1; delay(); void main(void) et0=1; ea=1; tmod=0 x02; th0=216; tl0=216; tr0=1; while(1) start=1; start=0; /启动转换while(eoc=0); o

19、e=1; tvdata=p1; tvdata*=20-0.01; oe=0; ledxianshi(); delay(); void t0(void) interrupt 1 using 0 clk=clk; 六、硬件制作与测试1、主要仪器及使用方法主要仪器: 5v 直流电源,剥线钳,数字万用表,通用版电路板,电烙铁,镊子,usb 转串口线。其中 5v 电源可以从电脑的usb 接口引出,使用电烙铁时注意不要手直接触摸。调试电路的方法和技巧:(1)目测检查外部的各种元件或者是电路是否有断点,有无虚焊(2)用万用表测试先用万用表符合目测中有疑问的点,再检查各种电源线与地线之间是否有短路现象(3)加

20、电检测给板子加电, 检测所有的插座或是器件的电源端的电压是否符合要求的值(4)注意事项在通电检查前,一定要确保电路板没有短路2、硬件制作步骤(1)将单片机的最小系统焊接出来,进行调试,检验是否能下载程序、进行电路复位、晶振是否起振。(2) 扩展部分的焊接, 在这我采用了 adc0809 作为扩展芯片, 原因是 adc0808和 adc0809 的功能、引脚几乎都相同,用74ls244 驱动数码管显示。(3)焊接完后对电路进行调试,检查结果是否正确。焊接的电路图如下:七、设计过程中的问题及解决方案(1)单片机的最小系统完成后,接上发现显示灯不亮。检查发光二极管是否接地或接电源,若都接了则检查晶振是否起振,电路是否短路或断路,结果发现忘记将发光二极管接地。(2)通电后发现数码管显示亮度不均匀检查与数码连接电路是否有误、短路或短路,若没有则检查74ls244 驱动是否问题,经过仔细发现及测试,发现74ls244坏了,换了个芯片后即可显示均匀。(3)下载程序到单片机后,通电运行,发现怎么改变电压都没有变化且显示5 检查 adc0809 所对应的各个引脚有没有接错, 若没有则通过将p1口置 0,观察各个线路的显示结果, 发现 adc0809 芯片有问题, 换了芯片后可正常显示。(4)发现每个数码管显示相同的数字检验段扫描连接是否正确,若无误,在检查程序是否正确,最后发现延时函数有一个地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论