基于单片机的数字式电压表课程设计报告_第1页
基于单片机的数字式电压表课程设计报告_第2页
基于单片机的数字式电压表课程设计报告_第3页
基于单片机的数字式电压表课程设计报告_第4页
基于单片机的数字式电压表课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的数字电压表设计信息科学与工程学院 课 程 设 计 报 告设计题目: 基于单片机的数字式电压表设计 名 称: 单片机原理与应用课程设计 班 级: 12电子1班 姓 名: 蒋尚华 学 号: 12403100103 设计时间: 2014.12.29 至 2015.01.11 指导教师: 胡伟 评 语: 评阅成绩: 评阅教师: 目 录引 言I一、课程设计的性质和目的2二、课程设计的要求2三、主要仪器设备及软件2四、课程设计题目及要求2五、课题分析及设计思路25.1、课题分析及总体设计25.2、硬件设计25.2.1 系统总体设计框图25.2.2 单片机系统35.2.3 AD转换电路65.3、

2、软件设计8六、程序主要代码与分析8七、实验结果截图10八、心得体会11参考文献12引 言 电子电压表主要用于测量各种高、低频信号电压,它是电子测量中使用最广泛的仪器之一。根据测量结果的显示方式及测量原理不同,电压测量仪器可分为两大类:模拟式电压表(AVM)和数字式电压表(DVM)。模拟式电压表是指针式的,多用磁电式电流表作为指示器,并在表盘上刻以电压刻度。数字式电压表首先将模拟量经模数(A/D)转换器变成数字量,然后用电子计数器计数,并以十进制数字显示被测电压值。众所周知,模拟电压表精度较高,曾经有很广阔的市场,现在依然有不少工程师依然在使用模拟电压表。的确模拟电压表在显示测量值方面精度校准,

3、然而却也存在问题。模拟电压表采用用指针式,里面是磁电或电磁式结构,所以其响应速度较慢。然而在高速发展的当今社会,高速信号处理的需求越来越多,由于模拟电压表响应速度较慢已经不适用与高速信号领域,取而代之的将是数字电压表。但数字电压表由于存在采样误差,精度不是很高。不过目前可以通过技术手段来缩小误差。使其精度达到与模拟电压表一样精确甚至更高。可见将来数字电压表必将取代模拟电压表。现在有越来越多的数字测量仪器的出现但原理皆与数字电压表殊途同归,因此研究数字电压表有着很大现实意义。一、课程设计的性质和目的通过课程设计,巩固在课堂上学到的有关电子技术、单片机、微机原理等课程的基本知识和基本方法,强化知识

4、的综合运用和技能基本训练,通过硬件电路的设计和相应软件的编写,掌握软硬结合的控制程序设计,达到能独立阅读、编制和调试一定规模的电子产品制作或仿真。二、课程设计的要求1、遵循软硬件模块化设计。2、要求程序结构化设计。3、要求程序结构合理,语句使用得当,并附有必要的注释。4、适当追求编程技巧和程序运行效率。三、主要仪器设备及软件PC机、Protrus绘图软件、Keil C仿真软件等。四、课程设计题目及要求题目:基于单片机的数字电压表设计要求:1.利用单片机设计数字电压表,用4段数码管显示; 2.能够较准确的测量05V之间的直流电压值,测量最小分辨率为0.02V。五、课题分析及设计思路5.1、课题分

5、析及总体设计通过滑动变阻器产生可变电压;用ADC0809采集模拟电压转换成数字信号;将此数字信号用七段数码管显示。5.2、硬件设计5.2.1 系统总体设计框图 本系统采样Atmel89C52单片机作为控制核心,以ADC0809为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,用共阴极数码管显示结果。 显示电路 51单片机 AD转换 输入电压图1 5.2.2 单片机系统单片机最小系统包括复位电路,晶振电路,电源电路,仿真时需搭建复位电路和晶振电路。晶振电路:图2复位电路: 图3 单片机最小系统如下所示,其中P2口用于驱动数码管,P1口用于数码管显示,P0口用于接收ADC0

6、809转换的数据,P3接74LS74 D触发器电路。单片机最小系统: 图45.2.3 AD转换电路 ADC0809的特性:ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。 (1)ADC0809的内部逻辑结构     由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三

7、态输出锁存器取走转换完的数据。(2)ADC0809引脚结构 ADC0809各脚功能如下:D7-D0:8位数字量输出引脚。IN0-IN7:8位模拟量输入引脚。VCC:+5V工作电压。GND:地。REF(+):参考电压正端。REF(-):参考电压负端。START:A/D转换启动信号输入端。ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。CLK:时钟信号输入端(一般为500KHz)。A、B、C:地址输入线。     ADC0809

8、对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条     ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示。CBA选择的通道CBA 选择的通道000IN0101IN5001IN1110IN6010IN2111IN7011IN31

9、00IN4数字量输出及控制线:11条     ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(),VREF()为参考电压输入。 2 A

