基于单片机的LED显示数字电压表
基于单片机的数字电压表设计报告
单片机原理及系统课程设计专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2010 年 3 月 7 日基于单片机的数字电压表设计摘要显示电路输入电路图2.2系统组成框图3.硬件设计3.1系统硬件设计原理通过变量设置选择八路通道中的第三路,将该路模拟电压送入ADC0808相应通道,单片机软件设置ADC0808开始A/D转换,转换结束ADC0808的EOC 端口产生高电平,同时将ADC0808的OE端口置为高电平,单片机将ADC0809转换后的数字量存到片内RAM。
系统调出数据处理子程序,将测量结果转化为0.00~5.00V,最后通过查表将每一位数据输出到LED显示电路,将相应电压显示出来,程序进入下一个循环。
单片机的P0.0~P0.7作为4位动态数码显示管的段显示控制。
P2.1~P2.3作为4位动态显示管的位显示控制。
3.2硬件设计原理图在Proteus仿真环境下所搭建的系统硬件电路图如图3.2所示。
图3.2系统原理图图4.2 程序流程图(a)主程序流程图(b)AD转换流程图5.系统调试及仿真结果6.总结两周的课程设计结束了,在这过程中,我学到了很多东西。
首先,我学会了单片机设计的基本过程有哪些,每一过程有哪些基本的步骤,怎样通过查资料去完成这每一步。
其次我巩固了上学期所学的一些单片机知识,从而加深了对ADC0809芯片的功能的了解。
在编程过程中,遇到了许多困难,通过与同学之间的交流和咨询,最后解决了这些困难。
所谓实践出真知,学到的东西只有运用到实践当中,才能真正体会到知识的力量。
最后,通过这次课程设计,让我明白了想法和实践还是有差距的,当你真正去做一件事的时候,你会发现你的想法可能不适用,随时都需要调整,另外扎实的理论知识也是完成设计任何设计必不可少的要素,一切想法离开了理论知识都是空想。
参考文献[1]彭为,黄科,雷道仲.单片机典型系统设计实例精讲[M].电子工业出版社.2009:22-54.[2] 谭浩强.C程序设计(第三版)[M].清华大学出版社.2009:32-46.[3] 王思明,张金敏,张鑫等.单片机原理及应用系统设计(第一版)[M].科学出版社.2012:70-292.附录A源程序代码#include<reg52.h>#include<intrins.h>#define uchar unsigned charsbit p21=P2^1;sbit p22=P2^2;sbit p23=P2^3;sbit EOC=P3^1;sbit OE=P3^0;sbit ST=P3^2;sbit p34=P3^4;sbit p35=P3^5;sbit p36=P3^6;uchar code tab[]={0x40,0x79,0x24,0x30,0x19,0x12};uchar code led[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; uchar code led_[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delay(uchar n){uchar i,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}void convert(uchar volt_data){unsigned int temp;temp=100*volt_data/51;P0=led[temp/100]; //个位上的数字显示p21=1; //选通个位delay(3); //延时p21=0; //不选通个位P0=led_[temp%100/10]; // 十分位的数字显示p22=1; //选通十分位delay(3); //延时p22=0; //不选通十分位P0=led_[temp%10]; //百分位的数字显示p23=1; //选通百分位delay(3); //延时p23=0; //不选通百分位}void main(){uchar volt_data;p34=1;p35=1;p36=0; //选通ADC0808的IN3通道while(1){ST=0;_nop_();ST=1;_nop_();ST=0; //开始转换if(EOC==0) //如果EOC为0,则继续转换delay(100);while(EOC==0); //当EOC为1时,转换完毕OE=1; //数据允许输出标志volt_data=P1; //讲P1口的数据送volt_dataOE=0;convert(volt_data);}}。
基于单片机的数字电压表设计
基于单片机的数字电压表设计一、引言在电子测量领域中,电压表是一种常用的测量仪器,用于测量电路中的电压值。
传统的模拟电压表由于精度低、读数不便等缺点,逐渐被数字电压表所取代。
数字电压表具有精度高、读数直观、抗干扰能力强等优点,广泛应用于工业自动化、电子设备检测、实验室测量等领域。
本文将介绍一种基于单片机的数字电压表设计方案,详细阐述其硬件电路设计、软件编程实现以及系统性能测试。
二、系统总体设计方案(一)设计要求设计一款基于单片机的数字电压表,能够测量 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)来实现。
基于单片机的数字电压表设计
基于单片机的数字电压表设计一、背景介绍随着科技的发展,越来越多的人开始关注电压表。
电压表是一种测量电压的仪器,它可以根据检测到的电压值显示出相应的数字。
传统的电压表使用指针或指示灯来显示电压值,但这种方式会有很多限制,例如不能显示小于1V的电压值,对于高精度的测量也不能满足要求。
为了解决上述问题,本文提出了一种基于单片机的数字电压表设计方案。
二、基于单片机的数字电压表设计原理基于单片机的数字电压表设计采用单片机ADC(模数转换)模块来检测电压值,将检测到的电压值转换成数字值,然后通过LCD(液晶显示器)来显示。
该设计中需要使用一个模拟信号处理电路,它包括一个放大器、一个滤波器和一个参考电压电路。
放大器可以增加信号的幅值,以便更好地检测信号的电压值;滤波器可以削弱外部电磁干扰,以便更好地检测电压值;参考电压电路可以把外部电压转换为0-5V之间的电压,以便更好地检测电压值。
三、设计方案1.单片机:AT89S522.ADC模块:AD79053.放大器:LM3584.滤波器:LPF(低通滤波器)5.参考电压电路:LM3176.LCD显示器:12864四、设计步骤1. 利用LM358放大器和LPF滤波器对测量的电压值进行放大和滤波处理,以获得更精准的数据。
2. 利用LM317参考电压电路将放大后的电压值转换为0-5V的电压,以便更好地检测电压值。
3. 将转换后的电压值送入AD7905 ADC模块,将检测到的电压值转换成数字值。
4. 将转换后的数字值送入AT89S52单片机,并通过12864 LCD显示器将检测到的电压值显示出来。
五、总结本文提出了一种基于单片机的数字电压表设计方案,主要采用单片机ADC模块来检测电压值,并将检测到的电压值转换为数字值,然后通过LCD显示器显示出来。
该设计方案可以满足各种电压测量要求,具有良好的精度和可靠性。
基于单片机的简易数字电压表设计(任务书+论文)
任务书摘要本文介绍了基于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数码显示管显示。
基于单片机的LED显示的电压表电路设计
基于单片机的LED显示的电压表电路设计1 引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用[1]。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC 实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型[4]。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC 化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面[3]。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号[11]。
基于单片机的数字电压表设计_毕业设计(论文) 推荐
毕业设计论文基于单片机的数字电压表设计摘要本文介绍了一种基于单片机的简易数字电压表的设计。
该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片AT89C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0809芯片工作。
该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。
此数字电压表可以测量0-5V的1路模拟直流输入电压值,并通过一个四位一体的7段数码管显示出来。
关键词单片机;数字电压表;A/D转换;AT89C51;ADC0809Design of Digital V oltmeter Based on Single-chip Microcontroller Abstract 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 ADC0809, 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 ADC0809 chip and generates the right manifestation codes, also transmits the codes to the manifestation controlling mould piece. Also, the AT89C51 chip controls the ADC0809 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 Single-chip microcontroller; Digital voltmeter; A/D converter; AT89C51;ADC0809目录引言电压表是固定安装在电力、电信、电子设备面板上使用的仪表,用来测量交、直流电路中的电压。
基于单片机实现的数字电压表温度计设计
摘要:本课题主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.02V。
该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则有芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。
显示模块主要由7段数码管及相应的驱动芯片(74HC245)组成,显示测量到的电压值。
关键词:简易数字电压表、ADC0809、AT89S51。
目录一.总体设计 (3)1.电路设计 (3)1.1基础设计 (3)1.2分频设计 (4)2.程序设计 (4)二.系统测试 (13)1.测试仪器 (13)2.测试过程 (13)2.1测试条件 (13)2.2测试结果 (14)3.结果分析 (15)三.设计总结 (15)四.参考文献 (15)2一.总体设计1.电路设计1.1基础设计利用单片机上的P0作为液晶的数据口,P0-2作为液晶的控制口线。
利用P2口采集0809转换结束后的数据, P3^4; P3^3; P3^2,P1^7分别作为0809的控制口线OE,EOC,START,ALE, P1^6; P1^5; P1^4;作为0809的c,b,a输入通道选择, P3^7,P3^6, P3^5作为按键控制0809的通道选择。
图131.2分频设计通过对单片机的30引脚ALE输出2MHz的时钟信号4分频,产生500KHz的时钟信号作为0809的制作频率,这里我们采用74LS74实现4分频图22.程序设计#include <absacc.h>#include <reg52.h>#include<intrins.h>typedef unsigned int uint;typedef unsigned char uchar;/************************************************************* **************/********IO引脚定义***********************************************************/sbit LCD_RS=P1^0;//定义引脚sbit LCD_RW=P1^1;sbit LCD_E=P1^2;4/********宏定义***********************************************************/#define LCD_Data P0#define Busy 0x80 //用于检测LCD状态字中的Busy标识/********函数声明*************************************************************/ void WriteDataLCD(unsigned char WDLCD); //写数据void WriteCommandLCD(unsigned char WCLCD,BuysC); //写命令unsigned char ReadDataLCD(void); //读数据unsigned char ReadStatusLCD(void); //读状态void LCDInit(void); //初始化void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); //相应坐标显示字节内容void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); //相应坐标开始显示一串内容void Delay5Ms(void); //延时void Delay400Ms(void); //延时/***********写数据********************************************************/void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD(); //检测忙LCD_Data = WDLCD;LCD_RS = 1;LCD_RW = 0;LCD_E = 0; //若晶振速度太高可以在这后加小的延时LCD_E = 0; //延时LCD_E = 1;5}/***********写指令********************************************************/ void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCD(); //根据需要检测忙LCD_Data = WCLCD;LCD_RS = 0;LCD_RW = 0;LCD_E = 0;LCD_E = 0;LCD_E = 1;}/***********读数据********************************************************/ unsigned char ReadDataLCD(void){LCD_RS = 1;LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;return(LCD_Data);}/***********读状态*******************************************************/ unsigned char ReadStatusLCD(void){6LCD_Data = 0xFF;LCD_RS = 0;LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;while (LCD_Data & Busy); //检测忙信号return(LCD_Data);}/***********初始化********************************************************/ void LCDInit(void){LCD_Data = 0;WriteCommandLCD(0x38,0); //三次模式设置,不检测忙信号Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCD(0x08,1); //关闭显示WriteCommandLCD(0x01,1); //显示清屏WriteCommandLCD(0x06,1); //显示光标移动设置WriteCommandLCD(0x0C,1); //显示开及光标设置}/***********按指定位置显示一个字符7*******************************************/void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData){Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码WriteDataLCD(DData);}/***********按指定位置显示一串字符*****************************************/void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData){unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]>=0x20){ //若到达字串尾则退出if (X <= 0xF){ //X坐标应小于0xFDisplayOneChar(X, Y, DData[ListLength]); //显示单个字符ListLength++;X++;}}}8/***********短延时********************************************************/ void Delay5Ms(void){unsigned int TempCyc = 5552;while(TempCyc--);}/***********长延时********************************************************/ void Delay400Ms(void){unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);}}#define adc0809 P2float dy;uint date;uchar td;sbit S1=P3^7;sbit S2=P3^6;sbit S3=P3^5;sbit OE=P3^4;sbit EOC=P3^3;sbit START=P3^2;sbit ALE=P1^7;9sbit c=P1^6;sbit b=P1^5;sbit a=P1^4;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void lcd_disp(){ dy=(dy*10000);LCDInit();DisplayListChar(0,0," Voltege :");DisplayOneChar( 0,1,'T');DisplayOneChar( 1,1,'D');DisplayOneChar( 2,1,td%10+0x30);DisplayOneChar( 9,1,(unsignedlong)dy/10000+0x30);DisplayOneChar( 10,1,'.');DisplayOneChar( 11,1,(unsignedlong)dy/1000%10+0x30);DisplayOneChar( 12,1,(unsignedlong)dy/100%10+0x30);DisplayOneChar( 13,1,(unsignedlong)dy/10%10+0x30);DisplayOneChar( 14,1,(unsignedlong)dy%10+0x30);DisplayOneChar( 15,1,'V');}10void lcd_disp0(){ dy=(dy*1000000-2400000)*0.091+5000;LCDInit();DisplayListChar(0,0," Tempreture :");DisplayOneChar( 0,1,'T');DisplayOneChar( 1,1,'D');DisplayOneChar( 2,1,td%10+0x30);// DisplayOneChar( 6,1,(unsignedlong)dy/1000000+0x30);if(dy>0){ DisplayOneChar( 7,1,(unsignedlong)dy/100000%10+0x30);DisplayOneChar( 8,1,(unsignedlong)dy/10000%10+0x30);DisplayOneChar( 9,1,(unsignedlong)dy/1000%10+0x30);DisplayOneChar( 10,1,'.');DisplayOneChar( 11,1,(unsignedlong)dy/100%10+0x30);DisplayOneChar( 12,1,(unsignedlong)dy/10%10+0x30);// DisplayOneChar( 13,1,(unsignedlong)dy%10+0x30);DisplayOneChar( 14,1,0xdf);DisplayOneChar( 15,1,'C');}}void main(){ date=0;td=0;ALE=0;START=0;OE=0;a=0;b=0;c=0;delay(500);LCDInit();dy=0000;DisplayListChar(0,0," Tempreture :");while(1){if(S1==0){delay(500);td=td+1;if(td>8){td=0;}} if(S2==0){delay(500);if(td>0)td=td-1;}if(S3==0){delay(500);td=0;}if(td==0){a=0;b=0;c=0;}if(td==1){a=1;b=0;c=0;}if(td==2){a=0;b=1;c=0;}if(td==3){a=1;b=1;c=0;}if(td==4){a=0;b=0;c=1;}if(td==5){a=1;b=0;c=1;}if(td==6){a=0;b=1;c=1;}if(td==7){a=1;b=1;c=1;}ALE=0;START=0;ALE=1; START=1; ALE=0;START=0; while(EOC==0);OE=0;OE=1;date=adc0809;OE=0;if(td==0){dy=date*4.37/256;lcd_disp0();}if(td==1){dy=date*4.37/256;lcd_disp();}if(td==2){dy=date*4.37/256;lcd_disp();}if(td==3){dy=date*4.37/256;lcd_disp();}if(td==4){dy=date*4.37/256;lcd_disp();}if(td==5){dy=date*4.37/256;lcd_disp();}if(td==6){dy=date*4.37/256;lcd_disp();}if(td==7){dy=date*4.37/256;lcd_disp();}}}二.系统测试1.测试仪器VC890D万用表;单片机2.测试过程2.1测试条件图32.2测试结果(1)通道0,温度测量图4(2)通道1电压测量通过调节滑动变阻器,改变模拟量的输入,液晶上显示对应的模拟量,实现了模数转化。
基于单片机实现的数字电压表设计报告
基于单片机的数字电压表摘要:本文介绍一种基于89S52单片机的一种电压测量电路,该电路采用ICL7135高精度、双积分A/D转换电路,测量范围直流0-±2000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。
正文着重给出了软硬件系统的各部分电路,介绍了双积分电路的原理,89S52的特点,ICL7135的功能和应用,LCD1601的功能和应用。
该电路设计新颖、功能强大、可扩展性强。
关键词:电压测量,ICL7135,双积分A/D转换器,1601液晶模块Abstract: The introduction of a cost-based 89S52 MCU a voltage measurement circuits, the circuits used ICL7135 high-precision, dual-scoring A/D conversion circuits, measuring scope DC 0-2000 volts, the use of LCD that can be carried out with a PC serial communications. The paper focuses on providing a software and hardware system components circuit, introduced double integral circuit theory, 89S52 features ICL7135 functions and applications, LCD1601 functions and applications. the circuit design innovative, powerful, can be expansionary strong. Key Words: Digital Voltmeter ICL7135 LCD1601 89S521前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
基于单片机的数字电压表设计
基于单片机的数字电压表设计数字电压表在电子技术中使用非常广泛,可以用来测量电路中的直流电压、交流电压以及各种信号的幅度等等。
基于单片机的数字电压表实现了数字电压的读取和显示,具有精确、稳定、易操作等特点,下面将介绍基于单片机的数字电压表的设计原理及实现方法。
一、系统结构基于单片机的数字电压表主要是由程序控制模块、模数转换模块和数字显示模块组成。
程序控制模块主要用来完成开机、校准、测试、功能选择等功能;模数转换模块主要将电压信号转换成数字量,供数字显示模块使用;数字显示模块主要将转换后的数字量显示在LCD液晶屏上。
二、硬件设计1.电源电路电源电路主要用来为电路提供稳定的电压和电流,本电路采用稳压电源芯片LM7805实现,稳压芯片输入端连接外部DC12V/1A电源,输出端连接电路板上的整个电路。
2.输入电路输入电路主要用来将被测电源的电压传递给单片机,常规情况下采用分压电路实现。
在本电路中,电阻R1和电容C1为RC滤波电路,起到滤波作用,防止干扰信号的影响;电阻R2是分压电路中的电阻,它根据电压值的不同设置不同的值,以保证被测电压在单片机内部转换过程中不会对单片机产生影响。
3.单片机模块单片机模块是系统的核心部分,本电路中选用STM32F103C8T6单片机实现模数转换和数码管控制,使用C 语言编写程序,通过模拟输入端口读取电压并进行模数转换,将得到的数字使用查表法将其转换为数码管控制脉冲,控制数码管的亮灭实现数字显示。
4.数字显示模块数字显示模块主要由七段数码管、LCD液晶屏幕、导线和电容等器组成,七段数码管用于展示测量到的电压大小,LCD 液晶屏用于展示功能选项、单位等信息。
导线是电路板内部连接线路,电容等器用来平滑电压波动。
三、软件设计1.引脚定义在程序中首先定义STM32F103C8T6单片机内存地址、输入输出引脚和电平状态,其中A0口用来读取被测电压;B0-B7口用来控制七段数码管的亮灭;C0口用来输出PWM,控制风扇的旋转速度;D0口用来控制蜂鸣器的开启和关闭。
基于AT89C51单片机的数字电压表设计
基于单片机的LED显示屏的数字电压表引言这是一个很容易建立并且非常准确和有用的数字电压表。
它被设计成一个面板仪表,可用于直流电源供应器或其他需要有一个准确电压指示的地方。
该电路采用的ADC(模拟数字转换器)集成电路CL7107由Intersil公司生产。
该IC采用40引脚的情况下整合了所有必要的电路模拟信号转换为数字,可以直接驱动4个7段LED显示。
在IC中内置的电路是数字转换器,比较器,一个时钟,一个解码器和一个7段LED显示驱动器模拟。
在这里它描述了一个可以显示在0-1999电压范围的直流电压电路。
前面LED显示屏数字电压表技术规格 - 特征电源电压:.............+ / - 5V(对称)。
电源要求:.............200mA(最大)。
测量范围:.............+ / - 0-1,999V在四个范围。
精度:.................0.1%。
特征:- 小尺寸。
- 简易建筑。
- 成本低。
- 简单的调整。
- 易于读取距离。
- 很少的外部元件。
数字电压表的基本原则为了了解电路的运作的原则,说明ADC的集成电路工程是必要的。
该集成电路具有以下非常重要的特点:- 准确性。
- 抗干扰性。
- 无需要一个采样保持电路。
- 它有一个内置的时钟。
- 它不需要精度高的外部元件。
一个模拟数字转换器(ADC),从现在起更好的称为双斜率转换器或集成转换器。
这种类型的转换器通常优于其他类型,因为它提供了准确,简洁的设计和它可以将相对不重要的噪音变得非常可靠。
如果将电路分两个阶段描述,该电路的操作将更好的理解。
在第一阶段的输入集成电压和最后阶段的输出集成电压中有一个电压与输入电压成正比。
在预设的时间结束时,积分将到达内部基准电压以及输出电路会逐渐降低直至达到零参考电压水平。
第二个阶段就是所谓的负斜率时期,其持续时间由第一阶段积分器输出而定。
作为第一个操作时间是固定的,第二个变量的长度就可以比较两个这样的输入电压,其实是相对于内部参考电压,其结果是编码,然后发送到显示。
基于单片机的数字电压表设计
实验室开放基金项目—基于单片机的数字电压表概述:本设计是基于AT89C51单片机作为控制核心,以ADC0809为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,并通过继电器阵列实现了输入量程的自动转换;使用共阳极数码管显示被测电压。
设计思路(1)根据设计要求,选择AT89C51单片机为核心控制器件。
(2)A/D 转换采用ADC0809实现,与单片机的接口为P0口和P3口的低四位引脚。
(3)电压显示采用4位的LED 数码管。
(4)LED 数码的段选输入,由并行端口P0产生;位选输入,用并行端口P2低四位系统总体设计框图本系统采样Atmel89C51单片机作为控制核心,以ADC0809为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,用共阳显示结果。
输入电51单片机极性检测显示电路电压检测AD转换图3.13.2 单片机系统单片机最小系统包括复位电路,晶振电路,电源电路,仿真时需搭建复位电路和晶振电路。
晶振电路:图3.2单片机最小系统如下所示,其中P1口用于驱动数码管,P0口用于接收ADC0809转换的数据。
P2口用于控制ADC0809。
单片机最小系统:图3.3AD转换电路利用ADC0809作为AD数据采样器件, ADC0809是CMOS单片型逐次逼近式A/D转换器它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START 上升沿将逐次逼近寄存器复位。
下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
ADC0809各个管教功能:IN0~IN7:8路模拟量输入端。
基于单片机的数字电压表设计
基于单片机的数字电压表设计摘要本文设计了串联线性稳压电源及基于单片机LED数码管数字显示电路,提供了原理电路及PCB版图,分析了软件设计思路及主函数流程图,说明了装配及调试主要事项。
【关键词】数字电压表单片机PCB流程图装配及调试数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
1电路组成及原理分析数字电压表主要由:A/D变换电路、单片机最小系统、显示电路、声光报警电路和电源电路所组成,电路组成方框见图1,电路原理图见图2,PCB板图见图3。
2电路目的电路接通交流电后,LED数码显示器能准确地显示出由TEST2输出的电压值,调整TEST2输出电压,LED数码显示值跟随变化,当电压大于4.50v时,电路开始告警。
2.1电路软件设计本程序主要包括四个部分:主函数、拆字函数、显示函数和报警函数。
主函数的工作是启动ADC0809进行转换并读取转换结果。
转换结果为8为二进制数00~FFH,从P3口读取。
在设计程序是要注意:(1)ALE信号上升沿有效,锁存地址并选中相应通道。
(2)ST信号有效,开始转换。
A/D转换期间ST为低电平。
(3)EOC信号输出高电平,表示转换结束。
(4)OE信号有效,允许输出转换结果。
拆字函数的工作是将转换结果00~FFH转换为成要显示的0~500的字符形式,并将结果的个十百为数字分别送入三个全局变量存储。
毕业设计——基于单片机的数字电压表的设计
基于单片机的数字电压表的设计【摘要】本设计主要用于测量0-5V的直流电压,把连续的模拟量(直流输入电压)转换成离散的数字形式,并利用数码管进行显示。
整个系统主要由控制电路、基准电源、A/D 转换电路、测试电路和显示电路等几部分组成。
通过AT89C52单片机实现系统控制功能,利用单片机的P1口、P3.0-P3.3口控制4位LED数码管实现动态显示,P3.5端口用作控制单路/循环显示转换按钮,P3.6端口用作单路显示时的通道选择,P0端口用作A/D转换数据读入,P2端口用作ADC0809的A/D转换控制,A/D转换电路主要由ADC0809模/数转器件片完成。
此外,设计的数字电压表在实现单路测量的基本功能之外,还可以方便进行多路电压的同时测量,通过按键选择实现单一或多路循环显示。
【关键词】:AT89C52、ADC0809、A/D转换、数据处理、控制显示ABSTRACTThe design is mainly used for measuring 0-5V DC voltage, the continuous analog (DC input voltage) into a discrete digital form, and the use of digital control to display. The entire circuit is mainly by the control circuit, reference power, A / D converter circuit, the test circuit and display circuit composed of several parts.AT89C52 MCU through the system control functions, the use of the microcontroller port P1, P3.0-P3.3 Port 4-bit LED digital control of dynamic display, P3.5 port as a single display / cycle through the Convert button, P3.6 displayed as a single port channel selection, P0 port for A / D converter data read, P2 port for the ADC0809 A / D conversion control; A / D converter circuit mainly by the ADC0809 analog / digital switch device to complete piece.In addition, the design of the digital voltmeter single measurement in the realization of the basic functions, it can also facilitate the simultaneous measurement of multiple voltage by selection for a single or multiple buttons to cycle.【KEY WORD】: AT89C52, ADC0809, A / D conversion, data processing, control and display目录引言 (1)一、方案论证 (1)(一)控制芯片 (1)(二)显示部分 (2)二、总体设计思想 (2)三、硬件电路的设计 (2)(一)硬件设计原理 (2)(二)AT89C52单片机的概述 (3)1.AT89C52单片机组成 (3)2.AT89C52单片机引脚结构 (4)3.AT89C52单片机的最小系统 (5)(1)时钟电路 (5)(2)复位电路 (6)(三)A/D转换电路 (6)1.A/D转换器工作过程 (6)2.A/D转换电路 (8)(四)数码显示电路 (9)四、系统的程序设计 (10)(一)软件设计思想框图 (10)(二)子程序原理和框图 (11)1.显示子程序 (11)2.A/D转换子程序 (12)五、调试及性能分析 (14)(一)测量与调试 (14)(二)性能分析 (14)六、总结 (16)附录一数字电压表总原理图 (17)附录二源程序 (18)附录三PCB图 (23)附录四实物图 (24)参考文献 (25)致谢 (26)引言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成离散的数字形式并加以显示的仪表。
基于单片机的数字电压表设计
基于单片机的数字电压表设计在当今的电子世界中,电压表是一种必不可少的测量工具。
随着技术的进步,数字电压表因其精度高、易于读取、稳定性好等优点逐渐取代了传统的模拟电压表。
本文将探讨如何基于单片机设计数字电压表。
一、硬件设计1、1传感器模块传感器模块是数字电压表的重要组成部分,负责将输入的模拟电压转化为可被单片机处理的数字信号。
通常,我们使用ADC(模数转换器)来实现这一功能。
ADC的精度直接决定了电压表的测量精度。
1、2单片机模块单片机是数字电压表的“大脑”,负责控制整个系统的运行。
我们选择具有较高性能和可靠性的单片机,如Arduino、STM32等。
这些单片机都具有丰富的外设接口,便于实现复杂的控制逻辑。
1、3显示模块显示模块负责将单片机的处理结果呈现给用户。
常用的显示模块包括LED数码管、LCD液晶屏等。
选择适合的显示模块,可以大大提升电压表的易用性。
二、软件设计2、1数据采集与处理软件首先通过ADC从传感器模块读取模拟电压,然后对其进行处理,得到实际的电压值。
这一步的关键在于选择合适的ADC算法和设置合适的参考电压。
2、2数据输出与存储处理后的电压值需要被输出并存储起来。
通常,我们使用LCD液晶屏将电压值实时显示出来,同时也可以通过串口将数据传输到计算机或云端进行存储和分析。
三、精度与稳定性优化3、1硬件校准为了提高电压表的测量精度,我们可以在生产过程中对每一块电压表进行硬件校准。
通过调整ADC的参考电压或者在软件中进行校准算法的优化,可以有效提高电压表的测量精度。
3、2软件滤波在实际应用中,由于各种噪声和干扰的存在,电压表的读数可能会出现波动。
我们可以通过软件滤波算法,如平均滤波、卡尔曼滤波等,来减小这些干扰对测量结果的影响。
四、应用与扩展基于单片机的数字电压表不仅可以在实验室或工业现场使用,还可以扩展出更多的应用场景。
例如,通过加入无线通信模块,我们可以实现远程监控;通过加入更多的传感器,我们可以实现多通道的电压测量;通过与计算机或云端进行数据交互,我们可以实现大数据分析和预测。
单片机数字电压表设计LED显示含C源代码
1. 绪论............................... 错误!未定义书签。
1.1 课程设计规定...................... 错误!未定义书签。
1.2 数字电压表简介.................... 错误!未定义书签。
2. 硬件单元电路设计................... 错误!未定义书签。
2.1数字电压表构造框图................. 错误!未定义书签。
2.1.1 AT89C51单片机简介............ 错误!未定义书签。
2.1.2 ADC0832转换器简介............ 错误!未定义书签。
2.1.3 时钟电路..................... 错误!未定义书签。
2.1.4 复位电路..................... 错误!未定义书签。
2.1.5 LED显示电路.................. 错误!未定义书签。
3. 软件单元电路设计................... 错误!未定义书签。
3.1 主程序流程图...................... 错误!未定义书签。
3.2显示子程序流程图................... 错误!未定义书签。
3.3 A/D转换子程序流程图............... 错误!未定义书签。
3.4 数据解决子程序流程图.............. 错误!未定义书签。
4. 数字电压表仿真设计图与实物图....... 错误!未定义书签。
4.1 仿真图............................ 错误!未定义书签。
4.2 器件清单.......................... 错误!未定义书签。
4.3 硬件电路实物图.................... 错误!未定义书签。
5. 程序代码.............................. 错误!未定义书签。
基于51单片机的数字电压表
电子报/2008年/4月/20日/第014版智能电子基于51单片机的数字电压表山东曹彦平马庆勇本文介绍的数字电压表,利用A/D转换原理将被测模拟量转换成数字量,并通过控制系统用数字方式显示测量结果。
本设计采用AT89C51单片机,ADC0809进行模/数转换,能够测量8路0~5V的输入电压值,可用四位LED数码管轮流或单路显示测量结果。
其最小分辨率约为0.019V,测量误差小于0.02V。
一、系统简介本系统分为主控电路、显示电路、A/D转换电路、键盘控制电路、电源电路及复位电路等,系统框图如图1所示。
二、硬件电路设计本系统采用AT89C51单片机作为控制核心,对8路模拟电压信号经8位A/D转换芯片ADC0809转换成数字信号后,送单片机进行处理,然后通过数码管显示其电压值。
电路原理见图2。
ADC0809有8路模拟输入口IN0~IN7,通过地址线(23)~(25)脚选择其中一路进行A/D转换。
(22)脚为地址锁存控制,高电平有效。
⑥脚为测试控制,当输入一个2μs正脉冲时,启动A/D转换。
⑦脚为A/D转换结束标志,当A/D转换结束时,⑦脚输出高电平。
⑨脚为A/D转换数据输出允许控制端,当⑨脚为高电平时,A/D转换数据从MSB2-1~MSB2-8输出。
⑩脚为时钟输入端,利用单片机ALE脚的六分频再通过74LS74构成的四分频得到500kHz时钟。
AT89C51的P2、P0.4~P0.7口作为数码管显示控制,采用动态显示方式显示测量的数字电压值和通道号。
P0.0口用作单路显示/循环显示转换按钮,P0.1口用作单路显示时通道选择按钮。
P1口作A/D转换数据输入,P3.0-P3.6口用作ADC0809的控制。
三、系统软件设计本系统软件由显示控制子程序、显示数据处理子程序、8路电压采集子程序、键盘处理子程序等组成,采用汇编语言编程。
1.主程序流程如图3所示。
2.显示控制子程序测量的A/D转换数据放在RAM70H~77H中,测量数据转换成的BCD码放在7AH~7DH中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的LED显示数字电压表
1 引言
单片机是一种集成电路芯片,随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
由于单片机具有简单实用、高可靠性、良好的性能价格比以及体积小等优点,已经在各个技术领域得到了迅猛发展。
数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各
种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
本设计重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。