数字电压表课程设计实验报告
交流数字电压表实验报告
交流数字电压表电子电路课程设计2011年9月13日至9月23日(一)、技术指标1、整体功能要求交流数字电压表的功能是,测量正弦电压有效值,以数码管显示测量结果。
2、系统结构要求交流数字电压表的系统结构框图如下图:交流数字电压表的系统结构框图3、电气指标(1)、被测信号频率范围:10Hz~10kHz。
(2)、被测信号波形:正弦波。
(3)、显示数字含义:有效值。
(4)、档位:分三档:1.0V~9.9V0.10V~0.99V0.010V~0.099V。
(5)、显示方式:两位数码显示。
4、扩展指标可自动换档5、设计条件电源条件:直流稳压电源提供±5V。
可供选择的器件:LM324(TL084) 运算放大器2片LM139 二四线译码器1片CC4052四选一模拟开关1片74161四位二进制计数器1片4511显示译码器2片2AP9检波二极管2只5.1V稳压管2只发光二极管3只28C64存储器1片ADC0804A/D转换器1片门电路、各种阻容件自定。
(二)、方案设计数字电压表(Digital V oltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
它利用A/D转换原理,将被测模拟量转换成数字量,并用数字方式显示测量结果的电子测量仪表。
而交流是指输入的信号是正弦波,电压表需要显示的是正弦信号的有效值。
电路中需有交直流转换。
由测量电压范围可知,显示输入电压的有效值在0.01V至9.9V范围,分成三档。
意味着输入正弦信号的峰峰值为0.028V 至28V。
因此,输入需有量程转换及衰减电路。
为此,总体方案如下图:交流数字电压表的组成框图(三)、单元电路设计1、输入电路作为仪表,为减少对被测信号的影通常输入阻抗都比较高,一般在1MΩ左右。
另被测信号的最大有效值为9.9V,正弦信号的峰峰值为28V,这么大的信号,无法正常工作,因此,在输入电路中要进行衰减,可作一10:1的电路。
数字电压表课程设计实验报告
自动化与电气工程学院电子技术课程设计报告题目数字电压表的制作专业班级学号学生姓名指导教师二○一三年七月一、课程设计的目的与意义1.课程设计的主要目的,是通过电子技术综合设计,熟悉一般电子电路综合设计过程、设计要求、完成的工作内容和具体的设计方法。
2.同时了解双积分式A/D转换器ICL7107的性能及其引脚功能,熟悉集成电路ICL7107构成直流数字电压表的使用方法,并掌握其在电路中的工作原理。
3.通过设计也有助于复习和巩固以往的模电、数电内容,达到灵活应用的目的。
在完成设计后还要将设计的电路进行安、调试以加强学生的动手能力。
在此过过程中培养从事设计工作的整体观念。
4.利用双积分式A/D转换器ICL7107设计一数字电压表,量程为-1.99—+1.99,通过七段数码管显示。
二、电路原理图数字电压表原理图三、课程设计的元器件1.课程设计所使用的元器件清单:2.主要元器件介绍(1)芯片ICL7107:ICL7107的工作原理双积分型A/D转换器ICL7107是一种间接A/D转换器。
它通过对输入模拟电压和参考电压分别进行两次积分,将输入电压平均值变换成与之成正比的时间间隔,然后利用脉冲时间间隔,进而得出相应的数字性输出。
它的原理性框图如图所示,它包括积分器、比较器、计数器,控制逻辑和时钟信号源。
积分器是A/D转换器的心脏,在一个测量周期内,积分器先后对输入信号电压和基准电压进行两次积分。
比较器将积分器的输出信号与零电平进行比较,比较的结果作为数字电路的控制信一号。
时钟信号源的标准周期Tc 作为测量时间间隔的标准时间。
它是由内部的两个反向器以及外部的RC组成的。
其振荡周期Tc=2RCIn1.5=2.2RC 。
ICL7106A/D转换器原理图计数器对反向积分过程的时钟脉冲进行计数。
控制逻辑包括分频器、译码器、相位驱动器、控制器和锁存器。
分频器用来对时钟脉冲逐渐分频,得到所需的计数脉冲fc和共阳极LED数码管公共电极所需的方波信号fc。
数字电压表实验报告
简易数字电压表设计报告姓名:***班级:自动化1202学号:****************:***2014年11月26日一.设计题目采用C8051F360单片机最小系统设计一个简易数字电压表,实现对0~3.3V 直流电压的测量。
二.设计原理模拟输入电压通过实验板PR3电位器产生,A/D转换器将模拟电压转换成数字量,并用十进制的形式在LCD上显示。
用一根杜邦实验线将J8口的0~3.3V输出插针与J7口的P2.0插针相连。
注意A/D转换器模拟输入电压的范围取决于其所选择的参考电压,如果A/D 转换器选择内部参考电压源,其模拟电压的范围0~2.4V,如果选择外部电源作为参考电压,则其模拟输入电压范围为0~3.3V。
原理框图如图1所示。
图1 简易数字电压表实验原理框图三.设计方案1.设计流程图如图2所示。
图2 简易数字电压表设计A/D转换和计时流程图2.实验板连接图如图3所示。
图3 简易数字电压表设计实验板接线图3.设计步骤(1)编写C8051F360和LCD初始化程序。
(2)AD转换方式选用逐次逼近型,A/D转换完成后得到10位数据的高低字节分别存放在寄存器ADCOH和ADC0L中,此处选择右对齐,转换时针为2MH Z。
(3)选择内部参考电压2.4V为基准电压(在实际单片机调试中改为3.311V),正端接P2.0,负端接地。
四、测试结果在0V~3.3V中取10组测试数据,每组间隔约为0.3V左右,实验数据如表1所示:显示电压(V)0.206 0.504 0.805 1.054 1.406实际电压(v)0.210 0.510 0.812 1.061 1.414相对误差(%) 1.905 1.176 0.862 0.659 0.565显示电压(V) 2.050 2.383 2.652 2.935 3.246实际电压(v) 2.061 2.391 2.660 2.943 3.253相对误差(%)0.421 0.334 0.301 0.272 0.215表1 简易数字电压表设计实验数据(注:其中显示电压指LCD显示值,实际电压指高精度电压表测量值)五.设计结论1.LCD显示模块的CPLD部分由FPGA充当,芯片本身自带程序,所以这个部分不用再通过quartus软件进行编程。
数字电压表实训报告
ET0=0;//定时器0关中断
TR0=0;//关闭定时器0
TH0=(65536-50000)/256;//初始化50ms
TL0=(65536-50000)%256;
count++;//定时中断的次数
if(count==20)//计数20次到1s
{
count=0;
second++;
if(second>=59)
Anjian();
}
}
六、实训心得
本次课程对单片机设计与应用使我对单片机技术有了更进一步的熟悉,实践操作和课本的知识有很大联系,但又高于课本,一个看似简单的电路,要动手把它设计出来就比较困难了,因为是设计要求我们在以后的学习中注意这一点,要把课本上所学到的知识和实际联系起来,同时通过本次电路的设计,不但巩固了所学知识,也是我们把理论与实践从真正意义上结合起来,增强了学习的综合能力。
P3_3=0;
delay();
P3_3=1;
P0=table[minute%10];//显示分的个位
P3_4=0;
delay();
P3_4=1;
P0=0x40;//显示“-”
P3_5=0;
delay();
P3_5=1;
P0=table[second/10];//显示秒的十位
P3_6=0;
delay();
sbit P30 =P3^0;
sbit P31 =P3^1;
unsigned int counter,i;
unsigned int DYZ;
unsigned int dis_code[11]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
数字电压表的课程设计报告
摘要 (2)第一章硬件介绍 (4)1.1AT89C51单片机的介绍 (4)1.2ADC0809芯片的介绍 (5)1.3LED动态数码管的介绍 (6)第二章系统设计和理论分析 (7)2.1系统的设计思路 (7)2.2系统的设计目标 (7)2.3实现功能 (7)2.4理论分析 (7)2.5程序流程图 (7)第三章程序设计与电路 (9)3.1主程序 (9)3.2AD模数转换子程序模块 (9)3.3BCD码转换子程序模块 (10)3.4显示子程序模块 (11)3.5延时子程序和字节数据表模块 (12)3.6PROTEUS仿真 (13)第四章仿真结果分析 (14)4.1仿真结果 (14)第五章课程设计总结 (17)参考文献 (18)摘要本次课程设计的主要目的,就是通过应用8位并行模数转换器ADC0809采集电压信号,并进行AD转换,转换成数字信号传送给51单片机,在单片机内部通过编写程序进行数据处理,最后通过单片机的I/O口控制LED显示出所采集的电压大小,量程为0—10伏;另外利用集成运放放大10毫伏电压的大小显示在LED上,即设有毫伏档可测10毫伏以下电压。
关键字:ADC0809 AT89C51 LED 电压量程AbstractThe aim of this text is to use the 8 bit parallel analogy converter ADC0809 collect the voltage signal.And transfer the analogy signal into the digtal signal .The the digtal signal passed to theSingle-chip..The the digtal signal oprrated in the Single-chip by the programe which set by the programmer in advance.At last through the input and the output port control the LED lights.And show the result of the voltage signal.The range of the voltage from 0—10 volt.The use the amplifer amplify the 10 milivolt signal.And show the result which have been amplified on the dynamic LED lights.Which means that the digtal voltmeter can measure the small voltage signal.Keywords: ADC0809 AT89C51 Light Emitting Dioxide the range of the voltmeter第一章硬件介绍1.1 AT89C51单片机的介绍AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,可提供以下标准功能:4K 字节闪存,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
数字电压表设计实验报告
MOV DPTR,#CS8279D
MOV R0,#30H
DISPL1:
PUSH DPL
PUSH DPH
MOV A,@R0MOV 源自PTR,#TABMOVC A,@A+DPTR
POP DPH
POP DPL
MOVX @DPTR,A
INC R0
DJNZ R7,DISPL1
DSPEXIT:
SJMP CONB3
CONB2:
MOV R7,#4
SJMP CONB3
CONB1:
MOV R7,#3
CONB3:
MOV R0,#35H
MOV A,#0BH
CONBLP:
MOV @R0,A
DEC R0
DJNZ R7,CONBLP
RET
END ; program end
二、实验结果
通过调节可变电阻VR4的电阻大小,使得输入到ADC0809的第5引脚的电压从0V变到5V,转换相应的结果并通过数码显示器显示出来。实验结果与预测结果一置。
; function: initial 8279 as 8 digtal left in ALE/10
; input parameter : none
; output parameter: none
; others 8279 command port address 0FFE9H;8279 data port address 0FFE8H
ORG 0000H
MAIN:
MOV SP, #60H
ACALL INI8279
MOV ADRESULT, #00H
MOV ADBAK, #0FFH
MAINLP:
数字电压表课程设计报告
湖南科技大学信息与电气工程学院课程设计报告课程单片机原理及应用题目:数字电压表专业:班级:姓名:学号:任务书1数字电压表的概述数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。
数字电压表的诞生打破了传统电子测量仪器的模式和格局。
它显示清晰直观、读数准确,采用了先进的数显技术,大大地减少了因人为因素所造成的测量误差事件。
数字电压表是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。
数字电压表把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起,成为仪器、仪表领域中独立而完整的一个分支,数字电压表标志着电子仪器领域的一场革命,也开创了现代电子测量技术的先河。
本设计采用了以单片机为开发平台,控制系采用AT89C52单片机,A/D转换采用ADC0809。
系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。
简易数字电压测量电路由A/D转换、数据处理、显示控制等组成。
模拟式电压表具有电路简单、成本低、测量方便等特点,但测量精度较差,特别是受表头精度的限制,即使采用0.5级的高灵敏度表头,读测时的分辨力也只能达到半格。
再者,模拟式电压表的输入阻抗不高,测高内阻源时精度明显下降。
最新数字电压表专业综合实践报告
关于数字电压表专业综合实践报告篇一:数字电压表实习报告机械与电子信息学院通信工程系20xx年寒假实习报告题目:班序号:摘要:本数字电压表可以对直流电源和交流电压进行比较准确的测量。
其中直流部分的测量范围是0-20V,分为三个档位:0-0.2V,0.2V-2V,2V-20V。
该直流电压表的测量电路主要由三个模块组成:模拟数据采集处理模块、A/D转换模块及译码显示控制模块。
模拟数据的采集处理模块由模拟电路部分完成。
A/D转换模块主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到AT89S51单片机进行数据处理。
译码显示模块是单片机将译好的数据传送到由74LS244驱动的4位7段数码管进行显示。
交流部分的测量范围是0-5V,测量的是交流电压的有效值。
该交流电压表的测量电路由三个模块构成:AC-DC 转换模块、电压补偿模块、直流电压表测试模块。
其中AC-DC转换模块由AD637完成。
电压补偿模块对AD637的非线性部分进行补偿,由LM324完成。
直流电压表测试模块由直流部分完成。
关键字:AT89S51,数模转换,AC-DC转换,数码管显示1. 系统方案的选择和论证1.1数模转换模块方案一:用分离元件完成数据采集AD转换的功能。
该方案由于需要大量的元器件,实现起来比较复杂,而且精度不易控制。
方案二:选则集成芯片ADC0809。
ADC0809的采样频率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。
由于本实验要求的测量误差是<=1%,显示精度是0.01V,本设计采用ADC0809就可以满足要求。
ADC0809的分辨率是1/28,量化间隔为=满量程输入电压/28-1,完成一次转换的时间是100us。
适合此设计使用。
方案三:采用其他采样频率位数更高的AD转换芯片,如积分型(如TLC7135)、压频变换型(如AD650)、调制型(如AD7705)、并行比较型/串并行比较型(如TLC5510)。
数字电压表的设计实验报告
.课程设计——基于51数字电压表设计物理与电子信息学院电子信息工程1、课程设计要求使用单片机AT89C52和ADC0832设计一个数字电压表,能够测量0-5V之间的直流电压值,两位数码显示。
在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为5V;能用两位LED进行轮流显示或单路选择显示,显示精度0.1伏。
2、硬件单元电路设计AT89S52单片机简介AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS -51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级,2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
ADC0832模数转换器简介ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。
由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。
学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。
图1芯片接口说明:·CS_ 片选使能,低电平芯片使能。
·CH0 模拟输入通道0,或作为IN+/-使用。
·CH1 模拟输入通道1,或作为IN+/-使用。
·GND 芯片参考0 电位(地)。
智能数字电压表设计实验报告
实验一智能数字电压表设计一、实验目的:1、掌握ADC0809芯片的性能和典型应用及对应的硬件电路。
2、掌握A/D转换芯片ADC0809将模拟量转换成数字量的过程与基本原理。
3、掌握了解A/D转换软件的不同控制方式。
4、掌握VB软件的基本使用方法以及其使用的编程语言。
二、实验内容:1、运用单片机编写程序,实现ADC0809的时序控制。
2、运用VB编写一个上位机显示界面。
3、实现对ADC0809器件的通道0上外接的可调电阻的模拟电压转换成数字量,通过所编写的VB界面显示出来。
4、根据题目要求,设计电路,并进行实际硬件安装与调试。
三、实验原理与设计(一)硬件部分1、ADC0809工作原理ADC 0809是CMOS器件,不仅包括一个8位的逐次逼近型的ADC部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑,因而把它作为简单的“数据采集系统”。
利用它可直接输入8个单端的模拟信号分时进行A/D转换,常运用于多点巡回检测和过程控制、运动控制中。
1) 主要技术指标和特性(1)分辨率:8位。
(2)总的不可调误差:ADC0808为±1/2 LSB,ADC 0809为±1 LSB。
(3)转换时间取决于芯片时钟频率,如CLK=500kHz时,TCONV=128μs。
(4)单一电源:+5V。
(5)模拟输入电压范围:单极性0~5V,双极性±5V、±10V(需外加一定电路)。
(6)具有可控三态输出缓存器。
(7)启动转换控制为脉冲式(正脉冲),上升沿使所有内部寄存器清零,下降沿使A/D转换开始。
(8)使用时不需进行零点和满刻度调节。
2) 内部结构和外部引脚介绍ADC0808/0809的内部结构如图1所示以及各引脚定义分述如下:图1 ADC0809内部结构框图(1)IN0~IN7——8路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路。
通道选择表如下:(2)D7~D0——A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。
数字电压表实验报告
数字电压表实验报告数字电压表实验报告引言:数字电压表是一种用于测量电压的电子仪器,它通过将电压信号转换为数字形式来显示测量结果。
本实验旨在通过使用数字电压表来测量不同电压信号,并探究其测量原理和使用方法。
实验目的:1. 理解数字电压表的工作原理;2. 学习使用数字电压表测量直流电压和交流电压;3. 掌握数字电压表的使用技巧。
实验器材:1. 数字电压表;2. 直流电源;3. 交流电源。
实验步骤:1. 将数字电压表与直流电源连接,调整电源输出电压为5V;2. 打开数字电压表,选择直流电压测量模式;3. 将数字电压表的测量引线分别与电源的正负极连接;4. 观察数字电压表的显示结果,并记录测量数值;5. 重复步骤1-4,将电源输出电压调整为不同数值,如10V、15V等,记录测量结果。
实验结果:在实验过程中,我们使用数字电压表测量了不同电压信号,并记录了测量结果。
通过分析实验数据,我们发现数字电压表能够准确地测量直流电压,并显示出相应的数值。
在测量过程中,我们注意到数字电压表的显示屏幕上有一个小数点,用于表示小数位数。
当电压信号较小时,小数点会显示更多的位数,以提高测量精度。
此外,我们还发现数字电压表的测量结果具有一定的误差,这可能是由于仪器本身的精度限制或测量过程中的误差引起的。
讨论与分析:通过本次实验,我们深入了解了数字电压表的工作原理和使用方法。
数字电压表通过将电压信号转换为数字形式,并通过显示屏幕上的数字来表示测量结果。
在测量直流电压时,数字电压表能够提供较高的测量精度,并且可以根据电压信号的大小自动调整小数位数。
然而,在测量交流电压时,由于交流电压的波动性,数字电压表的测量结果可能会有一定的误差。
结论:本次实验通过使用数字电压表测量不同电压信号,深入了解了数字电压表的工作原理和使用方法。
我们发现数字电压表能够准确地测量直流电压,并提供较高的测量精度。
然而,在测量交流电压时,由于交流电压的波动性,数字电压表的测量结果可能会有一定的误差。
数字电压表电压表实验报告
控制LED显示屏
94
I/O-RE1
LED-DB1
控制LED显示屏
95
I/O-RG14
LED-
控制LED显示屏
96
I/O-RG12
LED-
控制LED显示屏
97
I/O-RG13
LED-DB5
控制LED显示屏
98
I/O-RE2
LED-DB5
控制LED显示屏
LED显示屏
xxxxxxxxxxxxxx(内容小4号宋体字)包括各模块设计原理图、理论计算、仿真原理等
2.3 软件系统设计
利用Microchip公司开发的MPLAB软件,我们可以轻松地将C++程序下载到单片机上。程序中应包含一个能够控制显示屏的头文件,一个包含各个所用函数、对于单片机控制的函数的头文件及一个包含主函数的源文件。
void initADC( int amask)
{
AD1PCFG =amask; //选择模拟输入管脚
AD1CON1 =0x00E0; //自动启动转换
AD1CSSL = 0; //不需要扫描
AD1CON2 = 0; //使用Vdd=3.3V作为参考电压正极,使用Vss=0V作为参考电压负极
AD1CON3 = 0x1F3F; //设置采样周期长度Tad=6Tpb=6*27 ns>75 ns
3.3软件硬件联调
4.系统指标测试
4.1测试仪器
4.2技术指标测试
5.结论
6.致谢、心得、体会
7.参考文献
8.附录
正文
1.方案论证与比较
出于实验室实验条件与安全的考虑,在老师的指导下我们将最开始的“0-1000V自动量程电压表”改为“能够精确测量0-3V小电压的电压表”,在日后条件允许的情况下对电路稍作改动即可实现更大的功效。
数字电压表实验报告
数字电压表的综合设计一、设计题目:基于FPGA的数字电压表设计二、设计任务:1、具有0—2.5v的电压量程;2、通过LED灯显示2进制数字量;3、用FPGA设计制作成数字电压表的专用集成芯片,结合LED数码管构成一个能够实时显示的电压表。
三、总体设计框图:1、总体框图22、分模块设计框图:LED数码管显示模块TL549A/D处理模块3、程序代码:查找表程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity chazhaobiao isport(V:in std_logic_vector(7 downto 0);q:out std_logic_vector(11 downto 0));end entity chazhaobiao;architecture behav of chazhaobiao issignal c30,c74,c117,d0,d1:std_logic;signal HB,LB:std_logic_vector(11 downto 0);begin --A/D值的高4位转换成3位BCD码HB<="001001000000" WHEN V(7 DOWNTO 4)="1111" ELSE --2.40 "001000100100" WHEN V(7 DOWNTO 4)="1110" ELSE --2.24"001000001000" WHEN V(7 DOWNTO 4)="1101" ELSE --2.08"000110010010" WHEN V(7 DOWNTO 4)="1100" ELSE --1.92"000101110110" WHEN V(7 DOWNTO 4)="1011" ELSE --1.76"000101100000" WHEN V(7 DOWNTO 4)="1010" ELSE --1.60"000101000100" WHEN V(7 DOWNTO 4)="1001" ELSE --1.44"000100101000" WHEN V(7 DOWNTO 4)="1000" ELSE --1.28"000100010010" WHEN V(7 DOWNTO 4)="0111" ELSE --1.12"000010010110" WHEN V(7 DOWNTO 4)="0110" ELSE --0.96"000010000000" WHEN V(7 DOWNTO 4)="0101" ELSE --0.80"000001100100" WHEN V(7 DOWNTO 4)="0100" ELSE --0.64"000001001000" WHEN V(7 DOWNTO 4)="0011" ELSE --0.48"000000110010" WHEN V(7 DOWNTO 4)="0010" ELSE --0.32"000000010110" WHEN V(7 DOWNTO 4)="0001" ELSE --0.16"000000000000"; --0.00--A/D值低4位变为3位BCD码LB<="000000010101" WHEN V(3 DOWNTO 0)="1111" ELSE --0.15 "000000010100" WHEN V(3 DOWNTO 0)="1110" ELSE --0.14 "000000010011" WHEN V(3 DOWNTO 0)="1101" ELSE --0.13"000000010010" WHEN V(3 DOWNTO 0)="1100" ELSE --0.12"000000010001" WHEN V(3 DOWNTO 0)="1011" ELSE --0.11"000000010000" WHEN V(3 DOWNTO 0)="1010" ELSE --0.10"000000001001" WHEN V(3 DOWNTO 0)="1001" ELSE --0.09"000000001000" WHEN V(3 DOWNTO 0)="1000" ELSE --0.08"000000000111" WHEN V(3 DOWNTO 0)="0111" ELSE --0.07"000000000110" WHEN V(3 DOWNTO 0)="0110" ELSE --0.06"000000000101" WHEN V(3 DOWNTO 0)="0101" ELSE --0.05"000000000100" WHEN V(3 DOWNTO 0)="0100" ELSE --0.04"000000000011" WHEN V(3 DOWNTO 0)="0011" ELSE --0.03"000000000010" WHEN V(3 DOWNTO 0)="0010" ELSE --0.02"000000000001" WHEN V(3 DOWNTO 0)="0001" ELSE --0.01"000000000000" ; --0.00c30<='1' when HB(3 downto 0)+LB(3 downto 0)>"01001" else'0';d1<='1' when HB(3 downto 0)>="1000" and LB(3 downto 0)>="1000" else '0';c74<='1' when HB(7 downto 4)+LB(7 downto 4)>"01001" else'0';d0<='1' when HB(7 downto 4) + LB(7 downto 4) ="01001" else'0';c117<='1' when HB(11 downto 8)+LB(11 downto 8)>"01001" else '0';q(3 downto 0)<=HB(3 downto 0)+LB(3 downto 0)+"0110" whenc30='1' elseHB(3 downto 0)+LB(3 downto 0)+"0110" whend1='1' elseHB(3 downto 0)+LB(3 downto 0);q(7 downto 4)<=HB(7 downto 4)+LB(7 downto 4)+"0111" whenc74='1' and c30='1' elseHB(7 downto 4)+LB(7 downto 4)+"0110" whenc74='1' and c30='0' elseHB(7 downto 4)+LB(7 downto 4)+"0110" whenc74='0' and c30='1' and d0='1' elseHB(7 downto 4)+LB(7 downto 4)+"0001" whenc74='0' and (c30='1'or d1='1') and d0='0' elseHB(7 downto 4)+LB(7 downto 4);q(11 downto 8)<=HB(11 downto 8)+LB(11 downto 8)+"0111" whenc117='1' and c74='1' elseHB(11 downto 8)+LB(11 downto 8)+"0110" whenc117='1' and c74='0' elseHB(11 downto 8)+LB(11 downto 8)+"0001" whenc117='0' and c74='1' elseHB(11 downto 8)+LB(11 downto 8)+"0001" whenc117='0' and c74='0' and (c30='1'or d1='1') and d0='1' elseHB(11 downto 8)+LB(11 downto 8);end ;译码器程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity yima isport(clk:in std_logic;d:in std_logic_vector(11 downto 0);seg: out std_logic_vector(7 downto 0);sel: out std_logic_vector(2 downto 0));end entity yima;architecture behav of yima issignal wei:std_logic_vector(2 downto 0);signal num:std_logic_vector(3 downto 0);signal a:std_logic_vector(2 downto 0);beginnum<=d(3 downto 0) when a="000" elsed(7 downto 4) when a="001" elsed(11 downto 8) ;seg(7)<='0' when wei="011" else'1';wei<="110" when a="000" else"101" when a="001" else"011";sel<=wei;COM1: process(clk)beginif clk'event and clk='1' thena<=a+1;if a="010" then a<="000";end if;end if;end process COM1;COM2: process(num)begincase num iswhen "0000"=>seg(6 downto 0)<="1000000";--0when "0001"=>seg(6 downto 0)<="1111001";--1when "0010"=>seg(6 downto 0)<="0100100";--2when "0011"=>seg(6 downto 0)<="0110000";--3when "0100"=>seg(6 downto 0)<="0011001";--4when "0101"=>seg(6 downto 0)<="0010010";--5when "0110"=>seg(6 downto 0)<="0000010";--6when "0111"=>seg(6 downto 0)<="1111000";--7when "1000"=>seg(6 downto 0)<="0000000";--8when "1001"=>seg(6 downto 0)<="0010000";--9--when "1010"=>seg(6 downto 0)<="1110111";--when "1011"=>seg(6 downto 0)<="1111100";--when "1100"=>seg(6 downto 0)<="0111001";--when "1101"=>seg(6 downto 0)<="1011110";--when "1110"=>seg(6 downto 0)<="1111001";--when "1111"=>seg(6 downto 0)<="1110001";--when others=>seg(6 downto 0)<="0111111";when others=>seg(6 downto 0)<="1000000";end case;end process COM2;end;电压表顶层程序代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity dianyabiao isPort (clk : in std_logic; --50m系统时钟din : in std_logic; --(tlc549)串行数据输出端clk_tlc549 : out std_logic;cs_tlc549 : out std_logic; --tlc549的片选信号输入端shift : out std_logic_vector(3 downto 0);--动态扫描时的位选信号cs_led : out std_logic_vector(1 downto 0);--发光二极管及数码管的片选信号输入端dout_led : out std_logic_vector(7 downto 0));--惧的发光器件的信号输出端end dianyabiao;architecture Behavioral of dianyabiao istype state is (st1,st2);signal current_state : state;type state1 is (st0,st1,st2);signal current_state1 : state1;type state2 is (st0,st1,st2,st3,st4);signal current_state2 : state2;signal reg_datain : std_logic_vector(7 downto 0);signal reg_dout : std_logic_vector(15 downto 0);signal dout : std_logic_vector(4 downto 0);signal reg_din : integer range 0 to 80000;signal clk1m,clk1k,clk100 : std_logic;begin--分频部分process(clk) --产生1MHz的频率variable cnt : integer range 0 to 50;beginif clk'event and clk='1' then cnt:=cnt+1;if cnt<50 thenif cnt<25 then clk1m<='0';else clk1m<='1';end if;else cnt:=0;end if;end if;end process;process(clk1m) --产生1KHz的频率variable cnt : integer range 0 to 1000;beginif clk1m'event and clk1m='1' then cnt:=cnt+1;if cnt<1000 thenif cnt<500 then clk1k<='0';else clk1k<='1';end if;else cnt:=0;end if;end if;end process;process(clk1k) --产生100Hz的频率variable cnt : integer range 0 to 10;beginif clk1k'event and clk1k='1' then cnt:=cnt+1;if cnt<10 thenif cnt<5 then clk100<='0';else clk100<='1';end if;else cnt:=0;end if;end if;end process;--tlc549的控制部分process(clk1k)variable cnt : integer range 0 to 7;variable datain : std_logic_vector(7 downto 0);beginif clk1k'event and clk1k='1' thencase current_state iswhen st1=> --将数据进行串并转换cs_tlc549<='0';datain:=datain(6 downto 0)&din; --将读取的数据向高位移位clk_tlc549<='1';current_state<=st2;when st2=>cs_tlc549<='0';clk_tlc549<='0';current_state<=st1;if cnt<7 then cnt:=cnt+1; --读取8位数据else cnt:=0;reg_din<=conv_integer(datain)*195; --每单位数字量乘以系数=当前电压值;reg_datain<=not(datain);end if;when others=>current_state<=st1;end case;end if;end process;--十进制-BCD码转换;process(clk100)variable reg : integer range 0 to 80000;variable d1,d2,d3,d4 : std_logic_vector(3 downto 0);beginif clk100'event and clk100='1' thencase current_state1 iswhen st0=>reg:=reg_din;d1:="0000";d2:="0000";d3:="0000";d4:="0000";current_state1<=st1;when st1=>if reg>9999 then reg:=reg-10000;d1:=d1+1;elsif reg>999 then reg:=reg-1000;d2:=d2+1;elsif reg>99 then reg:=reg-100;d3:=d3+1;elsif reg>9 then reg:=reg-10;d4:=d4+1;else current_state1<=st2;end if;when st2=>reg_dout<=d1&d2&d3&d4;current_state1<=st0;when others=>current_state1<=st0;end case;end if;end process;--动态扫描控制;process(clk1k)beginif clk1k'event and clk1k='1' thencase current_state2 iswhen st0=> --在发光二极管上显示模数转换后的数字量cs_led<="01"; --熄灭数码管shift<="1111";dout<="11111";current_state2<=st1;when st1=> --在数码管的最高位显示数据cs_led<="10"; --熄灭发光二极管shift<="0111"; --最高位数码管显示dout<='0'®_dout(15 downto 12); --小数点显示,并且将最高位的数据送给译码器current_state2<=st2;when st2=> --在数码管的次高位显示数据cs_led<="10"; --熄灭发光二极管shift<="1011"; --次高位数码管显示dout<='1'®_dout(11 downto 8); --小数点不显示,将次高位的数据送给译码器current_state2<=st3;when st3=> --在数码管的次低位显示数据cs_led<="10"; --熄灭发光二极管shift<="1101"; --次低位数码管显示dout<='1'®_dout(7 downto 4); --小数点不显示,将次低位的数据送给译码器current_state2<=st4;when st4=> --在数码管的最低位显示数据cs_led<="10"; --熄灭发光二极管shift<="1110"; --最低位数码管显示dout<='1'®_dout(3 downto 0); --小数点不显示,将最低位的数据送给译码器current_state2<=st0;when others=>current_state2<=st0;end case;end if;end process;--**将BCD码进行8段译码(包括小数点)**----**dout(4)代表小数点,低电平点亮**--code1: process (dout,reg_datain)begincase dout(3 downto 0) iswhen "0000"=>dout_led<=dout(4)&"0000001";when "0001"=>dout_led<=dout(4)&"1001111";when "0010"=>dout_led<=dout(4)&"0010010";when "0011"=>dout_led<=dout(4)&"0000110";when "0100"=>dout_led<=dout(4)&"1001100";when "0101"=>dout_led<=dout(4)&"0100100";when "0110"=>dout_led<=dout(4)&"0100000";when "0111"=>dout_led<=dout(4)&"0001111";when "1000"=>dout_led<=dout(4)&"0000000";when "1001"=>dout_led<=dout(4)&"0000100";--"DOUT_LED"送给数码管;whenothers=>dout_led<=reg_datain(7)®_datain(0)®_datain(1)®_datain(2)&re g_datain(3)®_datain(4)®_datain(5)®_datain(6);--"DOUT_LED"送给发光二极管;end case;end process;end Behavioral;四、波形仿真图:五、结论:本次实验达到了实验的基本要求,能够通过调节高精密变阻器实现0—2.5v的电压测量及显示。
数字电压表设计实验报告
《数字电路》课程设计报告课题:数字电压表专业:电子信息工程班级:姓名:学号:指导老师:日期:2013年12月10日目录一、摘要 (2)二、设计任务及要求 (2)三、设计总体方案 (2)四、单元电路的设计 (3)五、调试过程及结果分析 (6)六、心得感悟 (7)七、参考文献 (7)八、附录(整机逻辑电路图、实物图、PCB板图) (8)一、摘要本文主要介绍的是基于ICL7107数字电压表的设计的设计,ICL7107是目前广泛应用于数字测量系统是一种集三位半转换器段驱动器位驱动器于一体的大规模集成电路,ICL7107是目前广泛应用于数字测量系统的一种3位半A/D转换器,能够直接驱动共阳极数字显示器,够成数字电压表,此电路简洁完整,稍加改造就可以够成其他电路,如数字电子秤、数字温度计的等专门传感器的测量工具。
ICL7107是目前广泛应用于数字测量系统是一种集三位半转换器段驱动器、位驱动器于一体的大规模集成电路,官地方官方主要用于对不同电压的测量和许多工程上的应用,调频接口电路,它采用的是双积分原理完成A/D转换,全部转换电路用CMOS大规模集成电路设计。
应用了ICL7107芯片数码管显示器等,芯片第一脚是供电,正确电压时DC5V,连接好电源把所需要测量的物品连接在表的两个端口,从而可以在显示器上看到所需要的结果。
在软件设计上,主要编写了实现计数频率的调节和单片机功能的相关程序,,最后把软件设计和硬件设计结合到一起,然后进行调试。
二、设计任务及要求1. 设计一个数字电压表电路,能够实验电压测量;2.测量范围:通过小数点驱动电路,直流电压0V到1.999V,0V到19.99V,0V 到199.9V,0V到1999V.3.画出数字电压表电路原理图,并作出PCB图;4.利用芯片ICL7107来实现电路功能;5.选择合适的电阻、电容、液晶显示器等器件;6.完成全电路理论设计、制作、调试,制板锡焊;7.上交制作产品一件。
数字电压表实验报告
实验五电压表实验1.设计过程:按照“建立项目文件”--“新建VHDL源文件”--“配置管脚”--“编译下载”--“芯片测试”的顺序。
原理图:1.FPGA的系统时钟来自于小脚丫FPGA开发板配置的24MHz时钟晶振,连接FPGA的C1引脚。
2.实验借助FPGA底板自带的ADC模块,具体信息如下:ADC模块的功能时实现模拟信号转换数字信号,主要包含P1(测试点)、Radj1(10K的可调电位器)和U3(8位串行模数转换器ADC081S)。
在不外接其他信号的情况下,旋转电位计,ADC081S的输入电压在0到3.3V之间变化,通过模数转换实现ADC的采样,原理图连接如图所示:3.实验思路如下:1.根据ADC模块的时序图,完成将ADC模块和FPGA引脚连接起来。
时序图如下:2. 根据程序的框图把完整的程序写出来,显示模块和译码模块利用以前写过的进行例化使用。
以下是程序的框图:VHDL 汇编语言如下: 2.总代码: library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity dianyabiao is port( clk: in std_logic;--定义输入和输出 sda: in std_logic; sclk: buffer std_logic; cs: out std_logic; sdata: out std_logic; sck: out std_logic; rck: out std_logic );end dianyabiao;architecture one of dianyabiao is component led_573 --例化port( rst: in std_logic; clk_t_in : in std_logic; sdata: out std_logic; H: in std_logic; ledcode1,ledcode2,ledcode3,ledcode4: in std_logic_vector(6 downto 0); dot: in std_logic_vector(3 downto 0);sda sck cssck: out std_logic;rck: out std_logic);end component;component seg7coderport(data_in: in integer range 0 to 15;seg7_out: out std_logic_vector(6 downto 0));end component;signal ad_phase: integer range 0 to 19;signal clk_t_in: std_logic;signal ad_clk: std_logic;signal ad_out:std_logic_vector(7 downto 0);signal ad:std_logic_vector(7 downto 0);signal data_in1:integer range 0 to 15;signal data_in2:integer range 0 to 15;signal seg1,seg2: std_logic_vector(6 downto 0); --七段码beginu1:seg7coderport map(data_in => data_in1,seg7_out => seg1);u2:seg7coderport map(data_in => data_in2,seg7_out => seg2);u3:led_573port map(rst=>'1',clk_t_in => clk,H => '1',dot => "0000",ledcode1 => seg1,ledcode2 => seg2,ledcode3 =>"1111110",ledcode4 =>"1111110",sdata => sdata,sck => sck,rck => rck);--得到分频时钟,50-20000khz的分频process(clk)variable divcnt: integer range 0 to 1000;beginif clk'event and clk='1' thenif divcnt=1000 thendivcnt:=0;clk_t_in<=not clk_t_in;elsedivcnt:=divcnt+1;clk_t_in<=clk_t_in;end if;end if;end process;--ad模快process(clk_t_in)-- ad_clk<=clk_t_in;beginif clk_t_in'event and clk_t_in = '1' thensclk<=not sclk;if sclk='1' thenif ad_phase = 19 thenad_phase<=0;elsead_phase<=ad_phase+1;end if;end if;if sclk='0' and ad_phase>16 then --保证cs的值cs<='1';elsecs<='0';end if;if ad_phase=3 and sclk='0' then --值的输出ad(7)<=sda;end if;if ad_phase=4 and sclk='0' thenad(6)<=sda;end if;if ad_phase=5 and sclk='0' thenad(5)<=sda;end if;if ad_phase=6 and sclk='0' thenad(4)<=sda;end if;if ad_phase=7 and sclk='0' thenad(3)<=sda;end if;if ad_phase=8 and sclk='0' thenad(2)<=sda;end if;if ad_phase=9 and sclk='0' thenad(1)<=sda;end if;if ad_phase=10 and sclk='0' thenad(0)<=sda;end if;if ad_phase=11 and sclk='0' thenad_out<=ad;end if;end if;end process;process(ad_out) --完成将ad_out的八位输出转化成两位16进制的数begincase ad_out(3 downto 0) is--when "0000"=>data_in1<=0;when "0001"=>data_in1<=1;when "0010"=>data_in1<=2;when "0011"=>data_in1<=3;when "0100"=>data_in1<=4;when "0101"=>data_in1<=5;when "0110"=>data_in1<=6;when "0111"=>data_in1<=7; when "1000"=>data_in1<=8; when "1001"=>data_in1<=9; when "1010"=>data_in1<=10; when "1011"=>data_in1<=11; when "1100"=>data_in1<=12; when "1101"=>data_in1<=13; when "1110"=>data_in1<=14; when "1111"=>data_in1<=15; end case;case ad_out(7 downto 4) is when "0000"=>data_in2<=0; when "0001"=>data_in2<=1; when "0010"=>data_in2<=2; when "0011"=>data_in2<=3; when "0100"=>data_in2<=4; when "0101"=>data_in2<=5; when "0110"=>data_in2<=6; when "0111"=>data_in2<=7; when "1000"=>data_in2<=8; when "1001"=>data_in2<=9; when "1010"=>data_in2<=10; when "1011"=>data_in2<=11; when "1100"=>data_in2<=12; when "1101"=>data_in2<=13; when "1110"=>data_in2<=14; when "1111"=>data_in2<=15; end case;end process;end architecture;3.管脚分配:4.实验现象:旋转电压旋钮,电压从00变化到FF,现象如下面所示:。
数字电压表课程设计报告
数字电压表课程设计报告一、实验目的本实验旨在使学生掌握数字电压表的基本原理、构成和使用方法,通过实践锻炼学生的动手操作能力和实际问题解决能力。
二、实验器材数字电压表、直流稳压电源、电阻箱、待测电路板等。
三、实验内容1.数字电压表的基本原理、构成和使用方法的介绍;2.根据实验要求搭建待测电路;3.调节直流稳压电源输出电压为所需值;4.连接数字电压表到待测电路上并测量电压值;5.对测得的电压值进行分析、处理和讨论。
四、实验流程及步骤1.实验器材准备:数字电压表、直流稳压电源、电阻箱、待测电路板等器材;2.理解数字电压表的基本原理与构成,并熟练掌握使用方法;3.根据实验所需,找到相应的电路板,搭建待测电路,并连接好直流稳压电源;4.调节直流稳压电源的输出电压为所需值,并连接数字电压表到待测电路上;5.测量待测电路的电压值,并在数字电压表上进行记录;6.对测得的电压值进行分析、处理和讨论,并得出实验结论。
五、实验注意事项1.在操作实验器材时,务必严格按照使用说明书和教师的要求进行操作;2.实验器材保持完好无损,任何破损的器材均不能使用;3.实验前需仔细了解实验内容,规划实验流程;4.在操作实验时,要认真记录实验数据,并进行及时分析处理;5.实验结束后,将实验器材妥善归位,保持实验室整洁干净。
六、实验结果及结论通过实验,我们得到了待测电路的电压值,并对其进行了分析、处理和讨论。
根据实验结果和所给数据,我们得出了结论:数字电压表可准确测量待测电路的电压值,为后续研究和实践提供重要依据。
七、实验心得体会通过本次实验,我对数字电压表的原理及其使用方法有了更深入的了解,并通过实践掌握了一定的动手操作能力和实际问题解决能力。
同时,我认识到在实验中必须注重细节和注意安全,仔细完成每一个实验步骤,及时记录和分析实验数据,才能使实验结果更加准确和可靠。
数字电压表实验报告
简易数字电压表目录摘要及关键词 (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)。
数字电路实验三:数字电压表(设计报告)
数字电路实验三:数字电压表(设计报告)数电实验3设计报告实验名称:数字电表实验目的:1.掌握组合逻辑与时序逻辑电路的设计方法及调试方法2.熟练掌握常用MSI逻辑芯片的功能及使用方法3.初步掌握Verilog HDL数字系统设计方法4.熟悉PLD实验箱的结构和使用及Quartus II软件的基本操作5.掌握采用Quartus II软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:1、利用FPGA 与ADC0809 设计一个数字电压表,能够测量0-5V 之间的直流电压值,四位数码显示。
2、在实验电路板上焊接插座,将ADC0809 安装在插座上。
3、选择一路模拟量输入通道(如:IN0),经可调电位器送入0-5V 的直流电压。
4、ADC0809 时序由FPGA 控制,ADC 转换输出的数字量(D7-D0)送回FPGA,转换结果由实验箱上的LED 数码管以十进制形式显示。
5、ADC0809 的VREF 接+5V 电压。
6、FPGA 与ADC0809 之间接口利用实验箱上的“彩色液晶”接口。
程序设计过程:1、定义程序名、输入输出量和初始化Moduleadc_cc(clkin,rst,clkout,sel,data,start,eoc,ale,oe,seg_com,seg_data); input clkin; //时钟输入50MHZ inputrst;inputeoc; //ADC0809input [7:0] data; //输入八位数据output clkout; //时钟输出output start; //ADC0809起始信号 output [2:0] sel;//转换通道 output ale; //ADC0809 outputoe;//ADC0809 output [7:0] seg_com; //位选 output [7:0] seg_data;//段选parameter CLK_FREQ = 'D50_000_000;//系统时钟50MHZ parameter CLK_out_FREQ ='D500_000;//输出时钟parameter state_pre = 0; //sel 状态1parameter state_pre2 = 1; //ale 状态2 parameter state_start =2; //start 状态3 parameter state_conv = 3; //conv 状态4parameter state_wait = 4; // 状态5 parameter state_readpre = 5;// 状态6 parameter state_read = 6;//over // 状态7reg [2:0] sel; //定义寄存器 reg ale;//定义寄存器 reg start; //定义寄存器 regoe; //定义寄存器reg [7:0] data_led; //LED显示数据 reg[31:0] DCLK_DIV; //32位计数器regclkout; //提供ADC0809时钟500KHZ reg [3:0]state = state_pre;2、按照PDF所给出的时序图进行编程对照时序图,使ADC0809按上图方式工作进行编程always @ (negedgeclkout) case (state) state_pre : begin sel[2:0] <='b000; //ABC 000 通道0 state <= state_pre2;//转到状态2 oe<= 0; //OE拉低 end state_pre2 :begin ale <= 1; state <= state_start; endstate_start : begin start <= 1; ale<= 0; state <=state_conv; end state_conv : begin ale <= 0;start <= 0; state <= state_wait; end state_wait :begin if(eoc) begin state <= state_readpre; endend state_readpre : begin oe<= 1; state <= state_read; end state_read : begin data_led = data; state <= state_pre; end endcase//ALE拉高 //转到状态3 //START拉高 //转到状态4//ALE拉低锁定 //START拉低 AD启动 //转到状态5 //查询EOC是否被拉高 //转到状态6 //输出使能拉高 //转到状态7//开始读数据 //重新回到状态1 进行下一次AD转换 3、将AD转换结果用数码管显示。
数字电压表实验报告
数字电压表实验报告《数字电压表实验报告》实验目的:通过使用数字电压表,掌握其基本使用方法并了解电压测量的原理。
实验仪器:数字电压表、直流电源、导线等。
实验原理:数字电压表是一种用于测量电压的仪器,它通过将待测电压转换为数字信号并显示在屏幕上,从而实现对电压的测量。
其测量原理是利用电压测量电路将待测电压转换为相应的电流信号,再通过内部的模数转换器将电流信号转换为数字信号,最后通过显示装置显示出来。
实验步骤:1. 连接实验仪器:首先将数字电压表的正负极与待测电路的正负极相连,并确保连接正确无误。
2. 调整量程:根据待测电压的大小,选择合适的量程,并将数字电压表的旋钮调整到相应的量程档位。
3. 测量电压:打开待测电路的电源,观察数字电压表的显示数值,并记录下来。
4. 关闭电源:待测电压测量完成后,关闭待测电路的电源,并拔掉连接线。
实验结果:根据实验结果,我们可以得出待测电路的电压为多少,并且通过对比不同量程下的测量结果,了解数字电压表的量程选择原则。
实验结论:通过本次实验,我们掌握了数字电压表的基本使用方法,并了解了电压测量的原理。
同时,我们也了解了数字电压表的量程选择原则,并且通过实验结果验证了其准确性。
实验中的注意事项:在进行实验时,要注意连接线路的正确性,避免接错极性导致仪器损坏。
同时,在选择量程时要根据待测电压的大小进行合理选择,避免选择错误导致测量不准确。
总结:通过本次实验,我们对数字电压表的使用方法和原理有了更深入的了解,这对我们今后的实验操作和电路调试都有着重要的指导意义。
希望通过不断的实践和学习,我们能够更加熟练地掌握数字电压表的使用技巧,并且在工程实践中能够准确地测量电压并进行相应的调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动化与电气工程学院电子技术课程设计报告题目数字电压表的制作专业班级学号学生姓名指导教师二○一三年七月一、课程设计的目的与意义1.课程设计的主要目的,是通过电子技术综合设计,熟悉一般电子电路综合设计过程、设计要求、完成的工作内容和具体的设计方法。
2.同时了解双积分式A/D转换器ICL7107的性能及其引脚功能,熟悉集成电路ICL7107构成直流数字电压表的使用方法,并掌握其在电路中的工作原理。
3.通过设计也有助于复习和巩固以往的模电、数电内容,达到灵活应用的目的。
在完成设计后还要将设计的电路进行安、调试以加强学生的动手能力。
在此过过程中培养从事设计工作的整体观念。
4.利用双积分式A/D转换器ICL7107设计一数字电压表,量程为-1.99—+1.99,通过七段数码管显示。
二、电路原理图数字电压表原理图三、课程设计的元器件1.课程设计所使用的元器件清单:2.主要元器件介绍(1)芯片ICL7107:ICL7107的工作原理双积分型A/D转换器ICL7107是一种间接A/D转换器。
它通过对输入模拟电压和参考电压分别进行两次积分,将输入电压平均值变换成与之成正比的时间间隔,然后利用脉冲时间间隔,进而得出相应的数字性输出。
它的原理性框图如图所示,它包括积分器、比较器、计数器,控制逻辑和时钟信号源。
积分器是A/D转换器的心脏,在一个测量周期内,积分器先后对输入信号电压和基准电压进行两次积分。
比较器将积分器的输出信号与零电平进行比较,比较的结果作为数字电路的控制信一号。
时钟信号源的标准周期Tc 作为测量时间间隔的标准时间。
它是由内部的两个反向器以及外部的RC组成的。
其振荡周期Tc=2RCIn1.5=2.2RC 。
ICL7106A/D转换器原理图计数器对反向积分过程的时钟脉冲进行计数。
控制逻辑包括分频器、译码器、相位驱动器、控制器和锁存器。
分频器用来对时钟脉冲逐渐分频,得到所需的计数脉冲fc和共阳极LED数码管公共电极所需的方波信号fc。
译码器为BCD-7段译码器,将计数器的BCD码译成LED数码管七段笔画组成数字的相应编码。
驱动器是将译码器输出对应于共阳极数码管七段笔画的逻辑电平变成驱动相应笔画的方波。
控制器的作用有三个:第一,识别积分器的工作状态,适时发出控制信号,使各模拟开关接通或断开,A/D转换器能循环进行。
第二,识别输入电压极性,控制LED 数码管的负号显示。
第二,当输入电压超量限时发出溢出信号,使千位显示“1" ,其余码全部熄灭。
钓锁存器用来存放A/D转换的结果,锁存器的输出经译码器后驱动LED 。
它的每个测量周期自动调零(AZ)、信号积分(INT)和反向积分(DE)三个阶段。
第一阶段:自动调零阶段AZ转换开始前(转换控制信号VL=0) ,先将计时器清零,并接通开关S0 ,使积分电容C完全放电。
第二阶段:信号积分INT令开关S1合到输入信号V1一侧,积分器对V1进行固定时间Tl的积分,积分结果为:上式说明,在Tl固定条件下V0与Vl成正比。
第三阶段:反向积分DE令开关S1转至参考电压VREF一侧,积分器反向积分。
如果积分器的输出电压上升至必零时,所经过的积分时间T2则可得,故可得到,可见,反向积分到V0=0这段时间T2与Vl成正比。
令时钟脉冲CD的周期为Tc,计数扔器在T2时间内计数值为N得:T2=NTc代入上式得:分析可知:T1,Tc,VREF固定不变,计数值N仅与VIN成正比,实现了模拟量到数字量的转变。
下面介绍A/D转化过程的时间分配。
假设时钟脉冲频率为40KHz,每个周期为4000Tc, 如图所示,每个测量周期中三个阶段工作自动循环。
双积分型A/D转换器的电压波形图各阶段时间分配如下①信号积分时间Tl用1000Tc 。
②信号反向积分时间T2用0一2000Tc ,这段时间的长短是由VIN的大小决定的。
③自动调零时间T0用1000-3000Tc 。
从上面的分析可知,Tl 是固定不变的,但T2随VIN的大小而改变。
因为,选基准电压VRFF = 100.0mv ,由:得:VIN=0.1N满量程时N=2000,同样由上式可导出满量程时VIN与基准电压的关系为:VIN=2VREF 。
为了提高仪表的抗干扰能力,通常选定的采样时间Tl 为工频周期的整数倍。
我国采用50Hz交流电网,其周期为20ms,应选T1=n×20ms。
n= l,2,3……n 越大,对串模干扰的抑制能力越强,但n越大,A/D转换的时间越长。
因此,一般取Tl=100ms,即f0=40KHz 。
由T0=2RC105=2.2RC,得式中T0为振荡周期。
由上式可知,当f0=40KHz时,阻容元件的选取并不唯一,只要满足要求即可。
INC7107的结构电路图ICL7107主要参数:芯片INC7107各个引脚的功能和注意事项:ICL7107 安装电压表头时的一些要点:按照测量=±199.9mv1.辨认引脚:芯片的第一脚,是正放芯片,面对型号字符,然后,在芯片的左下方为第一脚。
也可以把芯片的缺口朝左放置,左下角也就是第一脚了。
许多厂家会在第一脚旁边打上一个小圆点作为标记。
知道了第一脚之后,按照反时针方向去走,依次是第 2 至第40 引脚。
(1 脚与40 脚遥遥相对)。
2.牢记关键点的电压:芯片第1脚是供电,正确电压是DC5V 。
第36 脚是基准电压,正确数值是100mV,第26 引脚是负电源引脚,正确电压数值是负的,在-3V 至-5V 都认为正常,但是不能是正电压,也不能是零电压。
芯片第31 引脚是信号输入引脚,可以输入±199.9mV 的电压。
在一开始,可以把它接地,造成“0”信号输入,以方便测试。
3.注意芯片27,28,29 引脚的元件数值,它们是0.22uF,47K,0.47uF 阻容网络,这三个元件属于芯片工作的积分网络,不能使用磁片电容。
芯片的33 和34 脚接的104 电容也不能使用磁片电容。
4.注意接地引脚:芯片的电源地是21 脚,模拟地是32 脚,使用时一般与输入信号的负端以及基准电压的负极相连。
信号地是30 脚,基准地是35 脚,通常使用情况下,这 4 个引脚都接地,在一些有特殊要求的应用中(例如测量电阻或者比例测量),30 脚或35 脚就可能不接地而是按照需要接到其他电压上。
5、比例读数:把31 脚与36 脚短路,就是把基准电压作为信号输入到芯片的信号端,观察此时数码管的读数6、其他引脚的功能简要说明:20引脚PM:液晶显示器背面公共电极的驱动端,简称背电极. a1-g1,a2-g2,a3-g3:分别为个位、十位、百位笔画的驱动信号,依次接个位、十位、百位LED显示器的相应笔画电极19脚Bc4:千位笔画驱动信号。
接千位LEO显示器的相应的笔画电极。
37脚TEST :测试端,该端经过500欧姆电阻接至逻辑电路的公共地,故也称“逻辑地”或“数字地”。
27脚INT:27是一个积分电容器,必须选择温度系数小不致使积分器的输入电压产生漂移现象的元件。
28脚BUF:缓冲放大器输出端,接积分电阻Rint。
其输出级的无功电流( idling current )是100μA,而缓冲器与积分器能够供给20μA 的驱动电流,从此脚接一个Rint至积分电容器,其值在满刻度200mV时选用47K,而2V满刻度则使用470K。
AZ:积分器和比较器的反向输入端,接自动调零电容(29脚)CAz 。
如果应用在200mV满刻度的场合是使用0.47μF,而2V满刻度是0.047μF。
(2)电压显示电路:设计中采用的是7段LED数码管来显示电压值。
LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由8个发光二极管组成,其中7个按‘8’字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。
把8个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阴极接法。
当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。
其8段分别命名为dp g f e d c b a。
例如,要显示“0”,则dp g f e d c b a分别为:00111111B;若要显示多个数字,只要让若干个数码管的位码循环为高电平就可以了。
七段数码管结构图共阴极共阳极7段数码管驱动方法:发光二极管(LED是一种由磷化镓(GaP)等半导体材料制成的,能直接将电能转变成光能的发光显示器件。
当其内部有一一电流通过时,它就会发光。
7段数码管每段的驱动电流和其他单个LED发光二极管一样,一般为5~10mA;正向电压随发光材料不同表现为1.8~2.5V不等。
7段数码管的显示方法可分为静态显示与动态显示,下面分别介绍。
(1)静态显示所谓静态显示,就是当显示某一字符时,相应段的发光二极管恒定地寻能可截止。
这种显示方法为每一们都需要有一个8位输出口控制。
对于51单片机,可以在并行口上扩展多片锁存74LS573作为静态显示器接口。
静态显示器的优点是显示稳定,在发光二极管导通电注一定的情况下显示器的亮度高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程序,这样大大节省了CPU的时间,提高了CPU的工作效率;缺点是位数较多时,所需I/O口太多,硬件开销太大,因此常采用另外一种显示方式——动态显示。
(2)动态显示所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。
虽然在同一时刻只有一位显示器在工作(点亮),但利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。
显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。
调整电流和时间参烽,可实现亮度较高较稳定的显示。
若显示器的位数不大于8位,则控制显示器公共极电位只需一个8位I/O口(称为扫描口或字位口),控制各位LED显示器所显示的字形也需要一个8位口(称为数据口或字形口)。
动态显示器的优点是节省硬件资源,成本较低,但在控制系统运行过程中,要保证显示器正常显示,CPU必须每隔一段时间执行一次显示子程序,这占用了CPU的大量时间,降低了CPU工作效率,同时显示亮度较静态显示器低。
综合以上考虑,由于温度显示为精确到小数点后两位,故只需4个数码管,又考虑到CPU工作效率与电源效率,本毕业设计采用静态显示。
为共阳极显示。
四、系统调试及结果分析1.首先根据电路原理图焊接出实际电路,然后进行电路的调试,在实际的电路中,芯片一脚接+5V的电源,26引脚接-5V的电压,在电阻R2一端接入一个测试电压,接地端接测试电压的负极。
2.现在将在调试过程中的问题总结:测试数码管显示的数据是否正确,将编好的程序写进单片机后,观察数码管,发现码型显示不正确,通过改正硬件电路,是数码管显示正确的数据。