基于单片机的简易数字电压表的设计(1)
基于单片机简易数字电压表的设计
目录1.摘要及关键词-------------------------------------------32.总体设计方案-------------------------------------------33.硬件电路及仿真设计------------------------------------104.程序设计及调试----------------------------------------125.本人承担的小组工作以及设计体会------------------------136.参考文献----------------------------------------------137.元器件清单及程序清单----------------------------------13摘要:本次设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片AT89C52来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,送到LCD1602液晶显示模块进行显示;此外,它还控制着ADC0809芯片工作。
关键词:数字电路单片机 ADC0809 LCD1602总体方案的设计:本次设计的要求如下:1.可以选择测量8路1-5V的8路电压值:2.可轮流显示或单路选择显示(可选);3.测量显示的最小分辨率为0.01V,测量的误差正负0.02V;4.具有电压过低,过高声光报警功能,报警限可独立设置。
设计思路:根据设计的要求,进行器件的选择。
芯片控制选取STC89C52单片机,由于要控制8路,故选取ADC0809的数模转换,显示部分选用目前很流行的LCD1602的液晶显示,最后采用8个开关控制8个通道,所以选取74LS148。
下面进行逐一叙述:STC89C52单片机芯片管脚如下STC89C52的管脚图STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
基于单片机的数字电压表设计
基于单片机的数字电压表设计一、引言在电子测量领域中,电压表是一种常用的测量仪器,用于测量电路中的电压值。
传统的模拟电压表由于精度低、读数不便等缺点,逐渐被数字电压表所取代。
数字电压表具有精度高、读数直观、抗干扰能力强等优点,广泛应用于工业自动化、电子设备检测、实验室测量等领域。
本文将介绍一种基于单片机的数字电压表设计方案,详细阐述其硬件电路设计、软件编程实现以及系统性能测试。
二、系统总体设计方案(一)设计要求设计一款基于单片机的数字电压表,能够测量 0 5V 的直流电压,测量精度为 001V,具有实时显示测量结果的功能。
(二)系统组成本数字电压表系统主要由以下几个部分组成:1、传感器模块:用于将输入的电压信号转换为适合单片机处理的电信号。
2、单片机模块:作为系统的核心,负责对传感器采集到的数据进行处理和计算,并控制显示模块显示测量结果。
3、显示模块:用于实时显示测量的电压值。
三、硬件电路设计(一)传感器模块选用 ADC0809 作为模数转换芯片,它具有 8 个模拟输入通道,可以将 0 5V 的模拟电压转换为 8 位数字量输出。
(二)单片机模块选择 AT89C51 单片机作为控制核心,它具有 4K 字节的 Flash 程序存储器和 128 字节的随机存取数据存储器。
(三)显示模块采用液晶显示屏(LCD1602)作为显示器件,它能够清晰地显示数字和字符信息。
四、软件编程实现(一)编程语言选择使用 C 语言进行编程,C 语言具有语法简洁、可移植性强等优点。
(二)主程序流程主程序首先进行系统初始化,包括单片机端口初始化、LCD1602 初始化、ADC0809 初始化等。
然后启动 ADC0809 进行模数转换,读取转换结果并进行数据处理,计算出实际的电压值。
最后将电压值发送到 LCD1602 进行显示。
(三)模数转换子程序ADC0809 的转换过程通过控制其启动转换引脚(START)和读取转换结束引脚(EOC)来实现。
单片机课程设计---基于单片机的简易数字电压表设计
单片机原理及应用课程设计报告书题目:基于单片机的简易数字电压表设计姓名:学号:指导老师:设计时间:2012.4目录1.引言 (1)1.1.设计意义 (1)1.2.系统功能要求 (1)2.方案设计 (1)3.硬件设计 (2)3.1.硬件电路 (2)3.1.1.硬件电路图部分模块设计 (2)3.1.2.硬件电路图整体设计 (4)3.2.硬件电路仿真 (5)4.软件设计 (5)4.1.初始化程序 (5)4.2.主程序 (5)4.3.显示子程序 (6)4.4.A/D转换测量子程序 (6)5.系统调试 (7)6.设计总结 (8)7.附录 (8)7.1.源程序代码 (8)7.2.作品实物图片 (14)8.参考文献 (14)基于单片机的简易数字电压表设计1.引言1.1.设计意义传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳。
而数字电压表读数直观抗干扰信号等优点。
通过本次基于AT89C52单片机为控制系统,ADC0809为转换的简易数字电压表的课程设计可以从中了解片机控制的数字电压表的基本原理,将课堂上的理论知识紧密的联系起来,掌握包括硬件的组装及相关软件的使用和系统调试。
1.2.系统功能要求简易数字电压表可以测量0-5V的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示。
测量误差约为0.02V。
2.方案设计按系统功能实现要求,决定控制系统采用AT89C52单片机,A/D转换采用ADC0809.系统除能实现要求的功能外,还能方便的进行8路其他A/D转换量的测量,远程测量结果传送等拓展功能。
数字电压表系统设计方案框图如图1所示:图1 数字电压表系统设计方案框图3.硬件设计3.1.硬件电路3.1.1.硬件电路图部分模块设计AT89C52芯片引脚图如图2 所示AT89C52图2晶振电路晶振电路用于产生单片机工作所需的时钟信号,使用晶体震荡器时,c2,c3取值20~40PF,使用陶瓷震荡器时c2,c3取值30~50PF。
基于51单片机的简易数字电压表的设计原理1
题目:基于51单片机的简易数字电压表的设计系部:专业:班级:学生姓名:学号:指导老师:日期:目录毕业设计任务书 (1)开题报告........................................................................................ 错误!未定义书签。
摘要.......................................................................................... 错误!未定义书签。
关键词. (2)引言 (2)第一章A/D转换器 (4)1.1A/D转换原理 (4)1.2 ADC性能参数 (6)1.2.1 转换精度 (6)1.2.2. 转换时间......................................................... 错误!未定义书签。
1.3 常用ADC芯片概述 (8)第二章8OC51单片机引脚 (9)第三章ADC0809 (11)3.1 ADC0809引脚功能 (11)3.2 ADC0809内部结构 (13)3.3ADC0809与80C51的接口 (14)3.4 ADC0809的应用指导 (15)3.4.1 ADC0809应用说明 (15)3.4.2 ADC0809转换结束的判断方法 (15)3.4.3 ADC0809编程方法 (16)第四章硬件设计分析 (17)4.1电源设计 (17)4.2 关于74LS02,74LS04 (17)4.3 74LS373概述 (18)4.3.1 引脚图 (18)4.3.2工作原理 (18)4.4简易数字电压表的硬件设计 (19)结论 (20)参考文献 (20)附录.......................................................................................... 错误!未定义书签。
基于单片机的简易数字电压表设计(任务书+论文)
任务书摘要本文介绍了基于89c51单片机的一种8路输入电压测量电路,该电路采用ADC0809作为A/D转换元件,测量范围0至5伏,小数点后显示一位。
要求能够依次显示每路通道电压,而且能够通过拨码开关选择输入通道。
使用3位LED 模块显示,前面一位显示通道号,后面两位显示测量电压值。
本系统主要包括四大模块:数据采集模块、控制模块、显示模块、A/D转换模块。
绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。
在软件编程上,采用了汇编语言进行编程,开发环境使用WAVE集成开发环境。
开发了显示模块程序、通道切换程序、A/D转换程序。
关键词:ADC0809;A/D转换;LED显示目录1 方法论证 (5)1.1 系统的设计任务 (5)1.2 设计方案 (5)1.3 软硬件开发环境 (6)2 数字电压表硬件设计 (7)2.1 单片机主电路设计 (7)2.1.1 复位电路 (7)2.1.2 晶振电路 (7)2.2 测量、转换电路设计 (8)2.3 按键电路设计 (9)2.4 显示电路设计 (10)2.4.1 LED数码管构成 (10)2.4.2 显示方式 (11)3 软件设计 (14)3.1 主程序设计 (14)3.1.1 工作流程 (14)3.1.2 存储空间定义安排 (15)3.2 模块程序设计 (15)3.2.1 A/D转换测量程序 (15)3.2.2 显示程序 (16)4 系统调试与分析 (18)4.1 调试内容及问题解决 (18)4.2 系统进一步改进方案 (18)附录1:硬件原理图 (20)附录2:程序清单 (21)参考文献 (24)1 方法论证1.1 系统的设计任务设计单片机主电路、数据采集接口电路、LED显示电路、拨码控制电路,能够实现对8路电压值进行测量,能够显示当前测量通道号及电压值,电压精度小数点后1位,可以通过键盘选择循环显示8路的检测电压值和指定通道的检测电压值。
1.2 设计方案将数据采集接口电路输入电压传入ADC0809数模转换元件,经转换后通过D0至D7与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED数码显示管显示。
基于8051单片机的简易数字电压表设计
基于8051单片机的简易数字电压表设计姓名:吴建亮班级:电信1202 学号:201203090224摘要电压表应用十分广泛,但大部分是模拟电压表,而由于其特性,反应速度慢,读数麻烦并且误差较大,所以为适应不断快速发展的高速信号领域,已经广泛使用数字电压表。
本实验设计是基于51单片机开发板ESDM-3A实现的一种数字电压表系统。
该设计采用8051单片机作为控制核心,以ADC0为模数转换数据采样,实现被测电压的数据采样,外部采用LCD12864液晶显示电压表的电压值。
1.设计任务和要求1.1 设计任务设计制作一个简易直流电压表,该直流电压表能测量直流电压。
各硬件模块如图1.1所示。
输入电压AD转换器8051单片机LCD12864图1.1硬件框图1.2 设计要求(1)ADC0的工作方式设置如下:采用单端输入,模拟输入电压从P2.0输入;选择DDV作为参考电压源;转换时钟频率设置为2MHz;采用写“AD0BUSY”启动A/D转换。
(2)采用定时器中断每隔0.5s启动一次A/D转换;通过ADC0中断服务程序读取转换值。
2.设计方案2.1 硬件电路硬件模块如上图1.1所示。
输入电压由开发板上J8接口的第2脚0~5.0V接跳线至单片机扩展接口J7的第4脚P2.0,调节电位器RP3实现不同电压的输入。
AD转换器、单片机、液晶屏在开发板已经连接好。
下面简单介绍所用的器件。
C8051F360单片机主要模拟和数字资源包括:(1)高速8051微控制器内核。
(2)10位逐次逼近型A/D转换器。
(3)10位电流输出D/A转换器。
(4)两个模拟电压比较器CP1和CP0。
(5)片内锁相环PLL。
(6)扩充中断处理系统。
(7)存储器,256字节内部RAM;1024字节XRAML;32字节闪存存储器。
(8)数字资源,多达39个I/O引脚,全部为三态双向口,允许与5V系统接口。
(9)时钟源,2个内部振荡器;80kHz低频低功耗振荡器。
基于单片机的简易数字电压表设计
基于单片机的简易数字电压表设计随着电子技术的迅猛发展,数字电压表在实验室、工业和日常生活中的应用越来越广泛。
本文将详细介绍基于单片机的简易数字电压表的设计过程,包括系统设计思路、硬件选型、软件实现以及调试过程。
设计一个简易数字电压表的目标是实现对直流电压的实时测量,并将其以数字形式显示。
该系统的核心是单片机,它负责数据采集、处理及结果显示。
选用单片机的原因在于其体积小、成本低、易于编程等优点。
在硬件设计方面,系统主要由输入电路、单片机、显示模块和电源模块组成。
输入电路的作用是将待测电压信号转化为单片机可处理的电信号。
一般采用分压电路,通过电阻分压的方法,将高电压降低至单片机的可接受范围。
还需考虑输入电压的范围,以确保测量精度和系统安全。
选用的单片机需具备一定的模拟输入功能,以便对电压进行采样。
常用的单片机型号有51系列、AVR系列及STM32系列等,其中STM32系列因其较高的性能和丰富的外设而受到广泛关注。
在设计中,应根据具体需求选择合适的单片机,并进行必要的引脚配置。
显示模块的选择是系统设计的重要环节,常用的有液晶显示屏(LCD)和七段数码管。
液晶显示屏具有显示内容丰富、可视角度广等优势,但其功耗相对较高。
而七段数码管则以其简洁明了的特性广泛应用于数字电压表中。
在本设计中,建议使用LCD显示模块,以便于显示多位数值及相关信息。
电源模块的设计需确保系统的稳定运行。
一般采用稳压电源,为单片机及其他外设提供稳定的电压供应。
需考虑电源的功耗及散热问题,确保系统在长期工作中不会出现故障。
数据处理模块是整个系统的核心,其主要任务是将采集到的模拟电压信号转换为相应的数字值。
可采用模数转换(ADC)技术,将模拟信号转换为数字信号,并进行必要的线性化处理。
处理过程中,应考虑量化误差及噪声对测量结果的影响。
数据显示模块负责将处理后的电压值通过LCD显示出来。
在这一过程中,需要对显示内容进行格式化,以确保信息的清晰易读。
基于单片机的简易数字电压表的设计
基于单片机的简易数字电压表设计作者姓名:专业班级:指导教师:摘要随着电子科学技术的日益发展,电子测量也变得越来越普遍,并且对测量的功能要求也越来越高,所以数字电压表就成为一种不可或缺的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成数字量并加以显示。
与传统的模拟式电压表相比,具有显示清晰直观,读数准确,测量范围广,扩展能力强等优点。
与传统的以指针刻度盘进行读数相比,避免了读数的视差以及视觉疲劳,非常的直观,方便。
本文介绍了一种基于单片机的简易数字电压表的设计。
该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片AT89C51来完成,其负责把ADC0808传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0808芯片工作。
该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。
此数字电压表可以测量0-5V的1路模拟直流输入电压值,并通过一个四位一体的7段数码管显示出来。
关键词:数字电压表 A/D转换 AT89C51 ADC0808成都理工大学2013届本科毕业设计(论文)2Design of Simple Digital Voltmeter Based on Single-chip MicrocontrollerAbstract:With the increasing development of science and technology, electronics, electronic measurements are also becoming more common, and the measurement of the functional requirements are also increasing, so the digital voltmeter has become an indispensable measuring instruments. Digital voltmeter referred DVM, it is the use of digital measurement technique, the continuous analog to digital conversion and display. With traditional analog voltmeter, compared with a clear display and intuitive, accurate readings, wide measurement range, scalability and other advantages. With the traditional dial for reading the pointer compared avoid parallax reading and visual fatigue, very intuitive and convenient.This paper which introduces a kind of simple digital voltmeter is based on single-chip microcontroller design. The circuit of the voltage meter is mainly consisted of three mould pieces: A/D converting mould piece, A/D converting is mainly completed by the ADC0808, it converts the collected analog data into the digital data and transmits the outcome to the manifestation controlling mould piece. Data processing is mainly completed by the AT89C51 chip, it processes the data produced by the ADC0808 chip and generates the right manifestation codes, also transmits the codes to the manifestation controlling mould piece. Also, the AT89C51 chip controls the ADC0808 chip to work.The voltmeter features in simple electrical circuit, lower use of elements, low cost, moreover, its measuring precision and reliability. The voltmeter is capable of measuring voltage inputs from 1 route ranging from 0 to 5 volt, and displaying the measurements though a digital code tube of 7 pieces of LED.Keywords:Digitalvoltmeter A/Dconverter AT89C51 ADC0808成都理工大学2013届本科毕业设计(论文)2目录第1章前言 (1)1.1研究背景及意义 (1)1.1国内外数字电压表的发展及现状 (1)1.2本研究课题的来源及主要研究内容,研究成果 (2)第2章总体设计方案 (3)2.1数字电压表设计的两种方案 (3)2.1.1由数字电路及芯片构建 (3)2.1.2由单片机系统及A/D转换芯片构建 (3)2.2设计要求 (4)2.3 设计思路 (4)2.4 设计方案 (4)第3章硬件电路设计 (6)3.1 A/D转换器选择 (6)3.1.3 ADC0808的外部引脚特征 (7)3.1.4 ADC0808的内部结构及工作流程 (8)3.2 单片机系统 (10)3.2.1 单片机的选择 (10)3.2.2 AT89C51各引脚功能 (10)3.3 复位电路和时钟电路 (13)3.3.1 复位电路设计 (13)3.3.2 时钟电路设计 (13)3.4 LED显示系统设计 (14)3.4.1 LED基本结构 (14)3.4.2 LED显示器的选择 (15)3.4.3 LED译码方式 (15)3.4.4 LED显示器与单片机接口设计 (16)3.5 总体电路设计 (17)第4章程序设计 (19)4.1 程序设计总方案 (19)4.2 系统子程序设计 (19)4.2.1 初始化程序 (19)4.2.2 A/D转换子程序 (20)4.2.3 显示子程序 (20)第5章系统仿真及测试 (22)5.1 软件调试 (22)5.2 测试结果及误差分析 (22)5.2.1 测试结果 (22)5.2.2 误差分析 (24)5.3 硬件测试 (25)5.3.1 排除电源故障 (25)5.3.2 排除元器件失效 (26)5.3.3 排除逻辑连接故障 (26)结论 (27)致谢 (28)参考文献 (29)2第1章前言1.1研究背景及意义在现代测量技术中,常常需要用数字电压表进行现场检测,将测量的数据送入微计算机系统中,完成计算、存储、控制和显示等功能。
基于单片机的数字电压表的设计
目录第1章引言 (1)1.1设计要求 (1)1.2 设计思路 (2)1.3 设计方案 (2)第2章硬件电路设计 (1)2.1 A/D转换模块 (1)2.2 单片机系统 (5)2.3 复位电路和时钟电路 (7)2.4 LED显示系统设计 (8)2.5 总体电路设计 (10)第3章程序设计 (1)3.1 程序设计总方案 (1)3.2 系统子程序设计 (1)第4章仿真与调试 (1)4.1 软件调试 (1)4.2 显示结果及误差分析 (1)结论 (1)参考文献 (1)致谢 (1)附录:程序代码 (1)第1章引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC 化),另一方面,精度也从0.01%-0.005%。
基于单片机的数字电压表设计
基于单片机的数字电压表设计数字电压表在电子技术中使用非常广泛,可以用来测量电路中的直流电压、交流电压以及各种信号的幅度等等。
基于单片机的数字电压表实现了数字电压的读取和显示,具有精确、稳定、易操作等特点,下面将介绍基于单片机的数字电压表的设计原理及实现方法。
一、系统结构基于单片机的数字电压表主要是由程序控制模块、模数转换模块和数字显示模块组成。
程序控制模块主要用来完成开机、校准、测试、功能选择等功能;模数转换模块主要将电压信号转换成数字量,供数字显示模块使用;数字显示模块主要将转换后的数字量显示在LCD液晶屏上。
二、硬件设计1.电源电路电源电路主要用来为电路提供稳定的电压和电流,本电路采用稳压电源芯片LM7805实现,稳压芯片输入端连接外部DC12V/1A电源,输出端连接电路板上的整个电路。
2.输入电路输入电路主要用来将被测电源的电压传递给单片机,常规情况下采用分压电路实现。
在本电路中,电阻R1和电容C1为RC滤波电路,起到滤波作用,防止干扰信号的影响;电阻R2是分压电路中的电阻,它根据电压值的不同设置不同的值,以保证被测电压在单片机内部转换过程中不会对单片机产生影响。
3.单片机模块单片机模块是系统的核心部分,本电路中选用STM32F103C8T6单片机实现模数转换和数码管控制,使用C 语言编写程序,通过模拟输入端口读取电压并进行模数转换,将得到的数字使用查表法将其转换为数码管控制脉冲,控制数码管的亮灭实现数字显示。
4.数字显示模块数字显示模块主要由七段数码管、LCD液晶屏幕、导线和电容等器组成,七段数码管用于展示测量到的电压大小,LCD 液晶屏用于展示功能选项、单位等信息。
导线是电路板内部连接线路,电容等器用来平滑电压波动。
三、软件设计1.引脚定义在程序中首先定义STM32F103C8T6单片机内存地址、输入输出引脚和电平状态,其中A0口用来读取被测电压;B0-B7口用来控制七段数码管的亮灭;C0口用来输出PWM,控制风扇的旋转速度;D0口用来控制蜂鸣器的开启和关闭。
基于单片机的简易数字电压表的设计(1)(DOC)
目录1.引言 (1)2.设计的总体方案 (2)2.1 设计要求 (2)2.2 设计思路 (2)2.3 设计方案 (2)3.硬件设计方案 (3)3.1 A/D转换模块 (3)3.1.1 逐次逼近型A/D转化器原理 (3)3.1.2 PCF8591主要特性 (3)3.1.3 PCF8591的外部引脚特性 (4)3.1.4 PCF8591的内部结构及工作流程 (5)3.2 单片机系统 (7)3.2.1 STC90C51性能 (7)3.2.2 STC90C51各引脚功能 (7)3.3 复位电路和时钟电路 (9)3.3.1 复位电路的设计 (9)3.3.2 时钟电路的设计 (9)3.4 LED显示电路的设计 (10)3.4.1 LED基本结构 (10)3.4.2 LED显示器的选择 (11)3.4.3 LED译码方式 (11)3.4.4 LED显示器与单片机接口技术 (12)3.5 总体电路的设计 (13)4.程序设计 (15)4.1 程序设计总方案 (15)4.2 系统子程序设计 (15)4.2.1 初始化程序 (15)4.2.2 A/D转换子程序 (15)4.2.3 显示子程序 (16)5.仿真 (17)5.1 软件调试 (17)5.2 显示结果及误差分析 (17)5.2.1 显示结果 (17)5.2.2 误差分析 (19)结论 (20)参考文献 (21)设计程序 (22)1 引言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
基于_单片机的简易数字直流电压表毕业设计
基于MCS-51单片机的简易数字直流电压表设计设计一个简易数字直流电压表。
(量程0V-2V、测量速度为大于等于2 次/秒、测量误差在±0.05V以内,有超限报警、数码管显示。
)1:系统设计(1)分析任务要求,写出系统整体设计思路从试题的要求分析,主要包括的内容为ADC 转换电路的控制、采用定时器定时读取ADC 转换器的数据、将ADC 转换器的数据计算为对应的电压值,最后在数码管上显示出来。
整体设计思路:硬件采用单片机的P0 输出数码管的7 段码,P2 口输出数码管的位控信号。
用P1 的三个I/O 管脚连接ADC 转换器的接口,通过查询定时器T0 中断标志是否有效来启动ADC 转换器的工作,并读取ADC 转换器的转换结果。
然后,根据ADC 转换器的参考电压将ADC 转换器的转换结果计算为对应的电压值,并在数码管上显示出来。
(2)选择单片机型号和所需外围器件型号,设计单片机硬件电路原理图采用MCS51 系列单片机At89S51 作为主控制器,外围电路器件包括数码管驱动、AD 转换器TLC549、基准电压TL431 等。
数码管驱动采用2 个四联共阴极数码管显示,由于单片机驱动能力有限,采用74HC244 作为数码管的驱动。
在74HC244 的7 段码输出线上串联100 欧姆电阻起限流作用。
AD 转换器的参考电压由精密基准电源TL431 提供,标准参考电压Vref+为2.5 伏, Vref-为0 伏。
由于0V-2V 内的测量误差控制在±0.05V 内,因此8 位A/D 转换器即可满足要求。
AD 转换器TLC549是以8 位开关电容逐次逼近A/D 转换器为基础而构造的CMOS A/D 转换器。
它们设计成能通过3态数据输出和模拟输入与微处理器或外围设备串行接口。
TLC549 仅用输入/输出时钟(I/O CLOCK)和芯片选择(CS)输入作数据控制。
TLC549 的IO CLOCK 输入频率最高可达1.1MHz。
基于单片机的简易数字电压表设计-精品
第1章课程设计的目的和意义1.1 课程设计的目的1.运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到PCB制版,再到软件编程以及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。
2.能够上网查询器件资料,培养对新知识,新技术的独立的学习能力和应用能力。
3.能够独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为今后的毕业设计及科研工作奠定良好的基础。
1.2课程设计的意义单片机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。
本课题主要实现利用单片机对电压表进行控制。
第2章系统方案设计及确定2.1 系统方案的提出根据简易数字电压表设计的需要,为单片机和A/D转换器提供以下设计方案。
2.1.1 单片机方案方案一:AT89S51AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。
AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
方案二:AT89C51AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k字节Flash可擦写存储器(PEROM)。
基于单片机实现简易数字电压表的设计.
基于单片机实现简易数字电压表的设计任务的功能要求:1. 可以选择8路0~5V的输入电压值;2. 可以轮流显示或是单路选择显示;3. 测量显示的最小分辨率为0.01V,测量误差正负0.02V;4. 具有电压过低、过高的声光报警功能。
在此我们选择的单片机为STC89C52芯片、ADC0809数模转换器(因仿真软件没有,故选用ADC0808替代,其实差不多的,就是输出管脚的排序问题)、LCD1602液晶屏(接线相对与数码管简单多了)。
在protel软件中的仿真电路图如下:P2.7的开关的选择是选择显示1,2,3,4路或是5,6,7,8路。
下面的单片机的C程序长是长了点,但确实运行有效,主要花费在8路的数据实现上了,另外其中的报警设置也是思路中有一路需要报警也即报警的。
关于各个芯片及液晶的资料自己去网上找就好了。
另外P0端口必须接上拉电阻!lcd1602的3脚管必须接可调电阻!单片机的C程序清单:#include <reg52.h>#include <intrins.h>#include<string.h>#define dat_port P0#define uchar unsigned char #define uint unsigned int#define delay4us() {_nop_();_nop_();_nop_();_nop_();}sbit AB1=P3^2;sbit AB2=P3^1;sbit AB3=P3^0;sbit AB5=P3^3;sbit AB4=P2^7;sbit RS=P2^0;//RS=1 数据 RS=0 命令sbit RW=P2^1;//RW=1 读取 RW=0 写入sbit E=P2^2;//E 使能信号sbit EOC=P2^4;sbit OE=P2^5;sbit START=P2^3;sbit CLOCK=P2^6;uchar X[4]={"0000"};void Refresh_show();void delay50us(uint m){uint n,k;for(n=m;n>0;n--)for(k=25;k>0;k--);}void Write_LCD_Command(uchar cmd);//向LCD写入命令void Write_LCD_Data(uchar dat); //向LCD写入一个字节的数据函数 void Initialize_LCD1602(); //液晶初始化函数void LCD_Display(uchar *str);//在LCD上显示字符串//---------------忙检查-------------------//uchar LCD_Busy_Check(){uchar LCD_Status;RS = 0;RW = 1;E = 1;delay50us(4);LCD_Status = P0;E = 0;return LCD_Status;}//--------------向LCD写入命令--------------------//void Write_LCD_Command(uchar cmd){while((LCD_Busy_Check()& 0x80)==0x80); //忙等待RS = 0;RW = 0;E = 0;P0 = cmd;delay4us();E = 1;delay4us();E = 0;}//-----------向LCD写入一个字节的数据函数-----------------*/void Write_LCD_Data(uchar dat){while((LCD_Busy_Check()&0x80)==0x80);RS = 1;RW = 0;E = 0;P0 = dat;delay4us();E = 1;delay4us();E = 0;}//-----------LCD初始化-----------------*/void Initialize_LCD1602() //液晶初始化函数{Write_LCD_Command(0x38);delay50us(10); //功能设置,数据长度为8位,双行显示,5×7点阵字体Write_LCD_Command(0x0C);delay50us(10); // 显示开,关光标Write_LCD_Command(0x06);delay50us(10); //字符进入模式:屏幕不动,字符后移Write_LCD_Command(0x01); delay50us(10);//清屏}//-----------在LCD上显示字符串-----------------*/void LCD_Display(uchar *str){uchar i;for(i=0;i<strlen(str);i++){Write_LCD_Data(str[i]);delay50us(100);}}unsigned long dat_adc0808;uchar display_buffer[][16]={{"DC1=0.00DC2=0.00"}, {"DC3=0.00DC4=0.00"}};uchar display1_buffer[][16]={{"DC5=0.00DC6=0.00"}, {"DC7=0.00DC8=0.00"}};uint adc0808_init() // AD初始化{START=0;OE=0;START=1;START=0;while(EOC==0);OE=1;dat_adc0808=P1;OE=0;return dat_adc0808;}void Refresh_show0() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[0]=1;elseX[0]=0;display_buffer[0][4] = t/100+'0'; //整数位display_buffer[0][6] = t/10%10+'0'; //两个小数位 display_buffer[0][7] = t%10+'0'; }void Refresh_show1() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[1]=1;elseX[1]=0;display_buffer[0][12] = t/100+'0'; //整数位display_buffer[0][14] = t/10%10+'0'; //两个小数位 display_buffer[0][15] = t%10+'0'; }void Refresh_show2() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[2]=1;elseX[2]=0;display_buffer[1][4] = t/100+'0'; //整数位display_buffer[1][6] = t/10%10+'0'; //两个小数位 display_buffer[1][7] = t%10+'0'; }void Refresh_show3() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[3]=1;elseX[3]=0;display_buffer[1][12] = t/100+'0'; //整数位display_buffer[1][14] = t/10%10+'0'; //两个小数位 display_buffer[1][15] = t%10+'0';}void Refresh1_show0() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[0]=1;elseX[0]=0;display1_buffer[0][4] = t/100+'0'; //整数位display1_buffer[0][6] = t/10%10+'0'; //两个小数位 display1_buffer[0][7] = t%10+'0';}void Refresh1_show1() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[1]=1;elseX[1]=0;display1_buffer[0][12] = t/100+'0'; //整数位display1_buffer[0][14] = t/10%10+'0'; //两个小数位 display1_buffer[0][15] = t%10+'0'; }void Refresh1_show2() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[2]=1;elseX[2]=0;display1_buffer[1][4] = t/100+'0'; //整数位display1_buffer[1][6] = t/10%10+'0'; //两个小数位 display1_buffer[1][7] = t%10+'0';}void Refresh1_show3() //刷新显示{uint t=dat_adc0808*500.0/255; //if(t>400||t<100)X[2]=1;elseX[2]=0;display1_buffer[1][12] = t/100+'0'; //整数位display1_buffer[1][14] = t/10%10+'0'; //两个小数位 display1_buffer[1][15] = t%10+'0'; }void main(){TMOD=0x02;TH0=0x14;TL0=0x00;IE=0x82;TR0=1;Initialize_LCD1602();delay50us(10);while(1){if(AB4==1){AB1=0;AB2=0;AB3=0;adc0808_init();Refresh_show3();Write_LCD_Command(0x80);//设置显示的初始位置LCD_Display(display_buffer[0]); //显示测得的数据AB1=0;AB2=0;AB3=1;adc0808_init();Refresh_show0();Write_LCD_Command(0x80);//设置显示的初始位置LCD_Display(display_buffer[0]); //显示测得的数据 AB1=0;AB2=1;AB3=0;adc0808_init();Refresh_show1();Write_LCD_Command(0xC0);//设置显示的初始位置LCD_Display(display_buffer[1]); //显示测得的数据 AB1=0;AB2=1;AB3=1;adc0808_init();Refresh_show2();Write_LCD_Command(0xC0);//设置显示的初始位置LCD_Display(display_buffer[1]); //显示测得的数据 if(X[0]||X[1]||X[1]||X[2]==1) AB5=1;elseAB5=0;}else{AB1=1;AB2=0;AB3=0;adc0808_init();Refresh1_show3();Write_LCD_Command(0x80);//设置显示的初始位置LCD_Display(display1_buffer[0]); //显示测得的数据 AB1=1;AB2=0;AB3=1; adc0808_init();Refresh1_show0();Write_LCD_Command(0x80);//设置显示的初始位置LCD_Display(display1_buffer[0]); //显示测得的数据 AB1=1;AB2=1;AB3=0; adc0808_init();Refresh1_show1();Write_LCD_Command(0xC0);//设置显示的初始位置LCD_Display(display1_buffer[1]); //显示测得的数据 AB1=1;AB2=1;AB3=1; adc0808_init();Refresh1_show2();Write_LCD_Command(0xC0);//设置显示的初始位置LCD_Display(display1_buffer[1]); //显示测得的数据 if(X[0]||X[1]||X[1]||X[2]==1) AB5=1;elseAB5=0;}}}void Timer0_INT() interrupt 1 {CLOCK=!CLOCK; }。
基于单片机的简单数字电压表
河南科技学院新科学院单片机课程设计报告题目:数字电压表设计专业班级:电气工程及其自动化106姓名:王时间:2012.12.03 ~2012.12.23指导教师:苗青林王超完成日期:2012年12月21 日数字电压表设计任务书一设计目的与要求(一)基本功能1.测压范围0—5V2.精度误差0.02V以内3.能够同时采集8路数据并能循环(6位)显示4.具备过压保护功能(二)扩展功能1.测压范围扩展至 -5V—+5V2.在测直流电压时表笔能够自动调整极性二计划完成时间三周1.第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。
2.第二周完成软件的具体设计和硬件的制作。
3.第三周完成软件和硬件的联合调试。
目录1 引言 (1)2 设计总方案 (1)2.1设计要求 (1)2.2 设计思路 (2)2.3 总体设计框图 (2)3 设计原理分析 (2)3.1 A/D转换电路 (2)3.2 过压保护电路 (4)3.3 数码管显示电路 (5)3.4 震荡与复位电路 (5)3.5 拓展功能负压显示 (6)3.6 八通道循环显示 (7)4 总结体会 (8)参考文献 (8)附录1 (9)附录2 (13)简易数字电压表设计摘要:本课题实验主要采用AT89C51芯片和ADC0808芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.019V。
该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。
A/D转换主要由芯片ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片AT89C51来完成,其负责把ADC0808传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0808芯片的工作。
显示模块主要由7段数码管及相应的驱动芯片(74HC245)组成,显示测量到的电压值。
基于单片机的简易数字电压表的设计
基于单片机的简易数字电压表的设计一、背景随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
数字电压表(DigitalV oltmeter)简称DVM,它就是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。
本设计AT89C51单片机的一种电压测量电路,该电路采用ADC0808本文介绍一种基于A/D转换电路,测量范围直流0~5V 的4路输入电压值,并在四位LED 数码管上显示或单路选择显示。
测量最小分辨率为0.019V,测量误差约为正负0.02V。
二、设计原理和要求本设计是利用单片机AT89C51与ADC0808设计一个数字电压表,测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
2.1数字电压表的实现原理ADC0808是8位的A/D转换器。
当输入电压为5.00V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196(5/255)。
ADC0808具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。
如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8 路输入电压进行测量。
LED 数码管显示采用软件译码动态显示。
通过按键选择可对8路循环显示,也可单路显示,单路显示可通过按键选择显示的通道数。
2.2数字电压表的设计要求可以测量0~5V范围内的3路直流电压值。
在4位LED数码管上轮流显示各路电压值或单路选择显示,其中3位LED数码管显示电压值,显示范围为0.00V~5.00V,1位LED数码管显示路数,3路分别为0-2。
电子测量大作业(基于C51单片机的简单数字电压表)
电⼦测量⼤作业(基于C51单⽚机的简单数字电压表)基于单⽚机的简易数字电压表的设计⼀、概述本课题设计是⼀种基于单⽚机的简易数字电压表的设计。
该设计主要由三个模块组成:A/D转换模块,数据处理模块及显⽰模块。
A/D转换主要由芯⽚ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯⽚AT89C51来完成,其负责把ADC0808传送来的数字量经过⼀定的数据处理,产⽣相应的显⽰码送到显⽰模块进⾏显⽰;此外,它还控制着ADC0808芯⽚⼯作。
⼆、主要芯⽚1、ADC0808 主要特性ADC0808是CMOS单⽚型逐次逼近式A/D转换器,带有使能控制端,与微机直接接⼝,⽚内带有锁存功能的8路模拟多路开关,可以对8路0-5V输⼊模拟电压信号分时进⾏转换,由于ADC0808设计时考虑到若⼲种模/数变换技术的长处,所以该芯⽚⾮常适应于过程控制,微控制器输⼊通道的接⼝电路,智能仪器和机床控制等领域。
ADC0808主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接⼝;可锁存三态输出,输出与TTL兼容;转换时间:128µs;转换精度:0.2%;单个+5V电源供电;模拟输⼊电压范围0- +5V,⽆需外部零点和满度调整;低功耗,约15mW。
ADC0808芯⽚有28条引脚,采⽤双列直插式封装,其引脚图如图3所⽰。
图1 ADC0808引脚图下⾯说明各个引脚功能:IN0-IN7(8条):8路模拟量输⼊线,⽤于输⼊和控制被转换的模拟电压。
地址输⼊控制(4条):ALE: 地址锁存允许输⼊线,⾼电平有效,当ALE为⾼电平时,为地址输⼊线,⽤于选择IN0-IN7上那⼀条模拟电压送给⽐较器进⾏A/D转换。
ADDA,ADDB,ADDC: 3位地址输⼊线,⽤于选择8路模拟输⼊中的⼀路,其对应关系如表1所⽰:表1 ADC0808通道选择表START:START为“启动脉冲”输⼊法,该线上正脉冲由CPU送来,宽度应⼤于100ns,上升沿清零SAR,下降沿启动ADC⼯作。
基于单片机的数字电压表设计
基于单片机的数字电压表设计在当今的电子世界中,电压表是一种必不可少的测量工具。
随着技术的进步,数字电压表因其精度高、易于读取、稳定性好等优点逐渐取代了传统的模拟电压表。
本文将探讨如何基于单片机设计数字电压表。
一、硬件设计1、1传感器模块传感器模块是数字电压表的重要组成部分,负责将输入的模拟电压转化为可被单片机处理的数字信号。
通常,我们使用ADC(模数转换器)来实现这一功能。
ADC的精度直接决定了电压表的测量精度。
1、2单片机模块单片机是数字电压表的“大脑”,负责控制整个系统的运行。
我们选择具有较高性能和可靠性的单片机,如Arduino、STM32等。
这些单片机都具有丰富的外设接口,便于实现复杂的控制逻辑。
1、3显示模块显示模块负责将单片机的处理结果呈现给用户。
常用的显示模块包括LED数码管、LCD液晶屏等。
选择适合的显示模块,可以大大提升电压表的易用性。
二、软件设计2、1数据采集与处理软件首先通过ADC从传感器模块读取模拟电压,然后对其进行处理,得到实际的电压值。
这一步的关键在于选择合适的ADC算法和设置合适的参考电压。
2、2数据输出与存储处理后的电压值需要被输出并存储起来。
通常,我们使用LCD液晶屏将电压值实时显示出来,同时也可以通过串口将数据传输到计算机或云端进行存储和分析。
三、精度与稳定性优化3、1硬件校准为了提高电压表的测量精度,我们可以在生产过程中对每一块电压表进行硬件校准。
通过调整ADC的参考电压或者在软件中进行校准算法的优化,可以有效提高电压表的测量精度。
3、2软件滤波在实际应用中,由于各种噪声和干扰的存在,电压表的读数可能会出现波动。
我们可以通过软件滤波算法,如平均滤波、卡尔曼滤波等,来减小这些干扰对测量结果的影响。
四、应用与扩展基于单片机的数字电压表不仅可以在实验室或工业现场使用,还可以扩展出更多的应用场景。
例如,通过加入无线通信模块,我们可以实现远程监控;通过加入更多的传感器,我们可以实现多通道的电压测量;通过与计算机或云端进行数据交互,我们可以实现大数据分析和预测。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目设计报告子项目名称:简易信号发生器设计专业:班级学号:姓名:同组学生姓名学号:任课教师:成绩:目录1 引言 (1)2 设计总体方案 (2)2.1设计要求 (2)2.2 设计思路 (2)2.3 设计方案 (2)3 硬件电路设计 (3)3.1 A/D转换模块 (3)3.2 单片机系统 (7)3.3 复位电路和时钟电路 (9)3.4 LED显示系统设计 (10)3.5 总体电路设计 (12)4 程序设计 (13)4.1 程序设计总方案 (13)4.2 系统子程序设计 (13)5 程序代码 ....................................................... 错误!未定义书签。
结论 (17)1 引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用[1]。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型[4]。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC 化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面[3]。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号[11]。
2 设计总体方案2.1设计要求⑴以MCS-51系列单片机为核心器件,组成一个简单的直流数字电压表。
⑵采用1路模拟量输入,能够测量0-5V 之间的直流电压值。
⑶电压显示用4位一体的LED 数码管显示,至少能够显示两位小数。
⑷尽量使用较少的元器件。
2.2 设计思路⑴根据设计要求,选择AT89C51单片机为核心控制器件。
⑵A/D 转换采用ADC0809实现,与单片机的接口为P1口和P2口的高四位引脚。
⑶电压显示采用4位一体的LED 数码管。
⑷LED 数码的段码输入,由并行端口P2产生:位码输入,用并行端口P2口控制显示段码,P0.6和P0.7分别控制显示低位、高位数的数码管位选端。
2.3 设计方案硬件电路设计由6个部分组成; A/D 转换电路,AT89C51单片机系统,LED 显示系统、时钟电路、复位电路以及测量电压输入电路。
硬件电路设计框图如图1所示。
图1 数字电压表系统硬件设计框图时钟电路 复位电路 A/D 转换电路 测量电压输入显示系统 AT89C51P1P2P2P03 硬件电路设计3.1 A/D 转换模块现实世界的物理量都是模拟量,能把模拟量转化成数字量的器件称为模/数转换器(A/D 转换器),A/D 转换器是单片机数据采集系统的关键接口电路,按照各种A/D 芯片的转化原理可分为逐次逼近型,双重积分型等等。
双积分式A/D 转换器具有抗干扰能力强、转换精度高、价格便宜等优点。
与双积分相比,逐次逼近式A/D 转换的转换速度更快,而且精度更高,比如ADC0809、ADC0808等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送到单片机进行分析和显示。
一个n 位的逐次逼近型A/D 转换器只需要比较n 次,转换时间只取决于位数和时钟周期,逐次逼近型A/D 转换器转换速度快,因而在实际中广泛使用[1]。
3.1.1 逐次逼近型A/D 转换器原理逐次逼近型A/D 转换器是由一个比较器、A/D 转换器、存储器及控制电路组成。
它利用内部的寄存器从高位到低位一次开始逐位试探比较。
转换过程如下:开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D 转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量[5]。
其原理框图如图2所示:图2 逐次逼近式A/D 转换器原理图3.1.2 ADC0809 主要特性ADC0808是CMOS 单片型逐次逼近式A/D 转换器,带有使能控制端,与微机直顺序脉冲发生器 逐次逼近寄存器 ADC 电压 比较器输入电压输入数字量接接口,片内带有锁存功能的8路模拟多路开关,可以对8路0-5V输入模拟电压信号分时进行转换,由于ADC0809设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制,微控制器输入通道的接口电路,智能仪器和机床控制等领域[5]。
ADC0809主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接口;可锁存三态输出,输出与TTL兼容;转换时间:128μs;转换精度:0.2%;单个+5V电源供电;模拟输入电压范围0- +5V,无需外部零点和满度调整;低功耗,约15mW[6]。
3.1.3ADC0809的外部引脚特征ADC0808芯片有28条引脚,采用双列直插式封装,其引脚图如图3所示。
图3 ADC0808引脚图下面说明各个引脚功能:IN0-IN7(8条):8路模拟量输入线,用于输入和控制被转换的模拟电压。
地址输入控制(4条):ALE:地址锁存允许输入线,高电平有效,当ALE为高电平时,为地址输入线,用于选择IN0-IN7上那一条模拟电压送给比较器进行A/D转换。
ADDA,ADDB,ADDC:3位地址输入线,用于选择8路模拟输入中的一路,其对应关系如表1所示:表1 ADC0808通道选择表地址码对应的输入通道C B A0 0 01 1 1 1 011111111IN0IN1IN2IN3IN4IN5IN6IN7START:START为“启动脉冲”输入法,该线上正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。
EOC: EOC为转换结束输出线,该线上高电平表示A/D转换已结束,数字量已锁入三态输出锁存器。
D1-D8:数字量输出端,D1为高位。
OE:OE为输出允许端,高电平能使D1-D8引脚上输出转换后的数字量。
REF+、REF-:参考电压输入量,给电阻阶梯网络供给标准电压。
Vcc、GND: Vcc为主电源输入端,GND为接地端,一般REF+与Vcc连接在一起,REF-与GND连接在一起.CLK:时钟输入端。
3.1.4 ADC0808的内部结构及工作流程ADC0808由8路模拟通道选择开关,地址锁存与译码器,比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路和三态输出锁存器等组成,其内部结构如图4所示。
图4 ADC0808的内部结构其中:(1)8路模拟通道选择开关实现从8路输入模拟量中选择一路送给后面的比较器进行比较。
(2)地址锁存与译码器用于当ALE信号有效时,锁存从ADDA、ADDB、ADDC 3根地址线上送来的3位地址,译码后产生通道选择信号,从8路模拟通道中选择当前模拟通道。
(3)比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路组成8位A/D转换器,当START信号有效时,就开始对当前通道的模拟信号进行转换,转换完成后,把转换得到的数字量送到8位三态锁存器,同时通过引脚送出转换结束信号。
(4)三态输出锁存器保存当前模拟通道转换得到的数字量,当OE信号有效时,把转换的结果送出。
ADC0808的工作流程为:(1)输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器从8路模拟通道中选通1路模拟量送给比较器。
(2)送START一高脉冲,START的上升沿使逐次寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
(3)当转换结束时,转换的结果送入到输出三态锁存器中,并使EOC信号回到高电平,通知CPU已转换结束。
(4)当CPU执行一读数据指令时,使OE为高电平,则从输出端D0-D7读出数据。
3.2 单片机系统3.2.1 AT89C51性能AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式[6]。
3.2.2 AT89C51各引脚功能AT89C51提供以下标准功能:4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。
AT89C51采用PDIP封装形式,引脚配置如图5所示[7]。
图5 AT89C51的引脚图AT89C51芯片的各引脚功能为:P0口:这组引脚共有8条,P0.0为最低位。