基于单片机电子秤硬件电路设计Word格式文档下载.docx
《基于单片机电子秤硬件电路设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机电子秤硬件电路设计Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如下表所示:
表3.1P3.0口引脚功能表
P3口引脚
第二功能
P3.0
RXD(串行口输入)
P3.1
TXD(串行口输出)
P3.2
INT0(外部中断0输入)
P3.3
INT1(外部中断1输入)
P3.4
T0(定时器0外部脉冲输入)
P3.5
T1(定时器1外部脉冲输入)
P3.6
WR(外部数据存储器写脉冲输出)
P3.7
RD(外部数据存储器读脉冲输出)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.1.3AT89S52的最小系统电路构成
AT89S52单片机的最小系统由时钟电路、复位电路、电源电路及单片机构成。
单片机的时钟信号用来提供单片机片内各种操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。
单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据使用的要求,复位操作通常有两种基本形式:
上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。
上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。
单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。
系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。
51单片机的复位是由RESET引脚来控制的,此引脚和高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。
3.2电源电路设计
根据设计需要,本系统中需要设计两种不同级别的电源,即传感器需要+12V的电源,而系统其他芯片使用的是+5V电源。
考虑本次设计的实际要求,使系统稳定工作,提高产品的性价比,电源电路的设计决定采用如下方案:
图3.3电源电路图
220V的交流电经过变压器后输出15V的电压,经整流滤波电路后,通过LM7812和LM7905进行DC/DC变换得到+12V和+5V、-5V供器和系统的其他芯片使用。
在变压器的原边加入熔断保护装置和MFC网络,使得系统获得的电源更稳定,效果更好,且电路短路时,熔断装置会迅速切断电源,保护其他电路元件不被损坏,供电电路如图3.3所示。
3.3数据采集部分电路设计
数据采集部分电路包括传感器输出信号放大电路、A/D转换器和单片机接口电路。
3.3.1传感器和其外围以及放大电路设计
传感器实际上是一种将质量信号转变为可测量的电信号输出的装置。
用传感器首先要考虑传感器所处的实际工作环境,这点对正确使用传感器至关重要,它关系到传感器能否正常工作以及它的安全和使用寿命,乃至整个衡器的可靠性和安全性。
因此传感器外围电路的抗干扰能力是数据采集部分电路设计的关键环节。
传感器检测电路的功能是把电阻应变片的电阻变化转变为电压输出,由于惠斯登电桥具有很多优点,如可以抑制温度变化的影响,可以抑制侧向力干扰,可以比较方便的解决称重传感器的补偿问题等,又因为全桥式等臂电桥的灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,所以在本设计中选用最终方案我们选择的是上海开沐自动化有限公司生产的NS-TH1系列称重传感器,额定载荷20Kg,该称重传感器均采用全桥式等臂电桥。
由于传感器输出的电压信号很小,是mV级的电压信号,因此为了提高系统的抗干扰能力,在传感器外围电路的设计过程中,增加了由普通运放设计的差动放大器增益调节电阻Rg选用10K电阻,是为了满足系统抗干扰的要求而设计。
其电路图如3.2所示。
图3.2传感器和其外围电路图
这是一个电阻应变片式称重传感器,将电阻应变片贴在金属的弹性体(即力敏感器)上,并连接成一差动全桥电路。
电阻应变片实心轴沿轴向线应变为:
(3-1)
实心轴沿圆周向线应变为:
(3-2)
金属材料的电阻相对变化公式为:
(3-3)
把3-1、3-1代入3-3可以得到其输出电压为:
(3-4)
其中F为压力(即重物重量)A为受力面积E为弹性材料的弹性模量。
如果在电阻的两侧都加入应变片,则其输出为
(3-5)
SP20C-G501的输出电压为1-5V相应压力为1-50KPa。
供电电流变动会直接影响传感器的输出电压,因此希望电流变动要小。
此外,增大或减小驱动电流可调整输出电压,但电流过小,输出电压降低同时抗噪声能力减弱;
电流过大,会使传感器发热等,将对传感器特性影响加大。
因此在电路中使用1mA的驱动电流。
即使用的电流为1mA左右。
电路中,采用通用运算放大器LM324,由稳态二极管VS提供2.5V的输出电压经电阻R2和R3分压得到基准电压,作为运放A1输入电压,并供给1mA的电流。
传感器的驱动电流流过基准电阻R4,其上的压降等于输入电压。
R13和R14为失调电压的温度补偿电阻,阻值选择500k
-1.5M
。
输入采用高输入阻抗的差动输入方式,再有差动放大器电路进行放大,输出1-5V的电压。
RP2用于调整电路输入的灵敏度,RP1用于失调电压的调整,调整时,压力为0KPa时输出电压为1V,调整RP1,当压力为达到20Kg的力时,输出电压为5V即可。
而有式(3-5)得三运放放大电路的输出信号和输入信号的关系式为:
(3-6)
通过上式可以看出,放大系数为
(3-7)
代入数值可以计算出,其放大系数在70~150之间,完全符合设计要求。
有(3-6)可以得到电桥输入电压U0和被测重量x成正比,即
(3-8)
式中:
——电桥的电源电压
——传感器系数
3.3.2A/D转换芯片和AT89S52单片机接口电路设计
AD574是美国AnalogDevice公司生产的12位单片A/D转换器。
它采用逐次逼近型的A/D转换器,最大转换时间为25us,转换精度为0.05%,所以适合于高精度的快速转换采样系统。
芯片内部包含微处理器借口逻辑(有三态输出缓冲器),故可直接和各种类型的8位或者16位的微处理器连接,而无需附加逻辑接口电路,切能和CMOS及TTL电路兼容。
AD574采用28脚双列直插标准封装,其引脚图如下:
图3.5AD574管脚图
A/D574有5根控制线,逻辑控制输入信号有:
A0:
字节选择控制信号。
CE:
片启动信号。
/CS:
片选信号。
当/CS=0,CE=1同时满足时,AD574才处于工作状态,否则工作被禁止。
R/-C:
读数据/转换控制信号。
12/-8:
数据输出格式选择控制信号。
当其为高电平时,对应12位并行输出;
为低电平时,对应8位输出。
当R/-C=0,启动A/D转换:
当A0=0,启动12位A/D转换方式;
当A0=1,启动8位转换方式。
当R/-C=1,数据输出,A0=0时,高8位数据有效;
A0=1时,低4位数据有效,中间4位为0,高4位为三态。
输出信号有:
STS:
工作状态信号线。
当启动A/D进行转换时,STS为高电平;
当A/D转换结束时为低电平。
则可以利用此线驱动一信号二极管的亮灭,从而表示是否处于A/D转换。
其它管脚功能如下:
10Vin,20Vin:
模拟量输入端,分别为10V和20V量程的输入端,信号的另一端接至AGND。
DB11~DB0:
12位数字量输出端,送单片机进行数据处理。
REFOUT:
10V内部参考电压输出端。
REFIN:
内部解码网络所需参考电压输入端。
BIPOFF:
补偿校正端,接至正负可调的分压网络,0输入时调整数字输出为0;
AGND:
接模拟地。
DGND:
接数字地。
由于对AD5748、10、12引脚的外接电路有不同连接方式,所以AD574和单片机的接口方案有两种,一种是单极性接法,可实现输入信号0~10V或者0~20V的转换;
另一种为双极性接法,可实现输入信号-5~+5V或者-10~+10V之间转换。
我们采用单极性接法,电路接线图如下图3-4所示:
图3.6AD574和AT89S52的接线图
根据芯片管脚的原理,无论启动、转换还是结果输出,都要保证CE端为高电平,所以可以将单片机的/RD引脚和/WR端通过和非门和AD574的CE端连接起来。
转换结果分高8位、低4位和P0口相连,分两次读入,所以12/-8端接地。
同时,为了使CS、A0、R/-C在读取转换结果时保持相应的电平,可以将来自单片机的控制信号经74LS373锁存后再接入。
CPU可采用中断、查询或者程序延时等方式读取AD574的转换结果,本设计采用中断方式,则将转换结束状态STS端接到P3.2(外部中断/INT0)。
其工作过程如下:
A.当单片机执行对外部数据存储器的写指令,并使CE=1,/CS=0,R/-C=0,A0时,
进行12位A/D转换启动。
B.CPU等待STS状态信号送P3.2口,当STS由高电平变为低电平时,就表示转换结束。
转换结束后,单片机通过分两次读外部数据存储器操作,读取12位的转换结果数据。
C.当CE=1,/CS=0,R/-C=1,A0=0时,读取高8位;
当CE=1,/CS=0,R/-C=1,A0=1时,读取低4位。
3.3.3测量算法
A/D转换结果D和被测量x存在以下关系:
(3-9)
S——传感器及其测量电路的灵敏度(即被测量X转换成电压U的转换系数)
K——放大器的放大倍数
——A/D转换器满量程输入电压
——A/D转换器满量程输出数字
而被测量X总是以其测量数字N和测量单位x1表示
(3-10)
将式(3-10)代入(3-9)得
(3-11)
由上式可见只要满足以下条件
(3-12)
就可以使A/D转换结果D和被测量x的数值N相等,即D=N,在这种情况下将A/D转换结果作为被测量的数值传送到显示器显示出来。
3.4显示电路和AT89S52单片机接口电路设计
在2.3显示电路论证中,本设计采用是LCD显示。
在LCD驱动时,需在段电极和公共电极上施加交流电压。
若只在电极上施加DC电压时,液晶本身发生劣化。
液晶驱动方式包括静态驱动、动态驱动等驱动方式。
(1)静态驱动
所有的段都有独立的驱动电路,表示段电极和公共电极之间连续施加电压。
它适合于简单控制的LCD。
(2)多路驱动方式
构成矩阵电极,公共端数为n,按照1/n的时序分别依次驱动公共端,和该驱动时序相对应,对所有的段信号电极作选择驱动。
这种方式适合于比较复杂控制的LCD。
在多路驱动方式中,像素可分为选择点、半选择点和非选择点。
为了提高显示的对比度和降低串扰,应合理选择占空比(duty)和偏压(bias)。
施加在LCD上所表示的ON和OFF时的电压有效值和占空比和偏压的关系如下:
Vo:
LCD驱动电压
N:
占空比(1/N)
a:
偏压(1/a)
多路驱动方式可分为点反转驱动和帧反转驱动。
点反转驱动适合于低占空比使用,它在各段数据输出时,将数据反转。
帧反转驱动适合于高占空比使用,它在各帧输出时,将数据反转。
对于多灰度和彩色显示的控制方法,通常采用帧频控制(FRC)和脉宽调制(PWM)方法。
帧频控制是通过减少帧输出次数,控制输出信号的有效值,来实现多灰度和彩色控制。
而脉宽调制是通过改变段输出信号脉宽,控制输出信号的有效值,来实现多灰度和彩色控制。
如图3.7所示。
图3.7
3.5键盘电路和AT89S52单片机接口电路设计
矩阵式键盘的结构和工作原理:
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式键盘的按键识别方法:
确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线和4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线和置为低电平的行线交叉处的按键就是闭合的按键。
在本系统中键盘采用矩阵式键盘并采用中断工作方式。
键盘为4X4键盘,包括0、1、2、3、4、5、6、7、8、9、十个数字及确认和清除键。
采用中断工作方式提高了CPU的利用效率,没键按下时没有中断请求,有键按下时,向CPU提出中断请求,CPU响应后执行中断服务程序,在中断程序中才对键盘进行扫描。
下图就是键盘电路和AT89S52单片机接口电路图。
图3.8键盘电路和AT89S52单片机接口电路图
3.6报警电路的设计
图3.9报警电路图
当电路检测到称重的物体超过仪器的测量限制时,将产生一个信号给报警电路。
使报警电路报警从而提醒工作人员注意,超限报警电路如图3.9所示。
它是有89S52的P2.6口来控制的,当超过设置的重量时(5Kg),通过程序使P2.6口值为高电平,从而使三极管导通,报警电路接通,使蜂鸣器SPEAKER发出报警声,同时使报警灯LED发光。
由于持续的声音不能够引起人们的关注,所以本系统的报警电路采用间断的声音和频闪的灯光来实现。
这一任务的实现主要靠程序来完成,在此不再赘述。
第四章系统软件设计
程序设计是一件复杂的工作,为了把复杂的工作条理化,就要有相应的步骤和方法。
其步骤可概括为以下三点:
⑴分析系统控制要求,确定算法:
对复杂的问题进行具体的分析,找出合理的计算方法及适当的数据结构,从而确定编写程序的步骤。
这是能否编制出高质量程序的关键。
⑵根据算法画流程图:
画程序框图可以把算法和解题步骤逐步具体化,以减少出错的可能性。
⑶编写程序:
根据程序框图所表示的算法和步骤,选用适当的指令排列起来,构成一个有机的整体,即程序。
程序数据的一种理想方法是结构化程序设计方法。
结构化程序设计是对利用到的控制结构类程序做适当的限制,特别是限制转向语句(或指令)的使用,从而控制了程序的复杂性,力求程序的上、下文顺序和执行流程保持一致性,使程序易读易理解,减少逻辑错误和易于修改、调试。
根据系统的控制任务,本系统的软件设计主要由主程序、初始化程序、显示子程序、数据采集子程序和延时程序等组成。
4.1主程序设计
图4.1系统主程序流程图
系统上电后,初始化程序将RAM的30H~5FH内存单元清零,P2.6引脚置成低电平,防止误报警。
主程序模块主要完成编程芯片的初始化及按需要调用各模块(子程序),在系统初始化过程中,将系统设置成5Kg量程,并写5Kg量程标志。
设计流程图如图4.1所示。
4.2子程序设计
系统子程序主要包括A/D转换启动及数据读取程序设计、键盘输入控制程序设计、显示程序设计、以及中断程序设计等。
4.2.1A/D转换启动及数据读取程序设计
A/D转换子程序主要是指在系统开始运行时,把称重传感器传递过来的模拟信号转换成数字信号并传递到单片机所涉及到的程序设计。
设计流程图如图4-2所示。
4.2A/D转换启动及数据读取程序流程图
4.2.2数制转换子程序设计
在数制转换前要进行系数调整,在IN0输入的数最大为5V,要求的质量500g对应的是4.8V,为十六进制向十进制转换方便,将系数放大100倍。
并用小数点位置的变化体现这一过程。
数制之间的转换:
在二进制数制中,每向左移一位表示数乘二倍。
以每四位作为一组对数分组,当第四位向第五位进位时,数由8变到16,若按十进制数制规则读数,则丢失6,所以应进行加六调整。
DA指令可完成这一调整。
可见数制之间的转换可以通过移位的方法实现。
其中,移出数据的保存可以通过自乘再加进位的方法实现,因为乘二表示左移一位,左移后,低位进一,则需加一。
否则,加零。
而通过移位已将要移入的尾数保存在了进位位中,所以能实现。
图4.3数据处理流程图
4.2.3显示子程序设计
显示子程序主要是来判断是否需要显示,以及如何去显示,也是十分重要的程序之一。
而显示子程序是其他程序所需要调用的程序之一,因此,显示子程序的设计就显得举足轻重,设计的时候也要十分的小心和卖力。
设计显示子程序的流程图如下图4-4所示:
图4.4显示子程序流程图
4.2.4键盘扫描子程序的设计
如图3.4.1所示:
键盘电路设计成4X4矩阵式,由键盘编码方式可以得出0,1,2,3,4,5,6,7,8,9,A,B,C,D,E各键对应的键值:
0D8H,0D0H,0D1H,0D2H,0C8H,0C9H,0CAH,0C0H,0C1H,0C2H,0C3H,0CBH,0D3H,0DBH,0DAH,0D9H。
在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。
图4.5键盘扫描子程序流程图
4.2.5报警子程序的设计
由于要求要键盘设定阈值,所以要求