基于51单片机的数字电压表设计
最新基于51单片机的数字电压表设计--《单片机原理与应用》课程设计说明书

1.1数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。
通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。
其实也为建立节约成本的意识有些帮助。
本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。
1.3 本次设计要求本次设计的作品要求制作数字电压表的量程为0到10v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v,所以能够测量的电压范围为-0.25v到5.25v之间,但是一般测量的直流电压范围都在这之上,所以采用电阻分压网络,设计的电压测量范围是0到25v之间,满足设计要求的最大量程5v的要求。
同时设计的精度为小数点后三位,满足要求的两位小数的精度,在不考虑AD芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求。
2单片机和AD相关知识2.1 51单片机相关知识51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。
该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。
单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。
51系列单片机内包含以下几个部件:一个8位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。
基于51单片机的数字电压表设计

目录摘要 (I)1 绪论 (1)1.1数字电压表介绍 (1)1.2仿真软件介绍 (1)1.3 本次设计要求 (2)2 单片机和AD相关知识 (3)2.1 51单片机相关知识 (3)2.2 AD转换器相关知识 (4)3 数字电压表系统设计 (5)3.1系统设计框图 (5)3.2 单片机电路 (5)3.3 ADC采样电路 (6)3.4显示电路 (6)3.5供电电路和参考电压 (7)3.6 数字电压表系统电路原理图 (7)4 软件设计 (8)4.1 系统总流程图 (8)4.2 程序代码 (8)5 数字电压表电路仿真 (15)5.1 仿真总图 (15)5.2 仿真结果显示 (15)6 系统优缺点分析 (16)7 心得体会 (17)参考文献 (18)1 绪论1.1数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。
通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。
其实也为建立节约成本的意识有些帮助。
本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。
1.2仿真软件介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。
基于51单片机的高精度数字电压表的设计

摘要:随着电子科学技术地发展,电子测量成为广大电子工作者必须掌握地手段,对测量地精
度和功能地要求也越来越高,而电压地测量甚为突出,因为电压地测量最为普遍
[1]. 本文介绍一种
基于 STC89C51 单片机地一种电压测量电路 .该电路采用高精度、双积分 A/D 转换电路 ICL7135 ,
2.2 设计框图 ………………………………………………………………………7
第三章 硬件设计 …………………………………………………………………9
3.1A/D 转换电路 ……………………………………………………………………9 3.1.1 双积 A/D 转换器地工作原理 ……………………………………………9
4.1 软件总体设计思路及结构 ………………………………………………
Abstract: Along with the electronic science technology's development, the method which the
electronic surveying into general electron worker must grasp, is also getting higher and higher to the survey
拟电压表功能单一、精度低、体积大,且存在读数时地视差,长时间连续使用易引起视觉疲劳,使
用中存在诸多不便 .而目前数字万用表地内部核心多是模/数转换器,其精度很大程度上限制了整
个表地准确度,可靠性较差 . 而数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨
率高、测量速度快等特点而倍受青睐 .
one kind of voltage measurement electric circuit, this electric circuit uses the ICL7135 high accuracy, the
基于51单片机的数字电压表的设计

