51单片机数字电压表实验报告

合集下载

数字电压表实验报告

数字电压表实验报告

简易数字电压表目录摘要及关键词 (2)一、实现方案 (3)1.硬件选择方案 (4)2.程序设计 (12)二、系统的测试与结果 (17)三、调试过程及问题解决方法 (18)四、课题设计的收获及心得 (18)参考文献 (18)摘要:本课题实验主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.02 V。

该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。

A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。

数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。

显示模块主要由7段数码管及相应的驱动芯片(74HC245)组成,显示测量到的电压值。

关键词:简易数字电压表、ADC0809、AT89S51。

实现方案:本实验采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1所示。

该电路通过ADC0809芯片采样输入口IN0输入的0~5 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89S51芯片的P0口。

AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口经驱动芯片74HC245驱动,再传送给数码管。

同时它还通过其三位I/O口P3.0、P3.1、P3.2产生位选信号,控制数码管的亮灭。

另外,AT89S51还控制着ADC0809的工作。

其ALE管脚为ADC0809提供了1MHz工作的时钟脉冲;P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START);P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。

基于51单片机的数字电压表设计

基于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单片机测量5V电压

51单片机测量5V电压

数字电压表1.实验任务利用单片机STC89C52与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。

2.现有元件模数转换器ADC0804,STC89C52单片机,两个共阳极数码管。

3.硬件设计3.1模数转换器ADC0809与单片机STC89C52的连接(1) ADC0809规格及引脚分配图如下图3-1所示:图3-1 ADC0809引脚图(2) STC89C52各个引脚分布如下图3-2所示:图3-2 STC89C52引脚图(3) 硬件连线(a) 把“单片机系统”区域中的P3.0与”模数转换模块ADC0809“区域中的ST端子用导线相连接。

(b) 把“单片机系统”区域中的P3.1与”模数转换模块ADC0809“区域中的ALE端子用导线相连接。

(c) 把“单片机系统”区域中的P3.2与”模数转换模块ADC0809“区域中的OE端子用导线相连接。

(d) 把“单片机系统”区域中的P3.6与”模数转换模块ADC0809“区域中的EOC端子用导线相连接。

(e) 把“单片机系统”区域中的P3.7与”模数转换模块ADC0809“区域中的CLK端子用导线相连接。

(f) 把“模数转换模块ADC0809”区域中的ADDA、ADDB、ADDC端子用导线连接到单片机的VCC端子上。

把“模数转换模块ADC0809”区域中IN7与外接输入电压相连。

(g) 把“单片机系统”区域中的P2.0-P2.7连接到“模数转换模块ADC0809”区域中D0D1D2D3D4D5D6D7端子上。

(h) 把“单片机系统”区域中的P1.0-P1.7连接到“数码管”区域中ABCDEFG端子上。

把“单片机系统”区域中的P0.0-P0.1连接到“数码管”区域中12端口。

4. 电路原理图图4 电路原理图5. 程序设计内容由于ADC0809在进行A/D转换时需要CLK信号,而此时ADC0809的CLK是接在单片机的P3.7口,也就是要求从P3.7输出CLK信号供ADC0809使用。

基于51单片机制作的数字电压表

基于51单片机制作的数字电压表

基于51单片机数字电压表的设计基于51单片机数字电压表的设计摘要:本文介绍了基于STC89C52单片机为核心的,以AD0809数模转换芯片作为采样,以四位八段数码管作为显示的具有测量功能的具有一定精度的数字电压表。

在实现基础功能的情况下,另外还可以扩展串行口通信,时钟,等其他一系列功能,使系统达到了良好的设计效果和要求。

本课题主要解决A/D转换,数据处理及显示控制等三个模块。

关键词:STC89C52;数字电压表;模数转换;数字信号Abstract:This paper introduces STC89C52 SCM as the core based on AD0809 analog-to-digital conversion chip, as sampled to four seven segment digital tube as display with certain with measuring function of digital voltmeter accuracy. The basic function in realizing circumstance, also can expand serial port communication, clock, and other series of function, make the system to achieve a good design effect and requirements.This subject mainly to solve AD, data processing and display control three modules.Key words: Digital voltmeter; Frequency-field; Digital signal本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。

