数字电压表设计报告Word格式.docx

上传人:b****0 文档编号:13479050 上传时间:2022-10-11 格式:DOCX 页数:20 大小:202.60KB
下载 相关 举报
数字电压表设计报告Word格式.docx_第1页
第1页 / 共20页
数字电压表设计报告Word格式.docx_第2页
第2页 / 共20页
数字电压表设计报告Word格式.docx_第3页
第3页 / 共20页
数字电压表设计报告Word格式.docx_第4页
第4页 / 共20页
数字电压表设计报告Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数字电压表设计报告Word格式.docx

《数字电压表设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《数字电压表设计报告Word格式.docx(20页珍藏版)》请在冰豆网上搜索。

数字电压表设计报告Word格式.docx

3.2A/D转换子模块:

A/D转换子程序用于对ADC0804八路输入模拟电压进行A/D转换,并将转换的数值存入八个相应的存储单元中,如下图:

四、系统调试

基于单片机的数字电压表在组装好以后,便可进入系统的在线调试,起主要任务是排除样机硬件故障并完善其硬件结构,试运行所设计的程序,排除程序错误,优化程序结构,使系统达到预期的功能,进而固化软件。

4.1硬件调试

单片机应用系统的硬件和软件调试时交叉进行的,但通常是先排除样机中明显的硬件故障,尤其是电源故障,才能安全和仿真器相连,进行综合调试。

4.1.1硬件电路故障

(1)错线开路短路;

(2)元器件损坏

(3)电源故障

4.1.2硬件调试方法

本设计调试中所用的调试方法是静态测试:

在样机加电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号规格和安装是否符合要求。

第二步是加电后检查各插件上引脚的点位,仔细测量各电位是否正常。

第三步是在不加电的情况下,除单片机以外,插上所有的元器件,最后用仿真适配器将样机的单片机插座盒仿真器的仿真接口相连,为联机调试做准备。

4.2软件调试

4.2.1软件电路故障

(1)当以断点或连续方式运行时,目标系统没有按规定的功能进行操作或什么结果也没有,这是由于程序转移到意外之外或在某处死循环所造成的。

(2)结果不正确

4.2.2软件调试方法

软件调试所使用的方法有:

计算程序的调试方法,I/O处理程序的调试法,综合调试法。

五、实验数据处理

5.1实验数据

0-5V量程为

0-50V量程

次数

标准值

电压示值

满度误差

1

0.76

0.725

0.70%

1.34

1.5

0.52%

2

1.11

1.078

0.64%

2.35

2.5

0.30%

3

1.66

1.627

0.66%

4.42

4.7

0.56%

4

1.99

1.960

0.60%

7.17

7.1

0.14%

5

2.17

2.156

0.28%

10.6

10.1

1.00%

6

2.46

2.450

0.20%

13.0

12.9

7

2.70

2.686

14.6

14.4

0.40%

8

2.85

2.843

16.7

16.1

9

3.03

3.019

0.22%

18.2

17.6

1.20%

10

3.15

3.156

-0.12%

19.5

18.9

11

3.09

3.098

-0.16%

21.7

21.2

5.2实验数据分析

0-5V量程精度为0.001V,满度误差均<

1.00%,为一级电压表

0-50V量程精度为0.1V,满度误差均<

2.50%,为2.5级电压表

六、设计安装及调试中的体会

数字电压表作为一个实用电子系统,已经得到广泛的应用。

掌握数字电压表的基本原理,研究并不断改进系统的功能。

这些是我们初涉者们努力的方向。

本系统采用石英晶体振荡器、分频器、计数器、显示器和校时电路组成。

由LED数码管来显示译码器所输出的信号。

实现了数字钟时、分、秒显示,手动较时、校分的功能。

有很强的现实应用性能。

而数字钟的设计开拓了我们的视野,锻炼了我们的动手能力。

我想就整个制作数字电压表的过程做一些总结。

如何设计原理图,如何检错,如何进行PCB单面板的布线,如何制作单面板,如何调试电路,每一环节都不能忽视,而且每一环节都应为下一环节做打算,不应开始没弄好就想下面怎么做这么做就行了,这样给后期工作带来的难度更大。

第一步也是最关键的一步就是原理图的设计,首先要保证原理图是正确的,否则后面做的都是无用功,画原理图虽然不难,但是绝对不能忽视。

接着导入PCB板,而导入PCB板时必须确保无误。