摘要随着电子技术的发展,电子测量技术对测量的精度和功能的要求也越来越高,而数字电压表作为实验室的基本测量设备,它可以很好的满足测量精度和功能的要求。
本设计利用AT89S51单片机技术结合A/D转换(采用ADC0809)构建了一个直流数字电压表。
经过对数字电压表基本原理的分析,本文设计了一个以51单片机为核心的数字电压表系统,给出了直流数字电压表的设计流程,设计了电压测量子系统和电流测量子系统,给出了硬件电路的框图、电气原理图和软件流程图。
系统设置了3个键的键盘,用于设定电压、电流切换的功能键、系统复位键以及清零键。
关键词:数字电压表;AT89S51单片机;A/D转换;ADC0809;AbstractAs electronic science and technology development, electronic measurement technology on the accuracy of measurement and functional requirements are increasingly high, and digital voltmeter measurement equipment as the basic laboratory, it can well meet the measuring precision and function requirements. A dc digital voltmeter is built by using AT89S51 with the A/D convertor (ADC0809)in the paper.This paper first introduces the main method and design voltmeter SCM system advantage; Then introduces the design process of dc digital voltmeter, and hardware system and the design of software system, and gives the hardware circuit design system diagram and software system design flow diagram.Keywords: Digital voltmeter; AT89S51MCS; A/D conversion; ADC0809.目录1 绪论 (1)1.1前言 (1)1.2数字电压表的介绍 (1)1.2.1数字电压表的发展概况 (1)1.2.2数字电压表在各领域中的应用 (2)1.2.3数字电压表的优点 (2)1.3单片机的介绍 (3)1.3.1单片机简介 (3)1.3.2单片机的发展概况 (3)1.3.3单片机的应用 (4)1.3.4单片机的特点 (6)1.4课题背景,国内外研究现状 (6)1.5本文主要研究内容 (8)2 数字电压表的工作原理 (9)2.1数字电压表的基本结构 (9)2.2数字电压表的工作原理 (9)2.2.1模数(A/D)转换与数字显示电路 (10)2.2.2多量程数字电压表分压原理 (10)2.2.3多量程数字电压表分流原理 (11)3 硬件系统各模块具体设计及实现 (14)3.1单片机的选择 (14)3.1.1AT89S51的引脚框图 (15)3.1.2AT89S51的内部结构图 (17)3.2A/D转换器的选择 (18)3.2.1ADC0809的引脚结构 (19)3.2.2ADC0809的内部逻辑结构 (21)3.3显示器的选择 (21)3.4键盘的选择 (23)3.5表笔探针设计 (23)4 系统总体方案研究 (25)4.1总体方案确定 (25)4.2系统框图及阐述 (25)4.3ADC0809与AT89S51的连接 (26)4.4键盘与单片机的连接 (27)4.5多量程数字电压表档位切换原理 (28)4.5.1多量程电压的测量 (28)4.5.2多量程电流的测量 (30)5 系统的软件设计 (31)5.1系统软件设计的总体思想 (31)5.2系统单片机的软件设计 (31)5.2.1键盘的处理 (31)5.2.2显示的处理 (31)5.2.3档位切换的处理 (32)6 系统软件流程图 (33)6.1主程序流程图 (33)6.2A/D转换流程图 (34)7 设计总结 (35)参考文献 (36)致谢 (37)附录 (38)1 绪论1.1前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
基于at89c51单片机的数字电压表的设计

基于at89c51单片机的数字电压表的设计数字电压表是一种常见的电子测量仪器,它可以用来测量电路中的电压大小。
在本文中,我们将介绍一种基于at89c51单片机的数字电压表的设计。
一、设计原理数字电压表的设计原理是基于模数转换器(ADC)的工作原理。
ADC是一种将模拟信号转换为数字信号的电路。
在数字电压表中,ADC将输入的模拟电压信号转换为数字信号,然后通过单片机进行处理和显示。
二、硬件设计数字电压表的硬件设计包括电路图和PCB布局。
电路图包括电源电路、ADC电路、单片机电路和显示电路。
PCB布局是将电路图转换为实际的电路板。
1. 电源电路数字电压表的电源电路需要提供稳定的直流电源。
在本设计中,我们使用了7805稳压器来提供5V的直流电源。
2. ADC电路ADC电路是将输入的模拟电压信号转换为数字信号的关键。
在本设计中,我们使用了AD0804芯片作为ADC电路。
AD0804是一种8位的串行输出ADC,它可以将输入的模拟电压信号转换为8位的数字信号。
3. 单片机电路单片机电路是数字电压表的核心部分。
在本设计中,我们使用了at89c51单片机作为控制器。
单片机通过串行通信接收ADC输出的数字信号,并进行处理和显示。
4. 显示电路显示电路是将单片机处理后的数字信号转换为实际的电压值并显示出来的部分。
在本设计中,我们使用了4位7段LED数码管作为显示器。
三、软件设计数字电压表的软件设计包括单片机程序和PC端程序。
单片机程序是控制器的核心部分,它通过串行通信接收ADC输出的数字信号,并进行处理和显示。
PC端程序是用来控制数字电压表的参数和显示的。
1. 单片机程序单片机程序主要包括串行通信、ADC转换和数码管显示三个部分。
串行通信是单片机和ADC之间的通信方式,它通过SPI协议进行通信。
ADC转换是将输入的模拟电压信号转换为数字信号的部分。
数码管显示是将单片机处理后的数字信号转换为实际的电压值并显示出来的部分。
基于51单片机的数字电压表设计