单片机课程设计实验报告数字电压表

单片机课程设计实验报告数字电压表

哈尔滨理工大学课程设计报告书课程名称单片机课程设计题目数字电压表院(系)自动化学院班级电技12-3学号1212020301学生姓名蔡成灼指导教师王宏民辅导教师王宏民2014 年12 月25 日课程设计(论文)任务书自动化学院电子信息科学与技术专业12-3班一、课程设计(论文)题目:数字电压表二、课程设计(论文)工作自20 14 年 12 月 26 日起至 20 14 年 12 月 27 日止三、课程设计(论文) 地点: B302四、课程设计(论文)内容要求:1. 本课程设计的目的(1)进一步巩固和加深对“单片机原理及应用”课程基本知识的理解和掌握,了解51系列单片机在项目开发中的应用。

(2)学习单片机硬件和软件设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。

(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力,同时提倡团队合作精神。

2. 课程设计的任务及要求1) 基本要求:(1)对系统功能进行需求分析;(2)提出系统的设计方案;(3)完成硬件设计和编写源程序代码并进行必要的调试。

2) 创新要求ADC0832是双通道,由程序可以任意的选取通道进行显示。

3) 课程设计报告撰写及装订要求课程设计报告的撰写要求表述简明,图表准确。

报告按如下内容和顺序用A4纸进行打印并装订成册。

(1)封面采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。

(2)设计任务书(3)评阅书(4)目录(5)正文(6)主要参考文献4) 课程设计完成标准要求:每人按指定题目进行设计,严禁抄袭,要求每人自己动手编写程序,采取同一组同时检查程序及运行结果,检查时同组成员每人陈述自己的分工,同一选题不同组如发现代码完全一样,则双方都作不及格处理。

