课程设计 电压测量程序设计_第1页
课程设计 电压测量程序设计_第2页
课程设计 电压测量程序设计_第3页
课程设计 电压测量程序设计_第4页
课程设计 电压测量程序设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、 广西科技大学 课程设计论文课题名称 电压测量程序设计 学 院 电气学院 专 业 测控技术与仪器 班 级 102 学 号 2010003040 63/69 姓 名 游献山 覃源渊 指导教师 潘绍明、麦雪凤、罗功坤 2013年 11 月 28 日摘要本课程设计是电压测量程序设计,利用实验台上的电压源,经过放大后送到a/d转换成数字信号,计算后在LCD上显示其电压值。主要解决A/D转换,放大电路,数据处理和显示模块。A/D转换用ADC0809,系统用AT单片机,放大电路用OP07同相放大,显示用1602液晶屏显示。关键字:A/D0809,OP07,LCD1602,AT89C52Abstr

2、act; This course is designed to measure the voltage programming, using voltage source test bench, after amplified and sent to the a/d converted into digital signals, calculated on the LCD display the voltage value. Mainly to solve the A/D conversion, amplification circuit, data processing and displa

3、y module. A/D conversion with ADC0809, the system uses AT microcontroller, amplifying circuit with OP07 in-phase amplifier,With 1602 LCD screen display.Keyword:A/D0809,OP07,LCD1602,AT89C52目 录引言31系统设计方案的选择41.1基于单片机系统及A/D转换芯片的电压表。41.2.本设计使用的单片机的简介41.3.本设计使用的1602的简介41.4.选用的A/D0809简介4 1.5. 选用的OP07简介.52.

4、 总体设计方案 53硬件电路系统模块的设计53.1 单片机系统53.2输入OP07放大电路73.3A/D转换电路73.41602液晶电路74. 系统软件的设计84.1 主程序的设计8 4.2 A/D转换程序.95系统的调试105.1硬件调试105.2软件调试10总结11参考文献11附录1:源程序附录2:电路总图引言数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度慢,重量达几十公斤,体积大。继之出现了斜波式电压表,它的速度方面稍有提高,但是准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐近式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点

5、是抗干扰能力差,很容易受到外界各种因素的影响。随后,在斜波式的基础上双引伸出阶梯波式,它的唯一的进步是成本降低了,可是准确宽,速以及抗干扰能力都未能提高。而现在,数字电压表的发展已经是非常的成熟,就原理来讲,它从原来的一,二种已发展到多种,在功能上讲,则从测单一参数发展到能测多种参数;从制作元件来看,发展到了集成电路,准确度已经有了很大的提高,精度高达1NV;读数每秒几万次,而相对以前,它的价格也有了降低了很多。目前实现电压数字化测量的方法仍然模-数(A/D)转换的方法。而数字电压表种类繁多,型号新异,目前国际仍未有统一的分类方法。而常用的分类方法有如下几种:按用途来分:有直流数字电压表,交、

6、直流数字电压表,交直流万用表等。按显示位数来分:有4位,5位,6位,7位,8位等。按测量速度来分:有低准确度,中准确度,高准确度等。按测量速度来分:有低速,中速,高速,超高速等。但在日常生活中,数字电压表一般是按照原理不同进行分类的,目前大致分为以下几类:比较式,电压时间变换式,积分式等。在电量的测量中,电压、电流和频率是最基本的三个被测量。其中,电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受用户青睐,数字式电压表就是基于这种

7、需求而发展起来的,是一种必不可少的电子测量仪表。1.1基于单片机系统及A/D转换芯片的电压表这种方案是利用单片机系统与模数转换芯片、显示模块等的结合构建数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出许多的应用电路来。此方案的原理是模数(A/D)转换芯片的基准电压端,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换芯片将被测量电压输入端所采集到的模拟电压信号转换成相应的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定的算法计算出被测量电压的值。最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路

8、模块加以显示。1.2本设计使用的单片机的简介本设计中选用是51系列的AT89C52,它是低电压、低功耗、高性能的CMOS8位单片机,片内含4KB的可反复擦写的只读程序存储器和128B的随机存取数据存储器,32个I/O口线,片内振荡器及时钟电路,并与MCS-51系列单片机兼容。在设计中,单片机起着连接硬件电路与程序运行及存储数据的任务,一方面,它将A/D转换器、显示器等通过I/O口地址线和数据线连接起来;另一方面,它将用户下载的程序通过控制总线控制数据的输入输出,从而实现测电压的功能。1.3本设计使用的1602的简介1602液晶是工业字符型液晶,能够同时显示16*2即32个字符。1602液晶模块

9、内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。使用时直接编写软件程序按一定的时序驱动即可。它的特点是显示字迹清楚,价格相对便宜。1.4选用的A/D0809简介AD0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。些A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。1.5选用的

10、OP07简介Op07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25V),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。2.0设计方案根据上述,我们选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:AT89C52单片机,ADC0809模数转换芯片,1602液晶显示器,OP07放大电路,电容,电阻

11、,晶振,标准电源等等。设计的基本框图如下:单片机系统模块1602液晶显示模块输入放大OP07电路模块A/D转换模块图2.13.硬件电路系统模块的设计3.1单片机系统 单片机最小系统其原理图如下:图3.1晶振电路如下图:图3.2复位电路如下图:图3.33.2输入电路于输入电路的电压要经过OP07放大电路放大,电路图如下:图3.43.3A/D转换电路ADC0809转换电路如下:图3.53.4显示电路1602液晶显示电路如下:图3.64.系统软件的设计4.1主程序的总体流程图:选择ADC0809的转换通道开启A/D转换数据转换液晶显示开始转换是否结束NY设定定时器,提供时钟信号输出转换结果图4.14

