数字电压表课程设计(含程序、仿真图) .doc

上传人:仙人指路1688 文档编号:4149241 上传时间:2023-04-07 格式:DOC 页数:21 大小:347.50KB
返回 下载 相关 举报
数字电压表课程设计(含程序、仿真图) .doc_第1页
第1页 / 共21页
数字电压表课程设计(含程序、仿真图) .doc_第2页
第2页 / 共21页
数字电压表课程设计(含程序、仿真图) .doc_第3页
第3页 / 共21页
数字电压表课程设计(含程序、仿真图) .doc_第4页
第4页 / 共21页
数字电压表课程设计(含程序、仿真图) .doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《数字电压表课程设计(含程序、仿真图) .doc》由会员分享,可在线阅读,更多相关《数字电压表课程设计(含程序、仿真图) .doc(21页珍藏版)》请在三一办公上搜索。

1、单片机课程设计报告题目:简易数字电压表姓 名: 学 号: 专业班级: 指导老师: 所在学院: 2008年6月10日摘要本设计是简易数字电压表,随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。本设计在参阅了大量前人设计的数字电压表的基础上介绍一种基于89S52单片机的一种电压测量电路,该电路采用ICL7135高精度、双积分A/D转换电路,测量范围直流0-5伏,使用LCD液晶模块显示,可以与PC机进行串行通信。正文着重给出了软硬件系统的各部分电路,介绍了双积分电路的原理,89S52的特点,ICL71

2、35的功能和应用,LCD1601的功能和应用。该电路设计新颖、功能强大、可扩展性强。本文首先简要介绍了设计电压表的主要方式以及单片机系统的优势;然后详细介绍了直流数字电压表的设计流程,以及硬件系统和软件系统的设计,并给出了硬件电路的设计细节,包括各部分电路的走向、芯片的选择以及方案的可行性分析等。通过这一个星期的努力,另外通过同学的帮助,我做成了这个简易数字电压表,将程序键入可以显示0-5的不同电压值。通过此次课程设计使我对我们所学的知识有了更深的认识和体会,对自我动手的能力也提高了很多。本论文重点介绍单片机的数字电压表的工作原理。目录1 概述31.1课程设计的目的和意义31.2课程设计的任务

3、32 系统总体方案及硬件设计42.1课程设计系统环境42.2设计原理42.3设计方框图42.4硬件电路的设计52.5电压显示电路73 软件设计83.1主程序设计83.2通讯模块设计设计94 Proteus软件仿真114.1系统初始状态114.2系统随机状态115课程设计体会14参考文献14附1:源程序代码16附2:系统原理图201 概述1.1课程设计的目的和意义:本次课程设计,让我学习和巩固了使用单片机的定时中断、基本的常用的寄存器的使用方法,还有就是学习常用的外围硬件使用、电路原理图设计、PCB设计等等。使我对已学过的基础知识有了更深入的理解,独立思考、独立工作以及应用所学基本理化分析和解决

4、实际问题的能力有了很大的提高。1.2 课程设计的任务:数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新

5、水平。本论文重点介绍单片机的数字电压表的工作原理。2 系统原理及基本框图2.1课程设计系统环境(1)proteus仿真软件(2)Keil c51软件调试环境或wave调试程序2.2 设计原理单片机AT89C52和ADC0832设计一个数字电压表,能够测量05V之间的直流电压值,两位数码显示。重点负责单片机AT89C52硬件部分的功能及应用。AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS -5

6、1指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口

7、,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。2.3 设计方框图单片机A/D转换器AD574A电压显示器模拟电压输入量程控制电路系统总框图2.4硬件电路的设计单片机采用MCS-51系列单片机。由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Fl

8、ash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52单片机单片机选用的是ATMEL公司新推出的AT89S52,如图 3.2.1.1所示。该芯片具有低功耗、高性能的特点,是采用C

9、MOS工艺的8位单片机,与AT89C51完全兼容。AT89S52还有以下主要特点: 采用了ATMEL公司的高密度、非易失性存储器(NV-SRAM)技术; 其片内具有256字节RAM,8KB的可在线编程(ISP)FLASH存储器; 有2种低功耗节电工作方式:空闲模式和掉电模式 AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发。单片机管脚说明VCC:供

10、电电压。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口为一个内部上拉电

11、阻的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”后,它们被内部上拉为高电平,并用作输入

12、。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX

13、,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTA

