多功能数字电压表设计报告

合集下载

多功能数字电压电流表的设计

多功能数字电压电流表的设计

一. 摘要本次课程设计利用实验箱设计一个可测量多路电压的多功能数字电压电流表,按键控制分时显示测量值。

设计时用查询方式、采用A/D转换器ADC0809采集3路被测的电压信号,并利用按键来控制各路的通断与工作与否。

实验中用八段数码管显示测量数值,测量数值精确到小数点后两位。

二. 关键词ADC0809 电压表8255 8253 按键8段数码管正文三.元件功能及原理介绍3.1 8253的功能和使用1.8253是一种可编程的定时器或计数器。

本次设计中利用8253的定时作用,用于产生一个稳定的脉冲。

该脉冲用于提供ADC0809的触发脉冲。

本设计中使用一片8253芯片,其线路如图3.1所示。

端口地址如表3.1所示。

系统中,8253在通道0下工作于方式2。

8253 通道入口接1MHz的信号源,输出接ADC0809的时钟端,数模转化用,这里的0计数器仅当作一个时Array钟脉冲用。

2.《8253引脚图》当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连Intel 8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。

每个通道都可以编程设定6种工作方式之一种;由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。

表8-4 控制功能表CS RD WRA1A0功能0100 0写计数器00100 1写计数器10101 0写计数器20101 1写控制字寄存器0010 0读计数器00010 1读计数器10011 0读计数器20011 1无操作1XXX X禁止使用011X X无操作计数器(0 ~ 2)即三个计数器/定时器通道。

数字电压表设计报告

数字电压表设计报告

一、课程内容介绍:数字电压表是用来测量信号电压的装置。

它可以测量正弦波、方波、三角波和尖脉冲信号的电压。

在进行模拟、数字电路的设计、安装、调试过程中,经常要用到数字电压表。

本设计是设计一个三位直流数字电压表。

由于其用十进制数显示,测量迅速、精度高、显示直观,一次数字电压表得到广泛的使用。

二、总体设计1、实验目的设计制作一个具有数字显示功能的数字电压表。

该数字电压表能对日常电子线路中的电压进行方便的测量。

2、实验设计要求与内容1) 本设计要求从测试端输入0-51V的电压,经90K和10K电阻分压,送ADC0804输入端,所以实际输入电压是测试端的十分之一。

经89C2051处理,在D3、D2、D1三个七段显示。

2) 本电路ADC0804最大转换值为0FFH(255),对应输入电压是5.1V,对应测试端电压(显示电压)51V。

3) 若测试端输入为4V,实际进入ADC0804为0.4Va) 经A/D转换后为14Hb) 14H经十进制转换后为0020,则令R4=00,R5=20c) 将0020*2=0040,令R4=00,R5=40d) 将数字点设在D2上,D4 D3 D2 D1分别显示为0 0 4 04) 本电路省略D4,只显示D3 D2 D15)总体设计框图:3、实验技术指标1) 被测量信号电压范围:0-51V2) 测量精度:测量显示3为有效数字3) 分辨率:5.1V/2^8注意:在画PCB的时候要注意将晶振,即Y1,C4,C5,一起布置在芯片AT89C2051旁边,还有电容C2,C3也要靠近芯片AT89C2051,这样才能有效显示结果。

4、设计提示1) 本设计要求从测试端输入0-51V的电压,经90K和10K电阻分压,送ADC0804输入端,所以实际输入电压是测试端的十分之一。

经89C2051处理,在D3、D2、D1三个七段显示器显示。

2)本电路ADC0804最大转换值=0FFH(255),对应输入电压是5.1V,对应测试端电压(显示电压)是51V。

多功能数字电压表硬件部分设计电路图

多功能数字电压表硬件部分设计电路图

3 硬件设计3.1 输入调理电路的设计3.1.1 直流电压测量电路输入信号不经过任何衰竭直接加在模拟开关的1脚,使模拟开关处于不受保护的状态,当输入信号为大信号时,可能会使模拟开关工作不正常,甚至烧毁模拟开关,且模拟开关与运放直接相连,将导致运放处于不受保护的工作状态。

如下图3-1所示。

图3-1 直流电压测量电路该电路输入信号经过100千欧的电阻,从集成运放的反相输入端输入,由电阻、模拟开关和运放组成放大倍数可调的比例电路,并且这个100千欧的电阻还可以起到限流的作用。

被测电压(0-200V)从DC V端输入,通过单片机控制模拟开关CD4052选择相应的量程,将被测电压值衰减到0-200mV,然后在经过由精密运算放大器OP07组成的放大电路,将电压值放大10倍后输入到A/D转换器ADC0809的IN0端。

分压电阻采用误差为±0.5%的精密金属膜电阻。

3.1.2 交流/直流转换电路半波整流电路。

利用二极管的单向导电性,可以很容易的得到直流电压,且能满足设计要求。

如图3-2所示。

J2这个电路是利用低漂移单运算放大器TL062与二极管D1 1N4148组成平均值响应的线性半波整流电路。

该电路可避免二极管在小信号整理时所引起的非线性误差,使交流/直流转换电路的输入电压与输出电压成线性关系,适合测量40-400Hz的正弦电压,测量准确度优于±1%。