基于51单片机的数字电压表设计摘要:文章设计了一种以AT89S51为核心、以ADC0809为A/D转换器的数字电压表,可以精确测量0~5V内直流电压,测量精度可达0.02V。
可以满足科研、测试等各方面的需求。
关键词:AT89S51;ADC0809;数字电压表文章介绍了一种用于测试0~5 V直流电压的数字电压表,通过LED七段管显示当前测试电压。
测试结果准确可信且读取方便,有着传统电压表无可比拟的优点。
1硬件设计本设计中数字电压表主要由:A/D转换电路、单片机控制电路、数字显示电路组成。
总电路图如图1所示。
?譹?訛A/D转换电路选用最为常用的通用A/D芯片ADC0809,它由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
单片机P3.0接A/D转换器ST端控制A/D转换的启动;单片机P3.1接A/D转换器OE端控制三条输出锁存器向单片机输出转换得到的数据,OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。
单片机P3.2接A/D转换器EOC端接收转换结束信号,当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D转换。
单片机P3.3提供A/D转换器工作所需时钟脉冲;IN0作为电压信号接收通道,经A/D转换后电压数字信号接入单片机P0.0~P0.7。
取5V为基准电压,故待测电压经A/D转换后的数值D=V256/5.0,所以最终LED七段管显示电压V=5.0/256D。
?譺?訛数字显示电路使用一块四位LED七段管,a、b、c、d、e、f、g、dp口分别单片机P1.0~P1.7口分别接七段管a、b、c、d、e、f、g、dp口控制显示值,单片机P2.0~P2.3口分别接七段管S1~S4口控制七段管的点亮。
基于51单片机的简易数字电压表的设计要点
五邑大学单片机课程设计报告基于51单片机的简易数字电压表的设计学院:信息工程学院专业:交通工程(交通控制与管理)班姓名学号指导老师:完成日期:2015年01月05日目录1 引言 (1)2 设计方案 (1)3 元器件 (3)4 实际电路 (8)5 单片机程序 (10)6 电路板制作 (15)7总结 (16)8附录 (16)9参考文献 (17)数字电压表设计1引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号2 设计方案2.1设计要求以单片机为核心,设计一个数字电压表。
51单片机的数字电压表设计
摘要
近些年来,数字电压表逐渐进入人们的视线中,它主要采取数字化测量技 术。与传统的指针式仪表相比,它的功能有了进一步的完善,并且精度也有了 很大的提高。数字电压表主要采用单片机和模/数转换模块,这样不仅提高了测 量速度,而且抗干扰能力强、使用便捷、可扩展性强、测量准确。 本文主要采用 AT89C51 单片机和 ADC0808 芯片制作的简易数字电压表, 可以采集 0~5V 和 5~10V 的模拟直流电压进行测量,其测量结果在液晶 LCD1602 上显示。 该设计硬件电路主要有三个模块组成:A/D 转换模块、 数据处 理模块及输出显示模块。数据处理由单片机 AT89C51 来完成,它主要把 ADC0808 传送来的数值经一定的数据处理,然后送至显示模块进行显示,同时 控制显示芯片 1602 的工作。 程序设计上有各模块初始化操作、 电压档位选择和 LCD1602 液晶显示程序等。
8
3. 系统程序设计
系统的主程序流程如图 3-1 所示:
开始
初始化
m>1000? N 接收并处理 数据
Y
选择量程
显示电压值
显示MAX
等待下一次数据
图 3-1
系统主程序流程图
本设计程序设计主要分为几个模块: 初始化程序设计、 A/D 采样程序设计、 测量参数数据处理程序设计、量程选择和报警程序设计、LCD1602 显示程序设 计。下面逐个介绍各个模块的程序设计。 3.1 初始化程序 所谓初始化,将利用到单片机内部各部件或扩展芯片进行初始工作状态设 定,其主要负责设置定时器模式、初始设定、开中断和打开定时器等,对于液 晶 1602 同样也要进行初始化,其中包括清除显示屏、显示开/关控制、功能设 置、进入模式设置等。其中部分初始化程序如下:
基于51单片机的简易数字电压表的方案设计书
班级:智能电网111学生:喻卫湖南铁道职业技术学院电气工程系目录1控制要求2设计目的意义3 系统原理框图4 89C52单片机5 ADC0809 的工作原理6 系统原理图和PCB图7程序流程图8 C语言程序9数字电压表工作原理10设计体会1控制要求利用STC89C52单片机和ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。
外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。
然后由单片机给数码管数字信号,控制其发光,从而显示数字。
2设计目的意义1.通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。
2.通过数字电压表的设计系统掌握51单片机的应用。
掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入STC89C52单片机并进行调试等。
3 系统原理框图4 89C52引脚资料STC89C52P1 P0P3 P2AD0809D0~D7IN0~IN7VREF+VREF-CLKOEST、ALE四位数码管位选段选控制线数据待测电压系统原理框图89C51引脚图总线型DIP40引脚封装电源引脚(2个)VCC:接+5V电源。
GND:接地端。
外接晶体引脚(2个)XTAL1:外接晶振输入端(采用外部振荡器时,此引脚接地)。
XTAL2:外接晶振输入端(采用外部振荡器时,此引脚作为外部振荡信号输入端)。
并行输入/输出引脚(32个)P0.0~P0.7:通用I/O引脚。
P1.0~P1.7:通用I/O引脚。
P2.0~P2.7:通用I/O引脚或数据低8位地址总线复用引脚。
P3.0~P3.7:通用I/O引脚或第二功能引脚(RXD、TXD、INT0、INT1、T0、T1、WR 、RD)。
控制引脚(4个)RST/VPD:复位信号输入引脚/备用电源输入引脚。
利用51单片机与ADC0809和数码管设计数字电压表
利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51 芯片与ADC0809 芯片设计一个数字电压表,能够测量0―5V 之间的直流电压,三位数码显示。
二、程序设计本实验采用AT89C51 单片机芯片配合 ADC0809 模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1 所示。
该电路通过 ADC0809 芯片采样输入口AI0 输入的0~5V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7 传送给 AT89C51 芯片的F0口。
AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过P1 口传送给数码管。
同时它还通过其三位 I/O 口 P3.0、P3.1、P3.2 产生位片选信号,控制数码管的亮灭。
另外,AT89C51 还控制着 ADC0809 的工作。
其ALE管脚为 ADC0809提供了 1MHZ 工作的时钟脉冲;P2.3 控制 ADC0809 的地址锁存端(ALE); P2.4 控制 ADC0809 的启动端(START); P2.5 控制 ADC0809 的输出允许端(OE); P3.7 控制 ADC0809 的转换结束信号(EOC)。
电路原理图如下:三、器件清单:1 . AT89S51 芯片 1块2 . ADC0809 芯片 1块3 . 74HC245 芯片 1块4 . 数码管 1个5 . 6MHZ 晶振 1个6 . 30pF 电容 2个7 . 10uF 电解电容 1个8 . 复位电容 1个9 . 510Ω电阻 8个10. 10KΩ电阻 1个11. 导线若干四、程序设计1、主程序设计由于ADC0809 在进行A/D转换时需要有CKL 信号,而此时的 ADC0809 的CLK 是连接在 AT89C51 单片机的30管脚,也就是要求从30管脚输出CLK 信号供图1-2主程序流程图ADC0809 使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (I)1 绪论 (1)1.1数字电压表介绍 (1)1.2仿真软件介绍 (1)1.3 本次设计要求 (2)2 单片机和AD相关知识 (3)2.1 51单片机相关知识 (3)2.2 AD转换器相关知识 (4)3 数字电压表系统设计 (5)3.1系统设计框图 (5)3.2 单片机电路 (5)3.3 ADC采样电路 (6)3.4显示电路 (6)3.5供电电路和参考电压 (7)3.6 数字电压表系统电路原理图 (7)4 软件设计 (8)4.1 系统总流程图 (8)4.2 程序代码 (8)5 数字电压表电路仿真 (15)5.1 仿真总图 (15)5.2 仿真结果显示 (15)6 系统优缺点分析 (16)7 心得体会 (17)参考文献 (18)1 绪论1.1数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。
通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。
其实也为建立节约成本的意识有些帮助。
本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。
1.2仿真软件介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。
目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
(4)具有强大的原理图绘制功能。
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
PROTEUS 是单片机课堂教学的先进助手。
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。
由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。
1.3 本次设计要求本次设计的作品要求制作数字电压表的量程为0到10v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v,所以能够测量的电压范围为-0.25v到5.25v之间,但是一般测量的直流电压范围都在这之上,所以采用电阻分压网络,设计的电压测量范围是0到25v之间,满足设计要求的最大量程5v的要求。
同时设计的精度为小数点后三位,满足要求的两位小数的精度,在不考虑AD芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求。
2单片机和AD相关知识2.1 51单片机相关知识51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。
该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。
单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。
51系列单片机内包含以下几个部件:一个8位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。
51系列单片机如下图:图1 51单片机引脚图2.2 AD转换器相关知识ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式AD转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
(1)主要特性:1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。
(2)内部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
图2 ADC0909引脚.3 数字电压表系统设计3.1系统设计框图此次设计的是数字电压表,要求的电压范围是0~5v,而设计扩展的量程为0~25v。
系统设计主要包括四个部分:分别是电源模块、AD模数转换部分、51单片机最小系统部分、1602液晶显示部分。
首先由单片机初始化ADC0809模数转换芯片和1602液晶显示,当外接被测电压后,ADC0809将模拟电压信号转换为数字信号输入到单片机的I/O口,通过单片机处理后将电压的大小显示在1602液晶上面。
如下是本次设计作品的框图:图3 系统框图3.2 单片机电路单片机最小系统如下图所示,各个引脚都已经标出,而且四个I/O口都已经用排阵引出,方便外接I/O扩展用。
图4 单片机最小系统3.3 ADC采样电路由于ADC0809是带地址锁存的模数转换器件,ADDA、ADDB、ADDC为模拟通道选择,编码为000~111分别选中IN0~IN7。
ALE为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。
CLK为输入时钟,为AD转换器提供转换的时钟信号,典型工作频率为640KHz。
START为AD 转换启动信号,正脉冲启动ADDA~ADDC选中的一路模拟信号开始转换。
OE为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从D0~D7输出。
EOC为转换结束信号,启动转换后EOC变为低电平,转换完成后EOC编程高电平。
图5 ADC模数转换3.4显示电路以下是1602液晶引脚的接线图,中间没有接线的为数据控制端口。
1602字符型通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样:图6 1602引脚图3.5供电电路和参考电压由于此次系统的芯片工作电压为+5v,所以用常用的三端稳压器LM317和LM337构成的电源系统供电,其中ADC0809要提供一个准确的参考电源才能正常的工作,而LM317正好能够达到要求。
图7 系统供电部分3.6 数字电压表系统电路原理图如下是此次数字电压表系统的总原理图,其中的连线用网络标号表示出来,省去了连线的麻烦,而且是总图的可读性增强。
图8 数字电压表总原理图4 软件设计4.1 系统总流程图此次设计的数字电压表系统比较简单,就设置了一个量程为0~25v,所以没有用到按键控制,也没有其他的功能,因此程序比较简单,在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序,如下为系统总流程图:图9 系统流程图4.2 程序代码/********电压表********/#include<reg52.h>#include<intrins.h>//库函数头文件,代码中引用了_nop_()函数/*ADC初始定义*/sbit start=P3^0; //转换开始控制sbit oe=P3^2; //输出允许控制sbit eoc=P3^1; //转换结束信号sbit clock=P3^3; //转换时钟sbit P0_2=P0^2; //蜂鸣器sbit P0_5=P0^5;sbit P0_6=P0^6;sbit P0_7=P0^7;/*1602液晶初始定义*/sbit RS=P0^0; //读控制sbit RW=P0^3; //写控制sbit E=P0^1; //使能端unsigned char da0,da1,da2,da3,da4;unsigned int temp;unsigned int d1,d2,d3;unsigned char dat; //数字电压量unsigned char lcdd[]="0123456789";void lcd_w_cmd(unsigned char com); //写命令函数void lcd_w_dat(unsigned char dat); //写数据函数void display(unsigned char dat); //显示函数unsigned char lcd_r_start(); //读状态函数void int1(); //LCD初始化函数void delay(unsigned char t); //可控延时函数void delay1(); //软件实现延时函数,5个机器周期/*显示函数部分*/void display(unsigned char dat){temp=5*dat; //量程扩大五倍da0=temp/51/10; //十位da1=temp/51%10; //个位d1=temp%51;d1=d1*10;da2=d1/51; //十分位d2=d1%51;d2=d2*10;da3=d2/51; //百分位d3=d2%51;d3=d3*10;da4=d3/51; //千分位lcd_w_cmd(0x0c); //设置光标不显示、不闪烁delay(20);lcd_w_cmd(0xc0); //第二行起始显示地址0x80 delay(20);delay(2);lcd_w_dat('V'); //显示字符串‘volatage is’lcd_w_dat('o');lcd_w_dat('l');lcd_w_dat('a');lcd_w_dat('t');lcd_w_dat('a');lcd_w_dat('g');lcd_w_dat('e');lcd_w_dat(' ');//显示电压的大小lcd_w_dat(lcdd[da0]); //十位lcd_w_dat(lcdd[da1]); //个位lcd_w_dat('.'); //小数点lcd_w_dat(lcdd[da2]); //十分位lcd_w_dat(lcdd[da3]); //百分位lcd_w_dat(lcdd[da4]); //千分位lcd_w_dat('V'); //单位}/*主函数*/void main(){P0_2=1; //关蜂鸣器P0_5=P0_6=P0_7=0; //选择000第一通道int1(); //LCD初始化while(1){start=0;start=1; //获得上升沿复位start=0; //获得下降沿启动转换,同时ALE开锁存do{clock=~clock; //时钟信号}while(eoc==0); //等待转换结束,eoc=1结束oe=1; //三态锁存缓冲器打开dat=P1; //数字电压信号输出oe=0; //三态锁存缓冲器关闭display(dat);}}/*延时函数*/void delay(unsigned char t){unsigned char j,i;for(i=0;i<t;i++)for(j=0;j<20;j++);}/*延时函数1*/void delay1(){_nop_();_nop_();_nop_();}/*LCD初始化函数*/void int1(){lcd_w_cmd(0x3c); // 设置工作方式lcd_w_cmd(0x0c); // 设置光标lcd_w_cmd(0x01); // 清屏lcd_w_cmd(0x06); // 设置输入方式lcd_w_cmd(0x80); // 设置初始显示位置}/*LCD读状态函数*///返回值:返回状态字,最高位D7=0,LCD控制器空闲;D7=1,LCD控制器忙unsigned char lcd_r_start(){unsigned char s;RW=1; //RW=1,RS=0,读LCD状态delay1();RS=0;delay1();E=1; //E端时序delay1();s=P2; //从LCD的数据口读状态delay1();E=0;delay1();RW=0;delay1();return(s); //返回读取的LCD状态字}/*LCD写命令函数*/void lcd_w_cmd(unsigned char com){unsigned char i;do{ // 查LCD忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);}while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=0; // RW=0,RS=0,写LCD命令字delay1();E=1; //E端时序delay1();P2=com; //将com中的命令字写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);;}/*LCD写数据函数*/void lcd_w_dat(unsigned char dat){unsigned char i;do{ // 查忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);}while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=1; // RW=1,RS=0,写LCD数据delay1();E=1; // E端时序delay1();P2=dat; // 将dat中的显示数据写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);}5 数字电压表电路仿真5.1 仿真总图为了验证此次设计原理图的正确性,在制作实物之前用专业软件做了仿真,在Proteus 软件中设置AT89C51单片机的晶振频率为12 MHz。