1、单片机电子秤设计报告秤是一种在实际工作和生活中经惯用到测量器具。随着计量技术和电子技术发展,老式纯机械构造杆秤、台秤、磅秤等称量装置逐渐被裁减,电子称量装置电子秤、电子天平等以其精确、迅速、以便、显示直观等诸多长处而受到人们青睐。和老式秤相比较,电子秤运用新型传感器、高精度AD转换器件、单片机设计实现,具备精度高、功能强等特点。本课题设计电子秤具备基本称重、键盘输入、计算价格、显示、超重报警功能。该电子秤测量范畴为0-10Kg,测量精度达到5g,有高精度,低成本,易携带特点。电子秤采用液晶显示中文和测量记过,比老式秤具备更高精确性和直观性。此外,该电子秤电路简朴,使用寿命长,应用范畴广,可以应
2、用于商场、超市、家庭等场合,成为人们寻常生活中不可少必须品。一、功能描述1、采用高精度电阻应变式压力传感器,测量量程0-10kg,测量精度可达5g。2、采用电子秤专用模仿/数字(A/D)转换器芯片hx711对传感器信号进行调理转换,HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计24 位A/D 转换器芯片。3、采用STC89C52单片机作为主控芯片,实现称重、计算价格等主控功能。4、采用128*64中文液晶屏显示称重重量、单价、总价等信息。5、采用4*4矩阵键盘进行人机交互,键盘容量大,操作便捷。6、具备超量程报警功能,可以通过蜂鸣器和LED灯报警。7、系统通过USB电
3、源供电,单片机程序也可通过USB线串行下载。二、硬件设计1、硬件方案单片机电子秤硬件方案如图1所示:图1 单片机电子秤硬件方案称重传感器感应被测重力,输出薄弱毫伏级电压信号。该电压信号通过电子秤专用模仿/数字(A/D)转换器芯片hx711对传感器信号进行调理转换。HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计24 位A/D 转换器芯片,内置增益控制,精度高,性能稳定。HX711芯片通过2线串行方式与单片机通信。单片机读取被测数据,进行计算转换,再液晶屏上显示出来。矩阵键盘重要用于计算金额。当被测物体重量得到后,顾客可以通过矩阵键盘输入单价,电子秤自动计算总金额并在液晶
4、屏显示。电源系统给单片机、HX711电路及传感器供电。2、称重传感器传感器是测量机构最重要部件。称重传感器自身具备单调性,其重要参数指标是敏捷度、总误差和温度漂移。(1) 敏捷度称重传感器电敏捷度为满负荷输出电压与勉励电压比值,典型值是2mV/V。当使用2 mV/V敏捷度和5 V勉励电压传感器时,其满度输出电压为10 mV。普通,为了使用称重传感器线性度最佳一段称重范畴,应当仅使用满度范畴三分之二。因而满度输出电压应当大概为6mV。当电子秤应用于工业环境时,在6mV满度范畴内测量微小信号变化并非易事。(2) 总误差总误差是指输出误差和额定误差比值。典型电子秤总误差指标大概是0.02%,这一技术
5、指标相称重要,它限制了使用抱负信号调节电路所能达到精准度,决定了ADC辨别率选取以及放大电路和滤波器设计。(3) 漂移称重传感器也产生与时间有关漂移。当前惯用称重传感器有电阻应变式压力传感器、电容压力传感器、压电式压力传感器。选用时应按稳定行、精度登记、寿命和安装环境规定考虑,其重要特点如下:(1) 电容式压力传感器稳定性较差,精度和敏捷度较高,寿命较短,对环境规定苛刻,不易长距离传播。(2) 压电式压力传感器稳定性好,精度和敏捷度高,寿命长,但大量程压力传感器尚待进一步研究。(3) 电阻应变式压力传感器稳定性较好,精度和敏捷度较高,寿命较长,对测量环境规定不太严格。综上所述,选用电阻应变式压
6、力传感器作为电子秤称重传感器是最为适当。电阻应变式压力传感器重要由弹性体、电阻应变片电缆线等构成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,电阻应变片(转换元件)受到拉伸或压缩应变片变形后,它阻值将发生变化(增大或减小),从而使电桥失去平衡,产生相应差动信号,供后续电路测量和解决。电阻应变式传感器测量原理如图2所示。图2 电阻应变式传感器测量原理当垂直正压力P作用于梁上时,梁产生形变,电阻应变片R1、R3受压弯拉伸,阻值增长;R2、R4受压缩,阻值减小。电桥失去平衡,产生不平衡电压,不平衡电压与作用在传感器上载菏P成正比,从而将非电量转化成电量输出。R1、R2、R3和R4构成惠更斯电
7、桥,将2对电阻应变片阻值变化转变成输出电压,其工作原理如图3所示。图3 测量电桥原理3、电子秤专用24位AD转换芯片HX711及其电路HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计24 位A/D 转换器芯片。与同类型其他芯片相比,该芯片集成了涉及稳压电源、片内时钟振荡器等其他同类型芯片所需要外围电路,具备集成度高、响应速度快、抗干扰性强等长处。减少了电子秤整机成本,提高了整机性能和可靠性。该芯片与后端MCU 芯片接口和编程非常简朴,所有控制信号由管脚驱动,无需对芯片内部寄存器编程。输入选取开关可任意选用通道A 或通道B,与其内部低噪声可编程放大器相连。通道A 可编程增
8、益为128 或64,相应满额度差分输入信号幅值分别为20mV或40mV。通道B 则为固定32 增益,用于系统参数检测。芯片内提供稳压电源可以直接向外部传感器和芯片内A/D 转换器提供电源,系统板上无需此外模仿电源。芯片内时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机初始化过程。 HX711内部方框图如图4所示。其外部管脚如图5所示。图4 HX711内部方框图图5 HX711外部管脚图图5为HX711芯片应用于计价秤一种参照电路图。该方案使用内部时钟振荡器(XI=0),10Hz输出数据速率(RATE=0)。电源(2.75.5V)直接取用与MCU 芯片相似供电电源。通道A与传感器相连,通
9、道B通过片外分压电阻与电池相连,用于检测电池电压。图6 HX711计价秤应用参照电路图 本课题设计HX711电路如图7所示:图7 HX711电路4、单片机STC89C52及其电路(1) STC89C52 单片机概述STC89C52系列单片机是宏晶科技生产单时钟/机器周期(1T)单片机,是高速/低功耗/超强抗干扰新一代8051单片机,指令代码完全兼容老式8051,但速度快8-12倍,内部集成MAX810专用复位电路。(2) STC89C52 单片机特点l 增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容老式8051;l 工作电压: 5.5V - 3.5V(5V单片机);l 工作
10、频率范畴:040MHz,相称于普通8051 080MHz;l 顾客应用程序空间 4K/8K/16k/32K/64K字节;l 片上集成1280字节 RAM;l 通用I/O口(32/36个),复位后为准双向口/弱上拉(普通8051老式I/O口);l ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器。l 每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;l 可通过串口(P3.0/P3.1)直接下载顾客程序,数秒即可完毕一片;l 有EEPROM功能;l 看门狗;l 内部集成MAX810专用复位电路(外部晶体12M如下时,复位脚可直接1K电阻到地);l 时钟源
11、:外部高精度晶体/时钟,内部R/C振荡器;l 顾客在下载顾客程序时,可选取是使用内部R/C 振荡器还是外部晶体/ 时钟;l 常温下内部R/C 振荡器频率为:5.0V 单片机为: 11MHz 17MHz;l 共4个16位定期器,两个与老式8051兼容定期器/计数器,16位定期器T0和T1,没有定期器2,但有独立波特率发生器做串行通讯波特率发生器,再加上2路PCA模块可再实现2个16位定期器;l 外部中断I/O口4路,老式下降沿中断或低电平触发中断,并新增支持上升沿中断PCA模块,Power Down模式可由外部中断唤醒;l 通用全双工异步串行口(UART) ;l 工作温度范畴:-40 +85(工
12、业级) / 0 75(商业级) ;l 封装:PDIP-40,PLCC-44。 (3) STC89C52 单片机管脚及封装STC89C52单片机有各种封装形式,本设计中选用40DIP封装,其管脚定义如图8所示。图8 STC89C52 管脚图 本课题设计电子秤单片机应用电路如图9所示:图9 STC89C52单片机电路图中DOUT和PDSCK为单片机与HX711AD转换电路互换数据通信线。beep为蜂鸣器报警信号线,alert为报警灯信号线,RXD和TXD为串口通信线,也可以用于单片机程序串行ISP下载。5、液晶屏电路图10 LCD显示电路液晶屏电路如图10所示。LCD_CS、LCD_RES、LCD
13、_RS、LCD_SDA、LCD_SCK为液晶模块与单片机接口控制线。CS_ZK、SCK_ZK、SO_ZK和SI_ZK为字库和单片机接口控制线。该液晶为晶讯联公司128*64中文屏JLX12864G-086-PC显示信息。该显示模块既可以当成普通图像型液晶显示模块使用(即显示普通图像型单色图片功能),又具有JLX-GB2312 字库IC,可以从字库IC 中读出内置字库点阵数据写入到LCD 驱动IC 中,以达到显示中文目。其接口引脚功能简介:表一 液晶模块接口引脚功能6、矩阵键盘电路矩阵键盘电路如图11所示:图11 矩阵键盘电路图中4*4矩阵键盘可以显示0-9数字、小数点和五个功能键。键盘行扫描信
14、号为ROW1ROW4,列扫描信号为COL1COL4。行信号为输入信号,低电平有效;列信号为输出信号。当没有键按下时,虽然行扫描输入低电平信号,列信号仍为高电平;当行扫描为低电平并且有键按下时,相应列输出低电平。该低电平信号可以定位至按下键位置。7、声光报警电路声光报警电路如图12所示。图12 声光报警电路 当测量重量超过量程时,beep和alert给出低电平信号,驱动蜂鸣器鸣响,报警灯亮。8电源电路本设计采用USB接口供电,电源电压5V。同步,其电路原理如图所示。图16 供电电路三、Protel硬件开发软件Protel是当前国内最流行通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿
15、真和PLD设计等各种实用工具软件组合后构成EDA工作平台,是第一种将EDA软件设计成基于Windows普及型产品。它集成了软件界面、仿真功能和PLD设计和信号完整性分析,在此基本上Protel 99SE又增长了某些新功能,顾客使用更加以便灵活。Protel功能十分强大,在电子电路设计领域占有极其重要地位。它以其强大功能和实用性,逐渐获得广大硬件设计人员青睐,是当前众多EDA设计软件中顾客最多产品之一。1Protel软件构成Protel软件重要由电路原理图设计模块、印制电路板设计模块(PCB设计模块)、电路信号仿真模块和PLD逻辑器件设计模块等构成,各模块具备强大功能,可以较好实现电路设计与分析
16、。(1) 原理图设计模块(Schematic模块)电路原理图是表达电气产品或电路工作原理重要技术文献,电路原理图重要由代表各种电子器件图形符号、线路和结点构成。图4.1所示为一张电路原理图。该原理图是由Schematic模块设计完毕。Schematic模块具备如下功能:丰富而灵活编辑功能、在线库编辑及完善库管理功能、强大设计自动化功能、支持层次化设计功能等。 (2) 印制电路板设计模块(PCB设计模块)印制电路板(PCB)制板图是由电路原理图到制作电路板桥梁。设计了电路原理图后,需要依照原理图生设计成印制电路板制板图,然后在依照制板图制作详细电路板。印制电路板设计模块具备如下重要功能和特点:可
17、完毕复杂印制电路板(PCB)设计;以便而又灵活编辑功能;强大设计自动化功能;在线式库编辑及完善库管理;完备输出系统等。(3) 电路信号仿真模块电路信号仿真模块是一种功能强大数字/模仿混合信号电路仿真器,能提供持续模仿信号和离散数字信号仿真。它运营在ProtelEDA/Client集成环境下,与Protel Advanced Schematic原理图输入程序协同工作,作为Advanced Schematic扩展,为顾客提供了一种完整从设计到验证仿真设计环境。在Protel中进行仿真,只需从仿真用元器件库中放置所需元器件,连接好原理图,加上勉励源,然后单击防真按钮即可自动开始。2PCB板设计(1)
18、 定元件封装 打开网络表(可以运用某些编辑器辅助编辑),将所有封装浏览一遍,保证所有元件封装都对的无误并且元件库中包括所有元件封装,网络表中所有信息所有大写,一面载入出问题,或PCB BOM不持续。 原则元件所有采用公司统一元件库中封装。 元件库中不存在封装,应自己建立元器件库。(2) 建立PCB板框 依照PCB构造图,或相应模板建立PCB文献,涉及安装孔、禁布区等有关信息。 尺寸标注。在钻孔层中应标明PCB精准构造,且不可以形成封闭尺寸标注。(3) 载入网络表 载入网表并排除所有载入问题,详细请看PROTEL技术大全。其她软件载入问题有诸多相似之处,可以借鉴。 如果使用PROTEL,网表须载
19、入两次以上(没有任何提示信息)才可以确认载入无误。(4) 布局 一方面要拟定参照点。普通参照点都设立在左边和底边边框线交点(或延长线交点)上或印制板插件第一种焊盘。 一但参照点拟定后来,元件布局、布线均以此参照点为准。布局推荐使用25MIL网格。 依照规定先将所有有定位规定元件固定并锁定。 布局基本原则 A. 遵循先难后易、先大后小原则。B. 布局可以参照硬件工程师提供原理图和大体布局,依照信号流向规律放置重要原器件。C. 总连线尽量短,核心信号线最短。D. 强信号、弱信号、高电压信号和弱电压信号要完全分开。E. 高频元件间隔要充分。F. 模仿信号、数字信号分开。 相似构造电路某些应尽量采用对
20、称布局。 按照均匀分布、重心平衡、版面美观原则来优化布局。(5) PCB设计遵循规则 地线回路规则:图17 地线回路规则环路最小规则,即信号线与其回路构成环面积要尽量小,环面积要尽量小,环面积越小,对外辐射越少,接受外界干扰也越小。针对这一规则,在地平面分割时,要考虑到地平面与重要信号走线分布,防止由于地平面开槽等带来问题;在双层板设计中,在为电源留下足够空间状况下,应当将留下某些用参照地填充,且增长某些必要过孔,将双面信号有效连接起来,对某些核心信号尽量采用地线隔离,对某些频率较高设计,需特别考虑其地平面信号回路问题,建议采用多层板为宜。 窜扰控制窜扰(CrossTalk)是指PCB上不同网
21、络之间因较长平行布线引起互相干扰,重要是由于平行线间分布电容和分布电感作用。克服窜扰重要办法是:A.加大平行布线间距,遵循3W规则。B.在平行线间插入接地隔离线。C.减少布线层与地平面距离 屏蔽保护图18 屏蔽保护相应地线回路规则,事实上也是为了尽量减小信号回路面积,多用于某些比较重要信号,如时钟信号,同步信号;对某些特别重要,频率特别高信号,应当考虑采用铜轴电缆屏蔽构造设计,即将所布线上下左右用地线隔离,并且还要考虑好如何有效让屏蔽地与实际地平面有效结合。 走线方向控制规则相邻层走线方向成正交构造,避免将不同信号线在相邻层走成同一方向,以减少不必要层间窜扰;当由于板构造限制(如某些背板)难以
22、避免浮现该状况,特别是信号速率较高时,应考虑用地平面隔离各布线层,用地信号线隔离各信号线。 电源与地线层完整性规则对于导通孔密集区域,要注意避免孔在电源和地层挖空区域互相连接,形成对平面层分割,从而破坏平面层完整性,并进而导致信号线在地层 回路面积增大。四、 软件设计1、软件流程图本设计主程序使用了定期器,用来实现每0.5秒称重一次功能,流程图如图19所示。键盘扫描程序如图20所示。 图19 时钟中断程序流程图 图20 键盘扫描程序流程图主程序软件流程如图21所示。 图21 主程序流程图 3、主程序 下面简介main.c主程序编写,其她程序略。(1) 头文献和某些宏定义#include #in
23、clude #include #include lcd.h#include hx711.h#include keyboard.h/定义量程系数#define RATIO 2114/1623(2) 管脚、常量、变量定义/定义标记volatile bit FlagTest = 0;/定期测试标志,每0.5秒置位,测完清0volatile bit FlagKeyPress = 0; /有键按下标志,解决完毕清0volatile bit FlagSetPrice = 0; /价格设立状态标志,设立好为1。/管脚定义sbit LedA = P22;sbit beep = P10;sbit alert =
24、 P11;/显示用变量int Counter;uchar idata str16 = 000000;int i,iTemp;/称重用变量unsigned long idata FullScale;/满量程AD值/1000unsigned long AdVal; /AD采样值unsigned long weight; /重量值,单位gunsigned long idata price; /单价,长整型值,单位为分 unsigned long idata money; /总价,长整型值,单位为分/键盘解决变量uchar keycode;uchar DotPos; /小数点标志及位置 (3) 函数声
25、明void int2str(int,char *);void Data_Init();void Port_Init(); void Timer0_Init();void Timer0_ISR () ;void INT1_Init();void KeyPress(uchar);void To_Zero();void Display_Price();void Display_Weight();void Display_Money();(4) 各子程序/整型转字符串函数,转换范畴0-65536void int2str(int x,char* str) int i=1; int tmp=10; whi
26、le(x/tmp!=0) i+; tmp*=10; tmp=x; stri=0; while(i1) str-i=0+(tmp%10); tmp/=10; str0=tmp+0; /重新找回零点,每次测量前调用void To_Zero() FullScale=ReadCount()/1000; price=0;/显示单价,单位为元,四位整数,两位小数void Display_Price() unsigned int i,j; display_GB2312_string(5,44, ); i = price/100; /得到整数某些 j = price - i*100;/得到小数某些 int2s
27、tr(i,str1); /显示整数某些 if (i=1000) display_GB2312_string(5,44,str1); else if (i=100) display_GB2312_string(5,52,str1); else if (i=10) display_GB2312_string(5,60,str1); else display_GB2312_string(5,68,str1); /显示小数点 display_GB2312_string(5,76,.); /显示小数某些 int2str(j,str1); if (j=10) display_GB2312_string(3
28、,60,str1); else display_GB2312_string(3,68,str1); display_GB2312_string(3,76,.); int2str(j,str1); if (j10) display_GB2312_string(3,84,00); display_GB2312_string(3,100,str1); else if (j999999) /超过显示量程 display_GB2312_string(7,44,-); return; i = money/100; /得到整数某些 j = money - i*100;/得到小数某些 int2str(i,st
29、r1); /显示整数某些 if (i=1000) display_GB2312_string(7,44,str1); else if (i=100) display_GB2312_string(7,52,str1); else if (i=10) display_GB2312_string(7,60,str1); else display_GB2312_string(7,68,str1); /显示小数点 display_GB2312_string(7,76,.); /显示小数某些 int2str(j,str1); if (j= 200) FlagTest = 1; Counter = 0; /
30、按键响应程序,参数是键值/返回键值:/ 7 8 9 10(清0)/ 4 5 6 11(删除)/ 1 2 3 12(未定义)/ 14(未定义) 0 15(.) 13(拟定价格)void KeyPress(uchar keycode) switch (keycode) case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: /当前在设立整数位,要注意price是整型,存储单位为分 if (DotPos = 0) /最多只能设立到千位if (price0x8000) weight=0; weigh
31、t=10000*weight/FullScale; weight=weight*RATIO; /如果超量程,则报警 if (weight = 10000) beep = 0;alert = 0;display_GB2312_string(3,60,-);display_GB2312_string(7,44,-); /如果不超量程 else beep = 1;alert = 1;/显示重量值 Display_Weight(); /如果单价设定好了,则计算价格 if (FlagSetPrice = 1) money = weight*price/1000; /money单位为分 /显示总金额 Di
32、splay_Money(); else display_GB2312_string(7,44, ); /清测试标志 FlagTest = 0; /获取按键 keycode = Getkeyboard(); /有效键值0-15 if (keycode16)&(FlagKeyPress=0) FlagKeyPress = 1; KeyPress(keycode); FlagKeyPress = 0; delay(20); 五、 下载与调试提供例程在uVision4环境下编译,如果是其她版本uVision,只需将所有.c和.h文献拷贝至新建项目,重新编译即可。当编译生成.hex文献后,就可如下载并进
33、行调试了。1、 USB转串口驱动安装打开USB驱动文献夹下PL2303_Prolific_DriverInstaller_v130.exe安装文献,按提示安装USB转串口驱动程序。安装完毕后,插入USB下载线后,在开始-控制面板-打印机和其她硬件-设备管理器,在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表达串标语,如果没有阐明USB转串口驱动没有安装,须重新安装。记住括号里COM标语。图22 成功安装USB转串口驱动示意图2、 下载程序打开STC单片机下载软件文献夹,点击运营STC_ISP_V481.exe程序,浮现如下界面。图23 下载软件对的选取MCU 类型为STC89C52,COM口(与刚才安装COM号一致),最高波特率和最低波特率选取高速,如果不成功则尝试减少拨特率,并打开对的.hex数据文献。点击“Download/下载”按纽,窗口浮现提示:Chinese:正在尝试与 MCU/单片机 握手连接 . Connection is failure. You can try: 1.Give your MCU Power On Reset. 2.Stop operation,then re-select COM Port. 3.Because PLCC-DIP/PQFP-DIP Socket trace too lon