3.1.3 电流/电压转换电路普通模拟开关可以通过的电流很微小,所以通过单片机控制继电器来控制线路导通断开,将被测电流信号(0-500mA)转换为相应的电压信号(0-200mV),然后经过OP07将信号放大10倍,最后输入A/D转换器ADC0809的IN0端。

如图3-3所示。

图3-3 电流/电压转换电路图1A/250V的熔丝管FU为限流保护电路,两个二极管1N4007构成保护为过压保护电路。

阻值为90Ω、9Ω的电阻采用误差为±0.5%的精密金属膜电阻,而阻值为0.4Ω、0.6Ω的电阻通过的电流很大必须采用误差为±0.5%的精密绕线电阻。

数字电压表实验报告

数字电压表实验报告

简易数字电压表设计报告姓名:***班级:自动化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软件进行编程。

数字电压表设计课程设计报告方案一

数字电压表设计课程设计报告方案一

本科课程设计题目数字电压表设计目录一、课程设计目的 (3)二、方案一:XXXXXXXX (3)(一)原理框图......................................... 错误!未定义书签。

(二)电路原理总图................................. 错误!未定义书签。

(三)主要芯片原理及引脚图................. 错误!未定义书签。

(四)各部分电路原理分析..................... 错误!未定义书签。

三、设计与调试 (7)四、结论 (10)五、总结 (10)一、课程设计目的1.学习查阅文献资料,掌握设计方案的设计与书写;2.掌握双积分A/D转换器的工作原理;3.掌握各主要芯片的工作原理及使用方法;4.了解数码管显示原理;5.学会利用通用板实现电子元器件的手动连线及调试;6.掌握模拟电路、数字电路的基本调试方法;7.提高分析问题与解决问题的能力;8.对常见故障会分析原因,并排除故障。

性能指标1. 直流电源供电:+5,-5V2. 量程:-1.999V~+1.999V3. 精度:0.0014. 用五个数码管显示,显示稳定,允许最后一位跳动5. 输入负电压时,最高位显示“-”6. 最高位灭零二、方案一:通过双积分A/D转换器ICL7135实现四位半数字电压表方案简述;本系统所设计的4 1/2数字电压表由ICL7135-4 1/2位A/D转换器、三极管9013驱动阵列、74LS47BCD到七段锁存-译码-驱动器、共阳极LED发光数码管、基准电源、时钟及量程开关电路组成。

4 1/2位是指十进制数00000~1999,只有4位完整显示位,其数字范围为0~9,而其最高位只能显示0或1,故称为半位。

(一)原理框图模数转换ICL7135数 码 管驱动电路数 码 管显示电路时钟信号基准电压被测信号(二)电路原理总图(三)主要芯片原理及引脚图1.ICL7135原理:ICI7135是4位双积分A/D转换芯片,可以转换输出±20000个数字量,有STB选通控制的BCD码输出,与微机接口十分方便.ICL7135具有精度高(相当于14位A/D转换),价格低的优点.其转换速度与时钟频率相关,每个转换周期均有:自校准(调零),正向积分(被测模拟电压积分),反向积分(基准电压积分)和过零检测四个阶段组成,其中自校准时间为10001个脉冲,正向积分时间为10000个脉冲,反向积分直至电压到零为止(最大不超过20001个脉冲).故设计者可以采用从正向积分开始计数脉冲个数,到反向积分为零时停止计数.将计数的脉冲个数减10000,即得到对应的模拟量.图1给出了ICL7135时序,由图可见,当BUSY变高时开始正向积分,反向积分到零时BUSY变低,所以BUSY可以用于控制计数器的启动/停止.引脚图:2.74LS47芯片原理:74LS47译码器原理译码器原理(74LS47)译码器的逻辑功能是将每个输入的二进制代码译成对应的输出的高、低电平信号。

多功能数字电压表设计

