基于51单片机的电子秤的设计.docx
- 文档编号:11081811
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:33
- 大小:449.37KB
基于51单片机的电子秤的设计.docx
《基于51单片机的电子秤的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子秤的设计.docx(33页珍藏版)》请在冰豆网上搜索。
基于51单片机的电子秤的设计
基于51单片机的电子秤的设计
学号:
毕业设计
GRADUATETHESIS
论文题目:
基于51单片机的电子秤的设计
学生姓名:
专业班级:
学院:
指导教师:
2017年06月12日
第一章功能说明
本设计系统以单片机AT89S52为控制核心,实现电子秤的基本控制功能。
在设计系统时,为了更好地采用模块化设计法,分步设计了各个单元功能模块。
系统的硬件部分包括最小系统部分、数据采集部分、人机交互界面和系统电源四大部分。
最小系统部分主要包括AT89S52和扩展的外部数据存储器;数据采集部分由称重传感器,信号的前期处理和A/D转换部分组成,包括运算放大器AD620和A/D转换器ICL7135;人机界面部分为键盘输入,四位LED数码显示器,可以直观的显示重量的具体数字以及方便的输入数据,使用方便;系统电源以LM317和LM337为核心设计电路以提供系统正常工作电源。
系统的软件部分应用单片机C语言进行编程,实现了该设计的全部控制功能。
该电子秤可以实现基本的称重功能(称重范围为0~9.999Kg,重量误差不大于±0.005Kg),并发挥部分的显示购物清单的功能,可以设置日期和设定十种商品的单价,还具有超量程和欠量程的报警功能。
本系统设计结构简单,使用方便,功能齐全,精度高,具有一定的开发价值。
称重传感器原理
即由非电量(质量或重量)转换成电量的转换元件,它是把支承力变换成电的或其它形式的适合于计量求值的信号所用的一种辅助手段。
按照称重传感器的结构型式不同,可以分直接位移传感器(电容式、电感式、电位计式、振弦式、空腔谐振器式等)和应变传感器(电阻应变式、声表面谐振式)或是利用磁弹性、压电和压阻等物理效应的传感器。
对称重传感器的基本要求是:
输出电量与输入重量保持单值对应,并有良好的线性关系;有较高的灵敏度;对被称物体的状态的影响要小;能在较差的工作条件下工作;有较好的频响特性;稳定可靠。
传感器下的定义是:
“能感受规定的被测量并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成”。
其中敏感元件指传感器中能直接感受被测量的部分,转换元件指传感器中能将敏感元件输出量转换为适于传输和测量的电信号部分。
此外传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
它是实现自动检测和自动控制的首要环节。
称重传感器在电子秤中占有十分重要的位置,被喻为电子秤的心脏部件,它的性能好坏很大程度上决定了电子秤的精确度和稳定性。
通常称重传感器产
2.1电子秤设计的要求
1)称重范围:
不超过9.999Kg
2)测量精度:
≤0.005Kg
3)显示方式:
LCD显示所称量的物品重量,同时还可显示物品的名称,数量,单价,金额和所有物品的总金额。
4)使用操作:
键盘输入数据,操作简单方便。
5)特殊功能:
具有去皮功能以及能将金额累加计算;当物品重量超过电子秤量程,即过载情况或者是物品重量小于A/D转换器所能转换的最小精度,即欠量程的时候,具有超重报警功能。
2.2电子秤设计的基本思路
将电子秤大致能划分为三大部分,数据采集模块、控制器模块和人机交互界面模块。
其中数据采集模块由压力传感器、信号的前级处理和A/D转换部分组成。
转换后的数字信号送给控制器处理,由控制器完成对该数字量的处理,驱动显示模块完成人机间的信息交换。
此外添加了一个过载、欠量报警提示的特殊功能。
如图2-1(上图为本系统的设计图)
2.3单片机的选型
AT89S52单片机是AT89S系列中的增强型高档机产品,它片内存储器容量是AT89S51的一倍,即片内8KB的Flash程序存储器和256B的RAM。
另外,它还增加了一个功能极强的、具有独特应用的16位定时/计数器2等多种功能。
在工程应用中AT89S52有一显著的优势:
不需要烧写器,只借助PC机的并口输出和极为简单的下载电路,便可将程序通过串行方式写入单片机。
并且下载电路可设计在系统中,可以随时修改单片机的软件而不对硬件做任何改动。
由此,通过对目前主流型号的比较,我们最终选择了AT89S52通用的普通单片机来实现系统设计。
AT89S52是一种兼容MCS51微控制器,工作电压4.0V到5.5V,全静态时钟0Hz到33MHz,三级程序加密,32个可编程I/O口,2/3个16位定时/计数器,6/8个中断源,全双工串行通讯口,低功耗支持Idle和Power-down模式,Powerdown模式支持中断唤醒,看门狗定时器,双数据指针,上电复位标志。
另外在外扩展了32K数据存储器,以满足系统要求。
2.4A/D转换器介绍
A/D转换器是一种能把输入模拟电压或电流-成与它成正比的数字量,也就是说能把被控对象的各种模拟信息变成计算机可以识别的数字信息。
A/D转换器种类较多,从原理上可分为四种:
双积分式A/D转换器,逐次逼近式A/D转换器、并行A/D转换器、计数器式A/D转换器及△-∑型A/D转换器。
在电子秤的设计中用的比较多的是双积分式A/D转换器和△-∑型A/D转换器。
双积分ADC的基本原理是对输入模拟电压和参考电压分别进行两次积分,将输入电压平均值变成与之成正比的时间间隔,然后利用时钟脉冲和计数器测出此时间间隔,进而得到相应的数字量输出。
如图2-6所示是电子秤中常用的双积分式A/D转换电路,它由积分器、比较器、模拟电子开关,积分电阻、积分电容、自动回零电阻、电容组成。
其中VG是模拟地,VFR是基准电压(相对于VG为负值),VX是检测电压。
如图2-6 双积分A/D转换电路
其次双积分型A/D转换器具有很强的抗干扰能力。
对正负对称的工频干扰信号积分为零,所以对50HZ的工频干扰抑制能力特强,对高于工频干扰(例如噪声电压)也具有良好的滤波作用。
只要干扰电压的平均值为零,对输出就不产生影响。
尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。
故而采用双积分型A/D转换器可大大降低对滤波电路的要求。
作为电子秤,系统对AD的转换速度要求并不高,精度上14位的AD足以满足要求。
另外双积分型A/D转换器较强的抗干扰能力,和精确的差分输入,低廉的价格。
最终选择了精度为10Kg/
20000=
0.5g的ICL7135。
2.5键盘输入
键盘输入是人机交互界面中重要的组成部分,它是系统接受用户指令的直接途径。
键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。
键盘由许多键组成,每一个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。
单片机接收到按键的触点信号后作相应的功能处理。
因此,相对于单片机系统来说键盘接口信号是输入信号。
ZLG7289是周立功单片机公司设计的串行输入输出可编程键盘显示芯片,有强大的键盘显示功能,支持64键控制,可以比较方便地扩展系统。
另外ZLG7289内部有译码电路,大大简化了程序。
最终选择ZLG7289作为键盘扫描显示芯片。
2.6输出显示
采用可以设置显示单价,金额,中文,购物日期等的LCD,它具有低功耗、可视面大、画面友好及抗干扰能力强等功能,其显示技术已得到广泛应用。
LCD显示器的工作原理:
液晶显示器的主要材料是液态晶体。
它在特定的温度范围内,既具有液体的流动性,又具有晶体的某些光学特性,其透明度和颜色随电场、磁场、光照度等外界条件变化而变化。
因此,用液晶做成显示器件,就可以把上诉外界条件的变化反映出来从而形成现实的效果。
虽然ZLG7289具有控制数码管显示的功能,但考虑到本题目要求中文显示,数码管无法满足,只能考虑用带有中文字库的液晶显示器。
由于可以分页显示,无需太大屏幕,最终选择点阵式128×64型LCD—OCM4x8C。
:
第三章硬件设计与制作
3.1AT89S52芯片
AT89S52单片机是ATMEL公司新近推出的高档型AT89S系列单片机中的增强型产品。
ATMEL公司是美国20世纪80年代中期成立并发展起来的半导体公司。
该公司的技术优势在于推出Flash存储器技术和高质量、高可靠性的生产技术,它率先将独特的Flash存储技术注入于单片机产品中。
其推出的AT89系列单片机,在世界电子技术行业中引起了极大的反响,在国内也受到广大用户欢迎。
AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。
器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。
芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,3个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可为0Hz,并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器、串行口、外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
主要功能特性见下表:
·兼容MCS-51指令系统
·8k可反复擦写(>1000次)ISPFlashROM
·32个双向I/O口
·4.5-5.5V工作电压
·3个16位可编程定时/计数器
·时钟频率0-33MHz
·全双工UART串行中断口线
·256x8bit内部RAM
·2个外部中断源
·低功耗空闲和省电模式
·中断唤醒省电模式
·3级加密位
·看门狗(WDT)电路
·软件设置空闲和省电功能
·灵活的ISP字节和分页编程
·双数据寄存器指针
如表3-1 AT89S52功能
引脚封装如下图所示:
如图3-1AT89S52的引脚图
3.2主控电路的设计
P1口和P2.0~P2.6口作为地址总线,其中P1口作为低地址线和数据总线复用,P2.0~P2.6口做高地址线。
P2.7作为62256的片选控制总线,ALE接锁存器74LS373的使能端。
P3.6和P3.7作为外部数据存储器写/读选通信号输出端分别接62256的/WE和/OE端。
主控电路图如下:
如图3-2主控电路设计图
3.3信号处理电路
以下为滤波放大电路图:
如图3-3信号滤波放大图
上图中电容C5、C6用来滤除采样信号电压中的高频噪声,选用0.1uF的普通独石电容;电容C7、C84用来滤除采样信号电压中的低频噪声,选用22uF的普通独石电容。
电阻R3、R4选用较小的阻值,因为采样信号电压值只有毫伏级,所以其阻值不宜太大,否则导致放大器由于输入电流太小而放大效果不明显。
微弱信号Vi1和Vi2被分别放大后从AD620的第6脚输出。
A/D转换器ICL7135的输入电压变化范围是-2V~+2V,传感器的输出电压信号在0~20mv左右,因此放大器的放大倍数在200~300左右,可将R9接成1K的滑动变阻器。
由于ICL7135对高频干扰不敏感,所以滤波电路主要针对工频及其低次谐波引入的干扰。
因为压力信号变化十分缓慢,所以滤波电路可以把频率做得很低。
图中的LM741的输出端与AD620的地端相连,LM741的2脚与6脚相连构成电压跟随器,R15与正负电源相接,通过改变R15的阻值可使VO与RET之间的压差变化,从而实现调零、去皮的功能。
ICL7135与单片机的接口
在读取A/D转换后的结果时,选用数据选择器作为数据读取的控制器,这样简化了ICL7135与单片机的接口电路,便于硬件设计与软件编程的实现。
在ICL7135进行A/D转换结束后输出的/STRB负脉冲引起AT89S52中断。
同时在第一个/STB负脉冲时由软件将P1.7口置0,因而使S=0,使74LS157的Y
(1Y,2Y,3Y,4Y)=A(4A,3A,2A,1A)。
AT89S52读P1.0~P1.3口便读得BCD码,此时D5=1。
此后,D4,D3,D2,D1轮流为“1”,即可读得千位、百位、十位和个位的BCD码。
前端信号处理电路设计如下图:
如图3-4 信号数模转换图
ICL7135的输出时序图:
如图3-5 输出时序图
在A/D转换结束后立即更新输出锁存器并不断地扫描输出BCD码。
在A/D转换期间BUSY为低电平,转换完毕后BUSY变为高电平。
A/D转换结束后立刻顺序并连续不断地输出位驱动信号D5、D4、D3、D2、D1(均为正脉冲)。
当D5为高电平时,B8、B4、B2、B1是万位BCD码。
同样当D4为高电平时,B8、B4、B2、B1是千位BCD码。
同理D3、D2、D1为正脉冲时各对应百、十、个位的BCD码。
在A/D转换完毕后,还连续输出5个/STB负脉冲,它们分别位于D5、D4、D3、D2、D1正脉冲的中间,脉冲宽度为T/2。
在设计时,还考虑过使用另一种接口电路,它巧妙地运用了ICL7135地“Busy”端功能,只要一个I/O口和单片机内部的一个定时器就可把ICL7135的数据送人单片机,可以节省大量的单片机资源,减小系统的体积。
原理如下:
“Busy”输出端(ICL7135的21脚)高电平的宽度等于积分和反积分时间之和。
ICL7135内部规定积分时间固定为10001个时钟脉冲时间,反积分时间长度与被测电压的大小成比例。
如果利用单片机内部的计数器对ICL7135的时钟脉冲计数,利用"Busy"作为计数器门控信号,控制计数器只要在Busy为高电平时计数,将这段Busy高电平时间内计数器计的内容减去10001,其余数等于被测电压的数值。
3.3人机交互界面模块设计
3.3.1键盘输入控制电路
如表3-2ZLG7289引脚说明
引脚号
名称
说明
1,2
VDD
正电源
3,5
NC
悬空
4
VSS
接地
6
/CS
片选输入端此引脚为低电平时可向芯片发送指令及读取键盘数据
7
CLK
同步时钟输入端向芯片发送数据及读取键盘数据时此引脚电平上升沿表示数据有效
8
DATA
串行数据输入/输出端当芯片接收指令时此引脚为输入端当读取键盘数据时此引脚在读指令最后一个时钟的下降沿变为输出端
9
/KEY
按键有效输出端平时为高电平当检测到有效按键时此引脚变为低电平
10~16
SG~SA
段g~段a驱动输出
17
DP
小数点驱动输出
18~25
DIG0~DIG7
数字0数字7驱动输出
26
OSC2
振荡器输出端
27
OSC1
振荡器输入端
28
/RESET
复位端低电平有效
SPI串行接口工作方式介绍:
ZLG7289采用串行方式与微处理器通讯,串行数据从DATA引脚送入芯片,并由CLK端同步。
当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入ZLG7289的缓冲寄存器。
ZLG7289的指令结构有三种类型:
1、不带数据的纯指令,指令的宽度为8个BIT即微处理器需发送8个CLK脉冲;
如图3-6纯指令时序图
2、带有数据的指令宽度为16个BIT即微处理器需发送16个CLK脉冲;
如图3-7带数据指令时序图
3、读取键盘数据指令宽度为16个BIT,前8个为微处理器发送到ZLG7289的指令,后8个BIT为ZLG7289返回的键盘代码,执行此指令时ZLG7289的DATA端在第9个CLK脉冲的上升沿变为输出状态并与第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令。
图3-8读键盘指令时序图
下图为电路图:
图3-9键盘接口图
图中P1.5口接/CS;P1.6口接CLK;P1.0口接DIO;P3.2口接/KEY,利用中断0通知AT89S52读数。
键盘控制芯片ZLG7289控制键盘的扫描,当监测到有键按下后ZLG7289的9脚便产生一个低电平通知单片机,单片机可以采用查询或者中断方式将数据通过P3.0口以串行方式读入。
因为查询方式会浪费大量的时间,所以本系统采用的是中断方式。
2、参数选择参考如下
8只下拉电阻和8只键盘连接位选线DIG0~DIG7的8只位选电阻应遵从一定的比例关系,下拉电阻应大于位选电阻的5倍而小于其50倍,典型值为10倍,下拉电阻的取值范围是10K~100K,位选电阻的取值范围是1K~10K。
所以取上拉电阻为10K,下拉电阻为100K。
ZLG7289需要一外接晶体振荡电路供系统工作,其典型值分别为F=16MHzC=15pF。
实际使用时取F=12MHz,C=15pF。
3.3.2LCD显示电路
OCM4x8C是具有串/并接口,其内部含有中文字库的图形点阵液晶显示模块。
该模块的控制/驱动器采用台湾矽创电子公司的ST7920,因而具有较强的控制显示功能。
OCM4x8C的液晶显示屏为128×64点阵,可显示4行、每行8个汉字。
为了便于简单、方便地显示汉字,该模块具2Mb的中文字型CGROM,该字型ROM中含有8192个16×16点阵中文字库;同时,为了便于英文和其它常用字符的显示,具有16Kb的16×8点阵的ASCII字符库;为便于构造用户图形,提供了一个64×256点阵的GDRAM绘图区域,且为了便于构造用户所需字型,提供了4组16×16点阵的造字空间。
利用上述功能,OCM4x8C可实现汉字、ASCII码、点阵图形、自造字体的同屏显示。
为便于和多种微处理器、单片机接口,模块提供了4位并行、8位并行、2线串行、3线串行多种接口方式。
该模块具有2.7V~5.5V的宽工作电压范围,且具有睡眠、正常及低功耗工作模式,可满足系统各种工作电压及便携式仪器低功耗的要求。
液晶模块显示负电压,也由模块提供,从而简化了系统电源设计。
模块同时还提供LED背光显示功能。
除此之外,模块还提供了画面清除、游标显示/隐藏、游标归位、显示打开/关闭、显示字符闪烁、游标移位、显示移位、垂直画面旋转、反白显示、液晶睡眠/唤醒、关闭显示等操作指令。
如表3-3引脚功能说明
引脚号
名称
说明
1
VSS
GND(0V)
2
VDD
逻辑电源(+5V)
3
V0
LCD电源(悬空)
4
RS(CS)
H:
数据,L:
指令
5
R/W(SID)
H:
读,L:
写
6
E(SCLK)
使能
7
DB0
数据0
8
DB1
数据1
9
DB2
数据2
10
DB3
数据3
11
DB4
数据4
12
DB5
数据5
13
DB6
数据6
14
DB7
数据7
15
PSB
H:
并行,L:
串行
16
NC
空脚
17
RST
复位(低电平有效)
18
NC
空脚
19
LEDA
背光源正极(LED+5V)
20
LEDK
背光源负极(LED-0V)
电路图中PSB接低电平,进入串行接口模式;串行数据线SID接P3.1口;串行时钟线SCLK接P1.6;RS固定接高电平。
此为典型二线串行模式。
字符显示RAM地址与字符显示位置关系:
如表3-4RAM地址与字符显示位置关系
80H
81H
82H
83H
84H
85H
86H
87H
90H
91H
92H
93H
94H
95H
96H
97H
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
2/3线串行接口方式:
当模块的PSB脚接低电平时,模块即进入串行接口模式。
串行模式使用串行数据线SID与串行时钟线SCLK来传送数据,即构成2线串行模式。
OCM4x8C还允许同时接入多个液晶显示模块以完成多路信息显示功能。
此时,要利用片选端“CS”构成3线串行接口方式,当“CS”接高电位时,模块可正常接收并显示数据,否则模块显示将被禁止。
通常情况下,当系统仅使用一个液晶显示模块时,“CS”可连接固定的高电平。
模块2线串行工作操作时序如下图所示:
如图3-102线串行时序图
由图3.12可以看出,单片机与液晶模块之间传送1字节的数据共需24个时钟脉冲。
首先,单片机要给出数据传输起始位,这里是以5个连续的“1”作数据起始位,如模块接收到连续的5个“1”,则内部传输被重置并且串行传输将被同步。
紧接着,“RW”位用于选择数据的传输方向(读或写),“RS”位用于选择内部数据寄存器或指令寄存器,最后的第8位固定为“0”。
在接收到起始位及“RW”和“RW”的第1个字节后,下一个字节的数据或指令将被分为2个字节来串行传送或接收。
数据或指令的高4位,被放在第2个字节串行数据的高4位,其低4位则置为“0”;数据或指令的低4位被放在第3个字节的高4位,其低4位也置为“0”,如此完成一个字节指令或数据的传送。
需要注意的是,当有多个数据或指令要传送时,必须要等到一个指令完成执行完毕后再传送下一个指令或数据,否则,会造成指令或数据的丢失。
这是因为液晶模块内部没有发送/接收缓冲区。
3.4报警电路的设计
下图为系统报警电路原理图,用于超载和欠量程提示。
系统设计了两个发光二极管作为超载和欠量程指示灯,使系统更加完善。
当系统判断为超载或欠量程时,ICL7135给输出一个高电平信号OR(超载)或UR(欠量程),经非门后形成低电平从而驱动发光二极管发光提示。
如图3-11 报警电路原理图
第四章软件设计
软件流程图及程序设计
为了方便程序调试和提高可靠性,程序设计采用自上而下、模块化、结构化的程序设计方法,把总的编程过程逐步细分,分解成一个个功能模块,每个功能模块相互独立,每个模块都能完成一个明确的任务,实现某个具体的功能。
本设计按任务模块划分的程序主要有初始化程序、主程序,A/D转换子程序、显示子程序、键盘处理子程序。
4.1初始化程序设计流程图
单片机系统上电后,进入初始化程序,完成单片机片内各模块的设置和A/D转换器的功能设置初始化,然后进入主程序。
如图4-1 初始化程序设计流程图
4.2主程序设计流程图
单片机完成初始化程序后进入主程序,主程序主要完成对存储参数的读取,对检测到的数据进行数据处理,键处理,显示处理等。
如图4-2 主程序设计流程图
4.2 主程序设计及其相关程序设计
4.2.1程序清单
uintmax_weight;//最大称量
uchardsel;//分度值
uchardp;//小数点
floatbeilv;//倍率
ulongzero_save;//传感器零位值
}bdf;
uintcodenum_ten[4]={1,10,100,1000};
ucharcodeadcount2[4]={2,4,5};//数据处理进平均次数
ucharcodetab_dsel[4]={1,2,5,10};//分度值表
//0,1,2,3,4,5,6,7,8,9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子秤 设计