简易数字电压表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要 (1)
第1章设计方案 (2)
第2章硬件设计 (3)
2.1单片机最小系统 (3)
2.2A/D转换电路 (4)
2.3LED显示电路 (6)
2.4电压输入电路 (6)
第3章软件设计 (7)
3.1主程序设计 (8)
3.2A/D转换程序设计 (9)
第4章系统仿真调试 (9)
4.1仿真测试的内容及方法 (9)
4.2仿真测试的结果及功能实现情况 (10)
结论 (12)
致谢 (13)
参考文献 (14)
附录1总体电路原理图 (15)
附录2程序代码 (16)
摘要
本设计主要研究的是以AT89C51单片机为核心的电压测量系统,该系统能够在单片机的控制下完成对电压信号采集,能够根据采样值进行量程自动转换,并且测量结果可通过四个数码管显示出来。
整个系统的设计完成了硬件电路的设计及软件程序的编写,通过最终硬件电路的调试及软件程序的仿真,使该系统能够在要求的条件下达到正常的测量及显示功能。
在整个系统的设计过程中,主要采用了模块化的设计方法。
关键词单片机;A/D转换器;LED数码管
第1章设计方案
基于单片机的简易数字电压表的硬件设计框图如图1-1所示,由单片机最小系统(AT89C51单片机、时钟电路、复位电路)、A/D转换、电压输入、LED显示电路组成。
图1-1数字电压表系统设计方案框图
各模块的主要功能如下:
单片机最小系统:包括单片机、时钟电路(给单片机提供工作的时间脉冲信号)、复位电路。
A/D转换:A/D转换主要是将采集到的模拟信号转化成数字信号。
电压输入:通过调节滑动变阻器使其将模拟电压信号传输到A/D转换电路中。
LED显示:用于显示测得的电压值。
工作原理:系统采用12M晶振产生脉冲做AT89C51的内部时钟信号,通过软件设置单片机的内部定时器T0产生中断信号,利用中断设置单片机的P3.0口取反产生脉冲做ADC0808的时钟信号。
首先通过调节滑动变阻器输入模拟电压信号,将该路电压送入ADC0808相应通道,单片机软件设置ADC0808开始A/D转换,转换结束ADC0808的EOC端口产生高电平,同时将ADC0808的OE端口置为高电平,单片机将转换后结果存如片内RAM。
系统调出计算子程序,将保存结果转化为0.00-5.00V 分别保存在片内RAM;系统调用显示子程序,将转化后数据查表,输出到LED显示电路,将相应电压显示出来。
第2章硬件设计
2.1 单片机最小系统
单片机最小系统以AT89C51单片机为核心,由单片机、时钟电路、复位电路等组成,如图2-1所示。
图2-1单片机最小系统
时钟电路是由两个30PF的电容、一个12M的晶体震荡器组成。
他们接在接口XTAL1、XTAL2上。
晶振电路的功能是为了给系统提供一个稳定的时间脉冲信号。
复位电路有两种形式:手动按键复位和上电复位,在本系统中采用的是手动按键复位。
如图2-1所示,由R2组成上电复位电路。
图中,P0口用作显示电路输出端;P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7分别接显示电路的接口。
2.2 A/D转换电路
2.2.1 ADC0808(ADC0809)引脚功能
图2-2ADC0808引脚功能
IN0~IN7:8路模拟量输入。
A、B、C:3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。
ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
OUT0~OUT7:八位数据输出线,A/D转换结果由这8根线传送给单片机。
OE:输出允许控制端,用以打开三态数据输出锁存器。
当OE=1时,即为高电平,允许输出锁存器输出数据。
VCC:工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端
START:A/D转换启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
EOC:转换完成信号,开始转换时为低电平,当EOC上升为高电平时,表明内部A/D转换已完成。
2.2.2 ADC0808(ADC0809)内部结构图
图2-3 ADC0808(ADC0809)内部结构
ADC0808的组成第一部分是8路输入模拟量选择电路,8路输入模拟信号分别接到IN0~IN7,究竟选择哪一路去进行A/D转换由地址锁存与译码电路控制。
A、B、C为输入地址选择线,地址信息由ALE得上升沿锁存到地址锁存器。
多路模拟开关可选通8路模拟量通道,允许8路模拟量分时输入,并共用一个A/D转换器进行转换。
第二部分是8位逐次比较式A/D转换器。
A/D转换器有控制与时序电路,逐次逼近式寄存器、树状开关以及256个电阻阶梯网络等组成。
三部分是三态输出缓冲锁存器,用于存放和输出转换得到的数字量。
2.2.3 A/D转换电路设计
集成模数转换芯片ADC0809实现的A/D转换电路如图2-4所示被测信号由ADC0808模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。
具体连接如下图2-4所示。
图2-4 ADC0808与单片机的连接
2.3 LED显示电路
LED显示器又称数码管,八段LED显示器由8个发光二极管组成。
其中7个发光二极管构成字型“8”的各个笔画段, 另一个小数点为dp发光二极管。
LED显示器有两种不同的形式:一种是发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
本设计采用的是共阴极接法。
如图2-5所示。
显示器的灯的点亮由单片机的P0口来控制
2.4 电压输入电路
通过调节滑动变阻器,使其产生不同的模拟电压信号。
传输到ADC0808将模拟电压信号转化成数字电压信号。
通过单片机传输到LED显示器显示出来。
如图2-6所示。
图2-6 电压输入电路
第3章软件设计
根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、A/D转换模块、LED显示模块、中断服务程序模块(改变显示的小数点位置),各模块的功能关系如图3-1所示。
编写系统软件时,可首先编写各模块的底层驱动程序,而后是系统联机调试,编写上层主程序。
图3-1 系统软件框图
3.1 主程序设计
主程序主要负责各个模块的初始化工作:设制定时器、寄存器的初值,启动A/D转换,读取转换结果,处理量程转换响应,控制LED实时显示等其流程图如图3-2所示。
图3-2主程序流程图
3.2 A/D转换程序设计
A/D转换程序的功能是采集数据,在整个系统设计中占有很高的地位。
当系统设置好后,单片机扫描转换结束管脚P2.6的输入电平状态,当输入为高电平则转换完成,将转换的数值转换并显示输出。
若输入为低电平,则继续扫描。
程序流程图如图3-3所示。
图3-3 A/D转换程序流程图
第4章系统仿真调试
4.1 仿真测试的内容及方法
仿真测试的目的是简易数字电压表能正常显示、是否将模拟电压转换为数字电压、能否实现0-5V电压表的测试等功能。
仿真测试时,首先在Proteus中绘制如图4-1所示的仿真原理图。
由1K的滑动变阻器进行电压变化的模拟,首先通过调节滑动变阻器输入模拟电压信号,将该路电压送入ADC0808相应通道,单片机软件设置ADC0808开始A/D转换,转换结束ADC0808的EOC端口产生高电平,同时将ADC0808的OE端口置为高电平,单片机将转换后结果存如片内RAM。
系统调出计算子程序,将保存结果转化为0.00-5.00V分别保存在片内RAM;系统调用显示子程序,将转化后数据查表,输出到LED显示电路,将相应电压显示出来。
图4-1基于Proteus的仿真原理图然后,按照表4-1所示内容进行测试。
表4-1简易数字电压表的仿真测试内容及方法
4.2仿真测试的结果及功能实现情况
调试结果如表4-2所示。
表4-2 仿真测试的结果及功能实现情况
经过仿真测试,本设计实现了任务要求的功能。
结论
这次毕业设计让我更加熟悉了从理论到实践的跨越。
从当初的查阅图书,到现在的仿真成功运行,这中间有很多值得回味的地方。
人们总是对刚接触的事情记忆犹新,我也不例外。
我本以为我学好了这门编程语言就拥有了全世界,可是随着视野的不断开阔,课程的不断更新,我慢慢了解了懂得一门语言真的是冰山一角,在计算机的世界里,只要你有兴趣,总会有太多的新奇吸引着你。
班级同学的进度变化太快,让我一时之间很难接受,而且学的知识偏重硬件,我又不太感兴趣,没有学会什么就荒废了很多时间,倒是对健康知识了解了不少,也算是慰藉一下自己空虚的心灵吧。
这次的设计,从选题到实现,几乎都是自己独立完成的。
整个过程中,从需求分析到设计、编码、测试,我都力求规范化和文档化,努力让自己以前学的知识运用到本设计中,尽量保证整个系统的开发进度和质量,顺利完成这次的毕业设计,为自己的大学生涯画上一个完美的句号。
虽说这些都会消耗系统开发的时间,但在老师、同学以及自己的不断努力下,不怕麻烦,不怕重复,当克服了这些问题之后,我会感觉到自己的知识在一点一滴地积累,不知不觉中增加。
虽然很多错误被克服了,但是系统中难免还有很多不足之处,希望各位评委老师和同学给予指正与建议。
我会在日后的开发中深入学习,加深研究,我会争取把本系统应用到实际工作中,使之产生商业价值。
电子技术发展日新月异,我会在以后的研发中加入新技术,使之更趋完善,总之本次毕业设计是我的电子研发之路的良好开端。
我会以此为契机,在以后的电子开发工作中取得更好的成绩。
致谢
在这两个多月的毕业设计中,我真诚地感谢吴老师和同学们的帮助,在他们的帮助下我顺利的完成了此次毕业设计。
首先我要衷心地感谢我的辅导老师吴老师,在本次设计过程中他始终给予了我无私的热情和帮助。
他细心指导我的选题工作,在做开题报告的过程中,又反复而耐心地给我指出问题的所在,并帮助我纠正了许多不妥之处。
在做系统设计这一过程中,也给我提出了许多意见和建议,并交给我许多解决问题的技巧和方法。
在写毕业设计论文的过程中,我也遇到了许多的困难,之所以能坚持完成,这都离不开我的导师和同学们的帮助。
通过短暂的毕业设计,从而提高了我的理论水平,真正做到学有所用,虽然在其过程中我也遇到一些困难,但是从中我也得到了很多的帮助,没有半途而废,没有灰心丧气,在老师的严格指导下,发现问题并加以改正,这些都是一种收获。
这次能顺利按时完成毕业设计,我非常感谢给予指导的各位老师,特别感谢我的指导老师,是你的耐心指导和讲解,使我能够顺利的完成毕业设计。
在我的设计工作中无不倾注着吴老师辛勤的汗水和心血。
老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。
从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。
在此我要向我的导师说声“吴老师您辛苦了!”最后我致以最衷心的感谢和深深的敬意。
参考文献
[1] 贾正松.数字电子技术基础.北京理工大学出版社,2009
[2] 周国运.单片机原理及应用(C语言版).中国水利水电出版社,2009
[3] 林志琦.单片机原理接口及应用(C语言版).中国水利水电出版社,2007
[4] 梁宗善.电子技术基础课程设计.华中科技大学出版社,2009
[5] 李光飞.单片机课程设计实例指导.北京航空航天大学出版社,2005
附录1 总体电路原理图
附录2 程序代码
EOC BIT P3.2
ST BIT P3.1
OE BIT P3.3
CLOCK BIT P3.0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0
MAIN: CLR P3.7
CLR P3.6
CLR P3.5
LCALL KAISHI
LCALL MAIN0
LJMP MAIN
ljmp $
KAISHI: MOV SP,#60H
MOV DPTR,#TAB
MOV TMOD,#02H //定时器T0 模式二
MOV TH0,#254
MOV TL0,#00H
MOV IE,#82H //开启定时器T0
SETB TR0
MAIN0: MOV R3,#100
CLR ST
SETB ST
CLR ST
JNB EOC,$ //判断A/D是否转换完 SETB OE
MOV R4,P1 //采样到的数据
CLR OE
MOV A,R4
MOV B,#50
DIV AB
MOV R2,A //个位
MOV A,#2
MUL AB
MOV B,#10
DIV AB
MOV R1,A //十分位
MOV R0,B //百分位
LCALL DISP
RET
INT_T0: CPL CLOCK
RETI
DISP: MOV A,R0
MOVC A,@A+DPTR
MOV P2,#0f7H
MOV P0,A
LCALL DELAY
MOV A,R1
MOVC A,@A+DPTR
MOV P2,#0fbH
MOV P0,A
LCALL DELAY
MOV A,R2
MOVC A,@A+DPTR
MOV P2,#0fdH
ADD A,#80H
MOV P0,A
LCALL DELAY
DJNZ R3,DISP
RET
DELAY: MOV R6,#10
D1: MOV R7,#25
DJNZ R7,$
DJNZ R6,D1
RET
TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH
END。