多功能数字电压表设计
图3-1硬件系统设计框图
4硬件系统主要电路分析
4.1 C8051F020单片机最小系统电路
最小系统是指保证系统能正常工作的最基本电路和软件部分,单片机的最小系统电路包括外部晶振电路、电源电路和复位电路,如图4-3所示。
(a)外部晶振电路(b)电源电路
(c)外部复位电路
图4-1 单片机最小系统电路
时钟基本脉冲是CPU工作的基础。C8051F310单片机的系统时钟信号,由时钟振荡电路或专用时序脉冲信号提供。C8051F310在内部集成了完整的振荡电路,XTAL和EXTAL分别为振荡器的输出和输入,XTAL和EXTAL引脚可接入一个石英或陶瓷振荡器,如图4-1(a)所示。图中电阻R2是为了避免对外接晶体振荡器的过驱动,电容C可提高振荡器的稳定性。
F7SEG[1]=c&0x0f;12为ADC0转换值的高四位保存在数组F7SEG[0]中
b1=F7SEG[1]*256+F7SEG[2]*16+F7SEG[3];将ADC012位转换的十六进制数转换为十进制数
b=b1*0.5859375;将ADC0转换的值转化为相对应的电压值
6.2 电压值转化为显示的数值程序
(3)总线数据缓冲器
总线数据缓冲器是一个三态双向8位缓冲器,作为8255与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。
(4)读/写控制逻辑电路
读/写控制逻辑电路接受CPU发来的控制信号RD、WR、RESET、地址信号A1-A0等,然后根据控制信号的要求,将端口数据读出,发往CPU,或者将CPU送来的数据写入端口。
{
c=ADC0H; 数据高四位
d=ADC0L;数据的低八位
ADC0CN&=0xdf;请标志位

数字电压表设计实验报告

数字电压表设计实验报告

基于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、利用所学的知识,通过上网或到图书馆查阅资料,设计三个实现数字万用表的方案;只要求写出实验原理,画出原理功能框图,描述其功能。

2、其中对将要实验方案3 1/2数字电压表,需采用中、小规模集成电路、MC14433 A/D转换器等电路进行设计,写出已确定方案详细工作原理,计算出参数。

3、技术指标:Ⅰ、测量直流电压1999-1V;199.9-0.1V;19.99-0.01V;1.999-0.001V;Ⅱ、测量交流电压1999-199V;Ⅲ、三位半显示;Ⅳ、比较设计方案与总体设计;Ⅴ、根据设计过程写出详细的课程设计报告;三、设计方案及原理数字显示电压表将被测模拟量转换为数字量,并进行实时数字显示。

该系统(如图1 所示)可采用MC14433—三位半A/D 转换器、MC1413七路达林顿驱动器阵列、CD4511 BCD到七段锁存-译码-驱动器、能隙基准电源MC1403和共阴极LED发光数码管组成。

本系统是三位半数字电压表,三位半是指十进制数0000~1999。

所谓3位是指个位、十位、百位,其数字范围均为0~9,而所谓半位是指千位数,它不能从0变化到9,而只能由0变到l,即二值状态,所以称为半位。

各部分的功能如下:三位半A/D转换器(MC14433):将输入的模拟信号转换成数字信号。

基准电源(MC1403):提供精密电压,供A/D 转换器作参考电压。

译码器(MC4511):将二—十进制(BCD)码转换成七段信号。

驱动器(MC1413):驱动显示器的a,b,c,d,e,f,g七个发光段,驱动发光数码管(LED)进行显示。

数字电压表的课程设计报告

数字电压表的课程设计报告

摘要 (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 R7,#6
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、使用状态机实现对模数转换芯片TLC549的采样控制,实现一个简易的电压表。

并将硬件验证结果与测量电压值进行比较。

二、整体设计1、本次设计是利用FPGA控制 TLC549,将 AD转换后的电压值读出,并显示在数码管。

模块一为TLC549主控制模块,模块二为bcd1即一位BCD码加减模块,模块三为lookup即A/D转换BCD码模块,模块四为scan_led数码显示模块。

然后将模块生成为相应器件,按照原理图连接,得出相应波形及数据。

由FPGA构成的ASIC的三部分电路(如结构示意图所示):(1)用有限状态机设计的A/D转换控制电路;(2)将8位数字量DB0-DB7转换成3位BCD码电压值的转换路;(3)3位LED显示器的译码显示电路;结构示意图2、原理框图3、模数转换-TLC549 ADC的介绍(1)TLC549各引脚功能如下:●ANALOG IN,模拟量输入端;●sclk,串行时钟输入端;●cs,芯片选择,低有效;●DATA OUT,数字量输出端;●GND,模拟接地;●REF+,基准电压输入端;●REF-,基准电压负端;●VCC,正电源电压端。

(2)TCL549的工作时序图当片选 CS为低电平时,串行输人数据才能被移入移位寄存器。

当 CS为低电平时,在每一个SCLK时钟的上升沿将DIN的一位数据移入移寄存器。

注意,二进制最高有效位被导前移入。

接着, CS的上升沿才将移位寄存器的数据锁存,供DAC电路进行转换;当片选CS为高电平时,串行输人数据不能被移入移位寄存器。

注意.CS的上升和下降都必须发生在SCLK为低电平期间。

三、模块设计模块一module tcl549c(clk,cs,sdata,clk_ad,reset,dataout);input clk,reset,sdata;output cs,clk_ad;output[7:0]dataout;reg cs,clk_ad_r,clk_r;reg[7:0]dataout,dataout_r;reg[7:0]count;reg[2:0]temp;reg[3:0]cnt;reg mark;reg flag;parameter [2:0]s0=0,s1=1,s2=2;reg[2:0]c_st;always@(posedge clk)begin if(count<119)count<=count+1;else begin clk_r<=~clk_r;count=0;endendalways@(posedge clk)begin clk_ad_r<=~clk_r;endassign clk_ad=clk_ad_r;always@(posedge clk_r or negedge reset)begin if(!reset) c_st<=s0;else case(c_st)s0:begin cs<=1;mark<=0;if(temp==3)begin temp<=0;c_st<=s1;endelse begin temp<=temp+1;c_st<=s0;endends1:begin cs<=0;mark<=1;c_st=s2;ends2:begin cs<=0;mark<=1;if(flag==1)c_st<=s0;else c_st<=s2;enddefault:c_st<=s0;endcaseendalways@(posedge clk_ad_r)beginif(mark==1)if(cnt==8)begin cnt<=0;flag<=1;endelse begin cnt<=cnt+1;flag<=0;endendalways@(posedge clk_ad_r)beginif(mark==1)if(flag==1)dataout<=dataout_r;else dataout_r={dataout_r[6:0],sdata};//串转并endendmodule模块二/*功能:一位BCD码加减法模块输入参数:标准时钟clk,被减数/加数dataa,减数/加数datab,低位来的借位/进位cin输出参数:向高位的借位/进位cout,差/和result*/module bcd1(dataa, datab,cin, cout, result);input [3:0] dataa;input [3:0] datab;input cin;output reg cout;output [3:0]result;reg [4:0]result_r;assign result=result_r;always @(*)beginresult_r = dataa + datab + cin; // 二进制加法if((result_r > 4'd9 )) //||((result_r == 4'd0)&&(dataa != 0))||((result == 4'd1)&&(dataa != 0)&&(result_ab == 4'd0))/*当结果大于9时,补6,当结果由不同时为0的加数相加得0时,补6*/ beginresult_r = result_r + 4'd6;cout = 1;endelsebeginresult_r = result_r;cout =0;endendendmodule模块三module lookup(V,q);input [7:0]V;output [11:0]q;reg [11:0]q;reg [11:0]HB,LB;wire d1,d2,d3;always@(V)begin case(V[7:4]) //--A/D值的高4位转换成3位BCD码4'b1111: HB<=12'b001001000000; //--2.404'b1110: HB<=12'b001000100100; //--2.244'b1101: HB<=12'b001000001000; //--2.084'b1100: HB<=12'b000110010010; //--1.924'b1011: HB<=12'b000101110110; //--1.764'b1010: HB<=12'b000101100000; //--1.604'b1001: HB<=12'b000101000100; //--1.444'b1000: HB<=12'b000100101000; //--1.284'b0111: HB<=12'b000100010010; //--1.124'b0110: HB<=12'b000010010110; // --0.964'b0101: HB<=12'b000010000000; // --0.804'b0100: HB<=12'b000001100100; //--0.644'b0011: HB<=12'b000001001000; //--0.484'b0010: HB<=12'b000000110010; //--0.324'b0001: HB<=12'b000000010110; //--0.164'b0000: HB<=12'b000000000000; // --0.00default: HB<=12'b111111111111;endcasecase(V[3:0]) //--A/D值低4位变为3位BCD码4'b1111: LB<=12'b000000010101; // --0.154'b1110: LB<=12'b000000010100; // --0.144'b1101: LB<=12'b000000010011; // --0.134'b1100: LB<=12'b000000010010; // --0.124'b1011: LB<=12'b000000010001; // --0.114'b1010: LB<=12'b000000010000; // --0.104'b1001: LB<=12'b000000001001; // --0.094'b1000: LB<=12'b000000001000; // --0.084'b0111: LB<=12'b000000000111; // --0.074'b0110: LB<=12'b000000000110; // --0.064'b0101: LB<=12'b000000000101; // --0.054'b0100: LB<=12'b000000000100; // --0.044'b0011: LB<=12'b000000000011; // --0.034'b0010: LB<=12'b000000000010; // --0.024'b0001: LB<=12'b000000000001; // --0.014'b0000: LB<=12'b000000000000; // --0.00default: LB<=12'b111111111111;endcaseendbcd1u1(.dataa(LB[3:0]),.datab(HB[3:0]),.result(q[3:0]),.cin(1'b0),.cout(d 1));bcd1u2(.dataa(LB[7:4]),.datab(HB[7:4]),.result(q[7:4]),.cin(d1),.cout(d2) );bcd1u3(.dataa(LB[11:8]),.datab(HB[11:8]),.result(q[11:8]),.cin(d2),.cout( d3));endmodule模块四module scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[11:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0]count; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程beginif(count<2)count <= count + 1'b1;else count<=0;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[11:8]; //第一个数码管3'd1:disp_dat = d[7:4]; //第二个数码管3'd2:disp_dat = d[3:0]; //第三个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示endcasecase(count)3'd0:seg_r[7]=0;3'd1:seg_r[7]=1;3'd2:seg_r[7]=1;endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r[6:0] = 7'b1000000; //显示04'h1:seg_r[6:0] = 7'b1111001; //显示14'h2:seg_r[6:0] = 7'b0100100; //显示24'h3:seg_r[6:0] = 7'b0110000; //显示34'h4:seg_r[6:0] = 7'b0011001; //显示44'h5:seg_r[6:0] = 7'b0010010; //显示54'h6:seg_r[6:0] = 7'b0000010; //显示64'h7:seg_r[6:0] = 7'b1111000; //显示74'h8:seg_r[6:0] = 7'b0000000; //显示84'h9:seg_r[6:0] = 7'b0010000; //显示9 default:seg_r[6:0] = 7'b1111111;endcaseendendmodule仿真波形如下:四、结论调节SPOC实验平台上的相应按钮,使显示管出现不同的电压数值,同时使用万用表测出对应的电压数值。

数字电压表设计报告

数字电压表设计报告

数字电压表设计(设计者:陈)一、设计任务和要求1.1、任务描述:1、以单片机为核心,设计一个数字电压表,能够对至少两路0~5V 的模拟电压进行采集,采集数据送LED 显示。

2、设计显示模式切换按钮,可单独显示某一路电压信号,也能对所有电压信号进行循环显示。

3、超过界限指示灯闪烁。

4、创新功能 1.2、任务要求:1、理解任务书要求,明确分工,查找相关资料,制定系统方案;2、论证系统设计方案,运用Proteus 等软件绘制电路原理图;3、根据硬件电路,确定算法,设计程序框图,编写程序代码;4、误差分析与改进,完成设计报告。

二、方案论证2.1、由ADC0808构成模数转换,其原理图如下所示:ADA ADB ADC OUT121ADD B 24ADD A25ADD C 23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START 6OUT58EOC 7OE9CLOCK 10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE 22U2ADC0808Volts+1.30Volts+4.2526%RV11k85%RV21k2.2、由ATC89C51控制程序模块,由IO 口分别对显示,输入等模块进行控制。

2.3、由四位一体数码管对测量值进行显示,如下图所示:E G 1E G 2E G 3E G 4R24702.3、由按钮控制循环/单路切换,如下图所示:KEY1循环/单路KEY2通道选择2.4、LED 灯报警,当电压超过一定值时会闪烁。

D1LED-BLUE三、电路基本单元电路设计下面是数字电压表的原理图:S E G 1S E G 2S E G 3SEG1SEG2SEG3ADA ADA ADB ADCADB ADC SEG4S E G 4XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC130pFC230FR110kC310uFOUT121ADD B 24ADD A25ADD C 23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START 6OUT58EOC 7OE9CLOCK 10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE 22U2ADC0808R2470R3470R4470R5470R6470R7470R8470R9470+88.8Volts+88.8Volts26%RV11k85%RV21kKEY1循环/单路KEY2通道选择D1LED-BLUE3.1、主控模块该设计的核心控制电路是 AT89C52单片机。

数字电压表的设计与制作报告

数字电压表的设计与制作报告

1课题名称数字电压表的设计与制作2设计指标及要求3位的数字电压表电路,技术指标要求是:设计并制作一个通用液晶显示211)直流电压测量范围(0-200V):共分5档200mV、2V、20V、200V;2)基本量程:200mV,测量速率(2-5)次任选;3)分辨率0.1mV;γ4)测量误差:%1.0±≤5)具有正、负电压极性显示,小数点显示和超量程显示。