而手工布线时,摆放好元件也是很重要的,为布线提供方便。

而布线时又要考虑到板子做出来的效果,将焊盘尽量调大,线尽量布粗,电源线和地线要比信号线稍微粗一点,而且尽量避免线经过焊盘,以免焊接时出现短路。

布线很烦很乱很耗时间,很容易泄气,但是一定要坚持,否则前功尽弃。

制作PCB板时要避免出现断线,断线给调试带来很大不便,腐蚀工作也要做好。

焊接器件时要使板子进尽可能的美观,并且焊好每一个结点。

调试是收尾工作,却也是决定成败的关键,调试成功了便制作成功了,如果调试不成功,则看不到效果。

这也是最让人遗憾的。

调试最是让人头痛也是最耗时间的事情。

这也是动手能力最强的工作,需要耐心,需要毅力,这个过程也能使我们更进一步熟悉电路板,并理解电路设计原理,否则是没法调试的,要一级一级地调试,其实只要前期做得好,调试工作就不难。

该清楚每一级输出情形,按照这个情形去调试,直到满足要求,而要考虑到的因素很多。

我觉得最先要做的是保证测量仪器是好的,否则会做很多无用功甚至陷入深渊,接着首要的是确保地线跟电源线正确输入。

要检查电路,要检查焊盘是否焊好,要测试元件是好是坏,要检查有没有断线等等。

总之整个工作很费时,很麻烦,不过当看到自己的数字电压表实现的时候却是最高兴的一件事。

而学我们这个专业的同学又必须要掌握这样难得的机会,还有老师指导,还有同学可以讨论。

从这次课程设计中我获益匪浅。

同时也总结了几点。

首先电路设计是细致活,切不可大意,要有足够的耐心和毅力,同时这也是建立在兴趣之上的。

七、参考文献

1、华中科技大学电子技术课程组编,康华光主编,电子技术基础数字部分(第五版).高等教育出版社,2006年

2、谢自美主编.电子线路设计实验第三版.华中科技大学出版社,2006年

3、张肃文,陆兆熊.高频电子线路(第三版).北京高等教育出版社,1993年

附录一:

源程序代码

主程序:

#include<

reg52.h>

//头文件

intrins.h>

definedvm.h>

delay.h>

warning.h>

1602.h>

keyscan.h>

AD.h>

display.h>

voidmain()

{

while

(1)

write_com(0x01);

lcd_init();

display_voltage();

}

1、宏定义和定义变量:

#defineucharunsignedchar//宏定义

#defineuintunsignedint

uchartable[]="

measurement:

"

;

ucharrange5[]="

RANGE0~20V:

ucharrange50[]="

RANGE0~2A:

ucharrange500[]="

RANGE0~100K:

"

ucharwarning[]="

PleaseChoice!

/*ucharerror[]="

error!

*/

uintmeasure[10];

sbitkey3=P2^7;

sbitkey0=P2^2;

sbitkey1=P2^1;

sbitkey2=P2^0;

sbitlcd_rs=P2^3;

//定义液晶的rs端口

sbitlcd_rw=P2^4;

//定义液晶的rw端口

sbitlcd_en=P2^5;

sbitback=P2^6;

sbitspk=P2^7;

//定义液晶的en端口

sbitcs=P3^2;

//定义AD的cs端口

sbitrd=P3^1;

//定义AD的rd端口

sbitwr=P3^0;

//sbitdula=P3^7;

sbitINTR=P3^7;

//定义AD的wr端口

uinttemp,i,A1,A2,A3,A4;

//定义变量

uintdate;

2、延时部分:

voiddelay(uintz)

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voiddelay_lcd()//1602指令之间延时

uintx=5;

while(x--);

3、AD转换和数据传送:

voidAD_init()//初始化ADC0804

cs=0;

wr=1;

_nop_();

wr=0;

uintAD_switch()//AD转换部分

uinttemp;

P1=0xff;

rd=1;

rd=0;

temp=P1;

//将转后的原始值返给单片机P1口

returntemp;

uintAD_smooth()//软件滤波

uintxx,i,temp;

AD_init();

for(i=0;

i<

20;

i++)

{

measure[i]=AD_switch();

delay(10);

//每隔10usADC转换并采集一次数据,将得

}//到的数据放到数组中,采集十个数据

for(xx=0;

xx<

xx++)//将十个数据冒泡法排序

for(i=xx

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1