您好,欢迎来到年旅网。
搜索
您的当前位置:首页基于单片机的数字电压表设计

基于单片机的数字电压表设计

来源:年旅网
基于单片机的数字电压表设计

摘 要:

本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。在参阅了大量前人设计的数字电压表的基础上,利用单片机技术结合A/D转换芯片构建了一个直流数字电压表。本文首先简要介绍了设计电压表的主要方式以及单片机系统的优势,然后详细介绍了直流数字电压表的设计流程,以及硬件系统和软件系统的设计,并给出了硬件电路的设计细节,包括各部分电路的走向、芯片的选择以及方案的可行性分析等。

关键词 :单片机,电压测量,通信

第 1 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

目 录

引言...................................................................................................................................................3 1设计任务分析.................................................................................................................................3 1.1 设计电压表的可行性............................................................................................................3 2 系统原理及基本框图....................................................................................................................3 3硬件设计........................................................................................................................................4 3.1数字电压表原理图.................................................................................................................4 3.1 输入电路...............................................................................................................................4 3.2 A/D 转换电路及工作原理.....................................................................................................4 3.3 7135的应用.........................................................................................................................4 3.3单片机部分............................................................................................................................4 3.4液晶显示部分........................................................................................................................4 3.4.1 液晶显示部分与S52的接口..........................................................................................4 3.5 通讯模块...............................................................................................................................4 4 系统的软件设计............................................................................................................................4 4.1主程序设计............................................................................................................................4 4.2 A/D中断程序设计.................................................................................................................5 4.3通讯模块程序设计.................................................................................................................5 5 设计总结与评价............................................................................................................................6 参考文献...........................................................................................................................................7 附录1:程序清单.............................................................................................................................8

第 2 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

引言

随着时代的发展,信息电子已经进入我们的生活。数字电压表是现代电子测量中最重要测量仪器之一。设计了一种基于单片机和集成通信芯片的数字电压表,由单片机、高精度模数转换电路、通信电路和数码显示电路等几部分构成。控制部分采用ATS52,数模A/D 转换电路为主要硬件,通信输出部分采用AMX232芯片为主要硬件。它具有数码显示和实时通信双重功能,所用元件较少,成本低,且精度高,语音清晰,使用方便。

1设计任务分析

1.1 设计电压表的可行性

而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。

2 系统原理及基本框图

如图2.1所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。处理后的数据送到LCD中显示,同时通过串行通讯与上位机通信。

第 3 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

3硬件设计

3.1数字电压表原理图 3.1 输入电路

3.2 A/D 转换电路及工作原理 3.3 7135的应用 3.3单片机部分 3.4液晶显示部分

3.4.1 液晶显示部分与S52的接口 3.5 通讯模块

此处省略第3部分N个字 索要整篇论文电子稿请咪:

更多各种论文请访问:

4 系统的软件设计

4.1主程序设计

ICL7135A/D与单片机连接电路的软件设计系统的程序流程图如图所示。主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对ICL7135的中断进行计数,每5次后清零,完成一次数据采集工作,然后设置ICL7135的STB端的中断的优先级。紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。用以下指令实现 MOV P2,#01H ;送到数据DB7---DB0,调用子程序 ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。接着对1601进行功能的设定。MOV P2,#01111000B,按表3.4.5来看是设定显示器按2行显示,每行8位,5×7点阵。

调用一次子程序ENABLE程序,写入CPU的指令寄存器中。每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。显示器的RAM地址按加1方法进行读写。再设定第一行字符,也就是

第 4 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn 图3.1.1 主程序流程图

‘Voltage’的显示地址80H。字符‘Voltage’的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E产生一个下降沿脉冲,将数据送入到数据寄存器中,接下来执行子程序DISPLAY1,它的主要功能是将TABLE表中的字符输出到LCD中去。调定好显示字符数即远程查表的次数,就开始查表了。

例如第一个字符“V”的ASCII码是56H,就将这个码送到P2口,再调用使能数据子程序,使RS=1(数据区使能)写入显示数据区,R/W=0表示写,E=来个下降沿延时2.5毫秒,使数据写入RAM内完成。