3方案论证方案一:采用AT89S52单片机为核心、以AD0809数模转换芯片采样、以1602液晶屏显示制作具有电压测量功能的具有一定精度的数字电压表。

AT89S52是一个低功耗,高性能CMOS 8位单片机;8位AD转换器ADC0809,编程简单方便,价格便宜;采用液晶1602做为显示电路,功能强大,适合做各类扩展。

但该方案涉及的编程复杂,同时硬件电路也颇复杂。

方案二:采用ICL7106A/D转换器,液晶显示器EDS801A配以外围电路进行设计。

ICL7106是美国Intersil公司专为数字仪表生产的数字仪,满幅输入电压一般取200mV或2V。

该芯片集成度高,转换精度高,抗干扰能力强,输出可直接驱动LCD液晶数码管,只需要很少的外部元件,就可以构成数字仪表模块,硬件电路简单,而且精度高,完全可以实现要求。

综合分析,同时结合到软硬件实际,选择方案二,原理简单,仅涉及硬件电路。

4系统框图4.1 系统框图5单元电路设计及参数计算5.1AD转换器及外围电路设计电路图如下图5.1所示。

图5.1 AD转换器及外围电路图其中液晶显示采用EDS801,将其各数码的字段及公共端与ICL7106相应端联接。

OSC1、OSC2和OSC3是内部时钟的外接电阻和电容引脚;TEST是数字逻辑地端;VRH和VRL是参考电压的输入端,参考电压决定着AD转换器的灵敏度,它是由U DD分压而来,调节P R分压比可调节灵敏度(调满);两个CR脚是基准电容的外接引脚;COM端是模拟信号公共端;AZ、BUF和INT分别是自动调零端、缓冲控制端和积分器输出端;U+和U-为电源端;IN+和IN-为待测信号输入端。