12、.2 A/D转换程序:设置模拟输入口开始启动转换转换完成?NY输出数值处理图4.25.系统的调试完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。调试分了硬件和软件调试5.1硬件调试 硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工艺性故障等。1) 检查所设计的硬件电路板所有的器件和引脚是否正确,尤其是电源的连接是否正确;检查各总线是否有短路的故障。检查开关/按键是否正常,是否连接正确,为了保护芯片,应先对各插座电位进行检查,确认无误后再插入芯片。2) 将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬

13、件电路的好坏。5.2软件调试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块一个模块进行的。首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。最后调试整个程序。尤其注意的是各模块间能否正确的传递参数。1) 检查液晶显示模块程序。在主程序中调用display()和dislay_zifu()函数,观察在1602液晶上是否能够显示相应的字符。如果不能,则在相关的子程序中设计断点,反复调试直到能够显示。2) 检查按键模块程序。本设计的按键模块程序是用状态机的方法,可以在key_state1状态下加一个任务,如显示一个字符在

14、液晶上。观察是否正确显示。3) 检查A/D转换模块程序。可以在硬件电路的输入端输入已知的几个电压,分别观察液晶上是否显示相应的电压值。4) 检查数据的转换模块程序。可以按硬件电路的按键开关,输入相应的电压,观察液晶显示的电压值是否一致。如果一致。则数据转换的算法正确的。总调试。当相应的各模块环节都正确后,可程序下载到单片机。接上电源运行。再检查所有功能,观察是否能预期的一样。如果一样,说明设计成功完成。总结:这次的课程认识到了我们的动手能力还不够,理论知识也学得不够扎实,还有我们的经验也不够。经过了设计后我们的动手能力得到提高,也进一步巩固了我们的理论知识,同时也增加了一些设计的经验。参考文献

15、:1杨毅刚,彭喜元编著,单片机原理与应用设计 北京:电子工业出版社。2008.42赵月飞等编著,Protel 99 SE基础与实例教程 北京:机械工业出版社。2009.123姜志海编著,单片机的C语言程序设计与应用北京:电子工业出版社。2011.74史建芳编著,智能仪器设计基础 北京:电子工业出版社。2012.9附录1:源程序主程序:#include<reg52.h> #include <intrins.h> #include "LCD1602.h" #include "ADC0809.h" sbit CLOCK=P07; ext

16、ern uchar display_buffer16; void main() TMOD=0x02; TH0=0x14; TL0=0x00; IE=0x82;TR0=1; Initialize_LCD1602(); delay50us(10); Write_LCD_Command(0x80);/设置显示的初始位置 LCD_Display(display_buffer0);/显示"The voltage is: " while(1) adc0809_init(); Refresh_show(); Write_LCD_Command(0xC0);/设置显示的初始位置 LCD_D

17、isplay(display_buffer1); /显示测得的数据 void Timer0_INT() interrupt 1 CLOCK=!CLOCK; LCD1602头文件:#ifndef _lCD1602_H_ #define _LCD1602_H_ #include <reg52.h> #define dat_port P0 #define uchar unsigned char #define uint unsigned int #define delay4us() _nop_();_nop_();_nop_();_nop_(); sbit RS=P15;/RS=1 数据

18、RS=0 命令sbit RW=P16;/RW=1 读取RW=0 写入sbit E=P17;/E 使能信号 uchar LCD_Busy_Check();/忙检查 void Write_LCD_Command(uchar cmd);/向LCD写入命令 void Write_LCD_Data(uchar dat); /向LCD写入一个字节的数据函数 void Initialize_LCD1602(); /液晶初始化函数 void LCD_Display(uchar *str);/在LCD上显示字符串 #endifLCD1602C源程序:LCD1602.c源程序 /液晶控制与显示驱动程序 #incl

19、ude <reg52.h> #include <intrins.h> #include <string.h> #include "LCD1602.h" #include "ADC0809.h" /-忙检查-/ uchar LCD_Busy_Check() uchar LCD_Status; RS = 0; RW = 1; E = 1; delay4us(); LCD_Status = P3; E = 0; return LCD_Status; /-向LCD写入命令-/ void Write_LCD_Command(uc

20、har cmd) while(LCD_Busy_Check()& 0x80)=0x80); /忙等待 RS = 0; RW = 0; E = 0; P3 = cmd; delay4us(); E = 1; delay4us(); E = 0; /-向LCD写入一个字节的数据函数-*/ void Write_LCD_Data(uchar dat) while(LCD_Busy_Check()&0x80)=0x80); RS = 1; RW = 0; E = 0; P3 = dat; delay4us(); E = 1; delay4us(); E = 0; /-LCD初始化-*/

21、 void Initialize_LCD1602() /液晶初始化函数 Write_LCD_Command(0x38);delay50us(10); /功能设置,数据长度为8位,双行显示,5×7点阵 字体 Write_LCD_Command(0x0C);delay50us(10); / 显示开,关光标 Write_LCD_Command(0x06);delay50us(10); /字符进入模式:屏幕不动,字符后移 Write_LCD_Command(0x01); delay50us(10);/清屏 /-在LCD上显示字符串-*/ void LCD_Display(uchar *str) uchar i; for(i=0;i<strlen(str);i+) Write_LCD_Data(stri); delay50us(100);ADC0809头文件:#ifndef _ADC0809_H_ #define _ADC0809_H_ #include <reg52.h> #define data_port P1 #define uchar unsigned char #define uint unsi

温馨提示

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

评论

0/150

提交评论