TABLE表输出以后,向指令RAM中写入第2行的起始地址为OCH,再调用显示采样数据的子程序。采样数据存放的数据地

图3.1.2 数据地址 址安排如下图所示,首先将60H中的数显示在

正负号的位置上,按照ASCII码表,正号不显示(#20H),负号显示“-”(#2DH)。

4.2 A/D中断程序设计

ICL7135每一分钟完成3次据的采集工作,1/3秒完成后向CPU申请中断,CPU这时暂停工作,为中断服务.中断响应后关中断,将PSW、ACC压栈,判断是否首次中断,如果是首次中断,则将正负号标志位置入60H,再把万位置入61H中,如果不是首次中断,则跳到NEXT处,如果是第二次中断,则将千位数置入62H中,如果是第三次中断,再将百位数置入63H中,第四次中断则将十位数置入H中,第五次中断则将小数点位置入65H中,同时个位置入66H中。同时清除中断次数寄存器30H中的值,完成中断后将ACC、PSW出栈,开中断。

4.3通讯模块程序设计

S52单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。S52的串行口有4种工作方式,1种同步方式,3种异步方式。本方式选方式1,一帧数据有10位,包括起始位0、8位数据位和1位停止位1。串行口电路在发送时能自动加入起始位和停止位。在接收时,停止位进入SCON中的RB8位。方式1的波特率是可变的,由定时器1的溢出率决定。由定时器1最好工作在方式2上(自动重装载模式),这样只需对TH1设置一次即可。数据通过TXD输出,在8个位输出完毕后,SCON寄存器的TI位被设为1,CPU只要判断TI是1,接着发送下一个字节。

波特率的设定:定时器T1工作在方式2的初值为:

(1.1)

第 5 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

为了减小误差,时钟振荡频率采用11.0592MHz,选用定时器T1工作在方式2作波特率发生器,波特率为300,设SMOD为0,依公式(1.1)得初值为:

所以TH1 = TL1 = A0H

MOV SCON ,#50H ;URAT工作在方式1上 MOV TMOD ,#20H ;TIME1工作在方式2上 MOV TH1 , #0A0H ;设置波特率为300

本设计的中断十分重要,为了减少相互间的干扰,保证可靠性,采用查询方式判断是否发送完毕。

A6: JBC TI , A5 ;如果发送完毕跳,清标志位,跳到A5。 AJMP A6 ;否则跳到A6,等待 A5: INC R0

5 设计总结与评价

由于使用的是高效单片机作为核心的测量系统,以及灵敏度和精度较高的A/D转换器,使本直流电压表具有精度高、灵敏度强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。

单片机的应用如今已经在工业、电子等方方面面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围的简单电路再加上优化程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益发展,它必将在未来显示出更大的活力,为电子设计增加更多精彩。

电压测量通过不同的接口电路可实现温度、湿度、压力等测量,广泛应用于工业领域。本电路设计别具一格,是一种高精度、低功耗、宽量程、智能化的电压表。可扩展键盘、EEPROM、报警电路,实现电压异常记录、报警。

通过这次对数字电压表设计,让我了解了设计电路的程序,也让我了解了关于数字电压的原理与设计理念,要设计一个电路先要了解其每个元件原理,在通过一定的连接将它们合理的联系起来。因为,再实际接线中有着各种各样的条件制约着。而且,在设计电路中元件的连接没有多少的约束,在实际的连接有着很多的干扰和排列问题。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。

第 6 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

参考文献

[1] 徐爱钧.《智能化测量控制仪表原理与设计》(第二版)[M].北京:北京航空航天大学出版社,2004.

[2] 吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》[M].北京:清华大学出版社,2002.

[3] 张国勋,《缩短ICL7135A/D采样程序时间的一种方法》[J]. 《电子技术应用》,1993,第一期.

[4] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003.

[5] 刘伟,赵俊逸,黄勇,《一种基予C8051F单片机的SOC型数据采录器的设计与实现》[A].天津市计算机学会单片机分会编. 《2003年全国单片机及嵌如入式系统学术年会论文集(下册)》[C] .北京:北京航空航天大学出版社,2003 .790-794

[6] http://www.ic-on-line.com/ ICL7135.PDF、MAX232.PDF

第 7 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

附录1:程序清单

/* 毕业设计SVM1601A (16x1)接线图

================================================================= 连接线图: MCU-----S52

DB0-----P2.0 DB4-----P2.4 RS-------P0_1 DB1-----P2.1 DB5-----P2.5 RW-------P0_2 DB2-----P2.2 DB6-----P2.6 E--------P0_3 DB3-----P2.3 DB7-----P2.7 VLCD接1K电阻到GND

=================================================================毕业设计ICL7135接线图

================================================================= 连接线图: MCU-----S52

/STR----P3.2(/INT0)

B1-----P0.4 R/H------P0.0 BUSY----P3.6 B2-----P0.5 POL------P1.5 B4-----P0.6 OVER-----P1.6 B8-----P0.7 UNDER----P1.7

================================================================= */

DARPOLE EQU 60H ;正负号地址 DARSTART EQU 61H ;第一数位 DAREND EQU 67H ;结束位

INTNUM EQU 68H ;用于判断中断次数的寄存器 VGRADE EQU 69H ;档位值 DPOINT EQU 6AH ;小数点位

第 8 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

BEGIN EQU 6BH ;显示数据标志位 ADSTART BIT P0.0 ;A/D转换使能

RS BIT P0.1 RW BIT P0.2 E BIT P0.3

ORG 0000H SJMP START ORG 0003H LJMP INTUSE

START: SETB ADSTART ;开始

MOV INTNUM,#00H ;清中断次数

MOV SCON,#50H ;UART工作在MODE1 MOV TMOD,#20H ;TIMER1工作在MODE2 MOV TH1,#0A0H ;波特率300 SETB TR1 ;启动记时器1

MOV IE,#10000001B ;中断EA使能,EX0使能 MOV SP,#70H ;设置堆栈 MOV BEGIN,#00H

MOV P2,#01H ;清屏

CALL ENABLE ;写到指令寄存器 MOV P2,#38H ;功能设定(8位,2行,5*7点阵)智表设计P236 CALL ENABLE

MOV P2,#00001100B ;显示器ON,光标OFF,闪烁OFF CALL ENABLE

MOV P2,#06H ;I/D=1,DDRAM地址加1,显示器OFF CALL ENABLE

S1 : MOV P2,#80H ;第一行字符起始地址 CALL ENABLE JNB P1.6,S2

MOV DPTR,#TABLE0 AJMP S3

S2 : MOV DPTR,#TABLE1 ;显示'Voltage'字符 S3 : CALL WRITE1 MOV A,BEGIN CJNE A,#01H,S1

MOV P2,#0C0H ;第二行字符起始地址 CALL ENABLE

CALL WRITE2 ;显示A/D采样的数据 CALL SERCOM ;串行通讯 AJMP S1

第 9 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

ENABLE:CLR RS ;RS=0,写到指令寄存器 CLR RW ;R/W=0

SETB E ;E 1→0 使能 CALL DELAY ;延时2.5ms CLR E ;禁止 RET

WRITE1:MOV R1,#00H ;输出字符的子程序 A1: MOV A,R1

MOVC A,@A+DPTR CJNE A,#00H,A2 RET

A2: CALL WRITE3 ;写到LCD ROM的子程序 INC R1 AJMP A1

WRITE2:MOV R0,#60H ;输出数据的子程序,数据区地址 A3: MOV A,@R0

CALL WRITE3 ;写到LCD ROM的子程序 INC R0

CJNE R0,#DAREND,A3 MOV R0,#60H RET

WRITE3:MOV P2,A ;写到LCD ROM的子程序 SETB RS CLR RW SETB E

CALL DELAY ;延时2.5ms CLR E RET

SERCOM:MOV R1,#00H ;输出字符的子程序 A11: MOV A,R1

MOVC A,@A+DPTR CJNE A,#00H,A12 AJMP A14

A12: MOV SBUF,A ;写到LCD ROM的子程序 A16: JBC TI,A15

AJMP A16 A15: INC R1 AJMP A11

A14: MOV R0,#60H ;输出数据的子程序,数据区地址 A4: MOV A,@R0

第 10 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

MOV SBUF,A A6: JBC TI,A5 AJMP A6 A5: INC R0

CJNE R0,#DAREND,A4 RET

DELAY:MOV R4,#05H ;延时2.5ms子程序 D1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1 RET

/* 毕业设计中断寄存器使用情况

================================================================= MCU-----S52

R0 ----- 存数首地址 P1.0 = 0 ----- 2V档位 R2 ----- 档位值 P1.1 = 0 ----- 20V档位 R3 ----- 定义小数点位 P1.2 = 0 ----- 200V档位 R4 ----- 消隐标志位 P1.3 = 0 ----- 2000V档位

=================================================================*/

INTUSE: ;中断子程序 CLR EA

PUSH ACC PUSH PSW

SETB PSW.3 ;切换寄存器组1

MOV A,#00H ;#00H,判断是否首次!

CJNE A,INTNUM,NEXT ;是首次中断吗?非则转NEXT MOV R0,#DARSTART ;数据区首地址 MOV R2,#00H ;清档位值 MOV R3,#00H ;清小数点位 MOV R4,#01H ;置消隐标志位 JNB P1.6,K0 SETB P1.4 AJMP K1 K0: CLR P1.4

K1: JB P1.5,POL ;置正负号 MOV DARPOLE,#2DH ;负显示负号 AJMP K2

POL: MOV DARPOLE,#20H ;正则不显示

K2: MOV A,P0 ;读P0口,读7135输出的BCD码 ANL A,#0F0H ;取高四位

第 11 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

SWAP A

ADD A,#30H

SETB P1.0 ;判档位 SETB P1.1 SETB P1.2 SETB P1.3

JNB P1.0,IA1 ;是2V档吗? INC R2

JNB P1.1,IA1 ;是20V档吗? INC R2

JNB P1.2,IA1 ;是200V档吗? INC R2

IA1: XCH A,R3 ;定义小数点位 MOV A,R2 ADD A,#62H XCH A,R3

MOV DPOINT,R3

CJNE R2,#00H,IB0 ;是2V档位 AJMP IB1

IB0: CJNE A,#30H,IB1 ;A是零吗? AJMP IB2

IB1: MOV R4,#00H ;清消隐标志位 AJMP IB3

IB2: MOV R4,#01H ;置标志位 ADD A,#70H IB3: MOV @R0,A

INC R0

INC INTNUM ;中断次数加1 RETN: POP PSW POP ACC SETB EA RETI NEXT: MOV A,R0

CJNE A,DPOINT,NEXT3 ;置小数点 MOV @R0,#2EH INC R0

NEXT3:MOV A,P0 ANL A,#0F0H SWAP A ADD A,#30H

CJNE A,#30H,IC1 CJNE R4,#01H,IC2 CALL REMOVE AJMP IC2

第 12 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

IC1: MOV R4,#00H

IC2: MOV @R0,A ;送到数据区 INC R0 INC INTNUM MOV A,R0

CJNE A,#DAREND,RETN ;够五次了吗? MOV INTNUM,#00H ;清中断次数 MOV BEGIN,#01H SJMP RETN

REMOVE:MOV R1,INTNUM ;消隐子程序

CJNE R1,#01H,IEE1 ;是第二次中断吗? CJNE R2,#01H,IEE2 ;是20V档吗? MOV R4,#00H RET

IEE2:ADD A,#70H RET

IEE1:CJNE R1,#02H,RETN2 ;是第三次中断吗? CJNE R2,#03H,RETN2 ;是2000V档吗? ADD A,#70H MOV R4,#00H RETN2:RET

TABLE0:DB 'Over!!!:',00H ;显示字符,00H结束位 TABLE1:DB 'Voltage:',00H ;显示字符,00H结束位 END

第 13 页 共 13 页

PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务