数字电压表的设计实验报告

数字电压表的设计实验报告

.课程设计——基于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 电位(地)。

数字电压表设计报告

数字电压表设计报告

31/2数字电压表一.设计目的课程设计的主要目的是通过某一模拟、数字电路的综合设计,熟悉一般模拟、数字电路综合设计过程,设计要求,应完成的工作内容和具体的设计方法。

通过设计也有助于复习、巩固以往的学习内容,达到灵活应用的目的。

在设计完成后还要将设计的电路安装,调试以加强动手能力,在此过程中培养从事设计工作的整体观念。

课程设计以培养能力为主,在独立完成设计任务的同时注重多方面能力的培养与提高,主要包括一下几方面:1.独立工作能力和创造力;2.综合运用专业以及基础知识,解决实际工程技术问题的能力;3.查阅图书资料、产品手册和各种工具书的能力;4.工程绘图能力;5.写技术报告和编制技术资料的能力。

二.设计指标1.能测量0-1.999V、0-19.99V、0-199.9V值;2.三位半数码显示;3.测量交直流电压;4.使用元器件越少越好。

三.设计方案及选择讨论数字电压表的主要内容可归纳为电压测量的数字化方法。

其关键是如何把连续的随时间变化的模拟量转化为数字量。

5.电路总体框图如图1-3所示图1-3 电路总体框图此方案所用器材:⒈数字逻辑试验箱万用表、直流电压源、双踪示波器、配线安装工具⒊集成电路及元器件的名称、型号及数量。

