0-5V数字万用表实验报告(基于51单片机)
基于51单片机的数字万用表设计(1)
基于51单片机的数字万用表设计摘要本文介绍一种以AT89S52单片机为核心的智能型数字式多用表,该系统采用AD0808为采样元件,对待测交直流电压信号进行实时采样,数据处理,输出显示,并可以直流电流和电阻,且具有键盘选择测量对象、量程和自动量程转换功能。
关键词:A/D转换器,单片机,模拟开关,自动量程转换第一章前言功能:实现交直流测量,量程自动转换,过电压自动报警。
仿真及编译软件:Proteus,Keil ,Wave主要元件:AT89C52,CD4511,AD0808,7段数码管(8个),蜂鸣器预定性能指标:直流电压:范围-40—+50V,精度20mv,实时无间断测量,4%。
交流信号:测量范围-5—+5V,频率范围:300Hz到100Khz误差5%。
初步方案及进展:小组成员及任务分配:组长:陈文豹硬件电路设计参数确定和调试组员:庞明软件程序设计邓玉龙资料查询并辅助电路设计数字万用表设计分析本设计可以分为直流电压测量电路;交流/直流转换电路;电流/电压转换电路;电阻/电压转换电路;功能控制和数据显示电路这五个的主要电路模块。
在设计直流电压测量电路时,利用反相比例运算电路,加上自己设计的四选一模拟开关,组成了一个直流电压测量电路。
但该电路在实践中存在问题,不能实现预期的结果。
做了适当的修改,改为由电阻、模拟开关和运放组成放大倍数可调的比例电路。
由于无论是指针式万用表还是普通的真有效值或平均值响应的数字万用表,其交流电压档的频率特性都较差,一般只能测量几十赫兹到几千赫兹的低频电压。
我发现对于指针式万用表造成频率特性较差的原因主要是万用表的分压电阻采用精密电阻器,其本身的分布电容较大,在对高频电压信号进行测量时,由于分布电容的容抗大为减少使得测量值明显低于实际电压值,而对于数字万用表除上述原因以外,另一主要原因是受平均值响应,转换器本身频率特性的限制。
但此缺陷可通过采用宽频带运算放大器加以改善。
因此,消除分压电阻器分布电容的影响就可以提高万用表工作频率的上限,大大改善其频率特性。
单片机课程设计报告报告——数字电压表
数字电压表单片机课程设计报告班级:姓名:学号:指导教师:2011 年3 月29 日数字电压表电路设计报告一、题目及设计要求采用51系列单片机和ADC 设计一个数字电压表,输入为0~5V 线性模拟信号,输出通过LED 显示,要求显示两位小数。
二、主要技术指标1、数字芯片A/D 转换技术2、单片机控制的数码管显示技术3、单片机的数据处理技术三、方案论证及选择主要设计方框图如下:1、主控芯片方案1:选用专用转化芯片INC7107实现电压的测量和实现,用四位数码管显示出最后的转换电压结果。
缺点是京都比拟低,内部电压转换和控制局部不可控制。
优点是价格低廉。
方案2:选用单片机AT89C51和A/D 转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
缺点是价格稍贵;优点是转换京都高,且转换的过程和控制、显示局部可以控制。
基于课程设计的要求和实验室能提供的芯片,我选用了:方案2。
2、显示局部方案1:选用4个单体的共阴极数码管。
优点是价格比拟廉价;缺点是焊接时比拟麻烦,容易出错。
方案2:选用一个四联的共阴极数码管,外加四个三极管驱动。
这个电路几乎没有缺点;优点是便于控制,价格低廉,焊接简单。
基于课程设计的要求和实验室所能提供的仪器,我选用了:方案2。
四、电路设计原理模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进展A/D转换。
然后送到单片机中进展数据处理。
处理后的数据送到LED 中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D转换电路、LED显示电路,各局部电路的设计及原理将会在硬件电路设计局部详细介绍;程序的设计使用汇编语言编程,利用Keil和PROTEUS 软件对其编译和仿真。
一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。
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使用。
基于单片机的0-5V的数字电压表
摘 要本文介绍一种基于89C51单片机的一种电压测量电路,双积分A/D 转换电路,测量范围直流0-5伏,使用LCD 模块显示电压值。
正文着重给出了软硬件系统的各部分电路,介绍了双积分电路的原理,89C51的特点及应用。
该电路设计新颖、功能强大、可扩展性强。
关键词: 单片机、双积分电路、89C51、74LS161、ADC08081 系统总体设计及方案1.1 设计题目、内容、要求设计题目:简易数字电压表的设计。
设计内容:1.可以测量0~5V范围内的8路直流电压值。
2.在4位LED数码管上轮流显示各路电压值或单路选择显示,其中3位LED 数码管显示电压值,显示范围为0.00V~5.00V,1位LED数码管显示路数,8路用数字表示分别为0-7。
3.测量最小分辨率为0.02V。
设计要求:1.进行系统总体设计。
2.完成系统硬件电路设计。
3.完成系统软件设计。
4.撰写设计说明书。
1.2 概述数字电压表(Digital V oltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
1.3 系统原理及基本框图图1-1 系统基本流程图如图1-1所示,模拟电压经过滑动变阻器切换到不同的分压电路后,送到A/D 转换器进行A/D转换,然后送到单片机中进行数据处理。
处理后的数据,通过P0口传输送到LED中显示。
1.4 方案说明系统首先通过按键逐路选择八路通道中的一路或是循环显示,将该路某一路电压送入ADC0808相应通道,单片机软件设置ADC0808开始A/D转换,转换结束ADC0808的EOC端口产生高电平,同时将ADC0808的EO端口置为高电平,单片机将转换后结果存如片内RAM。
单片机课程设计报告-0-5V电压测量
单片机课程设计报告-0-5V电压测量单片机课程设计报告系别: 自动化系专业班级: 电气工程及其自动化XXX学生姓名: XXXX指导教师: XXXXXX(课程设计时间:2010年6月20日——2010年7月3日)华中科技大学武昌分校目录1(课程设计任务与目的 (2)2(系统方案………………………………………………………………………2 3(器件介绍及硬件电路原理图…………………………………………………3 3.1 V/F转换电路………………………………………………………………4 3.2 LCD显示电路……………………………………………………………6 3.2.1液晶驱动IC基本特性……………………………………………………7 3.2.2模块基本特性…………………………………………………………7 3.2.3工作参数…………………………………………………………7 3.2.4接口说明…………………………………………………………7 3.2.5指令描述…………………………………………………………8 3.2.6接口时序……………………………………………………………11 3.2.7 LCD硬件电路图…………………………………………………………11 4(软件设计流程图及子程序说明……………………………………12 4.1主程序流程图……………………………………………………………12 4.2子程序流程图介绍……………………………………………………………13 4.2.1子程序名称:INT……………………………………………………………13 4.2.2子程序名称:CLEAR……………………………………………………………13 4.2.3子程序名称:LOOP1……………………………………………………………14 4.2.4子程序名称:DISPLAY………………………………………………………14 4.2.5子程序名称:PRO、PR1……………………………………………………………15 4.2.6子程序名称:PTDS……………………………………………………………15 4.2.7子程序名称:CCW_PR……………………………………………………………15 5.有效测量数据……………………………………………………………17 6.误差分析……………………………………………………………17 7.心得体会……………………………………………………………19 参考文献…………………………………………………………………………20 附录1系统完整硬件电路………………………………………………………21 附录2系统完整程序……………………………………………………………页码本设计是简易数字电压表,随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。
adc0804文档
试验 模拟/数字转换芯片ADC0804的使用1、实验目的1.了解并测试模/数芯片ADC0804性能。
2.学习A/D 芯片ADC0804的接线和转换的基本原理。
2、试验内容2.1 模拟/数字转换的一些背景知识介绍模拟/数字转换就是我们通常所说的A/D 转换,它将输入的模拟信号(如电压)转换成控制芯片(如单片机,ARM)所能识别的二进制形式,然后经过运算,既可以还原出输入模拟信号的值。
A/D 转换是一种非常重要的技术手段,是单片机等控制芯片与外界信号的接口部分,图1给出了一种常用的嵌入式设计模式。
图1:一种常用的基于A/D 芯片的嵌入式设计模式由图1可见,这种设计模式包含以下几个环节。
外界信号:外界信号的范围十分广泛,自然界的一切信号,比如声音,温度甚至是血糖浓度等都可以规类为外界信号。
传感器:因为大多数外界信号都不是电信号,因此需要通过各种传感器将这些外界信号转换成电信号,例如:通过热电耦可以将温度转换成一个电压值。
模拟电路:设计模拟电路的原因主要有以下两点1.由于外界信号的复杂性,使得传感器直接输出的电信号可能会存在一些问题(如不稳定),这些不稳定信号如果直接送到A/D 芯片进行采样,则最终结果可能使得最后的显示值来回乱跳,而无法确定待测的外界信号到底是多少。
因此,可能需要设计一套模拟电路对传感器输出的不稳定电信号进行滤波等处理,去除干扰,使得进入A/D 转换芯片的电压值为一个稳定的信号。
2.每一个A/D 转换芯片都有一个参考电压,只有输入的模拟电压值在这个参考电压的范围内才能进行正确的转换,例如:本试验将ADC0804芯片的参考电压设置成0V ~5V ,因此如果输入的电压值大于5V ,则转换出的结果永远为0xFF,若输入的电压值小于0V,则转换出的结果永远为0,这样便无法正确的还原出被测信号的大小。
基于上述原因,我们可能需要设计一套模拟电路,传感器的输出电压值进行一些变换(放大,缩小),使得送到A/D转换芯片的电压值在转换芯片的参考电压范围内。
基于单片机数字电压表实习报告
《单片机原理及应用》课程设计报告设计题目:基于单片机的数字电压表设计所属系部:资源与环境工程学院专业:计算机应用矿井监测班级: 101班姓名:学号: 201003010103指导教师:徐小栋成绩:完成日期: 2011 年 12 月 21 日【摘要】随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
数字电压表它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
与此同时,由DVM 扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。
AT89C51单片机的一种电压测量电路,该电路采用ADC0808本文介绍一种基于A/D转换电路,测量范围直流0~5V 的4路输入电压值,并在四位LED数码管上显示或单路选择显示。
测量最小分辨率为0.019V,测量误差约为正负0.02V。
本次设计就是为了更好地掌握单片机及相关的电子技术,在参阅一些资料的基础上利用ADC0808而设计的数字电压表。
关键词:单片机,ADC0808,数字电压,A/D转换目录一、设计任务和性能指标 (4)1.1设计任务 (4)1.2性能指标 (4)二、设计方案 (4)2.1系统总体设计方案 (5)三、硬件系统设计 (5)3.1 AT89C51的功能介绍 (6)3.2 ADC0808的引脚及功能介绍 (7)3.3 74LS374介绍 (8)3.4 部分电路的介绍 (9)3.5 LED数码管的控制显示 (9)四、系统软件设计................. 错误!未定义书签。
0~5V数字式直流电压表设计实验报告《电子与控制系统设计》实验报告
#define LCM_RW_1 SET_BIT(PORTB,PB1)
#define LCM_RW_0 CLR_BIT(PORTB,PB1)
#define LCM_EN_1 SET_BIT(PORTB,PB2)
#define LCM_EN_0 CLR_BIT(PORTB,PB2)
{
LocateXY(x,y);
LcdWriteData(Wdata);
}
//***********LCD初始化子函数******************
void InitLcd(void)
{
LcdWriteCommand(0x38);//显示模式设置(固定),8位数据接口
Delay_nms(5);
LcdWriteCommand(0x01);//清屏
//------------------------------#defຫໍສະໝຸດ ne DataPort PORTA
#define Busy 0x80
//**********函数声明********************
void Delay_1ms(void);
void Delay_nms(uint n);
void ePutstr(uchar x,uchar y,uchar const *ptr);
/***********显示指定坐标的一串字符子函数************/
void ePutstr(uchar x,uchar y,uchar const *ptr)
{
uchar i,l=0;
while(ptr[l]>31){l++;}
0-5V数字万用表实验报告(基于51单片机)
delayms(5); P0=0x00; dula=1; dula=0; P0=0x7b; wela=1; wela=0; P0=table[shi]; dula=1; dula=0; delayms(5); P0=0x00; dula=1; dula=0; P0=0x77; wela=1; wela=0; P0=table[ge]; dula=1; dula=0; delayms(5); } void main() { ulong a,A1,A2,A3,adval; wela=1; P0=0x7f;//置 CSAD 为 0,选通 ADCS 后不必再管 ADCS。 wela=0; while(1) { adwr=1; _nop_(); adwr=0;//启动 A/D 转换。 _nop_(); adwr=1; for(a=10;a>0;a--)//鉴于实验板 A/D 频率较低,启动 A/D 后留出时间进行
《 0-5V 数字万用表》实验报告
姓名 任课教师 实验地点 实验目的: 制作一个简易的数字万用表。 院系 指导教师 实验时间 学号 评阅教师 2016 年 12 月 10 日
实验要求: 要求测量电压为0-5V,显示的电压值精确到小数点后两位。
实验原理: 利用A/D转换器ADC0804将电压的模拟信号转换为数字信号,在数码管上 显示。
//转换。 { display(A1,A2,A3); } P1=0xff;//读取 P1 口之前先全赋 1。 adrd=1;//选通 ADCS。 _nop_(); adrd=0; _nop_(); adval=P1;//将读取的 A/D 数据赋给 P1 口。 adrd=1; adval=adval/255.0*500;//利用量化方法,将测量范围扩展为 0-5V,提升精 //度。 A1=adval/100; A2=adval%100/10; A3=adval%10; } } 仿真图:(移动 RV1 改变阻值,可看到数码管的现象,RP1 与单片机之间 的线需按住 Ctrl 键画, 这样可以穿过引线的圆圈 (有网络标号的 D0-D7) ) 单片机模块
数字电压表的设计实验报告
.课程设计——基于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 电位(地)。
基于51单片机的简易数字电压表的方案设计书
班级:智能电网111学生:喻卫湖南铁道职业技术学院电气工程系目录1控制要求2设计目的意义3 系统原理框图4 89C52单片机5 ADC0809 的工作原理6 系统原理图和PCB图7程序流程图8 C语言程序9数字电压表工作原理10设计体会1控制要求利用STC89C52单片机和ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。
外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。
然后由单片机给数码管数字信号,控制其发光,从而显示数字。
2设计目的意义1.通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。
2.通过数字电压表的设计系统掌握51单片机的应用。
掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入STC89C52单片机并进行调试等。
3 系统原理框图4 89C52引脚资料STC89C52P1 P0P3 P2AD0809D0~D7IN0~IN7VREF+VREF-CLKOEST、ALE四位数码管位选段选控制线数据待测电压系统原理框图89C51引脚图总线型DIP40引脚封装电源引脚(2个)VCC:接+5V电源。
GND:接地端。
外接晶体引脚(2个)XTAL1:外接晶振输入端(采用外部振荡器时,此引脚接地)。
XTAL2:外接晶振输入端(采用外部振荡器时,此引脚作为外部振荡信号输入端)。
并行输入/输出引脚(32个)P0.0~P0.7:通用I/O引脚。
P1.0~P1.7:通用I/O引脚。
P2.0~P2.7:通用I/O引脚或数据低8位地址总线复用引脚。
P3.0~P3.7:通用I/O引脚或第二功能引脚(RXD、TXD、INT0、INT1、T0、T1、WR 、RD)。
控制引脚(4个)RST/VPD:复位信号输入引脚/备用电源输入引脚。
基于51单片机的数字万用表毕业论文(设计)
第1章概述1.1 本课题研究背景及意义数字万用表是电测技术中的一种常用仪表。
它把电子技术、计算技术、自动化技术的成果和电测技术结合在一起,具有使用方便、灵敏度高、测量速度快、量程宽、过载能力强、输人阻抗高、指示值具有客观性(不存在视觉误差)、扩展能力强等优点。
数字万用表迄今已有几十年的发展历史,最初它是由电子管或晶体管等分送立器件构成的,然后逐步向高精度,多功能,集成代,智能化的方向发展。
数字万用表的最大特点就是准确度高,测量误差较小,如 3 位(三位半)数字表准确度在~<i-0.5%~±21.5%的范围(数字表的准确度随机档限的扩展而相应增大,以最小量限准确度最高)简直可以与实验室中0.5级(误差≤0.5%)的指针表媲美。
而4 位的数字表准确则更高,在≤±0.05%~±0.15%的范围。
是0.1级、0.2级(误差≤±0.1%、i-0.2%)的高精密度指针仪表所无法比拟的。
而且数字表显示直观,观察数据极为方便,又不会引入视觉较差。
1.2 本课题的设计要求使用硬件的搭建及软件的编写实现简易数字万用表的功能,能进行直流电压、交流电压、直流电流和电阻的简单测量。
1.3 本课题的主要设计方案及预期研究成果本设计使用软硬件结合的方法,首先介绍了设计的方案,并简单说明了本设计与传统传统数字万用表设计方案的区别,主要是对一些主芯片的简介,其中有ICL7106、ICL7107、AT89S52、AD1674等;其次介绍前向通道各个模块的设计,包括芯片的选择和各个元器件参数的选择以及选参前的分析;接着介绍电路的焊接和调试,包括各个模块的分步调试和最后的整机调试以及对调试过程中碰到的具体问题的分析和解决;然后是对各类数据的测量与分析;最后是对本次设计的总结。
第2章设计过程2.1 方案介绍传统方案为:传统数字万用表一般都采用一片万用表专用A/D转换芯片和外围少量元件构成,此即纯硬件方案。
数字电压表实验报告
简易数字电压表目录摘要及关键词 (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)。
单片机数字电压表设计报告
《单片机原理与接口技术》课程设计报告姓名梁家余学号 0314院系自机学院班级电气三班指导教师黄钺冯维杰王玮2012 年 06月目录4) LED显示器与单片机接口设计 (9)9.程序设计 (11)1)程序设计总方案 (11)2)系统子程序设计 (11)(1)初始化程序 (11)10.仿真 (12)1)软件调试 (12)11.显示结果及误差分析 (13)二、总结 (14)三、参考文献 (15)四、附录 (15)一、单片机数字电压表设计1.设计任务基于MCS-51系列单片机AT89C51,设计一个能测量0~5V直流电压的数字电压表 2.设计要求1)选用A/D转换器ADC0808,测定0——+5V范围内的直流电压值。
2)采集的数据送四位数码管实时显示。
3)@实现多路电压循环测量和循环显示。
4)@实现0——500mA电流的测量和显示。
5)实现功率的测量。
3. 设计思路1)根据设计要求,选择AT89C51单片机为核心控制器件。
2)A/D转换采用ADC0808实现,与单片机的接口为P1口和P2口的高四位引脚。
3)电压显示采用4位一体的LED数码管。
4)LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位4) LED显示器与单片机接口设计 (9)9.程序设计 (11)1)程序设计总方案 (11)2)系统子程序设计 (11)(1)初始化程序 (11)10.仿真 (12)1)软件调试 (12)11.显示结果及误差分析 (13)二、总结 (14)三、参考文献 (15)四、附录 (15)产生。
4.硬件电路设计1)转换过程如下:开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量[5]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
评阅教师特殊评语:
评阅教师:
日
期:
锁存器模块
数码管模块
AD 转换模块
本次实验的体会(结论) 1、 第二次做项目时,早早就熟悉了原理,开头比较顺利,不像 第一次时毫无头绪了。 2、 写程序时虽然注意到要消影,但没想到仿真起来仍然出现了 乱码。说明仿真对消影的要求比自己写程序时定的要高,以 后会多加注意! 3、 画仿真图时,注意到 ADC0804 与书上的有不少地方不一样, 一开始画了好几遍没出效果,有点苦恼,后来请教了同学,终 于画了出来,非常开心。
//转换。 { display(A1,A2,A3); } P1=0xff;//读取 P1 口之前先全赋 1。 adrd=1;//选通 ADCS。 _nop_(); adrd=0; _nop_(); adval=P1;//将读取的 A/D 数据赋给 P1 口。 adrd=1; adval=adval/255.0*500;//利用量化方法,将测量范围扩展为 0-5V,提升精 //度。 A1=adval/100; A2=adval%100/10; A3=adval%10; } } 仿真图:(移动 RV1 改变阻值,可看到数码管的现象,RP1 与单片机之间 的线需按住 Ctrl 键画, 这样可以穿过引线的圆圈 (有网络标号的 D0-D7) ) 单片机模块
delayms(5); P0=0x00; dula=1; dula=0; P0=0x7b; wela=1; wela=0; P0=table[shi]; dula=1; dula=0; delayms(5); P0=0xபைடு நூலகம்0; dula=1; dula=0; P0=0x77; wela=1; wela=0; P0=table[ge]; dula=1; dula=0; delayms(5); } void main() { ulong a,A1,A2,A3,adval; wela=1; P0=0x7f;//置 CSAD 为 0,选通 ADCS 后不必再管 ADCS。 wela=0; while(1) { adwr=1; _nop_(); adwr=0;//启动 A/D 转换。 _nop_(); adwr=1; for(a=10;a>0;a--)//鉴于实验板 A/D 频率较低,启动 A/D 后留出时间进行
《 0-5V 数字万用表》实验报告
姓名 任课教师 实验地点 实验目的: 制作一个简易的数字万用表。 院系 指导教师 实验时间 学号 评阅教师 2016 年 12 月 10 日
实验要求: 要求测量电压为0-5V,显示的电压值精确到小数点后两位。
实验原理: 利用A/D转换器ADC0804将电压的模拟信号转换为数字信号,在数码管上 显示。
实验过程中遇到的问题以及如何解决的? 1、 画仿真图时发现 ADC0804 与书上的不同,后几经尝试终于将图改 好。 2、 仿真时发现数码管上数字显示不完全且出现乱码,后来经检查发现 是程序的消影还不够,于是进一步加强消影,解决了问题。
源代码: #include<reg52.h> #include<intrins.h> #define ulong unsigned long
#define uint unsigned int void delayms(uint); sbit dula=P2^6; sbit wela=P2^7; sbit adwr=P3^6; sbit adrd=P3^7; sbit CSAD=P3^2; ulong code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x80}; void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void display(ulong bai,ulong shi,ulong ge) { P0=0x00;//段选清零,消影。 dula=1; dula=0; P0=0x7e;//赋位选值。 wela=1; wela=0; P0=table[bai];//赋段选值。 dula=1; dula=0; delayms(5); P0=0x00; dula=1; dula=0; P0=0x7d; wela=1; wela=0; P0=table[16];//数码管第二位显示小数点。 dula=1; dula=0;