14、L2:来自反向振荡器的输出。25电压显示电路设计中采用的是8段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由8个发光二极管组成,其中7个按8字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把8个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阳极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。其8段分别命名为dp g f e d c b a。例如,要显示“0”,则dp g f e d c b a分别为:1100 0000B;要显示“A”,则dp g f

15、 e d c b a分别为:0001 0001B(共阳极)。若要显示多个数字,只要让若干个数码管的位码循环为低电平就可以了。根据设计要求,显示电路需要至少4位LED数码管来显示电压值,我们再多加一位用来显示电压单位“V”,则有7位LED循环显示。利用单片机的I/O口驱动LED数码管的亮灭,设计中由P0口驱动LED的段码显示,即显示字符,由P2口选择LED位码,即选择点亮哪位LED来显示。3系统的软件设计3.1主程序设计ICL7135A/D与单片机连接电路的软件设计系统的程序流程图如图所示。主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对ICL7135的中断进行计数,每5次后清

16、零,完成一次数据采集工作,然后设置ICL7135的STB端的中断的优先级。紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。用以下指令实现 MOV P2,#01H ;送到数据DB7-DB0,调用子程序 ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。接着对1601进行功能的设定。MOV P2,#0111100

17、0B,按表3.4.5来看是设定图4.1.1 主程序流程图显示器按2行显示,每行8位,57点阵。调用一次子程序ENABLE程序,写入CPU的指令寄存器中。每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。显示器的RAM地址按加方法进行读写。再设定第一行字符,也就是Voltage的显示地址80H。字符Voltage的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E产生一个下降沿脉冲,将数据送入到数据寄存器中,接下来执行子程序DISPLAY1,它的