见表1-1:序号名称 型号 数量 1 双积分单片ADC MC14433 1块 2 BCD 七段译码器驱动器 CD4511 1块 3 达林顿反相驱动器 MC1413 1块 4 LED 七段显示数码管LG5011AH4只 5电阻、电容若干四、 单元电路设计⒈ 桥式整流电路:整流电路的任务是将交流点变换成直流电,完成这一任务主要是靠二极管单向导电作用,故二极管是构成整流电路的关键元件。

电路如图4-1-1:⒉ 量程控制电路:采用多量程选择的分压电阻网络,可按整机输入电阻为100M Ω标准经计算得4个分压电阻分别为9M Ω、900K Ω、90K Ω、10K Ω,可用四个双刀双掷开关进行控制切换,实现多量程扩展电压测量功能。

数字电压表实验报告

数字电压表实验报告

数字电压表的综合设计一、设计题目:基于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'&reg_dout(15 downto 12); --小数点显示,并且将最高位的数据送给译码器current_state2<=st2;when st2=> --在数码管的次高位显示数据cs_led<="10"; --熄灭发光二极管shift<="1011"; --次高位数码管显示dout<='1'&reg_dout(11 downto 8); --小数点不显示,将次高位的数据送给译码器current_state2<=st3;when st3=> --在数码管的次低位显示数据cs_led<="10"; --熄灭发光二极管shift<="1101"; --次低位数码管显示dout<='1'&reg_dout(7 downto 4); --小数点不显示,将次低位的数据送给译码器current_state2<=st4;when st4=> --在数码管的最低位显示数据cs_led<="10"; --熄灭发光二极管shift<="1110"; --最低位数码管显示dout<='1'&reg_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)&reg_datain(0)&reg_datain(1)&reg_datain(2)&re g_datain(3)&reg_datain(4)&reg_datain(5)&reg_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.数字电压表的基本原理、构成和使用方法的介绍;2.根据实验要求搭建待测电路;3.调节直流稳压电源输出电压为所需值;4.连接数字电压表到待测电路上并测量电压值;5.对测得的电压值进行分析、处理和讨论。

四、实验流程及步骤1.实验器材准备:数字电压表、直流稳压电源、电阻箱、待测电路板等器材;2.理解数字电压表的基本原理与构成,并熟练掌握使用方法;3.根据实验所需,找到相应的电路板,搭建待测电路,并连接好直流稳压电源;4.调节直流稳压电源的输出电压为所需值,并连接数字电压表到待测电路上;5.测量待测电路的电压值,并在数字电压表上进行记录;6.对测得的电压值进行分析、处理和讨论,并得出实验结论。

五、实验注意事项1.在操作实验器材时,务必严格按照使用说明书和教师的要求进行操作;2.实验器材保持完好无损,任何破损的器材均不能使用;3.实验前需仔细了解实验内容,规划实验流程;4.在操作实验时,要认真记录实验数据,并进行及时分析处理;5.实验结束后,将实验器材妥善归位,保持实验室整洁干净。

六、实验结果及结论通过实验,我们得到了待测电路的电压值,并对其进行了分析、处理和讨论。

根据实验结果和所给数据,我们得出了结论:数字电压表可准确测量待测电路的电压值,为后续研究和实践提供重要依据。

七、实验心得体会通过本次实验,我对数字电压表的原理及其使用方法有了更深入的了解,并通过实践掌握了一定的动手操作能力和实际问题解决能力。

同时,我认识到在实验中必须注重细节和注意安全,仔细完成每一个实验步骤,及时记录和分析实验数据,才能使实验结果更加准确和可靠。

数字电路实验三:数字电压表(设计报告)

数字电路实验三:数字电压表(设计报告)

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

沈阳工程学院课程设计设计题目:多功能数字电压表设计系别自控系班级学生姓名学号指导教师职称起止日期沈阳工程学院课程设计(论文)沈阳工程学院课程设计任务书课程设计题目:多功能数字电压表设计系别自控系班级学生姓名学号指导教师职称课程设计进行地点:任务下达时间:起止日期:教研室主任年月日批准多功能数字电压表1.设计主要内容及要求;设计一个多功能数字电压表。

要求:1)硬件电路设计,包括原理图和PCB板图。

2)数字电压表软件设计。

3)要求能够测量并显示直流电压、交流电压,测量范围0.002V---2V。

