基于单片机的数字电压表设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮阴师范学院物理与电子电气工程学院课程设计报告
学生姓名学号
班级1007
专业电子信息工程
题目基于单片机的数字电压表设计
指导教师
2012 年11 月
1 任务和设计要求
用单片机AT89S52与ADC 0809设计的数字电压表,4位数码显示,能够较准确的测量0~5V之间的直流电压值,其测量最小分辨率为0. 02 V。
2 系统设计
(1)AT89C51单片机控制模块
(2)ADC0808是CMOS集成工艺制成的逐次比较逼近型A/D转换芯片。分辨率8位,输入模拟电压范围0至5V,片内含8通道多路开关,单电源+5V工作。引脚排列见图所示。
(3)LED驱动显示模块
(4)仿真原理图
3 硬件设计
程序设计是指设计、编制、调试程序的方法和过程。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。为了完成上述任务,在进行软件设计时,通常采用模块程序设计法。
本系统软件采用模块化结构,由主程序﹑数据接收子程序、数据转换子程序、数据显示子程序构成。
(1)主程序设计
(2)数据接收程序设计
初始化
N
(3)数据转换程序设计
(4)数据显示程序设计
返回主程序
开始
元件清单
4 软件设计
打开Proteus的ISIS 7 Professional编辑环境,并从元件库中选出所需的元件,放
置元器件、电源和地、连线得到电路原理图(如图2.2)。
打开Keil uVision3编辑环境,点击菜单栏中Project新建uVision Project,建立一个以.uv2结尾的工程文件,选择Atmel_AT89C51型号的CPU。单击Create a new file按钮新建一个空白文本,将汇编程序输入文本中后以.asm后缀保存汇编文件。在树状文件目录中右击Source Group1加载.asm文件到工程中,右击Target1后选择Option for Group’Source Group1’设置频率为11.0592MHz并选择创建HEX文件。单击编译按钮未出现错误。
程序清单:
ORG 0000H
LJMP START ORG 000BH
AJMP ST_T0 ORG 0030H
START: MOV SP,#60H
MOV TMOD,#02H
MOV TH0,#245
MOV TL0,#00H
MOV IE,#82H
SETB TR0
LCALL RECIVE
LCALL TRA
LCALL DISPLAY
SJMP START
RECIVE:
CLR P3.0
CLR P3.1
SETB P3.0
NOP
NOP
CLR P3.0
JNB P3.2,$
SETB P3.1
MOV 50H,P0
CLR P3.1
RET
TRA:
MOV B,#33H
MOV A,50H
DIV AB
MOV 51H,A
XCH A,B
MOV B,#05H
DIV AB
MOV 52H,A
MOV A ,#02H
MUL AB
MOV 53H,A
RET
ST_T0:CPL P3.3
RETI
DISPLAY:
MOV DPTR,#TAB
MOV P2,#01H
MOV P1,#0C0H
LCALL DELAY
MOV A,51H
MOVC A,@A+DPTR
MOV P2,#02H
MOV P1,A
CLR P1.7
LCALL DELAY
MOV A,52H
MOVC A,@A+DPTR
MOV P2,#04H
MOV P1,A
LCALL DELAY
MOV A,53H
MOVC A,@A+DPTR
MOV P2,#08H
MOV P1,A
LCALL DELAY
RET
DELAY:
MOV R7,#0AH
D1: MOV R6,#64H
DJNZ R6,$
DJNZ R7,D1
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END
5 系统仿真及调试
仿真结果及分析
这虽然是一个数字电压表的设计但是实际上就是一个数据采集的程序设计,只不过这里数据采集的是模拟电压罢了。本次课程设计对单片机技术有了进一步的熟悉,实际操作和课本上的知识有很大联系,又高于课本,一个看似简单的电路,要动手把它设计出来还是有些困难的。在之前的学习过程中没有用到Proteus这个软件,所以刚刚开始的时候一边在百度里看Proteus入门教程一边实践操作Proteus这个软件。就这样一边看视频一边自己摸索最终还是学会了这个软件的使用方法。
在Proteus软件部分的设计中也让我感受良多。以前做的单片机的设计都只是写写程序,下载到单片机上运行,都只是编程方面的工作,很少涉及选择单片机试验台上已有芯片以外的芯片,更不用说芯片的一些管脚作用。就像A/D转换器在Proteus中仿真软件ADC0809有问题所以用ADC0808代替。而且ADC0808是单极性,输入电压范围为0~+5V,而我们课题要求的是0~+15V,所以我利用参考电压可以达到15V这一点把0~+15V转化成0~5V,进行模数转换。