单片机课程设计---数字电压表设计1.doc_第1页
单片机课程设计---数字电压表设计1.doc_第2页
单片机课程设计---数字电压表设计1.doc_第3页
单片机课程设计---数字电压表设计1.doc_第4页
单片机课程设计---数字电压表设计1.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

摘 要本文介绍了基于at89c51单片机的一种8路输入电压测量电路,该电路采用adc0809作为a/d转换元件,测量范围0.00v至5.00v,小数点后显示二位。要求能够依次显示每路通道电压。使用4位led模块显示,前面一位显示通道号,后面三位显示测量电压值。测量最小分辨率为0.02v。本系统主要包括四大模块:数据采集模块、数码管控制模块、显示模块、a/d转换模块。绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,采用了汇编语言进行编程,开发环境使用wave集成开发环境。开发了显示模块程序、延时程序、a/d转换程序。关键词:adc0809;a/d转换;led显示1 前言1.1概述数字电压表(digital voltmeter)简称dvm,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与pc进行实时通信。目前,由各种单片a/d 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。与此同时,由dvm扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片a/d 转换器以及由它们构成的基于单片机的数字电压表的工作原理。单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。1.2系统原理及基本框图如图1.1所示,8路模拟电压经过不同的分压电路衰减后,经隔离干扰送到a/d转换器进行a/d转换,然后送到单片机中进行数据处理。处理后的数据通过串行口送到74ls164,74ls164的输出送到lcd中显示,由单片机控制led选通,同时通过串行通讯与上位机通信。a/d转换89c51单片机74ls164lcd显示输入电路图1.1系统基本方框图1.3 软件开发环境软件开发环境:用proteus软件画电路图 ,keil软件进行程序编写。keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,体会更加深刻。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。proteus是一款labcenter出品的电路分析实物仿真系统,可仿真各种电路和ic,并支持单片机,元件库齐全,使用方便,时不多的的专业的单片机软件仿真系统。该软件的特点:全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。 具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、rs一232动态仿真、1 c调试器、spi调试器、键盘和lcd系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单片机类型有:68000系列、8051系列、avr系列、pic12系列、pic16系列、pic18系列、z80系列、hc11系列以及各种外围芯片。 支持大量的存储器和外围芯片。总之该软件是一款集单片机和spice分析于一身的仿真软件,功能极其强大 ,可仿真51、avr、pic。2 数字电压表硬件设计2.1 单片机主电路设计在本次课题设计中我们选择了8951芯片,其具有功能强、体积小、成本低、功耗小等特点,它可单独地完成现代工业控制所要求的智能化控制功能,能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。2.1.1 89c51单片机的功能介绍2.1.2主要特性:与mcs-51 兼容 4k字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 2.1.3管脚说明: 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口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器 的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如下表所示:口管脚 备选功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时, /ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。2.1.4振荡器特性: xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器 件,xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.1.5芯片擦除: 整个perom阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ale管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,at89c51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,cpu停止工作。但ram,定时器, 计数器,串口和中断系统仍在工作。在掉电模式下,保存ram的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。2.1.6本章中单片机的引脚连接图2.2显示电路设计2.2.1 led数码管构成led数码管显示器是由发光二极管显示字段的显示器件,也称为数码管。其外形结构如图所示。它由8个发光二极管构成,通过不同的组合可用来显示0-9、a-f及小数点“.”等字符。数码管有共阴极和共阳极两种结构规格,如图2.5所示。图中电阻为外接。共阴极数码管的发光二极管阴极共地,当某发光二极管的阳极为高电平时,二极管点亮;共阳极数码管的发光二极管是阳极,并接高电平,对于需点亮的发光二极管将其阴极接低电平即可。对照图2.5中的字段:7段发光二极管,在加上1个小数点位,共计8段,因此提供给led显示器的字形码正好一字节。2.2.2 显示方式(1) 静态显示方式直接利用并行口输出。led显示工作于静态显示方式时,各位的共阴极连接在一起接地;每位的段选线分别于一个8位的锁存输出相连。一般称之为静态显示,是由于显示器中的各位相互独立。而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。利用通信号串行输出。在实际应用中,多位led显示时,为了简化电路,在系统不需要通信功能时,经常采用串行通信口工作方式0,外接移位寄存器74ls164、cd4094来实现静态显示。(2) 动态显示方式对多位led显示器的动态显示,通常都时采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。为了实现led显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。因此多位led显示器接口电路需要有两个输出口,其中一个用于输出8位控信号;另一个用于输出段控信号,其连接图如下。 表2.1七段led段选码表 显示字符共阴极段显示字符共阴极段03fhc39h106hd5eh25bhe79h34fhf71h466hp73h56dhu3eh67dh31h707hy6eh87fh8.ffh96fh“灭”00ha77h/b7ch/2.3晶振电路的设计晶振电路用于产生单片机工作所需的时钟信号,使用晶体震荡器时,c2,c1取值2040pf,使用陶瓷震荡器时c1,c2取值3050pf。在设计电路板时,晶振和电容应尽量靠近芯片,以减小分布电容,保证震荡器的稳定性。18引脚接xtal2,19引脚接xtal1,20引脚接地。2.4 测量、转换电路设计 使用adc0809作为数模转换元件,其引脚图如2.3所示图2.3 adc0809引脚图adc0809是带有8:1多路模拟开关的8位a/d转换芯片,所以它可有8个模拟量的输入端,由芯片的a,b,c三个引脚来选择模拟通道中的一个。a,b,c三端分别与89c51的p0.0p0.2相接。地址锁存信号(ale)和启动转换信号(start),由p2.7和/wr或非得到。输出允许,由p2.7和/rd或非得到。时钟信号,可有89c51的ale输出得到,不过当采用12mhz晶振时,应该先进行二分频,以满足adc0809的时钟信号必须小于640khz的要求。与单片机的连接如图2.4所示2.5串行通行设计mcs-51单片机的串行口具有两条独立的数据线发送端txd和接收端rxd,它允许数据同时往两个相反的方向传输。一般通信时发送数据由txd端输出,接收数据由rxd端输入。mcs-51单片机的串行口既可以用于网络通信,亦可实现串行异步通信,还可以用作同步移位寄存器。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的rs-232接口。mcs-51单片机的串行接口是一个全双工通信接口,它有两个物理上独立的接收、发送缓冲器sbuf,可以同时发送和接收数据。但是发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。两个缓冲器共用一个地址(99h)。mcs-51的串行口控制寄存器在完成串行口初始化后,发送数据时,采用mov sbuf,a指令,将要发送的数据写入sbuf,则cpu自动启动和完成串行数据的输出;接收数据时,采用mova,sbuf指令,cpu就自动将接收到的数据从sbuf中读出。控制mcs-51单片机串行接口的控制寄存器有两个特殊功能寄存器scon和pcon,用以设置串行端口的工作方式、接收/发送的运行状态、接收/发送数据的特征、数据传输率的大小,以及作为运行的中断标志等。2.5.1串行通讯的硬件电路74ls164的引脚图74hc164、74hct164 是高速硅门 cmos 器件,与低功耗肖特基型 ttl (lsttl) 器件的引脚兼容。74hc164、74hct164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(dsa 或 dsb)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟 (cp) 每次由低变高时,数据右移一位,输入到 q0, q0 是两个数据输入端(dsa和 dsb)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (mr) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。其中引脚9接高电平,引脚1、2接p3.0,引脚8接p3.1,由单片机送来的数据锁存到74ls164,有74ls164并行输出。2.6 8路电压生成电路如图所示,8路滑动变阻器的一端接地,一端接+5v,输出接到ad0809的输入端。2.9硬件综合图3 软件设计3.1 主程序设计3.1.1 工作流程首先由p3.2来判断a/d转换是否完成,如果完成则由movx a,dptr指令把数据存储到单片机内部数据存储器。8路数据采集完之后,程序转移到显示程序,依次显示8路模拟电压值。程序流程图如图开始启动a/d转换np3.2?y存储数据nr7=?8存储器和dptr地址加1y数据处理显示电压结束3.1.2 存储空间定义安排 30h-37h用于存放a/d转换结果,用r7来判断8路电压是否采集完毕。如下表30h第1路模拟电压31h第2路模拟电压32h第3路模拟电压33h第4路模拟电压34h第5路模拟电压35h第6路模拟电压36h第7路模拟电压37h第8路模拟电压3.2 模块程序设计3.2.1 a/d转换测量程序a/d转换的常用方法有:计数式a/d转换,逐次逼近型a/d转换,双积分式a/d转换, v/f变换型a/d转换。在这些转换方式中,记数式a/d转换线路比较简单,但转换速度较慢,所以现在很少应用。双积分式a/d转换精度高,多用于数据采集及精度要求比较高的场合,如5g14433(31/2位),ad7555(41/2位或51/2位)等,但速度更慢。逐次逼近型a/d转换既照顾了转换速度,有具有一定的精度,这里选用的是逐次逼近型的a/d转换芯片adc0809。采用中断控制的方式实现,不浪费时间,效率较高。其流程图如下: 开始启动转换读取数据0809地址加1r7小于8?结束转换完成给单片机信号yn3.2.2 显示程序对多位led显示器的动态显示,通常都是采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。为了实现led显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。因此多位led显示器接口电路需要有两个输出口,其中一个用于输出8位为控信号;另一个用于输出段控信号。如图为显示程序的流程图开始读内部数据显示路通道显示电压个位结束ynr5=?9显示电压百分位显示电压十分位4 系统调试与分析4.1 调试内容及问题解决 程序可分为数据采集系统、数据转换系统和显示系统,这部分先独立测试,然后整体调试。显示系统的调试:要显示的数据存放在30h-37h各单元中,先在30h-37h单元中存放0-255中的数,运行显示程序,察看显示的结果是否与存放值一样。5 综合程序结果附录:程序清单org 0000hljmp mainmain:mov r3,#0mov r4,#0mov r5,#01h ;输出路k

温馨提示

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

评论

0/150

提交评论