2.对设计论文撰写内容、格式、字数的要求;(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。

(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。

课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。

3.时间进度安排;沈阳工程学院课程设计(论文)沈阳工程学院多功能数字电压表课程设计成绩评定表系(部):班级:学生姓名:多功能数字电压表中文摘要随着微型计算机及微电子技术在测试领域中的广泛应用,仪器仪表在测量原理、准确度、灵敏度、可靠性、多种功能及自动化水平等方面都发生了巨大的变化,逐步形成了完全突破传统概念的新一代仪器——智能仪器。

智能化是现代仪器仪表的发展趋势,许多嵌入式系统、电子技术和现场总线领域的新技术被应用于智能仪器仪表的设计,尤其是嵌入式系统的许多新的理念极大地促进了智能仪器仪表技术的发展。

今年来,随着大规模集成电路的发展,有单片A/D转换器构成的数字电压表获得了迅速普及和广泛应用,它是目前在电子测量及维修工作中最常用、最得力的一种工具类数字仪表。

数字电压表具有很高的性价比,其主要优点是准确度高、分辨力强测试功能完善、测量速率快、显示直观。

测试仪器的智能化已是现代仪器仪表发展的主流方向。

因此学习智能仪器的工作原理、掌握新技术和设计方法无疑是十分重要的。

关键词智能,数字,电压表,仪器仪表沈阳工程学院课程设计(论文)目录中文摘要 (V)目录 (VI)1 设计任务描述 (1)1.1设计题目:多功能数字电压表设计 (1)1.2 设计要求 (1)1.2.1 设计目的 (1)1.2.2 基本要求 (1)2、设计思路 (2)3、设计方框图 (3)4、硬件整体框图 (4)5、硬件的设计和元器件的选择及介绍 (5)5.1.稳压源部分电路的设计 (5)5.2外部晶振和复位 (5)5.3 蜂鸣器 (6)5.4交流电压采集测量电路 (7)5.5单片机C8051简介 (7)6、系统软件设计 (8)6.1软件总流程图 (8)6.2 各部分程序介绍 (9)6.2.1主程序部分 (9)6.2.2.显示程序 (11)6.2.3.报警程序 (11)6.2.4.量程选择 (12)7、各部分参数计算 (13)8、元器件清 (14)小结...................................................... 错误!未定义书签。

致谢...................................................... 错误!未定义书签。

参考文献. (15)附录1 程序清单 (16)附录2 硬件电路图 (24)附录3 PBC板图 (25)多功能数字电压表1 设计任务描述1.1设计题目:多功能数字电压表设计1.2 设计要求1.2.1 设计目的1) 掌握A/D转换的采集,处理和显示程序方法;2)熟悉单片机的编程方法。

1.2.2 基本要求1)硬件电路设计,包括原理图和PCB板图。

2)数字电压表软件设计。

3)要求能够测量并显示直流电压、交流电压,测量范围0.002V---2V。

沈阳工程学院课程设计(论文)2、设计思路本次智能仪器课设,我的题目是多功能数字电压表,能够利用C8051单片机实现测量交直流电压的功能,并且在液晶显示上输出电压值。

课程设计的要求是能够测量并显示直流电压、交流电压,测量范围0.002V---2V,即能转换交直流并显示出电压值,由于单片机采集的都是直流电压,所以需要在外部添加真有效值/直流转换器,将外部采集的交流电压转换成直流电压,作为有效值送到单片机内部。

在本次设计中,将P1.0作为采集口,将采集到的数据通过P1.0输入到单片机。

经过数据处理,将16进制数转换成10进制数,从LCD液晶显示中输出。

由于考虑到量程的变换,我们用查寻方法改变量程,为了使程序模块化,思路清楚,于是选择了利用中断选择量程,量程为(0,2mV)和(0,2V)使用中断6,7选择。

多功能数字电压表3、设计方框图根据设计的任务和要求,进行整体设计的构思。

其流程图如下:图 3-1 设计流程沈阳工程学院课程设计(论文)4、硬件整体框图在本次多功能电压表的设计中,硬件部分主要由以下几部分电路组成:电源电路:为单片机提供5V稳定的电压;交流采集电路:采集交流信号,将交流信号转换成有效的直流电压值,放大后传送给单片机;显示电路:显示所测得的电压值;报警电路:当测得值超出给定范围时,将自动报警;晶振及复位电路。

图4-1 硬件总框图多功能数字电压表5、硬件的设计和元器件的选择及介绍5.1.稳压源部分电路的设计电源稳压及过零检测电路由变压器TF、整流桥RB、二极管D、三端稳压器7805、整形电路和滤波电容C1、C2、C3、C4组成。

电路如下图4-1所示图5-1稳压源电路变压器TF将220V的交流电压转换为5V低压,并利用整流桥RB转变为脉动直流电压。

然后通过二极管D经滤波电容C1和C2滤波后,生成无纹波的直流电压。

直流电压经三端稳压器7805稳压后,形成5V直流电压。

滤波电容C3和C4负责负载突变情况下的滤波工作。

二极管D在脉动直流电压和滤波后的直流电压之间起隔离的作用。

同时,由整流桥输出的脉动直流电压经整形电路整形后,产生10ms的负脉冲过零信号,用于进行时间计数。

5.2外部晶振和复位单片机外部复位,外部复位引脚(RESET)提供了使用外部电路强制单片机进入复位状态的手段。

在复位引脚上加一个低电平有效信号将导致单片机进入复位状态。

最好能提供一个外部上拉和(或)对RESET引脚的去耦电路以防止由于强噪声而引起复位。

I/O端口锁存器的复位值为0xFF(全部为逻辑高电平),内部若上拉有效,使外部I/O引脚处于高电平状态。

外部I/O引脚并不立即进入高电平状态,而是在进入复位状态后的4个系统时钟之内。

