基于单片机的数字电压表
学生姓名 系 部:
专业年级: 指导教师:
I
1:48:09
摘 要
本文介绍基于AT89S52单片机的一种电压测量电路,介绍了双积分电路的原理,AT89S52的特点,ICL7135的功能和应用,LCD1601的功能和应用。该电路设计新颖、功能强大、可ICL7135高精度、双积分A/D转换电路,测量范围直流0-±2000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。正文着重给出了软硬件系统的各部分电扩展强 关键词:
电压测量,ICL7135,双积分A/D转换器,1601液晶模块
目录
第1章 概述 ......................................... 1
1.1 数字电压表的发展前景. ..................................... 1
1.2 电路原理图 ................................................. 2
第2章 硬件电路设计 ................................. 3
2.1 输入电路设计 .............................................. 3
2.1.1 衰减电路设计 .......................................... 3 2.1.2 衰减电路: ........................................... 3 2.2 转换电路 .................................................. 4
2.2.1 转化器类型 ........................................... 4 2.2.2 转换器主要性能: ..................................... 5 2.2.3 ICL7135芯片简绍 ..................................... 6 2.3 AT89S52介绍 .............................................. 8
2.3.1 AT89S52芯片特点 ..................................... 9 2.3.2 主要引脚功能描述 ..................................... 9 2.4 显示电路 .................................................. 12
2.4.1 液晶显示器的分类及原理 .............................. 12 2.4.2 LCD-1601介绍 ....................................... 12
第3章 系统软件设计 ................................ 14
II
1:48:09
3.1 主程序设计 .............................................. 14 3.2 中断程序设计 ............................................. 15
第4章 通讯模块设计 ................................ 16
4.1 通讯模块电路组成 ......................................... 16 4.2 通讯模块程序设计 ......................................... 16
结束语 ............................................... 18 致谢 ................................................. 19 附件一 电路原理图 .................................. 附件二 部分参考程序 ................................ 参考文献 ............................................. III 20 21 23
1:48:09
第1章 概述
1.1 数字电压表的发展前景.
数字电压表作为数字技术的成功应用,发展相当快。数字电压表(Digital VoIt Me-ter,DVM),以其功能齐全、精度高、灵敏度高、显示直观等突出优点深受用户欢迎。特别是以A/D转换器为代表的集成电路为支柱,使DVM向着多功能化、小型化、智能化方向发展。DVM应用单片机控制,组成智能仪表;与计算机接口,组成自动测试系统。
现代数字电压表按测量功能可分为直流数字电压表和交流数字电压表。数字电压表一般由模拟部分和数字部分组成,模拟部分主要功能是获取电压并将其转换为相应的数字量,数字部分完成逻辑控制、译码和显示等功能。数字电压表的核心是A/D转换器,由A/D转换器工作原理的不同,数字电压表又可分为逐次比较型和双积分型。
传统模拟式电压表具有电路简单、成本低、测量方便等特点,但测量精度较差,特别是受表头精度的限制,即使采用0.5级的高灵敏度表头,读测时的分辨力也只能达到半格。再者,模拟式电压表的输入阻抗不高,测高内阻源时精度明显下降。
本设计为克服以上缺点选用ICL7135芯片实现双积分A/D转换,提高精度,
它是一种四位半的双计分A/D转换器,具有精度高(精度相当于14位二进制数)、价格低廉、抗干扰能力强等优点。本设计介绍用单片机并行方式采集ICL7135的数据以实现单片机电压表和小型智能仪表的设计方案。
在当今的数字时代,从大到空间雷达,地球卫星定位系统,移动通信,计
算机,医用断层扫描设备,小到家用计算机,数码影像设备,数字录音笔,数码微波炉等设备中,数字技术与数字电路组成的数字系统已经成为这些现代电子系统的重要组成部分。数字电压表正进入一个蓬勃发展的新时期,一方面它开拓了电子测量领域的先河,另一方面它本身正朝着高准确度、智能化、低成本的方向
1
1:48:09
发展。此外,数字电压表在安装工艺、外观设计、安全性、可靠性等方面也在不断改进,日臻完善。
1.2 电路原理图
89S52单片机 LCD显示
图1.2.1系统基本方框图
输入电路 A/D转换 通讯模块
如图(1.2.1)所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。处理后的数据送到LCD中显示,同时通过串行通讯与上位机通信。
2
1:48:09
第2章 硬件电路设计
2.1 输入电路设计
由于该电压表要实现多量程测量,故而在本设计通过衰减电路与量程切换开关实现此功能,具体电路将在本节详细介绍。
2.1.1 衰减电路设计
图2.1.1量程切换开关
输入电路(如图2.1.1)的作用是把不同量程的被测的电压规范到A/D转换器所要求的电压值。智能化数字电压表所采用的单片双积分型ADC芯片ICL7135,它要求输入电压0-±2V。 2.1.2 衰减电路:
图2.1.2衰减输入电路
3
1:48:09
本仪表设计是0-1000V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图 (2.1.2)所示9M、900K、90K、和10K电阻构成1/10、1/100、1/1000的衰减器。衰减输入电路可由开关来选择不同的衰减率,从而切换档位。为了能让CPU自动识别档位,还要有(图2.1.1)的硬件连接
2.2 转换电路
数字电压表最终显示结果是数字信号,但输入时却是模拟量,故而需要转电路使模拟量转换成数字量。本设计采用A/D转换器实现此过程。本节将着重介绍转化器基本知识和ICL7135芯片的功能。 2.2.1 转化器类型
A/D转换器(ADC)的作用是把模拟量转换成数字量,以便于计算机进行处理。随着超大规模集成电路技术的飞跃发展,现在有很多类型的A/D转换器芯片,不同的芯片内部结构不一样,转换原理也不仅相同,各种转换芯片根据转换原理可分为:计数型A/D转换器,逐次逼近型A/D转换器,双重积分型A/D转换器,和并行式A/D转换器等,按转换方法可分为直接A/D转换器和间接A/D转换器;按其分辨率分为4-16位转换器。 计数型A/D转换器
计数型A/D转换器由D/A转换器,计数器和比较器组成,工作时:计数器由零开始计数每计一次数后,计数器送往D/A转换器转换,并将生成的模拟信号与输入的模拟信号在比较器内进行比较,若小于后者,则计数值加1,D/A转换和比较过程,直到D/A转换生成的模拟信号与输入模拟信号相同时,则停止计数,这时计数器中的当前值就为输入模拟量对应的数字量。这种A/D转换器结构简单,原理清楚,但转换精度与速度之间存在矛盾。当提高速度时,精度就回有所下降,当提高精度时,速度就回有所下降。现实中很少使用。 逐次逼近型A/D转换器
逐次逼近型A/D转换器是由一个比较器,D/A转换器,寄存器及控制电路组成。与计数型相同,也要进行比较以得到转换的数字量,但逐次逼近型A/D转换器使用寄存器从高位到低位依次开始逐次比较。转换过程如下:开始时寄存器各
4
1:48:09
位都为零,转换时先将高位置1,送D/A转换器转换,转换结果与输入的模拟量比较,如果前者小于后者,则1保留,否则,不保留。重复上述过程直到最低位,最后寄存器内容就为输入模拟量对应的数字量。一个n位逐次逼近型转换器只需要比较n次,转换时间取决于位数和时钟周期。逐次逼近型A/D转换器转转速度快,在实际中广泛应用。 双重积分型A/D转换器
双重积分型A/D转换器将输入电压先变成与其平均值成正比的时间间隔,然后再把此时间间隔转换成数字量,它属于间接型。它的转换过程分采样和比较两个过程。采样就是积分器对输入模拟电压进行固定时间积分,输入量越大,采样值越大。比较就是用基准电压对积分器进行反向积分,直到值为零,由于基准电压固定,所以采样越大,反向积分时间越长,积分时间与输入电压成正比,最后把积分时间转换成数字量,则该数字量就为输入模拟量对应的数字量。由于转换过程进行了两次积分,所以称为双重积分型。,双重积分型A/D转换器的转换精度高,稳定性能好,抗干扰能力强,但转换速度慢。 2.2.2 转换器主要性能: 分辨率
分变率是指A/D转换器能分辨的最小输入量。通常用转换的数字量的位数来表示,如8位,10位,12位,16位等。位数越高,分辨率越高。 转换时间
转换时间是指A/D完成一次转换需要的时间,指从启动转换器开始到转换结束并得到稳定数字量为止的时间。一般而言,转换时间越短,转换速度越快。 量程
量程是指所能转换的输入电压范畴。 转换精度
分为绝对转换精度和相对转换精度。绝对精度是指实际输入的模拟量与理论上模拟量之差。相对精度是指当满刻度值校准后,任意数字量对应的实际模拟量(中间值)与理论值之差(中间值)。
A/D 转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。本设计采用双积A/D 转换器,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。在对转换精度要求较高,而对
5
1:48:09
转换速度要求不高的场合如电压测量有广泛的应用。 2.2.3 ICL7135芯片简绍
ICL7135是采用CMOS工艺制作的单片4位半A/D转换器,其所转换的数字值以多工扫描的方式输出,只要附加译码器,数码显示器,驱动器及电阻电容等元件,就可组成一个满量程为2V的数字电压表
①双积型A/D转换器,转换速度慢。
③具有自动极性转换功能。能在但极性参考电压下对双极性模拟输入电压进行A/D转换,模拟电压的范围为0~±1.9999V。
④模拟出入可以是差动信号,输入电阻极高,输入电流典型值1PA。 ⑤所有输出端和TTL电路相容。
⑥有过量程(OR)和欠量程(UR)标志信号输出,可用作自动量程转换的控制信号。 ⑦输出为动态扫描BCD码。 ⑧对外提供六个输入,输出控制信号
(R/H,BUSH,ST,POL,OR,UR),因此除用于数字电压表外,还能与异步接收 /发送器,微处理器或其它控制电路连接使用。
⑨采用28外引线双列直插式封装,外引线功能端排列如图所示。
ICL7135完成一次A/D转换周期分为四个阶段:
2.2.3.1 ICL7135引脚图
自动调零(AZ)、被测电压积分(INT)、基准电压反积分(DE)、积分回零(ZI)。 ICL7135引脚功能
① R/H(25脚)当R/H=“1”(该端悬空时为“1”)时,7135处于连续转换状态,每40002个时钟周期完成一次A/D转换。若R/H由“1”变“0”,则7135在完成本次A/D转换后进入保持状态,此时输出为最后一次转换结果,不受输入
电压变化的影响。因此利用R/H端的功能可以使数据有保持功能。若把R/H端用。
6
1:48:09
②/ST(26脚)每次A/D转换周期结束后,ST端都输出5个负脉冲,其输出时间对应在每个周期开始时的5个位选信号正脉冲的中间,ST负脉冲宽度等于1/2时钟周期。
第一个ST负脉冲在上次转换周期结束后101个时钟周期产生。因为每个选信号(D5--D1)的正脉冲宽度为200个时钟周期(只有AZ和DE阶段开始时的第一个D5的脉冲宽度为201个CLK 周期),所以ST负脉冲之间相隔也是200个时钟周期。需要注意的是,若上一周期为保持状态(R/H=“0”)则ST无脉冲信号输出。ST信号主要用来控制将转换结果向外部锁存器、UARTs或微处理器进行传送。
③BUSY(21脚)在双积分阶段(INT+DE),BUSY为高电平,其余时为低电平。 ④OR(27脚)当输入电压超出量程范围(20000),OR将会变高。该信号在BUSY信号结束时变高。在DE阶段开始时变低。
⑤UR(28脚)当输入电压等于或低于满量程的9%(读数为1800),则一当BUST信号结束,UR将会变高。该信号在INT阶段开始时变低。
⑥POL(23脚)该信号用来指示输入电压的极性。当输入电压为正,则POL等于“1”,反之则等于“0”。
⑦位驱动信号D5、D4、D3、D2、D1(12、17、18、19、20脚)每一位驱动信号分别输出一个正脉冲信号,脉冲宽度为200个时钟周期,其中D5对应万位选通,以下依次为千、百、十、个位。在正常输入情况下,D5--D1输出连续脉冲。当输入电压过量程时,D5--D1在AZ阶段开始时只分别输出一个脉冲,然后都处于低电平,直至DE阶段开始时才输出连续脉冲。利用这个特性,可使得显示器件在过程时产生一亮一暗的直观现象。
⑧B8、B4、B2、B1(16、15、14、13脚)该四端为转换结果BCD码输出,采用动态扫描输出方式,即当位选信号D5=“1”时,该四端的信号为万位数的内容,D4=“1”时为千位数内容,其余依次类推。 ICL7135芯片参数选择 1、时钟频率fcp的选择
从ICL7135的设计上看,时钟频率范围可以很宽(一般为40kHZ——1MHZ),但若考虑到工频干扰问题,根据我国的市场电频率为50HZ,选fcp=2/(20*0.000001)kHZ合适。 2、基准电压的Vr选择
7
1:48:09
基准电压的选择一般按照ICL7135的输出读数10000Vi/Vr来确定。通常选Vr=1V,则当输入电压Vi=1 V时,显示1.0000;当Vi=1.9999V时,显示1.9999V。 3、基准电压的Cr选择
均取1uF。
ICL7135与AT89S52的连接
在ICL7135与单片机系统进行连接时,使用并行采集方式,要连接BCD码数据输出线,可以将ICL7135的/STB信号接至AT89C52的P3.2(INT0)。
ICL7135需要外部的时钟信号,本设计采用CD4060来对4M信号进行32分频得到125KHz的时钟信号。CD4060计数为14级2进制计数器,在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。
图2.2.3.2 ICL7135与系统的连接图 图2.2.3.3 CD4060时钟发生电路
2.3 AT8S952介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、非常有效的解决方案。
8
1:48:09
2.3.1 AT8S952芯片特点 AT8S952简介:
/与MCS-51单片机产品兼容 /8K字节在系统可编程Flash存储器 /全静态操作:0Hz~33Hz /32个可编程I/O口线 /全双工UART串行通道 /掉电后中断可唤醒 /双数据指针
/三个16位定时器/计数器 /1000次擦写周期
/低功耗空闲和掉电模式 /掉电标识符 /看门狗定时器 /八个中断源
/三级加密程序存储器
单片机选用的是ATMEL公司新推出的AT8S952。该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机,与AT89S51完全兼容。AT89S52还有以下主要特点:
1、采用了ATMEL公司的高密度、非易失性存储器(NV-SRAM)技术; 2、其片内具有256字节RAM,8KB的可在线编程(ISP)FLASH存储器; 3、片内含有一个看门狗定时器(WDT),WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST),只要对WDTRST按顺序先写入01EH,后写入0E1H,WDT便启动,当CPU由于扰动而使程序陷入死循环或“跑飞”状态时,WDT即可有效地使系统复位,提高了系统的抗干扰性能
9
1:48:09
2.3.2 主要引脚功能描述
P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8
图2.3.2.1 AT89S52引脚
位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.7 SCK(在系统编程用)
P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能
10
1:48:09
驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。 引脚号第二功能
P3.0 RXD(串行输入) P3.1 TXD(串行输出) P3.2 INT0(外部中断0) P3.3 INT0(外部中断0) P3.4 T0(定时器0外部输入) P3.5 T1(定时器1外部输入) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器写选通)
RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机
复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX 或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当
AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。
11
1:48:09
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出
2.4 显示电路
本设计的是一四位半液晶显示数字电压表,因此在显示电路设计过程中采用了LCD1601模块,本节将着重介绍液晶显示器基本知识,并对LCD1601模块功能及使用情况进行简单说明。
2.4.1 液晶显示器的分类及原理
液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性实现显示信息的。液晶显示器具有体积小,重量轻,功耗低,显示内容丰富等特点,在单片机应用系统中得到了广泛的应用。液晶显示器按功能可分为三类:笔段式液晶显示器,字符型点阵式液晶显示器和图形点阵式液晶显示器。 字符型点阵式液晶显示器显示模块是一种专门用于显示字符,数字,符号等的点阵式液晶显示模块,每一个点阵字符位都可以显示一个字符。点阵字符位之间有一定点距的间隔,这样就起到了字符间距与行距的作用。
显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD液晶模块,采用一个16×1的字符型液晶显示模块 2.4.2 LCD-1601介绍
图2.4.2.1 1601引脚图
GND 接地 Vcc +5V
DB0-- DB3 低4位三态、双向数据总线
12
1:48:09
DB4-- DB7 高4位三态、双向数据总线 VL 驱动LCD,一般将此脚接地 E 读写使能(下降沿使能)
RS 寄存器选择0:指令寄存器(WRITE)1:数据寄存器(WRITE,READ) R/W READ/WRITE选择 1:READ 0:WTITE LCD-1601与AT89S52的接口
如图
2.4.2.2所示:用
AT89S52的P2口作为
数据线,用P0.1、P0.2、P0.3分别作为LCD的E、R/W、RS。其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7
图2.4.2.2 液晶89S52的接口
点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的与显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。
8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为0V。MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。
13
1:48:09
第3章 系统软件设计
多路液晶显示数字电压表系统软件程序由主程序,A/D转换子程序和显示子程序组成。
3.1 主程序设计
主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对ICL7135的中断进行计数,每5次后清零,完成一次数据采集工作,然后设置ICL7135的STB端的中断的优先级。紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可
图3.1.1 主程序流程图
以完成清屏工作。用以下指令实现 MOV P2,#01H ;送到数据DB7---DB0,调用子程序 ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。接着对1601进行功能的设定。
MOV P2,#01111000B,设定显示器按2行显示,每行8位,5×7点阵。 调用一次子程序ENABLE程序,写入CPU的指令寄存器中。每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。显示器的RAM地址按加1方法进行读写。再设定第一行字符,也就是‘Voltage’的显示地址80H。字符‘Voltage’的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E产生一个下降沿脉冲,将数据送入到数据寄存器中,接下来执行子程序DISPLAY1,它的主要功能是将TABLE表中的字符输出到LCD中去。调定好显示字符数即远程查表的次数,就开始查表了。
14
1:48:09
例如第一个字符“V”的ASCII码是56H,就将这个码送到P2口,再调用使能数据子程序,使RS=1(数据区使能)写入显示数据区,R/W=0表示写,E=来个下降沿延时2.5毫秒,使数据写入RAM内。完成 TABLE表输出以后,向指令RAM中写入第2 行的起始地址为OCH,再调用显示采样数据 的子程序。采样数据存放的数据地址安排如下图所示,首先将60H中的数显示在正负号的位置上,按照ASCII码表,正号不显示(#20H),负号显示“-”(#2DH)。
图3.1.2数据地址
3.2 中断程序设计
图3.2.1 中断子程序流程图
ICL7135每一分钟完成3次据的采集工作,1/3秒完成后向CPU申请中断,CPU
15
1:48:09
这时暂停工作,为中断服务.中断响应后关中断,将PSW、ACC压栈,判断是否首次中断,如果是首次中断,则将正负号标志位置入60H,再把万位置入61H中,如果不是首次中断,则跳到NEXT处,如果是第二次中断,则将千位数置入62H中,如果是第三次中断,再将百位数置入63H中,第四次中断则将十位数置入64H中,第五次中断则将小数点位置入65H中,同时个位置入66H中。同时清除中断次数寄存器30H中的值,完成中断后将ACC、PSW出栈,开中断。
第4章 通讯模块设计
4.1 通讯模块电路组成
AT89S52内部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号
转换成RS-232协议规定的电平标准, MAX232是一种双组驱动器/接收器,每个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。 每个驱动器将TTL/CMOS输入电平转换 为 EIA/TIA-232-E电平。即EIA接口,就是把5V转换为-8V到-15V电位0V转换为
4.2
AT89S52单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构
16
图4.1.1 MAX232引脚功能图
通讯模块程序设计
1:48:09
成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。AT89S52的串行口有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的初值为:
(4.2.1)
为了减小误差,时钟振荡频率采用11.0592MHz,选用定时器T1工作在方式2作波特率发生器,波特率为300,设SMOD为0,依公式(4.2.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
17
1:48:09
结束语
电压测量通过不同的接口电路可实现温度、湿度、压力等测量,广泛应用于工业领域。本电路设计别具一格,是一种高精度、低功耗、宽量程、智能化的电压表。可扩展键盘、EEPROM、报警电路,实现电压异常记录、报警。
18
1:48:09
致谢
时间过得很快,经过了资料的搜集和查询、方案的选择、各种元器件选择和原理图设计,程序编写,修改调试等,我的毕业设计也接近了尾声。
此次设计是在洛继明老师的悉心指导下完成的,在整个设计过程中,洛老师给我提供了很大的帮助。无论是在方案确定还是在图形绘制的每一个环节,都给予了我悉心指导。我希望借此机会向洛老师表示最衷心的感谢!
毕业设计是大学里的最后一课,每个同学都希望交上一份满意的答卷,每个老师也希望学生们能给自己大学三年的学生生涯画上一个圆满的句号。回顾三年的学习,担任计算机控制技术专业的各位老师们无论在学习上还是在生活上都给了我很大的帮助,在此向各位老师表示诚挚的感谢,多谢各位老师的教导与栽培!
本次设计期间也得到了邱建文老师、瓮嘉民老师,郭会平老师,雷万忠老师等多位老师的指点和关心,同时也得到许多同学的帮助,在此表示感激。但是由于个人的水平有限和经验的不足,设计中难免会存在一些错误和不足之处,恳请大家指正,不胜感激!
路漫漫其修远兮,吾将上下而求索。在未来的日子里,我将更加努力的学习和工作,来报答曾经关心过我的领导、老师、同学和朋友!
19
1:48:09
附件一 电路原理图
20
1:48:09
附件二 部分参考程序
RH BIT P0.0 启动A/D转换位 RS BIT P0.1 LCD功能命令位 RW BIT P0.2 LCD功能命令位 E BIT P0.3 LCD使能端 B1 BIT P0.4 B2 BIT P0.5 B4 BIT P0.6 B8 BIT P0.7
UNR BIT P1.4 欠量程 OVR BIT P1.5 超量程 POL BIT P1.6 极性位
STB BIT P3.2 信号选通位 D1 BIT P3.6 数字最低位 D5 BIT P3.7 数字最高位 ORG 0000H AJMP MAIN ORG 0003H LCALL INT0
MAIN:MOV R0,#00H 存放中断次数
MOV TMOD,#0FEH 定时计数器工作方式2,8位定时计数器工作于计数方式且开通外部中断INT0
MOV TH0,#0FBH 设定初值为251,因为只计数5次 MOV TL0,#0FBH
SETB EA 设置中断允许总控位EA
SETB ET0 开定时器T0溢出中断允许位ET0 SETB EX0 设定外部中断允许位EX0 CLR P0.1 CLR P0.2 SETB P0.3 /*LCD初始化*/
MOV A,#01H 清屏
21
1:48:09
ACALL WM
MOV A,#38H 功能设置 ACALL WM
MOV A,#0EH 开关显示设置 ACALL WH
MOV A,#04H 输入方式设置 ACALL WH
SETB P0.0 启动A/D转换 SETB P1.0
MOV DPTR,#TAB1 ;指向TAB1表 CALL WRITE1 ACALL DELAY0 AJMP EXIT NEXT:MOV P2,#80H ACALL WM
MOV DPTR,#TAB2 ;指向TAB2表 CALL WRITE1 ACALL DELAY /*中断程序*/ INT0: PUSH PSW CLR P0.0
MOV R1,#00H 万位数字存入R1 MOV R2,#00H 千位数字存入R2 MOV R3,#00H 百位数字存入R3 MOV R4,#00H 十位数字存入R4 MOV R5,#00H 个位数字存入R5 JNB P3.7,D4 判是否万位数字输出 MOV A,P0 读数据
ANL A,#0F0H 对数据低四位清零
SWAP A 高四位和低四位交换位址
ADD A,#30H 对高四位补30H,使其指向数字对应的ASICC码 MOV R1,A 万位数字存入R1 AJMP EXIT 退出中断
JNB P3.6,D3 判是否千位数字输出 JNB P3.5,D2 判是否百位数字输出 JNB P3.4,D1 判是否十位数字输出 DELAY:MOV R7,#05H ;延时2.5ms子程序 DELAY1: MOV 20H,#0FFH DJNZ 20H,$
DJNZ R7,DELAY1 RET
TAB0:DB 'Over!!!:',00H ;显示字符,00H结束位 TAB1:DB 'CHANGE!!!',00H
TAB2:DB 'Voltage:',00H ;显示字符,00H结束位
22
1:48:09
参考文献
[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] 谢维成.杨加国主编.《单片机原理与应用及51程序设计》北京:清华大学学出版社.2007
[7] 周良权.李世馨.《模拟电子技术基础》[M].北京:高等教育出版社.2004. [8] 王卫平.陈粟宋.《电子产品制造工艺》[M].北京:高等教育出版社.2007. [9] 谢自美. 《电子线路设计•实验•测试》 [M]. 武汉: 华中科技大学出版社. 2006.
[10] 沙占友. 《数字万用表应用技巧》[M]. 北京:国防工业出版社.1997. [11] 沙占友. 《新型数字电压表原理与应用》 [M]. 北京:国防工业出版社,1995.
23
因篇幅问题不能全部显示,请点此查看更多更全内容