单片机课程设计数字电压表.docx
《单片机课程设计数字电压表.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字电压表.docx(24页珍藏版)》请在冰豆网上搜索。
单片机课程设计数字电压表
2014~2015学年第2学期
《单片机应用技术》
课程设计报告
题目:
数字电压表设计
专业:
12自动化
班级:
1班
姓名:
指导教师:
陆媛宋洪儒
电气工程学院
2015年5月15日
任务书
课题名称
指导教师(职称)
陆媛宋洪儒
执行时间
2014~2015学年第2学期第11周
学生姓名
学号
承担任务
吴伟
1209111051
软件仿真电路设计
谈阳
1209111039
原理设计
罗伟
1209111034
系统软件程序设计
黄亚洲
1209111020
测试与调试
设计目的
1、进一步熟悉和掌握单片机的结构及工作原理。
2、掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3、通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。
4、通过程序设计和仿真,逐步掌握模块化程序设计方法和仿真软件的使用。
5、通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发单片机应用系统的全过程,为今后从事相应打下基础。
设计要求
可以测量0~5V范围内的3路直流电压值。
在4位LED数码管上轮流显示各路电压值或单路选择显示,其中3位LED数码管显示电压值,显示范围为0.00V~5.00V,1位LED数码管显示路数,3路分别为0-2。
要求测量的最小分辨率为0.02V。
摘要
随着电子科学技术、传感技术、自动控制技术和计算机技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也 越来越高,单片机技术作为计算机技术的一个分支广泛应用于工业控制、智能化仪器仪表、家用电器,甚至电子玩具等各个领域。
本文介绍一种以AT89S51单片机为核心的数字电压测量电路,该电路采用ICL7135高精度、双积分A/D转换电路,测量范围直流0-±2000伏,使用LCD1601液晶模块显示,并可以与PC机进行串行通信。
该电路设计新颖、功能强大、可扩展性强。
1引言
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用[1]。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型[4]。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面[3]。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:
转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号
2设计原理及要求
本设计是利用单片机AT89C51与ADC0809设计一个数字电压表,测量0-5V之间的直流电压值,四位数码显示。
2.1数字电压表的实现原理
ADC0809是8位的A/D转换器。
当输入电压为5.00V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196(5/255)。
ADC0809具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。
如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8路输入电压进行测量。
LED数码管显示采用软件译码动态显示。
通过按键选择可对8路循环显示,也可单路显示,单路显示可通过按键选择显示的通道数。
2.2数字电压表的设计要求
可以测量0~5V范围内的3路直流电压值。
在4位LED数码管上轮流显示各路电压值或单路选择显示,其中3位LED数码管显示电压值,显示范围为0.00V~5.00V,1位LED数码管显示路数,3路分别为0-2。
要求测量的最小分辨率为0.02V。
3软件仿真电路设计
3.1设计思路
多路数字电压表应用系统硬件电路由单片机、A/D转换器、数码管显示电路和按键处理电路组成,由于ADC0808在进行A/D转换时需要有CLK信号,本试验中ADC0808的CLK直接由外部电源提供为500kHz的方波。
由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值(D/256*VREF)ADC0808采用逐次逼近法转换,把模拟电压转换成16进制的D,由于是对直流电压0~5V进行采集,所以D对应的电压为V0 ,我们的目的就是要把V0显示在LED显示器上,因为单片机不好进行小数点计算,所以有:
V0=2*D扩大了100倍,扩大100倍后的结果高八位放寄存器B,低八位放寄存器A,分寄存器B为0或不为0的情况进行存取数据,得到的结果个位放入R0,十位放入R1,通过查表使之显示在LED显示器。
3.2仿真电路图
用Protues软件仿真设计的电路如图3-1所示。
图3-1仿真电路
3.3设计过程
系统结构框图
系统采用12M晶振产生脉冲做AT89C51的内部时钟信号,通过软件设置单片机的内部定时器T0产生中断信号。
利用中断设置单片机的P2.4口取反产生脉冲做AT89C51的时钟信号。
通过按键选择八路通道中的一路,将该路电压送入ADC0809相应通道,单片机软件设置ADC0809开始A/D转换,转换结束ADC0809的EOC端口产生高电平,同时将ADC0809的EO端口置为高电平,单片机将转换后结果存到片内RAM。
系统调出显示子程序,将保存结果转化为0.00-5.00V分别保存在片内RAM;系统调出显示子程序,将转化后数据查表,输出到LED显示电路,将相应电压显示出来,程序进入下一个循环
3.4AT89C51的功能介绍
3.4.1简单概述
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图3-2所示。
图3-2AT89C51芯片模型
3.4.2主要功能特性
(1)4K字节可编程闪烁存储器。
(2)32个双向I/O口;128×8位内部RAM。
(3)2个16位可编程定时/计数器中断,时钟频率0-24MHz。
(4)可编程串行通道。
(5)5个中断源。
(6)2个读写中断口线。
(7)低功耗的闲置和掉电模式。
(8)片内振荡器和时钟电路。
3.4.3AT89C51的引脚介绍
89C51单片机多采用40只引脚的双列直插封装(DIP)方式,下面分别简单介绍。
(1)电源引脚
电源引脚接入单片机的工作电源。
Vcc(40引脚):
+5V电源。
GND(20引脚):
接地。
(2)时钟引脚
XTAL1(19引脚):
片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(20引脚):
片内振荡器反相放大器的输出端。
图3-3电源接入方式
(3)复位RST(9引脚)
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
(4)
/Vpp(31引脚)
为外部程序存储器访问允许控制端。
当它为高电平时,单片机读片内程序存储器,在PC值超过0FFFH后将自动转向外部程序存储器。
当它为低电平时,只限定在外部程序存储器,地址为0000H~FFFFH。
Vpp为该引脚的第二功能,为编程电压输入端。
(5)ALE/
(30引脚)
ALE为低八位地址锁存允许信号。
在系统扩展时,ALE的负跳沿江P0口发出的第八位地址锁存在外接的地址锁存器,然后再作为数据端口。
为该引脚的第二功能,在对片外存储器编程时,此引脚为编程脉冲输入端。
(6)
(29引脚)
片外程序存储器的读选通信号。
在单片机读片外程序存储器时,此引脚输出脉冲的负跳沿作为读片外程序存储器的选通信号。
(7)pin39-pin32为P0.0-P0.7输入输出脚,称为P0口。
P0是一个8位漏极开路型双向I/O口。
内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。
通常在使用时外接上拉电阻,用来驱动多个数码管。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,不需要外接上拉电阻。
(8)Pin1-Pin8为P1.0-P1.7输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/0口。
P1口能驱动4个LSTTL负载。
(9)Pin21-Pin28为P2.0-P2.7输入输出脚,称为P2口。
P2口是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收高8位地址和控制信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(10)Pin10-Pin17为P3.0-P3.7输入输出脚,称为P3口。
P3口是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接控制信息。
3.5ADC0809的引脚及功能介绍
3.5.1芯片概述
ADC0809是一种典型的A/D转换器。
它是由8位A/D转换器,一个8路模拟量开关,8位模拟量地址锁存译码器和一个三态数据输出锁存器组成;+5V单电源供电,转化时间在100us左右;内部没有时钟电路,故需外部提供时钟信号。
芯片模型如图3-4所示。
图3-4ADC0808芯片模型
3.5.2引脚简介
(1)IN0~IN7:
8路模拟量输入端。
(2)D0~D7:
8位数字量输出端口。
(3)START:
A/D转换启动信号输入端。
(4)ALE:
地址锁存允许信号,高电平有效。
(5)EOC:
输出允许控制信号,高电平有效。
(6)OE:
输出允许控制信号,高电平有效。
(7)CLK:
时钟信号输入端。
(8)A、B、C:
转换通道地址,控制8路模拟通道的切换。
A、B、C分别与地址线或数据线相连,三位编码对应8个通道地址端口,A、B、C=000~111分别对应IN7~IN0通道的地址端口。
3.5.3ADC0809的转换原理
ADC0809采用逐次比较的方法完成A/D转换,由单一的+5V电源供电。
片内带有锁存功能的8路选1的模拟开关,由A、B、C的编码来决定所选的通道。
ADC0809完成一次转换需100μs左右,它具有输出TTL三态锁存缓冲器,可直接连接到AT89C51的数据总线上。
通过适当的外接电路,ADC0809可对0~5V的模拟信号进行转换。
3.674LS373芯片的引脚及功能
3.6.1芯片概述
74LS373是一种带有三态门的8D锁存器,其在本设计中是锁存P0口的低8位地址,芯片模型如图3-5所示。
3.6.2引脚介绍
(1)D0~D7:
8位数据输入线;
(2)Q0~Q7:
8位数据输出线
(3)G:
数据输入锁存选通信号。
当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。
(4)
:
数据输出允许信号,低电平有效。
当该信号为低电平时,三态门打开,锁存器中的数据输出到数据输出线上,当该信号为高电平时,输出线为高阻态。
3.7LED数码管的控制显示
3.7.1LED数码管的模型
LED数码管模型如图3-6所示。
3.7.2LED数码管的接口简介
LED的段码端口A~G和DP分别接至AT89C51的P1.0~P1.7口,位选端1~4分别接至P2.0、P2.1、P2.2、P2.3
4系统软件程序的设计
多路数字电压表系统软件程序主要有主程序、A/D转换子程序和中断显示程序组成。
4.1主程序
如下4.1图为程序软件设计流程图其中(a)为主程序流程图,(b)为A/D转换子程序流程图。
图4.1程序软件设计流程图
其中A/D转换子程序是将0809转化后的数字量,需通过转化子程序转化成工程量并通过查表送到P1口送给LED显示。
(1)初始化程序给ADC0809时钟脉冲信号,并指向0809的0通道启动A/D转换,通过延时等待8路采集完毕。
(2)数据读入控制0809芯片的ALE、START、EOC和OE,STRT为正脉冲时转换开始,EOC为低电平时A/D转化结束,OE为高电平时转换结果送到数据线并被单片机读入,ALE为上升沿信号地址锁存允许
CLRP2.4
SETBP2.4
CLRP2.4
JNBP2.5,$
SETBP2.6
MOVXA,@DPTR
MOVADC,A
CLRP2.6
(3)消抖防抖动的时间是10ms。
(4)通道转换当判断有按键按下后P3.2口置位即允许74373地址锁存,DPTR加1指向下一通道。
4.2A/D转换子程序
A/D转换子程序用于对ADC0809的4路输入模拟电压进行A/D转换,并将转换的数值存入4个相应的存储单元中,A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次,如图4-2所示
判断是否为0
4.3中断显示程序
设计中采用中断的方式来读取转换完成的数据能节省CPU的资源
当系统设置好后,一旦数据转换完成,便会进入外部中断0,然后在中断中读取转换的数值,处理数据并送数码管显示输出。
LED数码管采用软件译码动态扫描的方式。
在中断程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把4个存储单元的数值依次取出送到4个数码管上显示,每一路显示一秒。
单路显示程序只对当前选中的一路数据进行显示。
每路数据显示时需经过转换变成十进制BCD码,放于4个数码管显示缓冲区中。
单路或多路循环显示通过标志位00H控制。
在显示控制程序中加入了对单路或多路循环按键的判断。
5使用说明与调试结果
该数字电压表可以同时测量8路直流数据,电压表测量范围为0.00~5.00V,测量最小分辨率为19.5mv。
整个系统由一个按钮控制,最左边个LED显示器是指向当前通道,即电位器编号。
用Proteus仿真中点PLAY电压表默认显示第8通道即第8个电位器RV8的测量值。
第一次按下按钮后,改变测量通道即第1通道RV1的值,第2下为第2通道,依次循环测量8个电位器的电压值。
选择其中任意电位器并拨动其位置能改变其值,最大值为5V,最小值为0V,在中间时为2.49V,单片机能读出并正确显示。
经调试后该系统能达到目标要求。
6总结
经过一周左右的努力终于设计成功!
!
!
这次课程设计对我来说学到的不仅是那些知识,更多的是团队和合作。
现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!
在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。
还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。
在一个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
在此向我们的单片机老师说声:
谢谢!
参考文献
1、单片机原理与应用设计。
电子工业出版社。
张毅刚、彭喜元编著。
2、单片机原理及接口技术。
高等教育出版社。
李全利主编。
3、MCS-51系列单片机实用编程88例。
中国电力出版社。
贺哲荣、甄旭主编。
附录1源程序
ADCEQU50H
ORG0000H
AJMPMAIN
ORG000BH
AJMPEINT0
ORG0030H
MAIN:
MOVTMOD,#02H;;初始化脉冲信号
MOVTH0,#250;
MOVTL0,#250;
SETBEA
SETBTR0
SETBET0
MOVR4,#8
START1:
MOVDPTR,#7FF0H;指向0通道
MOVX@DPTR,A;读取转换数值
JBP3.4,AAA1
LCALLDELAY;调用延时程序
JBP3.4,AAA1;判断是否按下按钮并开始转换数值
SETBP3.2;P3.2给高电平锁存地址
INCR4
CJNER4,#9,AAA2
MOVR4,#1
AAA2:
INCR5;显示所选通道
INCDPTR;指向下一通道
MOVB,R5;显示通道并重新锁存地址
MOVP0,B
CLRP3.2
JNBP3.4,$
AAA1:
CLRP2.4
SETBP2.4
CLRP2.4
JNBP2.5,$
SETBP2.6
MOVXA,@DPTR;读取转换数据开始转化为工程量
MOVADC,A
CLRP2.6
LCALLCONV;调用转换子程序
LCALLDISP;调用显示子程序
LCALLDELAY;调用延时程序
LJMPSTART1
CONV:
MOVA,ADC;数值转换子程序
MOVB,#51
DIVAB
MOVR1,A
MOVA,B
MOVB,#2
MULAB
MOVB,#10
DIVAB
MOVR2,A
MOVR3,B
RET
DISP:
MOVDPTR,#TABLE;数码显示子程序
MOVA,R4
MOVCA,@A+DPTR
CLRP2.3
MOVP1,A
LCALLDELAY
SETBP2.3
MOVA,R3
MOVCA,@A+DPTR
CLRP2.0
MOVP1,A
LCALLDELAY
SETBP2.0
MOVA,R2
MOVCA,@A+DPTR
CLRP2.1
MOVP1,A
LCALLDELAY
SETBP2.1
MOVA,R1
MOVCA,@A+DPTR
CLRP2.2
ORLA,#80H
MOVP1,A
LCALLDELAY
SETBP2.2
RET
EINT0:
CPLP3.3
RETI
DELAY:
MOVR6,#1;延时1ms子程序
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
附录2仿真结果
答辩记录及评分表
课题名称
答辩教师(职称)
陆媛宋洪儒
答辩时间
2014~2015学年第2学期第11周
答
辩
记
录
评分表
学生姓名
学号
评分
吴伟
1209111051
谈阳
1209111039
罗伟
1209111034
黄亚洲
1209111020