10、DC0809应用说明 (1)ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。 (2)初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C端口上。 (4)在ST端给出一个至少有100ns宽的正脉冲信号。 (5)是否转换完毕,我们根据EOC信号来判断。 (6) 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。 3 实验任务 如下图所示,从ADC0809的通道IN0输入05V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接5V电压。 ADC0809与单片机的连接: 图65.

11、2.3 触发电路74ls74中文资料       74LS74内含两个独立的D上升沿双d触发器,每个触发器有数据输入(D)、置位输入()复位输入()、时钟输入(CP)和数据输出(Q、)。、的低电平使输出预置或清除,而与其它输入端的电平无关。当、均无效(高电平式)时,符合建立时间要求的D数据在CP上升沿作用下传送到输出端。74ls74功能表: 3 实验任务 如下图所示,通过74LS74产生时钟源,数据转换过程需要在外部工作时钟的控制下进行。5.2.4 数码管显示电路四位数码管引脚图:四位数码管与单片机的连接:5.3、软件设计(设计思路及软件流程图

12、) 软件部分采用模块化程序设计的方法,由单片机控制主程序、A/D转换子程序、电压检测、七段数码管显示组成。系统软件设计是在KeilC编译环境下进行的,由于C语言程序可移植性好,所以提高了编程的效率。软件程序流程图:声明函数设置扫描信号初始值开始读取显示区数组,转换显示编码输出/延迟3个字?20次?返回NoNoyesyes开始声明变量与函数调用显示函数读取ADC转换结果转换千位数转换百位数转换十位数转换个位数 显示函数 主程序六、程序主要代码与分析(关键代码要有注释):#include <reg52.h> Unsigned char code dispbitcode =0xfe,0x

13、fd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; Unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00; unsigned char dispbuf8=10,10,10,10,10,0,0,0; unsigned char dispcount; unsigned char getdata; unsigned int temp; long int i; unsigned int R1; sbit ST=P30; sbit OE=P31; sbit EOC=P32;

14、 sbit CLK=P33; void main(void) ST=0; /ST正脉冲信号启动A/D转换; OE=0; /EOC为高电平后,若使OE为高电平,转换结果DATA便可锁存到D0D7上,CPU读取转换数据后,再使OE变为低电平,一次A/D转换过程结束。 ET0=1;/启动T0中断; ET1=1;/启动T1中断; EA=1;/开总中断; TMOD=0x12;/设置T0定时方式2,T1定时方式1 TH0=216; /计数初值a=216-t.Fosc/12其中t以us为单位,Fosc以MHZ为单位;(t=5ms,T=12MHZ) 十进制 TL0=216; TH1=(65536-5000)/

15、256;/0XEC TL1=(65536-5000)%256;/0X78 TR1=1; /启动T1 TR0=1; /启动T0 ST=1; /ST产生正脉冲 ST=0; while(1) if(EOC=1) /EOC为高电平后,若使OE为高电平,转换结果DATA便可锁存到D0D7上,CPU读取转换数据后,再使OE变为低电平,一次A/D转换过程结束。 OE=1; getdata=P0; OE=0; i=getdata*196; /转换为十进制;5V i/o口为八个5256=196MVdispbuf5=i/10000; i=i%10000; dispbuf6=i/1000;i=i%1000; dis

16、pbuf7=i/100; ST=1; ST=0; void t0(void) interrupt 1 using 0 /定时器0 中断服务 CLK=CLK; void t1(void) interrupt 3 using 0 /定时器1 中断服务 TH1=(65536-6000)/256; TL1=(65536-6000)%256; P2=0xff; P1=dispcodedispbufdispcount; P2=dispbitcodedispcount; if(dispcount=5) P1=P1 | 0x80; dispcount+; if(dispcount=8) dispcount=0

17、; 七、实验结果截图实物图:作为模拟电压的输入,滑动变阻器的变化不可以过快;要求:调一次滑动变阻器使得电压变化0.02V;所以要求2n>5/0.02=250,因此ADC要选择8位的,滑动变阻器的精确度为0.02.八、心得体会 本次试验的难度虽不大,但在此过程中我学到了很多知识,同时也遇到了一些问题。例如:1. 仿真时用的是ADC0808但是实际生活中是用ADC0809,需要通过网上查找资料知道两者的异同;2. 在网上有许多关于基于单片机的数字电压表的设计资料每份的整体思想一样,但是所用的芯片是不同的,需要自己根据老师提供的器件做相应的修改;3.作为模拟电压的输入,滑动变阻器的变化不可以过快;4.用#define SEG P0不可以加;号;5.无穷循环while(1)后也不可以加;号;6.在仿真中不必将复位电路和晶振电路连接上,但是实际实验中却必须加上;7.各芯片都需要接地和接电源才能工作,仿真时不需要,但是实际中必须加上;8.在焊接时要判断清楚芯片的引脚接线,合理的排版,才能更高效的连线并节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论