简易数字电压表设计与制作.docx
- 文档编号:23211600
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:22
- 大小:342.06KB
简易数字电压表设计与制作.docx
《简易数字电压表设计与制作.docx》由会员分享,可在线阅读,更多相关《简易数字电压表设计与制作.docx(22页珍藏版)》请在冰豆网上搜索。
简易数字电压表设计与制作
江阴职业技术学院
项目设计报告
项目:
简易数字电压表设计与制作
专业应用电子技术专业
学生姓名仲伟鑫
班级12应用电子
(1)班
学号12030108
指导教师包军卫、井新宇
完成日期2014年5月11日
摘要
在日常维修、教学和科研中,电压表是不可缺少的。
本课题目的就是以单片机为基础设计出一种结构简单、工作可靠、灵活性好的数字电压表。
本文首先介绍了数字电压表的发展现状及课题的目的和意义。
然后,对基于单片机的数字电压表的硬件系统、软件系统的设计原理及具体实现方案作以详细介绍,其中,在硬件部分,较为详细的讨论了硬件的选择、设计原理、使用方法和功能,同时,对各部分接口电路作以介绍;在软件部分,介绍了软件所使用的编程语言和编程思路。
最后,对电路调试、印刷PCB板的制作及系统的抗干扰设计作了进一步分析和总结。
本文设计的数字电压表,其硬件电路所用元件较少、成本低、调节简单;软件采用C语言编程,其灵活性高,可读性强。
经过理论研究、原理设计和整机调试,实验结果表明,该方案可行。
关键词:
单片机;电压表;A/D转换器;串行总线
目录
摘要1
目录2
第一章应用场合3
1.1应用范围3
第二章功能描述与性能指标5
2.1功能描述5
2.2性能指标5
第三章方案设计与选择6
3.1方案设计6
3.2系统框图6
第四章关键器件与系统资源分配结论7
4.1关键器件7
4.2系统资源分配7
第五章硬件设计8
5.1硬件模块设计8
5.2主控模块AT89C52单片机8
5.3转换模块ADC083210
5.4转换模块与主控模块连接11
5.5显示模块12
5.6Proteus器件连接12
第六章软件设计13
6.1软件模块设计13
6.2主程序设计图14
6.3软件模块设计初始化14
6.4软件模块A/D转换电路15
6.4显示模块流程图设计16
第7章系统调试17
7.1调试方法和工具17
7.2软件调试17
7.3硬件调试17
第8章课程展望18
8.1课程展望18
附录(程序)19
AD0832程序20
第一章应用场合
1.1应用范围
图1-1电子仪器实验室
本设计的简易数字电压表主要应用于学生实验室、小型仪器测量和小范围电压值的测量。
由于功能的局限性,只能在规定的范围内应用。
第二章功能描述与性能指标
2.1功能描述
通过单片机软件计算出输入电压,送数码管或液晶屏显示,用一路模拟量输入能够测量0~5V直流信号的测量,同时显示结果由LED数码管显示转换后的数字量。
2.2性能指标
显示方式:
LED数码管显示
采样周期:
0.2S
测量范围:
0~5V直流信号
变送输出:
由LED数码管显示转换后的数字量。
精度:
为±0.05V的信号
第三章方案设计与选择
3.1方案设计
方案1:
采用ADC0832数据转换
电路包括电源电路、信号采集与量程转换电路、开关逻辑控制电路、单片机系统、显示电路外。
电路的A/D数据转换电路是用逐次逼近A/D转换器来设计的,这种电路的特点是抗干扰能力强、准确度稿、稳定性好。
但转换速度比较慢,结构较复杂。
方案2:
采用数字专用芯片
主要器件由芯片ICL7106和LCD组成,外加数据输入电路,这种方法是目前数字万用表常用的测量电路,外围电路简单。
但是这种电路有一个缺点,就是他的参数一般是已经设定好的,不容易更改。
经过通过1、2对比我们觉得方案1切合实际准确度高、抗干扰能力强、稳定性好,方案1比较简单
3.2系统框图
该设计以单片机为核心,测量电压值后送进A/D转换模块进行模数转换再由单片机处理运算最后将信号给显示模块直接显示。
方案设计框图如右图3-1示
图3-1系统总体框图
第四章关键器件与系统资源分配结论
4.1关键器件
选择:
单片机:
AT89C52单片机、A/D转换器:
ADC0832、显示器:
4位LED显示器
特征:
速度快、精度小、成本低
4.2系统资源分配
系统资源分配引脚
芯片
信号引脚
控制引脚
对应引脚
引脚分配
ADC0832
5~8
1~4
5~8
P1.4~1.6
74LS245
2~9.18~11
1.19
2~9.A0~A7
P2~0~P2~7
18~1.B0~B7
LED数码管
1.AB/BA
0
在器件资源分配模块中,A/D转换模块中的器件ADC.0809与各控制信号端分别与单片机各对应的端口相接,显示部分也与其对应的各端口相连。
器件资源分配表
第五章硬件设计
5.1硬件模块设计
硬件电路模块主要由三个模块构成,主控模块、电压测量模块和显示模块。
其硬件框图如图5-1示
图5-1硬件模块设计图
5.2主控模块AT89C52单片机
在众多的单片机系列中,AT89C5是一种低功耗、高性能CMOS8位微控制器具有8K在系列可编程Flash存储器。
AT89C52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,3个16位定时器/计数器,一个响亮2级中断构全双工串行口,片内晶振及时钟电路。
另外,AT89C52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。
图5-2AT89C52引脚图
如图3-1所示,为AT89C52的硬件结构图。
AT89C52单片机的内部结构与MCS-51系列单片机的构成基本相同。
CPU是由运算器和控制器所构成的。
运算器主要
用来对操作数进行算术、逻辑运算和位操作的。
控制器是单片机的指挥控制部件,主要任务的识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。
它的程序存储器为8K字节可重擦写Flash闪速存储器,闪烁存储器允许在线+5V电擦除、电写入或使用编程器对其重复编程。
图5-3单片机89C52结构框图
vP0:
输出LED数码管的段码
vP1:
连接ADC0832转换器
vP2:
输出LED数码管的位码
5.3转换模块ADC0832
引脚的功能说明:
1.8位分辨率;
2.双通道A/D转换;
3.输入输出电平与TTL/CMOS相兼容;
4.5V电源供电时输入电压在0~5V之间;
5.工作频率为250KHZ,转换时间为32μ
6.一般功耗仅为15mW;
7.8P、14P-DIP(双列直插)PICC多种封装图5-4ADC0832引脚图
芯片接口说明:
CS_片选使能,低电平芯片使能。
CHO模拟输入通道0,或作为IN+/-使用。
CH1模拟输入通道1,或作为IN+/-使用。
GND芯片参与零电位(地)。
DI数据信号输入,选择通道控制。
DO数据信号输出,转换数据输出。
CLK芯片时钟输出,转换数据输出。
Vcc/REF电源输入及参考电压输入
一般情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。
当要进行A/D转换时,须先将CS端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK提供时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲到来之前DI端必须是高电平,表示启动位。
在第2、3个时钟脉冲到来之前DI端应输入2位数据用于选择通道功能,其功能项见表6.4。
输入形式
配置位
选择通道
CH0
CH1
CHO
CH1
差分输入
0
0
+
-
0
1
-
+
单端输入
1
0
+
1
1
+
图5-5ADC0832配置位
5.4转换模块与主控模块连接
单片机串行口方式0与ADC0832接口
图5-6ADC0832与单片机接口
如图6.23所示,AT89C51的P1.7为片选信号端,TXD是时钟信号输出端,RXD为启动信号,模拟通道选择信号发送端以及A/D转换后输出数据的接收端。
ADC0832的时钟频率最高为400KHZ,单片机AT89C51晶振选用4MHZ,在TXD端的输出频率为4MHZ/12=333KHZ,符合要求。
ADC0832输出的串行数据共15位,由两段8位数据组成,前一段是最高位在先,后一段是最高位在后,两段数据的最低位共用。
只有在时钟的下降沿,ADC0832的串行数据才移出一位。
由单片机控制时钟信号进行发送,并由TXD发出,以达到控制ADC0832输出数据位的目的。
为了得到一列完整的8位数据,单片机分两次采集含有不同位的数据,再合成一列完整的8位数据。
当REN=0时,AT89C51连续一次向ADC0832发送8个时钟脉冲,前3个脉冲发送的是启动位和模拟通道选择位,共计3位;从第4个脉冲下降沿开始,ADC0832发出转换数据D7~D4(在脉冲上升沿单片机方可接收)。
但由于REN=0,单片机不予接收,丢失D7~D4数据。
图5-5ADC0832时序图
5.5显示模块
显示模块是四位一体的数码管与主控制器之间的连接,数码管段码端口接至主控制器的P0口,位码端接至P2端口,同时P0口使用10k的上拉电阻驱动数码管显示。
图5-67segmpx4ca
5.6Proteus器件连接
图5-4proteus器件链接图
第六章软件设计
本章介绍简易数字电压表设计的软件模块,包括主程序、软件模块初始化、A/D转换模块的介绍。
6.1软件模块设计
软件模块框图设计主要对该设计整体进行概述,阐述设计的总体思路和步骤。
如右图6-1所示为软件模块框图:
框图主要从三个部分说明了该设计的思路和基本步骤,第一部分是软件设计的主控模块,主控模块是设计的核心部分,外围的一切组成部分主要以主控模块为核心,起到主要控制作用;第二部分是软件设计的数据转换模块,数据转换主要有数模转换和模数转换,本设计主要采用模数转换方式,将外围电路采集到的模拟信号量通过模数转换器件的作用和处理,将其信号转换成清晰直观的数字量,并进行量化,此模块也是软件设计的关键部分;第三部分为显示模块,显示模块是软件设计必不可少的组成部分,采集到的信号经转换处理后若没有通过显示部分显示出来,其是没有意义的,因为我们想要知道具体的结果,通过结果我们才可以对数据进行分析,以此来判断信号数据是不是我们想要的结果,如果不是,我们就可以通过调试等手段对其进行修正。
所以这三个模块相辅相成缺一不可。
软件模块框图如右图6-1
图6-1软件模块设计
6.2主程序设计图
软件主程序设计图是对软件设计思路和程序的总体概述,是对整体流程图和主程序执行功能的概述,主函数所执行的命令以及实现的功能即就是通过主流程图来体现和实施的,它贯穿流程图和主程序始终
图6-2主程序设计图
6.3软件模块设计初始化
软件模块初始化对使用到的芯片器件进行置位和设定初值,给以一定的命令这样器件才可以工作和运行。
其图如6-3所示
图6-3软件模块流程图
6.4软件模块A/D转换电路
输入模块电压信号的采集测量,并将采集测量后的信号通过A/D转换成数字信号并将其保存起来,再将其得到对应数字信号的数值分配到相应的微处理器内存单元中去,最后数据在经过处理后将其结果显示出来。
A/D转换电路如图6-4所示
图6-4软件模块A/D转换流程图
6.4显示模块流程图设计
显示模块主要将单片机输出的信号转换为数码显示,选取4位LED灯。
通过延时2s对LED动态扫描一次。
在扫描时,先对数码管初始化处理,段码和位码数据准备就绪,然后对LED送入段码,送入位码,之后位码开始移位显示出不同的位置不同的数据。
位码移位后再对数码管进行延时一段时间,这样数码管会有更好的显示效果。
延时过后要对其后送入的段码或位码进行消影,以防在显示时出现重影的现象,最后判断数码管是否显示完数据,当显示完数据时则应返回,否则从段码开始重新扫描,依次循环。
如图6-5所示
图6-5显示模块流程图
第7章系统调试
7.1调试方法和工具
(1)调试方法:
软件调试和硬件调试
(2)调试工具:
KeiluVision、Proteus仿真图
7.2软件调试
Keil对软件进行调试
程序可分为数据采集系统、数据转换系统、和显示系统,三部分先独立测试,然后整体调试。
调试过程中对遇到的问题小心谨慎,对程序的错误要检查是否程序被自己输错导致的。
基本的知识点要掌握牢,写程序时要规范化,有条理性,每步什么作用心中要有数。
软件调试心得
Keil、Proteus联调时要明白7口为高位,单片机与74LS245应接入28~25。
将各模块函数程序关联到一起,通过联调进行整体调试。
如果遇到乱码检查是否为keil中程序错误。
7.3硬件调试
Proteus对软件和器件调试
连接元器件器件首先利用工具对电气原理图和装配图进行线路检查;然后核对元器件型号、规格和安装是否符合要求;再检查电源走线(防止电源间短路和极性错误);重点检查扩展系统总线是否存在相互间短路或其它信号线短路。
硬件调试心得
Keil、Proteus联调时要明白7口为高位,元器件引脚分配要对应程序设计好的引脚分配,该给电的给电该接地的接地
第8章课程展望
8.1课程展望
这次的课程设计使我看清了很多东西,最基本的一样就是与他人的差别和自身专业知识的缺乏,和咱们班一些同学相比,我要学的东西实在太多太多了。
而且,学到了很多有关单片机内外的知识,这些知识不仅在课堂上有效,在日常生活中更是有着现实意义,也对自己的动手能力是个很大的锻炼。
在这门课程设计中,我锻炼了自己动手能力,提高了自己解决问题的能力。
通过这次设计培养了我理论联系实际的能力,提高了我分析问题和解决问题的能力,增强了独立工作的能力。
最大的收益就是已能熟练使用Proteus及Keil软件,并能通过这些软件熟练画图及编译一些简单的汇编程序,在一些细节上都能做到到位。
锻炼了自己的动手能力,但有些东西还不大清楚,如接地线电源线的线宽,也是老师后来给我们讲才知道,还有一些高频低频元件的摆放都是一样。
在个人查阅上未能做到很好的了解,这也是一个很大的缺点。
认真的做完这次课程设计实践后,我自己感觉在这些都有了很大的提高。
但由于时间原因,这次课程设计没能达到自己预想那么好,但所幸的是功夫不负有心人,所有功能指标都已基本实现了。
在接下来的时间里,我会继续把它做好。
最后我还总结出了一个结论,当认真的投入到一项工作中时,不但会得到许多收获,还会感觉到很大的乐趣。
最后在此再次向带领我们这次课程设计的老师说声:
谢谢!
附录(程序)
主程序:
#include
#include"ADC0832.h"
typedefunsignedcharuchar;
typedefunsignedintuint;
#defineduanma_portP0
#defineweima_portP2
ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0x7f};
ucharADC_disbuf[3]={0};
voidDelay1ms(uchark)
{
uchari,j;
for(j=0;j for(i=0;i<150;i++) ; } voiddisplay(ucharnum) { uchari,w; ADC_disbuf[2]=(num*100)/100; ADC_disbuf[1]=((num*100)%100)/10; ADC_disbuf[0]=((num*100)%100)%10; w=0x80; for(i=0;i<4;i++) { if(i==2) duanma_port=(seg[ADC_disbuf[i]]&0x7f); else duanma_port=seg[ADC_disbuf[i]]; weima_port=w; Delay1ms(3); w>>=1; weima_port=0; } } voidmain(void) { ucharnum_ADCconvert; while (1) { num_ADCconvert=((GetValueADC0832(0))/51); display(num_ADCconvert); } } AD0832程序 #include"ADC0832.h" unsignedcharGetValueADC0832(bitchannel) { unsignedchari,data1=0,data2=0; clk_adc0832=0;di_adc0832=1;cs_adc0832=0; clk_adc0832=1;clk_adc0832=0;//启动AD di_adc0832=1;clk_adc0832=1; clk_adc0832=0;di_adc0832=channel;//通道选择 clk_adc0832=1;clk_adc0832=0; di_adc0832=1; for(i=0;i<8;i++) { clk_adc0832=1; clk_adc0832=0; if(do_adc0832) data1|=0x80>>i; } for(i=0;i<8;i++) { if(do_adc0832) data2|=0x01< clk_adc0832=1; clk_adc0832=0; } cs_adc0832=1; di_adc0832=1; clk_adc0832=1; if(data1==data2) returndata1; else return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 电压表 设计 制作