基于单片机的电子秤设计
摘 要
本文设计了一种以51单片机来进行控制的电子秤系统,系统的电路部分由以下几个电路模块组成:数据采集和数据处理电路、模数转换电路、LED及蜂鸣器报警电路、最小系统电路、液晶显示电路、矩阵按键电路等。接通电源后,单片机会把压力传感器输入的小信号进行放大处理及模数转换,通过按键设置单价在LCD1602上显示物体总价信息。
对于硬件设计部分,我们本着低成本,高效率,系统稳定可行的指导方针选取了一些实用的元器件进行设计。而软件设计则采用模块化的设计方法,争取把软件设计得方便可读易操作。文中还详细分析了应变式压力传感器在重量测量上的应用及其使用的原理,而HX711作为一个高精度的24位A/D转换器如何在模数转换的过程如何运作也有相应的介绍。当然,这次设计的结果能够得到预期的效果也离不开其他各部分电路的相辅相成,我们也对一些配合电路做了简单介绍。仿真部分则为我们的设计是否合理进行了初步验证。最后,我们完成了实际电路的焊接,使得理论有了实物作为支撑,整个设计能够正常实现功能。
关键词:51单片机;电子称;压力传感器;模数转换;模块化设计
4 硬件电路设计
4.1 硬件电路总框图设计
设计一个电子秤,首先们要知道它能实现什么样的功能。当放上物体时,我们要将重量转为电信号,这就需要一个力传感器。获取的电信号是模拟量,不能被CPU处理,就需要进行AD转换。如果要根据单价计算总金额,就需要能够输入数据的键盘。这些获得的重量、单价和总金额都需要显示出来才能达到查看的目的,所以液晶屏也不能少。最后为了避免超重,设置了报警装置。
本设计采用模块化设计法,将硬件结构分功能划成了数据采集、矩阵键盘、显示、报警和单片机最小系统控制模块。具体电路图详见附录,总框架图如图4-1所示。其中,数据采集模块包括称重传感器和A/D转换电路。最小系统则包括单片机、晶振、复位等部件。键盘由4X4位矩阵键盘组成,可以控制显示重量和价钱等信息;显示部分由LCD1602液晶显示[14]。报警功能则有蜂鸣器和LED灯来实现。
图4-1 硬件电路设计总框图
4.2 数据采集电路设计
数据采集电路是整个电子秤设计的基础,我们所有的功能都是围绕对采集的数据进行的操作。采集电过程包括力-电转换和A/D转换[15]。称重传感器是电阻应变式压力传感器,能够承受10kg的重量,能够将压力转为电压差读取。而AD转换电路采用了专用型24位AD转换器HX 711芯片模块。电路如图4-2所示,串口数据输出DT与P12相连,断电控制和串口时钟输入SCK接P13。通过编程选择SCK输入脉冲数选择通道A ,增益128。
图4-2数据采集模块电路图
4.3 最小系统电路设计
如上所述,电源电路、时钟电路、单片机、复位电路能够形成一个单片机最小系统(图4-3)。给单片机提供一个时间基准,单片机就会按照这个决定执行速度。时钟电路选用了12MHZ的晶振提供时钟。执行一条基本指令需要的时间为一个机器周期[16]。其中晶振提供一个正弦波信号,电容C1和C2起稳定作用。单片机的复位电路,按下复位按键之后可以使单片机进入刚上电的起始状态,只有是高电平才能正常复位。我们将上电复位和手动复位结合在一起组合成混合复位电路来完成复位的功能。上电复位利用RC充放电,在RST上加一个短暂的高电平,当充完电后,电容断开,程序恢复运行。当程序死机或需要重新开始时,就需要手动复位,按下按键,VCC就直接连接到了RST,电容被短路放电;按键松开,就恢复到低电平,继续给电容充电。图中10K排阻为P0口的上拉电阻,由于P0口跟其他IO结构不一样为漏极开路的结构,因此要加上拉电阻才能正常使用。
图4-3 最小系统电路图
4.4 矩阵键盘电路设计
键盘是就是电子秤系统的输入设备,能够进行简单的人机互动,里面包含了一组按键。它通过将键盘排列成行列式矩阵的形式,实现了对IO口复用,节约了IO口线的数目。我们使用的是要靠自编软件识别的非编码键盘。通过软件设置相应按键的功能,输入数据或命令,显示屏就会显示我们想要的操作结果。按键是处于常开状态,只有按下时才闭合。电路如4-4所示。将每行按键的一端分别于P3口的前四个引脚依次相连,每个按键的另一端以按列的方式分别与P3端口的后四个引脚相接。我们使用时通过扫描法查询哪一个按键处于低电平的状态,以确定哪个按键被按下。我们将不同的按键返回不同的值来实现对显示屏的操作,实现多种交互性的功能[17]。
图4-4矩阵键盘电路图 4.7 硬件电路原理总图本次设计了一个以单片机为控制核心的电子秤系统。按照设计要求,电子秤需要通过键盘控制单价输入、校准等功能,显示的价格由液晶屏显示,并且需要有超重报警的功能。因此设计电路时,硬件电路除了包含单片机最小系统即振荡电路、复位电路、电源,还在P3口接了一个4*4的矩阵键盘,P0端口通过10KΩ的排阻接到液晶屏的数据端,P2端口中5、6、7脚则控制液晶屏的读写控制。数据的采集和处理由传感器和24位的AD转换芯片HX711来完成,HX711的时钟和数据输出端分别接到P1端口的2、3脚。报警电路则由蜂鸣器和LED灯来实现,P1.0控制蜂鸣器,P1.1控制LED灯。电源为5V的直流电源,加了一个自锁开关可以控制电源的通断。总体的设计电路图如图4-7所示。
图4-7 设计总电路图5 软件设计
在整个单片机应用系统的总体方案及硬件分配定型后,便可以着手进入具体的设计阶段。可以根据实际的需要来选择单片机设计语言及开发环境。在单片机程序设计时,可以采用结构化的程序设计,将各个功能部件模块化,使用各种子程序,降低下一步调试修改的难度;充分考虑软件运行时的状态,避免未处理的运行状态,否则程序运行时易出错,不受控制;要合理安排各个功能部件的时序,确保程序能正确执行[18]。
系统软件由主程序、键盘扫描程序、HX711读取程序、LCD1602写操作程序组成。主程序由系统初始化和主循环组成,包括时钟中断、按键响应、 各种数值显示设置、称重、获取毛皮等功能子程序。在系统刚刚开始运行时,首先要对各种值进行初始化,然后不停地循环检查是否有什么功能需要被执行,系统会根据设定的按键功能进入相应的状态。主循环完成定时扫描按键,保存校准值的功能。键盘扫描程序确定了哪一个按键被按下,而HX711程序则完成了重量数字信号的采集,LCD1602写操作程序能够对液晶屏的显示进行设置。
6 系统调试
在本次设计中,我们首先通过查找资料设计了电路原理图并通过protel软件绘出来,之后又用keil4编写了相应的程序通过proteus进行仿真[19],通过一步步的摸索,确定了最后的软件程序可以实现基本的功能。最后进行相应元器件的购买和焊接工作。通过STC_ISP我们将生成的hex文件下载到单片机内,进行调试,通过调试发现了一些问题并进行修改。调试成功后,验证了此次设计的可行性。系统调试是设计的最后一个环节,但是也不能掉以轻心,如果这一步没有成功,那么前面的设计都只能是空想,没有实际成果作为支撑。
6.1 硬件调试
一个设计能否成功必然是软件和硬件共同作用的结果,但是首先我们要对硬件进行基础的排查,这样能够避免后续工作排查的难度。所以在焊接过程中,我们没有一股脑的把所有器件都焊接起来,而是分功能的焊接,然后对照电路图进行检查连线是否错误,然后用万用表检查是否有虚焊或者短路的情况发生。焊接完成后,我们再次检查了所有的电源是否连接正确。接通电源后,却发现还是有出现一些问题,例如我们一接通电源,液晶屏的背光就立马亮了起来,断开电源后,背光还是继续发光。通过检查发现背光是直接连到了电源两端,没有通过开关连接。排除了一些简单的硬件问题后,我们就可以开始软件调试了。
6.2 软件调试
因为程序要实现较多的功能,设计时也是遇到了不少问题,不管是由于粗心还是由于知识上的不足造成的。但经过不断地调试修改,最终还是解决了这些问题。软件不像硬件一样有实实在在地电路图,只要一点一点地连正确了,基本就完成了。软件里小到一个标点符号都可能影响整个功能,我们通过keil编写程序一步一步实验各种功能。要么是写的程序功能出现错误,要么是功能完全没有实现。我们就只能不断地摸索,然后不停的修改,不断地验证。最后编译成功后生成hex文件在proteus中进行仿真,如图6-2所示。
图6-2 系统仿真图在调试过程中,本来能实现基本功能,可是之后又发现屏幕只能显示初始化界面,不能显示其它功能。称重传感器没有读数,经过排查,发现是有一根线断了。所以说,软硬件是缺一不可的。
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。
