随着电子技术的不断发展,目前市场上使用的传统的电子秤,已经不能满足人们的要 求。根据现有方案的不足,这里分析设计了一种多功能电子计价秤,能够对物品的重量进行称 量,计算出物品的价格,还可以实现去皮称量、累计总价,存储常用物品单价,算出找钱数额 的功能。同时,还可实时检测周围环境的温度。本设计以单片机MSP430F149为核心部件,外围 单元电路有称重模块HX711AD、矩阵键盘、液晶屏LCD12864、温度传感器DS18B20、蜂鸣器以 及存储芯片AT24C16。本系统功能丰富、操作简便、有良好的人机交互界面。
0.引言
由于传统的电子秤的功能简单,只可称量物品 的重量,输入物品的单价,计算出物品的价格。因 此,为了丰富传统电子计价秤的功能,本设计在传统 的电子计价秤的基础上,增添了去皮称量功能、累计 功能、找钱功能、置零功能以及温度检测功能,极大 地满足了人们的各类需求。
1.总体设计方案
多功能电子计价秤m由称重模块、按键模块、 显示模块、温度检测模块、主控模块、存储模块和报 警模块组成。系统的整体设计框图如图1所示。矩 阵键盘由数字键0到9,小数点和功能选择键:清 除、累计、去皮、置零、找钱、储存、输入以及10个储 存常用物品单价的按键M1, M2,…,M10构成。称 重模块由电阻应变式压力传感器、放大电路以及 AD转换模块组成。通过称重模块对物品的重量进 行称量,然后由单片机对称重模块的数据进行采集和处理,并通过显示模块显示出来。按键模块用于 对物品单价的输入以及对系统功能的切换。存储模 块用于对常用物品的单价进行存储。温度检测模块 用于实时检测环境温度。报警模块用于在物品重量 大于15千克或者称重模块工作不正常的时候及时 报警。
2.硬件设计
2.1单片机模块
本设计采用单片机MSP430F149 12 , MSP430系 列的单片机是一个16位单片机,采用了精简指令集 (RISC)结构,具有丰富的寻址方式(7种源操作数 寻址、4种目的操作数寻址)、简洁的27条内核指令 以及大量的模拟指令;大量的寄存器以及片内数据 存储器都可参加多种运算;还有高效的查表处理指 令。这些特点保证了可编制出高效率的源程序。它 具有处理能力强、运算速度快、超低功耗等优点,且 MSP430片内资源丰富,它们分别是看门狗定时器、 定时器A、定时器B,具有捕获/比较功能,大量的捕 获/比较寄存器,可用于事件计数、时序发生、PWM 等。另外,MSP430系列单片机的中断源较多,而且 可以任意嵌套,使用时灵活方便。图2为单片机及 外围电路的电路连接图。
2.2称重模块
本设计的称重模块由电阻应变式压力传感器和 HX711AD0模块组成,HX711AD模块是一款专为高 精度电子秤而设计的,集成了包括稳压电源、片内时 钟振荡器、AD转换电路等其它同类型芯片所需要的 外围电路,具有集成度高、响应速度快、抗干扰性强等 优点。降低了电子秤的整机成本,提高了整机的性能 和可靠性。HX711AD模块A通道带有128倍信号增 益,可以将电压放大128倍,然后采样输出24bit AD 转换后的值,单片机通过指定时序将24bh数据读出。 称重模块的电路连接图如图3所示。在3. 3V的供电 电压下20kg的传感器最大输出电压是:
3.3V x2mV/V =6.6mV 经过A通道将电压放大128倍后,其最大电压 变为,经过AD转换模块后,输出的24bit数字值, 最大为:
422. 4mV x 224/4. 3V = 1648069 在程序中,最大采样值1648069存放为long型, 因此计算速率和存放空间占用资源太多,固将其除 以100,缩放为int型,因此最大采样值变为16481。
假设重力为4kg,测量出来的AD的值为y,则由电 阻应变式压力传感器输出发送给AD模块的电压为:
A kg x 6. 6mV /20kg = 0. 33AmV 经过A通道的128倍的放大后则变为:
128 x0.334 =42.24AmV 转换为24Wt的数字信号为:
42.24AmV x224/4.3V = 164807A 所以:
y =1648074/100 =1648.07A 因此得出:
A = y/1648. 07kg?y/2.15g 2.3存储模块
本系统选用芯片AT24C16 [4对数据进行存储。 它是一种电可擦除可编程只读存储器,即EEPROM (Electrically Erasable Programmable Read-Only Mem-ory) 。AT24C16低功耗,采用两线串行接口,支持双 向数据传输协议,可用电擦除,可编程自定时写周 期。允许在一个写周期内同时对1个字节到一页的 若干字节的变成写入,1页的大小取决于芯片内页 寄存器的大小,AT24C16b]具有16字节数据的页面 写能力。图4为AT24C16的电路连接图。
2.4温度检测模块和报警模块
本设计选用DS18B20 作为温度检测模块,它提供9 ~12位摄氏温度测量而且由一个有高低电平 出发的可编程、不因电源消失而改变的报警功能。 DS18B20通过一个单线接口发送或接受信息,因此 在中央处理器和DS18B20之间仅需要一条连接线。 它的在-10°C ~ +85°C的精度为±5°C。
DS18B20可以在没有外部电源供电的情况下工 作。当总线处于高电平状态,DQ与上拉电阻连接 通过单总线对器件供电。同时处于高电平状态的总 线信号对内部电容充电,在总线处于低电平状态时, 该电容提供能量给器件。这种提供能量的形式被称 为“寄生电源”。能即DS18B20除去了对外部电源 的需求。而且,DS18B20的高速暂存器提供了一个 直接的温度报警值寄存器(TH,TL),和一个字节的 配置寄存器。TH,TL和配置寄存器是非易失性的 可擦除程序寄存器(EEPROM),因此存储的数据在 器件掉电时不会消失。
本系统的报警模块选用的是有源蜂鸣器,其内 部有振汤、驱动电路。只需要加上直流电压即可工 作,使用简单、方便。
3.系统软件设计
此部分使用单片机MSP430F149实现。用IAR 编程软件及C语言编写程序。根据该系统的功能 设计要求,系统的程序主要包括称重模块程序, 温度检测模块程序,键盘扫描程序,液晶显示程序, 掉电存储程序,数据计算程序和报警模块程序。此 处主要介绍存储模块程序、数据计算程序和按键模 块程序。
3.1存储模块程序设计
AT24Cxx系列EEPROM是由美国Mcrochip公 司出品,1 -512K位的支持I2C总线数据传送协议 的串行CMOS E2PROM。I2C总线是PHLIPS公司推 出的一种串行总线,是具备多主机系统所需的包括 总线裁决和高低速器件同步功能的高性能串行总 线。AT24C16的写操作流程图如图5所示, AT24C16的读操作流程图如图6所示。
3.2数据处理程序设计 本设计在对金额进行运算的时候,采用大数乘 法算法中的循环算法。将待相乘的大数存入字符串 中,即单价和重量,然后按位存入较大的数组,循环 按位相乘并累加。最后将进位分离并加到相邻高位 上。其具体程序如下:
void multiply (unsigned char* a,unsigned char* b,
unsigned char* c)
{
int i, j, ca,cb,* s;
ca = 5; cb =4 ;
s = ( int * ) malloc ( sizeof ( int ) * ( ca +
cb) ) ;
for (i =0;i
for (j =0; j < cbf j + + )
s [ + j + 1] + = (a [] - " O ") *
(b j] - W);
for (i = ca + cb - 1 ?;i > =0;i --)
if (s D > =10)
{
s i-1] + =s D /10;
s D % =10;
}
i = 0;
while ( s i] = = 0) i ++ ;
for ( j = 0; i < ca + cb; i + + , j + + ) c j] = s i] + '0'; c j] =^O ; free( s) ;
}
3.3按键模块程序设计
按键模块采用5* 6的矩阵键盘,并采用按键扫 描的方式。先将第一行置为低电平,其它各线置为 高电平,然后查看列线,若列线均为高电平,则说明 没有按键被按下,若有某一列线为低电平,则说明有 按键被按下,且这个键位于第一行的该列;然后再将 第二行置为低电平,其它各线置为高电平,按照查找 第一行的方法依次查找下去。键盘的主要功能有: 对物品单价以及实付钱数进行输入,对常用物品的 单价进行调用和存储,切换输入、累计、置零、去皮、 找钱、储存等附加的功能。按键模块的程序流程图 如图7所示。
按键模块实现如下功能:
①数字按键和小数点:对单价以及实付金额进 行输入。
②输入键:按下输入键,在液晶显示屏第三行 “单价:”后,显示‘“>”,表示正在输入,当输入完毕后,再 次按下输入键‘P”消失,表示物品单价输入成功。
③去皮键:测量物品的净重,即先放上盛物品的 器皿,然后再放上物品,测量值仅为物品的重量。
④累计键:累加不同单价物品的金额,计算出需 要付的总金额。
⑤置零键:在累计模式下按下置零键后,液晶显 示屏上的金额和单价均清空为0,之前的累计金额 也清空为0。当在输入模式下按下置零键时,单价 清零,此时可重新输入单价,起到清除的作用。
⑥储存键以及M0 ~ M10键:用于存储10中常 用物品的单价,掉电后仍可保存,方便随时调用。
4.实验结果
图8展示了整个系统装置,多功能电子计价秤0由称重模块HX711AD、按键模块、温度检测模 块DS18B20、显示模块LCD12864、主控模块 MSP430F149、存储模块AT24C16和报警模块组成。
5.结束语
本设计介绍了一种基于单片机的多功能电子计 价秤。本文以温度检测模块、主控模块和测重模块 为基础的前提下,结合显示、按键模块、存储模块、报 警模块等功能,合理有效地丰富了传统计价器的功 能。DS18B20连接简单,响应速度快、抗干扰能力 强、性价比高。而且,通过按键对系统功能进行切换 并由LCD12864显示出来,更加人性化,提供了良好 的人机交互界面。