(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确;(2)能正确回答设计的中老师所提问题;(3)课程设计报告书写规范整齐;(4)心得体会认真总结;(5)程序有创新性;成绩评定实行优秀、良好、中等、及格和不及格五个等级。

51单片机实验报告(共五则)

51单片机实验报告(共五则)

51单片机实验报告(共五则)第一篇:51单片机实验报告51单片机实验报告实验一点亮流水灯实验现象 Led灯交替亮,间隔大约10ms。

实验代码#include 〈reg51、h> void Delay10ms(unsigned int c);voidmain(){)1(elihwﻩ{ ﻩP0= 0x00;Delay10ms(50);;ffx0 =0Pﻩﻩ;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}} 实验原理W W hi i le(1)表示一直循环。

循环体内首先将P0 得所有位都置于零,然后延时约5 5 0*10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。

接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。

实验 2 流水灯(不运用库函数)实验现象起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #includemain(){unsigned char LED;LED = 0xfe;while(1){ ﻩ;DEL = 0PﻩDelay10ms(50);00x0 == 0P(fiﻩ {;1〈〈 DEL = DELﻩ)ﻩ;efx0 = DELﻩ} ﻩ}ﻩ} void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)—-b;0〉b;83=b(rofﻩ{ ﻩﻩﻩ;)--a;0>a;031=a(rofﻩ} ﻩ} ﻩ} 实验原理这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1111 1 110, 之后左移一次变成1111 1 100 0,当变成00000 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include 〈reg51、h> #include 〈intrins、h〉void Delay10ms(unsigned int c); void main(void){unsigned char LED;;EFx0 = DELﻩ)1(elihwﻩ{ ﻩP0 = LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_ = DELﻩ} ﻩ} void Delay10ms(unsigned in t c){unsigned chara, b;for(;c〉0;c——){ ﻩfor(b=38;b〉0;b—-){ ﻩﻩ;)-—a;0〉a;031=a(rofﻩ} ﻩ}}实验原理利用头文件中得函数,_cro l_(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与 A-F。

单片机数字电压实训报告

单片机数字电压实训报告

一、实训目的1. 掌握单片机的基本原理和操作方法。

2. 学会使用单片机进行数字电压的测量。

3. 熟悉数字电压表的硬件电路设计和软件编程。

4. 提高动手实践能力和问题解决能力。

二、实训内容1. 数字电压表概述数字电压表(Digital Voltmeter,简称DVM)是一种将模拟电压信号转换为数字信号的测量仪器。

它具有测量精度高、读数直观、易于操作等优点,广泛应用于电子测量、工业自动化、科学研究等领域。

2. 硬件电路设计(1)单片机选型:选用AT89C51单片机作为核心控制器,具有丰富的片上资源,满足数字电压表设计需求。

(2)模数转换器(ADC)选型:选用ADC0809模数转换器,具有8路模拟输入端口,可实现8路电压信号的采集。

(3)电压输入电路设计:设计多路电压输入电路,包括电压分压、滤波等,确保输入电压信号稳定、准确。

(4)显示模块选择:选用LCD1602液晶显示屏,可实时显示采集到的电压值。

3. 软件设计(1)初始化程序:设置单片机工作模式、波特率、中断等参数,初始化ADC0809和LCD1602。

(2)ADC采集程序:通过单片机控制ADC0809进行电压信号的采集,将模拟电压信号转换为数字信号。

(3)数据处理程序:对采集到的数字电压信号进行处理,计算实际电压值。

(4)显示程序:将计算得到的电压值显示在LCD1602上。

4. 调试与测试(1)硬件调试:检查电路连接是否正确,元器件是否损坏,确保电路正常工作。

(2)软件调试:使用Keil软件进行程序编译、仿真和调试,确保程序运行正确。

(3)功能测试:通过实际测量,验证数字电压表的功能是否满足设计要求。

三、实训结果与分析1. 测量精度通过实际测量,数字电压表在0~5V范围内具有较高的测量精度,最小分辨率为0.019V,误差约为±0.02V。

2. 测量速度数字电压表具有较快的测量速度,可在短时间内完成电压信号的采集、处理和显示。

3. 稳定性和可靠性数字电压表电路设计合理,元器件选用合格,具有较强的稳定性和可靠性。

数字电压表设计实验报告

数字电压表设计实验报告

基于51单片机数字电压表设计实验报告一、设计要求用51单片机控制AD0808进行数模转换,当调节滑动变阻器RV1时,在数码管上显示当前数值,并用电压表测的此时电压与数码管显示电压对比,计算数字电压表的精度二、方案设计数字电压表设计框图 模拟信号可以通过改变滑动变阻器阻值以改变输入电压;A/D 转换将模拟量转换数字量,再送给单片机处理,处理的结果由数码管显示。

三、硬件设计模拟信号 51单片机 A/D 转换数码管显示proteus硬件仿真电路图四、软件设计(1)设计数码管显示电压2.50v程序设计如下(数码显示2.5)#include<reg51.h>void delayms(int x){int i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void main(){while(1){P1=0x00;P2=0xfb;P1=0xdb;delayms(10);P1=0x00;P2=0xfd;P1=0x6d;delayms(10);P1=0x00;P2=0xfe;P1=0x3f;delayms(10);}}运行结果如下:(2)设计采集总程序老师参考程序如下:/******************************************************#include <reg51.h>int AD_Result=187;sbit AD_Start=P3^0;sbit AD_EOC=P3^1;sbit AD_OE=P3^2;Unsigned char DisCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void DelayTime10ms(unsigned int DelayValue){unsigned int x,y;for(x=0;x<DelayValue;x++)for(y=0;y<1827;y++);}void Display(){char one,ten,hundred;AD_Result=AD_Result*5.0/255*100;one=AD_Result%10;ten=AD_Result/10%10;hundred=AD_Result/100;P2=0xfb;P1=DisCode[hundred]|0x80;DelayTime10ms(1);P2=0xfd;P1=DisCode[ten];DelayTime10ms(1);P2=0xfe;P1=DisCode[one];DelayTime10ms(1);}void AD_Test(){if(AD_EOC==1){AD_OE=1;AD_Result=P0;AD_OE=0;AD_Start=0;AD_Start=1;AD_Start=0;}}void main(){AD_OE=0;AD_Start=0;AD_Start=1;AD_Start=0;while(1){Display();AD_Test();}}************************************************************************/ 自己编写程序如下:#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar A1=5,A2,A3;uchar adval;sbit ST=P3^0; //定义AD的启动start端口;sbit EOC=P3^1; //定义EOC引脚,EOC转换完成sbit OE=P3^2; //定义AD允许数据输出端uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delayms(int x){ int i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void display(){P2=0xff;P2=0xfb;P1=table[A1];delayms(2);P2=0xff;P2=0xfd;P1=table[A2];delayms(2);P2=0xff;P2=0xfe;P1=table[A3];delayms(2);}void AD_measure(){if(EOC==1){OE=1;adval=P0;OE=0;A1=adval/100;A2=adval%100/10;A3=adval%10;ST=0;ST=1;ST=0;}}void main(){OE=0;ST=0;ST=1;ST=0;while(1){AD_measure();display();}}五、总结在此次实验中遇到以下问题,首先是写显示程序,画原理图时把数码管接口顺序接反了导致显示结果出现乱码;其次在编写A/D转换程序时容易出错A/D0808引脚功能不会用;最后是显示整个量程数据时不容易理解,在这里要特别注意。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微控制器技术创新设计实验报告
:学号:班级:
一、项目背景
使用单片机AT89C52和ADC0808设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示。

在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为5V;显示精度0.001伏。

二、项目整体方案设计
ADC0808 是含8 位A/D 转换器、8 路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。

ADC0808的精度为1/2LSB。

在AD 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关树组的256 电阻分压器,以及一个逐次通近型寄存器。

8 路的模拟开关的通断由地址锁存器和译码器控制,可以在8 个通道中任意访问一个单边的模拟信号。

三、硬件设计
四、软件设计
#include<reg52.h>
#include"intrins.h"
#define uchar unsigned char #define uint unsigned int sbit OE = P2^7;
sbit EOC=P2^6;
sbit START=P2^5;
sbit CLK=P2^4;
sbit CS0=P2^0;
sbit CS1=P2^1;
sbit CS2=P2^2;
sbit CS3=P2^3;
uint adval,volt;
uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void delayms(uint ms)
{
uchar j;
while(ms --)
{
for(j=0;j<120;j++);
}
}
void ADC_read()
{
START=0;
START=1;
START=0;
while(EOC==0);
OE=1;
adval=P1;
OE=0;
}
void volt_result()
{
volt=adval*1.96;
}
void disp_volt(uint date) {
CS0=1;CS1=0;CS2=0;CS3=0; P0=~((~tab[date/100])|0x80); delayms(1);
P0=0xFF;
CS0=0;CS1=1;CS2=0;CS3=0; P0=tab[date%100/10]; delayms(1);
P0=0xFF;
CS0=0;CS1=0;CS2=1;CS3=0; P0=tab[date%10];
delayms(1);
P0=0xFF;
CS0=0;CS1=0;CS2=0;CS3=1;
P0=tab[date%100]; delayms(1);
P0=0xFF;
}
void t0() interrupt 1 {
CLK=~CLK;
}
void t0_init()
{
TMOD=0x02; TH0=0x14;
TL0=0x00;
TR0=1;
ET0=1;
EA=1;
}
void main(void) {
t0_init();
while(1)
{
ADC_read();
volt_result();
disp_volt(volt); }
}
五、实验结果
六、项目总结
通过这次实验设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。

我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。

特别是理论联系实际。

我认为掌握单片机的应用及开发技术是最基本的也是必要的。

单片机是以后从事相关嵌入式研发最为基本的入门芯片。

所以学好单片机是我们电子类的必要任务。

通过这次单片机课程设计的顺利完成,离不开付老师指导,也离不开班上同学的耐心帮助。

在此,我对所有帮助过我的老师和同学表示我真挚的感谢!。

相关文档
最新文档