18、主要功能是将TABLE表中的字符输出到LCD中去。调定好显示字符数即远程查表的次数,就开始查表了。 例如第一个字符“V”的ASCII码是56H,就将这个码送到P2口,再调用使能数据子程序,使RS=1(数据区使能)写入显示数据区,R/W=0表示写,E=来个下降沿延时2.5毫秒,使数据写入RAM内。完成图4.1.2 数据地址TABLE表输出以后,向指令RAM中写入第2行的起始地址为OCH,再调用显示采样数据的子程序。采样数据存放的数据地址安排如下图所示,首先将60H中的数显示在正负号的位置上,按照ASCII码表,正号不显示(#20H),负号显示“”(#2DH)。3.2通讯模块设计设计89S52单片

19、机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。89S52的串行口有4种工作方式,1种同步方式,3种异步方式。本方式选方式1,一帧数据有10位,包括起始位0、8位数据位和1位停止位1。串行口电路在发送时能自动加入起始位和停止位。在接收时,停止位进入SCON中的RB8位。方

20、式1的波特率是可变的,由定时器1的溢出率决定。由定时器1最好工作在方式2上(自动重装载模式),这样只需对TH1设置一次即可。数据通过TXD输出,在8个位输出完毕后,SCON寄存器的TI位被设为1,CPU只要判断TI是1,接着发送下一个字节。波特率的设定:定时器T1工作在方式2的初值为:(1.1)为了减小误差,时钟振荡频率采用11.0592MHz,选用定时器T1工作在方式2作波特率发生器,波特率为300,设SMOD为0,依公式(1.1)得初值为:所以TH1 = TL1 = A0HMOV SCON ,#50H ;URAT工作在方式1上MOV TMOD ,#20H ;TIME1工作在方式2上MOV

21、TH1 , #0A0H ;设置波特率为300本设计的中断十分重要,为了减少相互间的干扰,保证可靠性,采用查询方式判断是否发送完毕。 A6: JBC TI , A5 ;如果发送完毕跳,清标志位,跳到A5。 AJMP A6 ;否则跳到A6,等待 A5: INC R0 4 Proteus软件仿真用伟福软件编辑程序,在仿真设置中选择lab2000p仿真实验仿真器,选择8088/86实验仿真头,选择8088/86CPU进行汇编程序编辑,然后进行proteus进行仿真,其仿真图如下:4.1系统初始状态如图:4.2系统的随机状态:电压为0.50V时显示如图:电压为1.50V时显示如图:电压为4.00V时显示

22、如图:5课程设计体会通过一周的课程能够设计,使我深刻的认识到单片机的应用已经在工业、电子等方方面面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围的简单电路再加上优化程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计增加更多精彩。同时我也学到了很多书本上学习不到的东西,不仅使我加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事

23、。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。于是,我坚持了下来。最后,终于按要求把作品做出来了,虽然看似很简单,但是对我们的实际动手能力却是很考验的,这也对我们今后的工作敲响了警钟:要认真的看待每

24、个需要处理的问题,不要认为事情过于简单,不能急于求成,更不要轻易说放弃,要保持你的头脑清醒。这次单片机课程设计给我的最大的印象就是努力的动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个设计开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。希望以后有更多的机会多多参与这样的设计和实习,锻炼我们的动手能力,为今后的工作和学习奠定基础。参考文献1 余发山.单片机原理及应用.徐州:中国矿业大学出版社,20032 谭浩强.C语言设计(第二版).北京:清华大学出版社,20063 吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用M.北京:清华大

25、学出版社,2002.4 刘伟,赵俊逸,黄勇,一种基予C8051F单片机的SOC型数据采录器的设计与实现A.天津市计算机学会单片机分会编. 2003年全国单片机及嵌如入式系统学术年会论文集(下册)C .北京:北京航空航天大学出版社,2003 .790-7945 何立民.单片机应用技术大全.北京:北京航空航天大学出版社, 1994附1 源程序代码ORG 0000HAJMP MAINORG 000BH ;定时器T0的入口AJMP DISP ;显示程序ORG 0030HMAIN:MOV SP,#5FH ;设置堆栈MOV P1,#0FFHMOV P0,#0FFHMOV P2,#0FFH ;初始化,所显示

26、器,LED灭MOV TMOD,#00000001B ;定时器T0工作于模式1(16位定时/计数模式)MOV TH0,#HIGH(65536-2000)MOV TL0,#LOW(65536-2000)SETB TR0 ;开定时器0SETB EA ;开总中断SETB ET0 ;开定时器0中断MOV COUNTER,#0 ;计数器初始化LOOP:LCALL ADC_DEMO ;调用AD子程序AJMP LOOP;/=;/ 启动AD转换;/=ADC_START:CLR AD_CSNOPCLR AD_WRNOPSETB AD_WRNOPSETB AD_CSNOPRET;/=;/ 读AD转换;/=ADC_R

27、EAD:MOV AD_INPUT_PORT,#0FFHCLR AD_CSNOPCLR AD_RDNOPNOPMOV A,AD_INPUT_PORTNOPSETB AD_RDNOPSETB AD_CSRET;/=;/ AD转换读取延时程序,显示读到的数值;/=ADC_DEMO:LCALL ADC_STARTLCALL DELAY1MSLCALL ADC_READMOV B,#100 ;AD转换出的值除100商为百位数DIV AB ; 取百位数 余数在B寄存器MOV DISPBUF,A ;把百位存入百位寄存器DISPBUFMOV A,B ;余数再送AMOV B,#10 ;余数除10商为十位数DIV

28、 AB ; 除法,余数在寄存器BMOV DISPBUF+1,A ;A是十位数存第二位显示寄存器MOV DISPBUF+2,B ; B是个位数存第三位显示寄存器RETDISP: ;定时器T0的中断响应程序动态扫描PUSH ACC ;ACC入栈PUSH PSW ;PSW入栈MOV TH0,#HIGH(65536-2000);定时时间为2000个周期,约2170微秒MOV TL0,#LOW(65536-2000)SETB FIRSTSETB SECOND ;关显示SETB THEERMOV A,#DISPBUF ;显示缓冲区首地址ADD A,COUNTERMOV R0,AMOV A,R0 ;根据计数

29、器的值取相应的显示缓冲区的值MOV DPTR,#DISPTAB ;字形表首地址MOVC A,A+DPTR ;取字形码MOV P0,A ;将字形码送P0位(段口)MOV A,COUNTER ;取计数器的值JZ DISPFIRST ;如果是0则显示第一位DEC AJZ DISPSECOND ;如果是1显示第二位CLR THEER ;否则显示第3位AJMP DISPNEXTDISPFIRST:CLR FIRST ;显示第一位AJMP DISPNEXTDISPSECOND:CLR SECONDDISPNEXT:INC COUNTER ;计数器加1MOV A,COUNTERDEC A ;如果计数器计到3,则让它回0DEC ADEC AJZ RSTCOUNTAJMP DISPEXITRSTCOUNT:MOV COUNTER,#0 ;计数器的值回0DISPEXIT:POP PSWPOP ACCRETIDISPTAB:DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H ;字形代码表;0 1 2 3 4 5 6 7 8 9DELAY1MS: ;延时子程序MOV R7,#10MM:MOV R6,#50DJNZ R6,$ ;2USDJNZ R7,MMRETEND附2 系统原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号