简易数字电压表Word文件下载.docx
《简易数字电压表Word文件下载.docx》由会员分享,可在线阅读,更多相关《简易数字电压表Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。
附录B程序清单13
第一章系统概述
单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它
具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、
节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,
既提高了产品的功能和质量,又降低了成本,简化了设计。
基于单片机的A/D转换和控制在许多行业有着广泛的应用,而数字电压是其中最基本的,也是最具代表意义的几个例子。
在我们的学习中,我们常常需要电压测量电压以保证电路的正常工作。
数字电压表测量电压即直观又精确,让我们避免了误差,使得测量更加的方便。
在单片机系统的数字电压表电路中,除了基本的单片机系统和外围电路外,还需要外部的控制与显示装置及转换装置。
输入装置是按键开关,其控制AD转换器的转换控制和通道选择,显示装置是LED七段数码管。
多路数字电压表应用系统主要利用A/D转换器,处理过程如下:
先用A/D转换器对各路电压值进行采样,得到相应的数字量,在按数字量与模拟量成正比关系运算得到相应的模拟电压值,然后把模拟值通过显示器显示出来
本文介绍了用ADC0809集成电压转换芯片和89C51单片机设计制作的多路数据采集系统
设计一个简易简易数字电压表,设计内容包括:
(1)使用串行AD转换器(TLC2543/TLC1543)或并行AD转换器(ADC0809)对外部多路模拟电压进行测量。
(2)使用4位LED或6位LED对测量结果(需转化为工程量)进行显示。
(3)能通过键盘对转换通道进行选择。
1)循环多路显示
2)通过键盘或其它方式进行选择显示(如按下键盘上的0号键,则显示0通道的电压…..)
第二章系统方案设计
2.1总体思路
基于单片机系统的简易电压表的基本结构如图2-1所示。
从图中可以看出,对于一个数字电压表而言,LED显示模块是单片机的通用方法。
图2-1简易电压表的基本结构
输入控制:
是指在一定的要求下,采取何种形式的控制方式来实现数字电压表通道作用的变换,以及控制指令以何种方式传送到单片机。
LED数码显示:
是指单片机将需要显示的数据发送到LED显示模块,并控制LED显示模块按照一定的显示的功能
A/D转换:
是指A/D转换器将模拟量转化为数字量,并送到单片机处理的功能。
2.2简易数字电压表的功能
能通过按键进行循环显示或者选择不同的通道转换外部的模拟电压,并将通道号和其电压值显示出来。
第三章硬件设计
3.1按键电路设计
按键由9个独立按键组成,其中1个切换按键,8个通道选择按键。
切换按键接至P2.6,8个通道选择按键分别接至P3.0-P3.7,通过查询P2.6引脚来判断有无键按下。
若有键按下则转而判断是哪个键按下。
如图3.1所示。
键盘功能如表3-1所示。
图3.1独立按键
切换信号由P2.6控制,通道选择由P3.0-P3.7控制。
表3-1键盘功能排列表
P2.6
切换键
P3.2
通道2
P3.5
通道5
P3.0
通道0
P3.3
通道3
P3.6
通道6
P3.1
通道1
P3.4
通道4
P3.7
通道7
3.2显示电路的设计
LED显示采用动态扫描显示。
动态扫描显示接口是单片机中应用最广泛的一种显示方式,其接口电路是把所有LED显示器的8个比划段A-G。
DP的同名端连在一起,而每一个数码管的公共端COM是各自独立地受I/O线控制。
其CPU向字段输出口送出字形时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,可以自行决定何时显示哪一位了。
而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的,约1ms左右,但由于人的视觉暂留现象及发光二极管的余晖效应,尽管实际上各位显示器并非同时点亮,但只要扫描速度足够快,给人的映像就是一组稳定的显示数据,不会有闪烁感。
显示器采用4位共阴极LED显示器,为了实现显示器的动态扫描,显示器的段码信号由80C51芯片P1口输入显示器,位码信号由80C51单片机P2.0-P2.3口进行位选。
P2口高四位作为位选信号,由于4位LED的段码输入管脚是并联在一起的,所以每一位LED的段码输入管脚都能获得这个段码信号。
若要控制在每一时刻只有一位LED被点亮,必须靠位码信号在每一时刻只有一位是“0”,其他为“1”,然后按时间顺序改变输出“0”的位置,控制在每一时刻只有一位LED被点亮,达到动态显示的目的。
字符编码如表3-2所示。
8位数字
显示字符
3FH
7DH
6
C
39H
06H
1
07H
7
d
5EH
5BH
2
7FH
8
E
79H
4FH
3
6FH
9
F
71H
66H
4
77H
A
.
DFH
6DH
5
7CH
b
全灭
00H
表3-2字符编码表
3.3A/D转换控制电路设计
该系统使用ADC0809并行A/D转换芯片,使用单片机的P2.7,P2.5,P2.4作为该芯片的控制口,其中P2.4给0809芯片提供时钟脉冲,P2.5接转换开始,P2.7接输出允许,0809转换是用等待法等转换结束再继续执行程序。
0809的转换通道选择由P1口的第三位控制。
与单片机的连接如图3-3:
图3-3ADC0809与单片机接口电路图
第四章系统软件设计
4.1系统软件方案的设计
进行应用软件设计时可采用模块化设计,其优点是:
(1)每个模块的程序结构简单,任务明确,易于编写、调试和修改;
(2)程序可读性好,对程序的修改可局部进行,其他部分可以保持不变,便于功能的扩从和版本的升级;
(3)对于使用频繁的子程序可以建立子程序库,便于多个模块调用;
(4)便于分工合作,多个程序员同时进行程序的编写和修改调试工作,加快软件的研制进度。
根据设计要求,首先要确定软件设计方案,即确定该软件应该完成哪些功能;
其次是规划这些功能需要分成多少个功能模块,以及每一个程序模块的具体任务是什么。
其系统的软件设计的模块应该遵循下述原则:
(1)每个模块应具备独立的功能,能产生一个明确的结果。
(2)模块之间的控制参数应尽量简单,数据参数应尽量少。
控制参数是指模块进入和退出的条件及方式,数据参数是指模块间信息的交换方式、交换量的多少及交换的频繁程度。
(3)模块的长度适中。
模块语句的长度通常是在20-100句之间比较合适,模块太长,调试和分析会有难度,修改时也会增加难度;
模块太短,信息交换太过频繁,不利于模块功能的体现。
系统的结构模块如图4-1所示。
图4-1
4.2按键识别及处理程序设计
按键识别及处理程序主要由键盘扫描及键码计算子程序、键码处理。
其中键盘扫描及键码计算子程序实现对键盘的不间断扫描,以及时判断是否有键按下,当有键按下时则转到键码处理。
P3.0-P3.7分别对应0809的转换输入通道IN0-IN7,有键按下,分别送0-7至P1口。
按键扫描及健值处理流程如图4-2所示:
图4-2
4.3显示程序设计
由于该系统使用的是8位LED显示器显示,因此显示采用动态扫描显示方法,即由显示器扫描显示子程序控制显示器逐个循环从左至右依次点亮各个显示器。
这样虽然在任一时刻只要一个显示器点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果一样。
显示器扫描显示子程序如图4-3所示流程方法完成。
图4-3
4.4A/D转换程序设计
A/D转换程序用于对ADC0809的8路输入模拟电压进行A/D转换,并将转换的数值存入相应的存储单元中,其流程如图4-4所示:
图4-4
第五章系统调试和运行
在调试过程中,会经常遇到问题,一开始,我并没有想到用模块,只想一步把所有的程序都写好再进行调试。
后来出现乱码,修改程序之后比较乱,思路也乱了。
后来请教同学和老师,才一步一步调试出来。
调试过程:
载入程序仿真,没有键盘按下时,按循环显示方式显示。
当有键下,按0键,数码管第一位显示0,选择转换通道0,数码管后三位显示电压值。
按1键,数码管第一位显示1,选择转换通道1,数码管后三位显示电压值。
按下0~7键,数码管第一位相应的显示0~7,数码管后三位显示相应通道的电压值。
第七章总结
经过两周的单片机课程设计,对单片机的编程思想和指令的应用有了进一步的了解。
在刚接到课题时,我还不知道如何下手,没有一点头绪。
后来找了一些资料看了看,把以前学的一些相关例子和ADC0809芯片的一些功能都看了一遍。
感觉资料还是给了我很多启发。
尤其是有一步,我想了很久怎么实现。
因为通道号采样上来的是8位的二进制数,怎么把采样得到的数据转换成数码管要显示的段码。
这一步最后还是看了相关的资料我才知道怎么进行编程。
如果用
经过两周的单片机课程设计对单片机的编程和硬件连接有了进一步的了解,以前在上课的时候听起来总感觉很玄,似懂非懂的。
现在经过两周后,经过实地的操作和调试,对中断和查询等都有了更深的了解。
通过设计,巩固所学课程,使所学知识牢固掌握并灵活运用。
在第一周,我们通过找大量的资料和同学们一起研究和讨论,认识设计的内容,将其分为两大部分(硬件设计部分和软件设计部分),终于设计出一套完整的方案。
但是将这些具体的方案落实到实际设计中,出现很多错误,而那些错误在原则上是可以避免的,这就需要我们在调试过程中利用所掌握的知识认真检查,发现不足。
然后在讨论如何解决不足之处,如此一次次的改,一次次的查,直到完全符合我们的功能要求。
无数次的尝试总算是把设计搞好了,电路调试成功。
真是难以去形容那种愉悦的心情。
自己的付出总算是有了回报。
我也得到了自己知识不足的教训。
感觉在知识不牢固的时候是多么无助。
自己要反复的去查阅以前的课本和书籍是多烦琐的事情。
这也就坚定了我在以后的学习中要认真学好基础知识的决心。
总体来说,这次实习使我受益匪浅。
在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。
在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。
通过这两个星期的学习让我把书本上的知识转换成实际可操作的东西,虽然也做过实验,但课程设计这种系统和具有一定规模收获是更多的。
通过这次课程设计同时我也有了一些经验:
1、认真审题,看懂题目的要求!
选择适当的课题,不益太简单或者太难。
做到既能把课题完成又能锻炼自己的能力!
2、根据课题要求,复习相关的知识,查询相关的资料。
3、根据实验条件,找到适合的方案,找到需要的元器件及工具,准备实验。
4、根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。
然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。
5、该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。
参考文献
1、8051单片机实践与应用,2004.7沈庆阳吴金戌郭廷吉编著清华大学出版社
2、微机接口技术实用教程,2008.3任向民编著清华大学出版社
3、单片机原理与应用,2005.8王迎旭主编机械工业出版社
4、单片微机系统使用教程,2004.2蒋力培主编机械工业出版社
附录
附录A硬件电路原理图