注意:在复位期间弱上拉是被禁止的,在器件退出复位状态时弱上拉被时能。

监视器复位,/RESET引脚被这就使得在器件保持在复位状态期间可以节省功耗。

对于VDD驱动为低电平,直到V复位超时结束。

DD石英晶体振荡器是高精度和高稳定度的振荡器,为数据处理设备产生时钟信号和为特定系统提供基准信号。

当外部晶体振荡器稳定运行时,晶体振荡器有效标志(OSCXCN寄存器中的XTLVLD)被硬件置为逻辑1。

XTLVLD检测电路要求在使能震荡器工作和检测沈阳工程学院课程设计(论文)XTLVLD 之间至少有1ms 的启动时间,在外部振荡器稳定之前就切换到外部振荡器可能导致不可预见的后果。

单片机外接晶振作为时钟频率,并采用电源复位设计。

复位电路采用上电复位,它的工作原理是,通电时,电容两端相当于短路,于是RESET 引脚上为高电平,然后电源通过对电容充电。

RESET 端电压慢慢下降,降到一定程序,即为低电平,单片机开始工作。

下图为晶振复位电路图。

SR 9C 8C 9C 7Y G ND 图5-2 晶振及复位图5.3 蜂鸣器图 5-3 蜂鸣器1PP22PW 3PW 4PK 5PK 6PK 7PK 8IOC 9IOC 10IOC 11IOC 12VD 13VSS 14IOC 15PT516PT617IOC 18PK 19PK 20PJ121PJ022MO 23PB024PB125PB226PB327PB428C29220nF C320.1uF R111K D1LED R121K D2LED PP3PP2PP1PP0PK0PK1PK2PK3PT0PT1PT2PT3PT4PT5PT6PT7PK4PK5PJ0PJ1PB0PB1PB2PB3PB4MODC 1234567891011121314151617181920212223242527JP1123456789101112131415161718HEADER 14X2R2051MODCVCC GND PM4PM5PM6PM7PS0PS1PS2PS3PS4PS5PS6PS7PJ6PJ7PP0PP1PP2PP3PB0PB1PB2PB3PB4PB6PJ0PJ1PK4PK5PT0PT1PT2PT3PT4PT5PT6PT7PK0PK1PK2PK3170uFV1多功能数字电压表5.4交流电压采集测量电路该部分电路是将采集到的交流电压通过转换得到其有效值,然后经过放大后输入到单片机内部,在经数据处理后显示出来。

在这个部分里我使用了真有效值/直流转换器AD536A。

它的输入和输出都有完善的保护电路,输入电压允许大大超过其电源电压;而输出则有短路保护。

在电源电压下降时也不影响其测量精度。

AD536A的使用和链接都非常方便、简单,而且相当灵活。

只要在他的Vin端输入交流信号,便能在其Vout端输出正比于输入信号真有效值的直流电压。

图5-4 交流电压采集转换电路5.5单片机C8051简介C8051F020单片机是Cygnal公司生产的,它是完全集成的混合信号系统级芯片(SOC)。

采用全速、非侵入式在系统调试接口,提供C编译调试环境,可以大大提高产品开发速度和效率。

我们使用的C8051单片机是目前各大高校及市场上应用最广泛的单片机型.其内部包含: 一个8位的CPU;4K的程序存储空间ROM;128字节的RAM数据存储器;两个16位的定时/计数器;可寻址64KB外部数据存储器和64KB外部程序存储器空间的控制电路;32条可编程的I/O线;具有两个优先级嵌套的中断结构的5个中断源。

沈阳工程学院课程设计(论文)6、系统软件设计6.1软件总流程图图6-1 总体流程图多功能数字电压表6.2 各部分程序介绍6.2.1主程序部分main: mov wdtcn,#0deh ;关开门狗mov wdtcn,#0adhlcall sysclk_init ;系统时钟片外lcall port_init ;通用I/O口及交叉开关初始化 lcall int67_init ;中断6、7初始化mov r0,#00mov r3,#00setb ea ;允许总中断lcall adc_init ;初始化A/D;测量程序CC:lcall lcd_init ;LCD初始化setb ad0busyjnb ad0int,$clr ad0intmov a,adc0hmov 30h,amov a,adc0lmov 31h,aloop1: clr cymov a,31hadd a,31hadd a,31hmov 51h,amov a,30haddc a,30haddc a,30hmov 50h,amov a,50hmov a,50hclr cy沈阳工程学院课程设计(论文)rrc amov 50h,a;将50h\51h中16进制数转化为BCD数,存入41h\40h\39h\38h中mov a,50hmov b,#64hdiv abmov 41h,amov a,#0ahxch a,bdiv abmov 40h,axch a,bmov 39h,aclr cymov a,40hcjne a,#02h,lopplopp: jnc baojingjc huanyuanbaojing: mov xbr2,#40hmov p1mdout,#0ffhclr p3.5lcall lcd_xianshihuanyuan:mov xbr2,#40hmov p1mdout,#0ffhsetb p3.5该部分为整个程序的主程序部分,先关开门狗,然后进行初始化,其中包括系统时钟片外初始化、通用I/O口及交叉开关初始化、中断6、7初始化、允许总中断、初始化A/D、LCD初始化。

相关文档
最新文档