汇编实例简易数字电压表.docx
《汇编实例简易数字电压表.docx》由会员分享,可在线阅读,更多相关《汇编实例简易数字电压表.docx(27页珍藏版)》请在冰豆网上搜索。
汇编实例简易数字电压表
单片机实训
制作人:
曾伟陈步青贺艳
班级:
自动化0733
指导老师:
王宏彦
长沙民政职业技术学院
电子信息工程系
2009年1月1日
目录
摘要……………………………………………………………………………………………3
关键词…………………………………………………………………………………………3
一、总体设计…………………………………………………………………………………3
1.1总体设计框图…………………………………………………………………………3
1.2方案设计论证与确定...……………………………...…………………………………4
1.3相关知识………………………………………………………………………………..4
二、硬件系统…………………………………………………………………………………5
2.1人机交互模块…………………………………………………………………………..5
2.2显示模块…………………………………………………………………………..5
2.3A/D转换模块…………………………………………………………………………..6
三、软件系统………………………………………………………………………………..7
3.1主程序…………………………………………………………………………..............7
3.2按键模块…………………………………………………………….....................8
3.3显示子程序模块…………………………………………………………......................9
四、测试与分析………………………………………………………...................................9
4.1测试仪器………………………………………………………………………................9
4.2功能测试与数据分析……………………………………………………........................9
4.3分析总结……………………………………………………………………………........9
五、附件……………………………………………………………………………...............10
5.1参考资料……………………………………………………………………………….....10
5.2元器件清单……………………………………………………………….....................10
5.3总设计原理图………………………………………………………………….................11
5.4程序清单……………………………………………………………………….................11
摘要
随着时代的发展,数字电子技术已经普及到我们生活,工作,科研,各个领域,直流稳压电数字电压表是常用的电子设备,在现工业控制及测量领域中有着重要的实际应用价值。
本设计基于单片机AT89S51的基础上,利用单片机技术结合A/D转换芯片ADC0809构建了一个直流电压表。
本数字电压表的设计由电源模块、显示电路模块、模数转换电路模块、按键模块四部分组成。
电源提供各个芯片电源所需电压;显示电路用于显示输入电压的大小变化值以及其他数据和内容;转换电路是数字技术和模拟技术的相互转换;按键模块是用于选择电压通道等等。
关键词:
单片机89S51、ADC0809、电压
一、总体设计
1.1总体设计枢图
本设计分为五个模块:
人机交互模块、电源模块、显示模块、单片机最小系统和模数转换模块
主体部分设计图:
1.2方案设计论证与确定
(一)A/D转换模块
方案一:
采用常用4位半双积分A/D转换芯片实现。
采用双积分转换方式,比逐次比较式转换精度高,但双积分式A/D转换器转换速率比较慢,也不能实现测量8路电压,故没有采用。
方案二:
采用常用8位8个通道A/D转换芯片ADC0809实现。
ADC0809是8位逐次逼近型A/D转换器。
它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据,而且ADC0809与单片机接口简单,转换速率快
所以我们采用了这个方案。
(二)人机交互模块
方案一:
使用行列式按键控制电路此种方法技术比较成熟,这种连接方法占用I/O口线少,但相对而言电路比较繁冗,考虑到成本与简洁性,没有采用。
方案二:
使用单片机本身I/O口通过扫描与编码实现显示与键盘输入。
这种方法不需要外围硬件,接口简单,而且编程也比较简单,所以我们选择了这种方案
(三)显示模块
方案一:
使用LCD液晶显示屏,液晶显示屏能显示汉字,字母和数字等,显示的内容非常丰富,且具有功耗低、可视面积大,分辨率高,但是液晶显示屏价格太高,所以没有采用。
方案二:
使用我们比较熟悉的是数码管显示,些此项目要求显示的内容不是很多,无论是程序编写还是操作,能达到项目的要求,而且价格实惠。
与液晶显示屏相比,所以我们选用了数码管显示。
1.3相关知识
1.3.1 AT89S51简介
AT89S51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器.具有4K字节可编程闪烁存储器,可擦除的的只读存储器(PEROM),ATMEL的AT89S51是一种高效微控制。
AT89S51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.三级程序存储器锁定、128*8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟路。
1.3.2ADC0809模数转换芯片
ADC0809是8位逐次逼近型A/D转换器。
它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
二、硬件系统
本系统由电源模块、调压模块、D/A和A/D转换模块、显示与键盘模块组成,图1所示是该直流数控稳压电源的结构原理框图。
2.1 人机交互模块
人机交互模块我用了二个按键,用于切换显示,ADC0809的通道选择等。
下图为按键模块电路部分:
2.2显示模块
显示部分看上去比较简单,但是其功能比较多,它可以显示温度,时间和调试的时间部分等。
所以在编写程序的时候,比较复杂!
我们运用的8550为放大管。
74HC244驱动显示器的a,b,c,d,e,f,g七个发光段,推动发光数码管(LED)进行显示。
下图为数码管显示部分:
2.3A/D转换模块
我们采用的ADC0809是8位8个通道的A/D转换电路,现将A/D转换器工作原理介绍如下:
IN0-IN7:
8条模拟量输入通道
ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:
4条
ALE为地址锁存允许输入线,高电平有效。
当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
CBA选择的通道
000IN0
001IN1
010IN2
011IN3
100IN4
101IN5
110IN6
111IN7
下图为ADC0809转换部分:
三、软件系统
3.1主程序
主程序框图如下图所示。
3.2LED显示模块
显示模块设计了五个显示模式:
单路选择显示、单路显示、双路选择显示、双路显示、自动循环显示。
显示程序框图如下图所示
3.3按键处理程序
按键程序框图如下图所示
四、测试与分析
4.1测试仪器
数字万用表 单片机仿真器 计算机示波器 电烙铁 吸锡器 剥线钳 实验板 电线若干 镊子 等
4.2功能测试与数据记录
(1)测量电压范围为0~5V;
(2)数据记录
通道
输入电压
测量结果
IN0
5V
5.00V
IN1
5V
5.00V
IN2
5V
5.00V
IN3
5V
5.00V
IN4
5V
5.00V
IN5
5V
5.00V
IN6
5V
5.00V
IN7
5V
5.00V
4.3分析总结
通过该制作,使我们进一步了解单片机,增强了我们的动手能力,发挥了我们团队的创造力。
虽然该制作我们取得了成功,但我们设计的按键功能过于复杂,这使得用起来不方便,这点值得改进!
五、附件
5.1参考文献
◎周莜龙潘海燕《电子技术基础》电子工业出版社2007年12月
◎赵广林《Protel99SE电路设计与制板》电子工业出版社2007年8月◎周志光刘定良《单片机技术与应用》中南大学出版社2005年8月
5.2元器件清单
器件名称
封装
数量
按键
KEY2
2
0.1uF
RAD0.1
4
4.7K
AXIAL0.3
8
10K
AXIAL0.3
6
10uF
RB.1/.2
1
6M晶振
XTAL1
1
30P
RAD0.1
2
74HC244
DIP20
1
89S51
DIP40-1
1
100Uf
RB.1/.2
1
8050
TO-92A
1
74LS138
DIP16
1
AD0809
DIP28
1
LED
LED-4
2
LED
LED-4
1
圆孔电源插头
POWER3
1
8550
TO-92A
8
10K排电阻
SIP9
3
5.3总设计原理图
5.4程序清单
LED0EQU40H
LED1EQU41H
LED2EQU42H
LED3EQU43H
LED4EQU44H
LED5EQU45H
LED6EQU46H
LED7EQU47H
org0000h
jmpmain
org000BH
LJMPZHONG_TO
ORG0030H
MAIN:
MOVSP,#70H
SETB20H.1
MOVR2,#0;用于选择通道
MOVR3,#4;用于选择单通,双通,循环
mov22h,#0;用于计数
SETB20H.3;标志位,1为单路,0为双路
MOVTMOD,#01H
MOVTH0,#3ch
MOVTL0,#0b0h
SETBEA
setbTR0
SETBET0
MOV34H,#0
MAIN1:
CALLAD_0809
CALLMLOOP
CALLDISP
JBP3.4,MAIN2
CALLDELAY
JBP3.4,MAIN2
SETB20H.1
clrTR0
INCR3
CJNER3,#0,ASD2
CLR20H.1
setb20h.3
jmpasd5
ASD2:
CJNER3,#2,ASD3
CLR20H.1
clr20h.3
jmpasd5
ASD3:
CJNER3,#5,ASD1
MOVR3,#0
clr20h.1
setb20h.3
jmpasd5
ASD1:
CJNER3,#4,ASD5
setb20h.3
SETBTR0
ASD5:
CALLDISP
JNBP3.4,ASD5
MAIN2:
JB20H.1,MAIN1
JBP3.5,MAIN1
CALLDELAY
JBP3.5,MAIN1
INCR2
CJNER2,#8,asd4
MOVR2,#0
ASD4:
CALLDISP
JNBP3.5,ASD4
JMPMAIN1
;;;;;;;;;;;;;;;;;;;中断TO;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ZHONG_TO:
pushACC
MOVTH0,#3ch
MOVTL0,#0b0h
inc22h
mova,22h
cjnea,#40,PP1
mov22h,#0
incr2
cjner2,#8,PP1
MOVR2,#0
PP1:
popACC
RETI
;;;;;;;;;;;;;;;;;;;;;;;;中断INT1;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INT11:
MOVA,P0
;MOV@R0,A
;SETB20H.0
;RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;ad0908采样电压;;;;;;;;;;;;;;;;;;;;;;
AD_0809:
CJNER2,#0,AD1
JMPAD3
AD1:
CJNER2,#1,AD2
AD3:
;MOVDPTR,#0F8FFH;0通道
;MOVX@DPTR,A
clrp2.3
movp2,#38h
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV25h,P0
setbp2.6
clrp2.3
movp2,#39h
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV26h,P0
setbp2.6
RET
AD2:
CJNER2,#2,AD4
JMPAD5
AD4:
CJNER2,#3,AD6
AD5:
movp2,#3ah
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV27h,P0
setbp2.6
clrp2.3
movp2,#3bh
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV28h,P0
setbp2.6
RET
AD6:
CJNER2,#4,AD7
JMPAD9
AD7:
CJNER2,#5,AD8
AD9:
clrp2.3
movp2,#3ch
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV29h,P0
setbp2.6
clrp2.3
movp2,#3dh
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV2ah,P0
setbp2.6
RET
AD8:
CJNER2,#6,AD10
JMPAD11
AD10:
CJNER2,#7,AD12
AD11:
clrp2.3
movp2,#3eh
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV2bh,P0
setbp2.6
clrp2.3
movp2,#3fh
CLRp2.3
setbp2.6
JNBp3.7,$
SETBp2.7
MOV2ch,P0
setbp2.6
AD12:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;数字转换;;;;;;;;;;;;;;;;;;;;;;;;
MLOOP:
CJNER2,#0,DIS1
MOV30H,25H
MOV31H,26H
MOV43H,#0
MOV47H,#1
JMPDIS10
DIS1:
CJNER2,#1,DIS2
MOV30H,25H
MOV31H,26H
MOV43H,#0
MOV47H,#1
JMPDIS10
DIS2:
CJNER2,#2,DIS3
MOV30H,27H
MOV31H,28H
MOV43H,#2
MOV47H,#3
JMPDIS10
DIS3:
CJNER2,#3,DIS4
MOV30H,27H
MOV31H,28H
MOV43H,#2
MOV47H,#3
JMPDIS10
DIS4:
CJNER2,#4,DIS5
MOV30H,29H
MOV31H,2AH
MOV43H,#4
MOV47H,#5
JMPDIS10
DIS5:
CJNER2,#5,DIS6
MOV30H,29H
MOV31H,2AH
MOV43H,#4
MOV47H,#5
JMPDIS10
DIS6:
CJNER2,#6,DIS7
MOV30H,2BH
MOV31H,2CH
MOV43H,#6
MOV47H,#7
JMPDIS10
DIS7:
CJNER2,#7,DIS10
MOV30H,2BH
MOV31H,2CH
MOV43H,#6
MOV47H,#7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DIS10:
MOVA,30H
MOVB,#51
DIVAB
MOVLED2,A
MOVA,B
clrc
movr4,a
subba,#26
jncaaa1
mova,r4
movb,#10
mulab
MOVB,#51
DIVAB
MOVLED1,A
jmpaaa2
aaa1:
mova,r4
movb,#10
mulab
clrc
subba,#255
movb,#51
DIVAB
adda,#5
MOVLED1,A
aaa2:
MOVA,B
clrc
movr4,a
subba,#26
mova,r4
jncaaa3
movb,#10
mulab
MOVB,#51
DIVAB
MOVLED0,A
jmpaaa4
aaa3:
mova,r4
movb,#10
mulab
clrc
subba,#255
movb,#51
DIVAB
adda,#5
MOVLED0,A
aaa4:
MOVA,31H
MOVB,#51
DIVAB
MOVLED6,A
MOVA,B
clrc
movr4,a
subba,#26
jncaaa5
mova,r4
movb,#10
mulab
MOVB,#51
DIVAB
MOVLED5,A
jmpaaa6
aaa5:
mova,r4
movb,#10
mulab
clrc
subba,#255
movb,#51
DIVAB
adda,#5
MOVLED5,A
aaa6:
MOVA,B
clrc
movr4,a
subba,#26
mova,r4
jncaaa7
movb,#10
mulab
MOVB,#51
DIVAB
MOVLED4,A
jmploop122
aaa7:
mova,r4
movb,#10
mulab
clrc
subba,#255
movb,#51
DIVAB
adda,#5
MOVLED4,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
loop122:
CJNER3,#2,LOOP1
JMPLOOP2
LOOP1:
CJNER3,#3,LOOP3
LOOP2:
RET
LOOP3:
CJNER2,#0,DIS11
JMPLOOP11
DIS11:
CJNER2,#1,DIS12
mov40h,44h
MOV41H,45H
MOV42H,46H
JMPLOOP11
DIS12:
CJNER2,#2,DIS13
;MOV30H,27H
JMPLOOP11
DIS13:
CJNER2,#3,DIS14
mov40h,44h
MOV41H,45H
MOV42H,46H
JMPLOOP11
DIS14:
CJNER2,#4,DIS15
JMPLOOP11
DIS15:
CJNER2,#5,DIS16
mov40h,44h
MOV41H,45H
MOV42H,46H
JMPLOOP11
DIS16:
CJNER2,#6,DIS17
;MOV30H,2BH
JMPLOOP11
DIS17:
CJNER2,#7,loop11
;MOV30H,2CH
mov40h,44h
MOV41H,45H
MOV42H,46H
LOOP11:
MOV43H,#10
MOV44H,#10
MOV45H,#10
MOV46H,#10
MOV47H,R2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;j显示;;;;;;;;;;;;;;;;;;
DISP:
JB20H.1,DIS31
INC34H
MOVR4,34H
CJNER4,#30,ZZX
cpl2