基于单片机数字电压表设计.docx
《基于单片机数字电压表设计.docx》由会员分享,可在线阅读,更多相关《基于单片机数字电压表设计.docx(13页珍藏版)》请在冰豆网上搜索。
基于单片机数字电压表设计
新能源与动力工程学院
课程设计报告
微机原理与单片机课程设计
专业
电力工程与管理
班级
电力1201
姓名
周勇
学号
201211321
指导教师
王鹏元
2015年7月
兰州交通大学新能源与动力工程学院课程设计任务书
课程名称:
单片机课程设计指导教师(签名):
王鹏元
班级:
电力工程与管理1201姓名:
周勇学号:
201211321
一、课程设计题目
基于单片机数字电压表设计。
二、课程设计使用的原始资料(数据)及设计技术要求:
按照设计要求简易数字电压测量电路由电压采集、A/D转换、复位电路、数据处理及显示控制等组成。
三、课程设计的目的
通过制作简易数字电压表,加深对所学专业知识的认识,提高对单片机的应用能力,提高收集文献,资料的能力,从而达到综合运用所学的知识进行电子产品设计,制作与调试。
四、课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等)
(1)可以测量0-10V的8路输入电压值。
(2)能用LED数码管或LCD显示测量结果。
(3)测量范围可达0~20V,最小分辨率为0.1V。
(4)数字电压表具有超量程的报警功能,系统具有复原功能。
五、工作进度安排
7月6日熟悉课程设计内容及要求制定方案。
7月7日设计电路及软件测试。
7月8日采购数字电压表组件按照设计电路进行焊接。
7月9日产品整理并完成设计报告及答辩。
六、主要参考文献
[1]郭庭吉.《8051单片机实践与应用》[M].北京:
清华大学出版社,2002。
[2]高峰.《单片微型计算机与接口技术》[M].北京:
科学出版社,2003。
审核批准意见
系主任(签字) 年 月 日
指导教师评语及成绩
指导教师评语
成
绩
设计过程
(40)
设计报告
(50)
小组答辩
(10)
总成绩
(100)
指导教师签字:
年月日
1.单片机课程设计的目的
通过制作简易数字电压表,加深对所学专业知识的认识,提高对单片机的应用能力,提高收集文献,资料的能力,从而达到综合运用所学的知识进行电子产品设计,制作与调试。
2.单片机数字电压表课程设计的要求
2.1单片机课程设计的要求
(1)可以测量0-10V的8路输入电压值。
(2)能用LED数码管或LCD显示测量结果。
(3)测量范围可达0~20V,最小分辨率为0.1V。
(4)电压表具有超量程的报警功能。
(5)系统具有复原功能。
3.设计的内容
3.1单片机课程设计的内容
(1)数字电压表总体电路设计及论证。
(2)分析设计要求,明确性能指标;查阅资料、进行设计方案论证。
(3)论证并确定合理的总体设计方案,绘制总体机构框图,分析工作原理。
(4)完成数字电压表的电路设计:
单片机部分、A/D转换、显示等各单元具电路设计,包括芯片选择、计算电路元参数,分析工作原理。
3.2电压表实现的功能
该数字电压表可以测量0~10V的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示。
测量最小分辨率为0.1V。
3.3总体设计
按系统功能实现要求,决定控制系统采用AT89S52单片机,A/D转换采用ADC0809。
系统除能确保实现要求的功能外,还可以方便地进行8路其他A/D转换量的测量、远程测量结果传送等扩展功能。
数字电压表系统设计方案框图如下图
(1)。
图
(1)数字电压表统计设计方案
3.4设计方案
按照设计要求简易数字电压测量电路由电压采集、A/D转换、复位电路、数据处理及显示控制等组成,电路原理图如图3.4.1所示。
A/D转换由集成电路0809完成。
0809具有8路模拟输入端口,地址线(23-25脚)可决定对哪一路模拟输入作A/D转换。
22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
6脚为测试控制,当输入一个2uS宽高电平脉冲时,就开始A/D转换。
7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。
10脚为0809的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1MHz时钟。
单片机的P1、P3.0~P3.3端口作为四位LED数码管显示控制。
P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。
P0端口作A/D转换数据读入用,P2端口用作0809的A/D转换控制。
3.4.1电源电路
图
(2)电源电路
3.4.2复位电路
本设计采用按键式复位电路,它的上电复位利用电容器充电来实现,同时通过按键实现复位,按下键后,通过R1和R2形成回路,使RESET端产生高电平。
按键的时间决定了复位时间。
3.4.3系统原理图
图(3)系统原理图
3.5单片机部分
单片机选用的是AT89S51,如下图3.5.1所示。
该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机。
最常见的AT89S51是采用40Pin封装的双列直接PDIP封装,芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口左边那列引脚逆时针数起,依次为1、2、3、4。
。
。
40,其中芯片的1脚顶上有个凹点。
在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。
(1)主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源。
GND(Pin20):
接地线。
图(4)AT89S51引脚图
(2)外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端。
XTAL2(Pin20):
片内振荡电路的输出端。
(3)控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号。
PSEN(Pin29):
外部存储器读选通信号。
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指3、控制引脚(4根)。
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号。
PSEN(Pin29):
外部存储器读选通信号。
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
(4)可编程输入/输出引脚(32根)
AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
每一根引脚都可以编程。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
3.6A/D转换部分
A/D转换部分采用ADC0809,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
(1)ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
(2)ADC0809的引脚结构见图(5)
图(5)ADC0809的引脚结构
3.7编程思路与程序流程
3.7.1程序流程
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1S左右。
主程序在调用显示子程序和测试之程序之间循环,主程序流程图见图
图(9)主程序流程图
(1)主程序
org0图(6)
CLKBITP3.4
DOBITP3.5
DIBITP3.6
CSBITP3.7
wanweiequ30h
qianweiequ31h
baiweiequ32h
shiweiequ33h
geweiequ34h
MOVSP,#60H
MAIN:
LCALLADC
LCALLPROCESS
LCALLDISPLAY
SJMPMAIN
;************************
;功能:
进行一次AD转换
;入口参数:
无
;占用资源:
A,R7
;返回值:
A(转换值)
;************************
ADC:
CLRCS
MOVA,#03H;
启动位1,端口设置为10;
MOVR7,#03H;3次循环
LOOP1:
CLRCLK
RRCA
MOVDI,C
NOP
SETBCLK
DJNZR7,LOOP1
CLRCLK
NOP
SETBCLK
MOVR7,#8;读取8位数据
LOOP2:
SETBCLK
NOP
CLRCLK
MOVC,DO;高位先移入
RLCA
DJNZR7,LOOP2
SETBCS;关闭芯片
RET
;*************************
;功能:
数据处理
;入口参数:
A
;占用资源:
B,HEX_TO_BCD
;返回值:
5个单元(同HEX_TO_BCD)
;****************************
PROCESS:
MOVB,#2;转换值*2,即(0.02*100)
MULAB
MOVR7,B
MOVR6,A
LCALLHEX_TO_BCD;
数位分离
RET
;***************************
;功能:
数码管动态显示
;入口参数:
5个单元
;占用资源:
A,DPTR,P1,P2,DELAY2MS
;返回值:
无
;********************************
DISPLAY:
MOVDPTR,#TAB;
数码管显示
MOVA,gewei;
显示百分位
MOVCA,@A+DPTR;
查段码表
MOVP1,A;送段码
MOVP2,#0FEH;送位码
LCALLDELAY2MS
MOVP2,#0FFH;除残影
MOVA,shiwei;
显示十分位
MOVCA,@A+DPTR
MOVP1,A
MOVP2,#0FDH
RLCA
DJNZR7,LOOP2
SETBCS;关闭芯片
RET
;*************************
;功能:
数据处理
;入口参数:
A
;占用资源:
B,HEX_TO_BCD
;返回值:
5个单元(同HEX_TO_BCD)
;****************************
PROCESS:
MOVB,#2;转换值*2,即(0.02*100)
MULAB
MOVR7,B
MOVR6,A
LCALLHEX_TO_BCD;
数位分离
RET
;***************************
;功能:
数码管动态显示
;入口参数:
5个单元
;占用资源:
A,DPTR,P1,P2,DELAY2MS
;返回值:
无
;********************************
DISPLAY:
MOVDPTR,#TAB;
数码管显示
MOVA,gewei;
显示百分位
MOVCA,@A+DPTR;
查段码表
MOVP1,A;送段码
MOVP2,#0FEH;送位码
LCALLDELAY2MS
MOVP2,#0FFH;除残影
MOVA,shiwei;
显示十分位
MOVCA,@A+DPTR
MOVP1,A
MOVP2,#0FDH
MOVA,R2
MOVR6,A
MOVR5,#00H
MOVR4,#100;100
LCALLWDIV
MOVbaiwei,R6;百位
MOVA,R2
MOVB,#10
DIVAB
MOVshiwei,A
MOVgewei,B
RET
;**********************************
;功能:
16位除法子程序
;入口参数:
R7R6为被除数,R5R4为除数
;占用资源:
R1~R7,F0
;返回值:
商放回R7R6,余数放R3R2,除数R5R4不变
;**********************************
WDIV:
MOVA,R5
JNZCHK_DIVIDEND;
判断除数是为0
MOVA,R4
JZOVERFLOW;
除数为0置F0标志
CHK_DIVIDEND:
MOVA,R7
JNZSTART_WDIV;
被除数为0返回
MOVA,R6
JNZSTART_WDIV
RET
START_WDIV:
CLRA
MOVR2,A
MOVR3,A
MOVR1,#16
DIV1:
CLRC
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
MOVA,R2
RLCA