简易直流数字电压表的设计-毕业论文
第
2 页 共 18 页
<<简易直流数字电压表的设计>>
课程设计报告
题 目:简易直流电压表的设计 专 业:电子信息科学与与技术 年 级: 学 号: 学生姓名: 联系电话: 完成日期:2013年 07月06
日
第
3 页 共 18 页
摘 要
本文介绍了一种基于单片机的简易数字电压表的设计,设计主要由三部分组成:A/D转换模块,数字处理模块和显示模块。A/D转换芯片主要由ADC0808来完成。它的主要功能是把采集到的模拟量转换成数字量并传送到数据处理模块。 数据处理则由AT89C51来完成,其负责把ADC0808传送来的数据量经过一定的数据处理,产生相应的显示码送到显示模块去显示;此外它还控制ADC0808的工作。
该系统的数字电压表设计简单,所用的原件少,成本低,且测量精度和可靠行较高。此数字电压表可以测量0—5V的1路模拟直流输入电压值,并通过一个
四位一体的7端数码管显示出来。
关键字:ADC0808 数字电压表
第
4 页 共 18 页
ABSTRACT
This article describes a simple digital voltage meter Based on Single - Chip
Microcomputer design, design is mainly composed of three parts : A/D Conversion module, digital processing module, and display module.A/D conversion chips mainly done by the ADC0808. Its main function is to capture to convert analog to digital and delivered to the data processing module.Data processing is done by AT89C51, they are responsible for ADC0808 after a certain amount of data transmitted to data processing, display a corresponding code sent to the display module to display ; in addition it also controls ADC0808 work.
The system design of digital voltmeter simple, using the original less, low cost and high measuring accuracy and reliability of rows. This digital 1 - channel analog voltage meter can measure 0-5v DC input voltage values, and through a 7 end of the four - in - one digital display.
Keywords : ADC0808 digital voltage meter
第
5 页 共 18 页
第
6 页 共 18 页
目录
摘 要 .................................................................... 3 ABSTRACT .......................................................... 4 1 设计要求及方案选择 ........................................ 7
1.1设计要求 ................................................. 7 1.2设计思路 ................................................. 8 2 理论分析与设计 .............................................. 8
2.1数码显示电路的设计 ............................. 8 2.2数据处理电路的设计 ............................. 9 2.3软件处理流程的设计 ............................. 9 3 电路设计 .......................................................... 10
3.1 硬件电路的设计 .................................. 10 3.2 软件的设计 ........................................ 12 4 系统测试 .......................................................... 15
4.1调试所用的基本仪器清单 ................... 15 表1 简易数字电压表原件清单 ................. 15 4.2调试结果 ............................................... 16 4.3 测试结果分析 .................................... 17 5 总结 .................................................................. 17 参考文献 .............................................................. 18
第
7 页 共 18 页
1 设计要求及方案选择
1.1设计要求
(一)任务
利用单片机设计并简易的直流数字电压表,能够测出0~5V的直流电压,电路组成框图如图所示。
(二)要求 1.基本要求
(1)测量精度0.02V。
(2)利用数码管或者液晶显示器显示电压值。 (3)设计电路
(4)在KEIL中编辑、编译、调试程序,并在protuse中仿真。 2.扩展部分(选作)
(1)精度0.01V; (2)测量范围0~10V; (3)声音播报电压值;
显示电压值 A\\D主控器(51单片机) 声音报电
(4)其它。
第
8 页 共 18 页
1.2设计思路
(1)根据设计要求,选择AT89C51单片机作为核心器件。
(2)A/D转换采用ADC0808实现,与单片机的接口为P1口和P2口的高四
位引脚。
(3) 电压显示采用4位一体的LED数码管。
(4) LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2
低四位产生。
2 理论分析与设计
2.1数码显示电路的设计
时钟电路 P
AT89C51 P显示
第
9 页 共 18 页
复位信号 2.2数据处理电路的设计
数码显示电路框图
PA/D电压测量电AT89C51 P
2.3软件处理流程的设计
第
10 页 共 18 页
开初始调用A/D转调用显结
3 电路设计
3.1 硬件电路的设计
第
11 页 共 18 页
3.2 软件的设计
第
12 页 共 18 页
#include //数码管位选通信号 /* sbit we1=P2^0; sbit we2=P2^1; sbit we3=P2^2; sbit we4=P2^3; */ /***AD操作位***/ sbit CLK=P2^4; sbit STRAT=P2^5; sbit EOC=P2^6; sbit OE=P2^7; /**************数码管段选码*************/ unsigned char code Disp_Tab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; /**************函数声明**************/ void delay(unsigned int x); 第 13 页 共 18 页 void display_result(unsigned char advalue); void system_Ini(); /**************************************************************************** /** */ /** 主函数 */ /***************************************************************************/ void main(void) { unsigned int K,val; float a ; system_Ini(); while(1) { /*******启动转换*******/ STRAT=0; delay(1); STRAT=1; delay(1); STRAT=0; // while(!EOC); //等待转换 delay(10); /*********读取*********/ OE=1; K = P1; OE=0; /********转换为电压值********/ a=(float)K*5/255; val=(unsigned int) (a*1000); //显示*/ display_result(val); } } /**********延时子程序**********/ void delay(unsigned int x) { unsigned int i,j; for(i=x;i>0;i--) 第 14 页 共 18 页 for(j=110;j>0;j--); } /**********显示子程序**********/ void display_result(unsigned int advalue) { unsigned int a,aa,aaa,aaaa; a=advalue/1000; aa=advalue/100%10; aaa=advalue/10%10; aaaa=advalue%10; /*****显示小数点*****/ P2=0x0e; P0=Disp_Tab[a]|0x80; delay(10); P2=0x0d; P0=Disp_Tab[aa]; delay(10); P2=0x0b; P0=Disp_Tab[aaa]; delay(10); P2=0x07; P0=Disp_Tab[aaaa]; delay(10); } void system_Ini() { TMOD|= 0x02; TH0 = 0x14; TL0 = 0x00; TR0 = 1; EA=1; ET0=1; } /***********中断***********/ void Timer1_Isr() interrupt 1 第 15 页 共 18 页 { CLK=~CLK; } 注意: /*****中断矢量函数标号的确定******/ 中断矢 中断源 中断号 量 外部中断0 0030H 0 定时器T0中断 000BH 1 外部中断1 0013H 2 定时器T1中断 001BH 3 串行口中断 0023H 4 定时器T2中断(仅8052有) 002BH 5 4 系统测试 4.1调试所用的基本仪器清单 表1 简易数字电压表原件清单 序号 1 2 3 4 5 6 7 8 9 10 名 称 单片机 转换器 LED四位一体数码管 滑动变阻器 上拉电阻 电阻 电容 晶振 电源 电压表 型 号 AT89C51 ADC0808 7SG-MPX4-CC 数 量 1片 1个 1个 1个 8个 2个 3个 1个 4个 1个 用 途 总控制 模/数转换 显示电压 改变电阻 提高输出电平 限流 帮助晶振起振 提供基本的时钟信号 供电 测量显示电压 4.2调试结果 第 16 页 共 18 页 电压表显示数码管显示两者差之绝对值 值 值 0 0 0.25 0.254 0.5 509 1 1 1.1 1.098 1.2 1.196 1.3 1.294 1.4 1.392 1.5 1.509 1.6 1.607 1.7 1.705 1.8 1.803 1.9 1.901 2 2 2.05 2.058 2.1 2.098 2.15 2.156 2.2 2.196 2.25 2.254 2.3 2.294 2.35 2.352 2.4 2.392 2.45 2.45 2.5 2.49 2.55 2.549 2.6 2.607 2.65 2.647 2.7 2.705 2.75 2.745 2.8 2.803 2.85 2.843 2.9 2.901 2.95 20941 3 3 1.测量范围在0—5V之间满足要求 0 0.004 0.09 0 0.002 0.004 0.006 0.008 0.009 0.007 0.005 0.003 0.001 0 0.008 0.008 0.006 0.004 0.004 0.006 0.002 0.08 0 0.01 0.001 0.007 0.003 0.005 0.005 0.003 0.007 0.001 0.009 0 2.最大误差0.01 3.分辨率=0.1/5*100%=2% 4.3 测试结果分析 第 17 页 共 18 页 理论分辨率 量化间隔225 最高电压5V 5/225=0.0196 1.要想精度高,必须增加小数位的个数,这样分辨率会增加。 2.由理论和实验值相比较,测仪器的精度还是比较高的。满足任务要求。 5 总结 经过一段时间的努力,毕业论文-基于单片机的简易数字电压表基本完成。但设计中的不足之处仍然存在。这次设计是我第一次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计学会了Proteus和Keil软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。 第 18 页 共 18 页 参考文献 [1]陈忠孝.单片机原理与应用.西安:西北大学出版社,2011年11月。 [2]彭伟. 单片机C语言程序设计实训100例——基 于8051 Proteus仿真.高等教育出版社。 [3]。 [4]Proteus仿真论坛。
因篇幅问题不能全部显示,请点此查看更多更全内容