自动计价电子秤
一、功能说明
基于AVR单片机设计一自动计价电子秤。根据输入的价格以及检测的重量自动计算总价并打印(串口模拟)。
二、具体要求
1、开机后实时检测重量并显示;
2、通过按键输入并显示价格,具有修改功能;
3、确认后自动计算并显示总价;
4、实时显示单价、重量和总价信息;
5、按下“打印”键后,通过串口发送单价、重量和总价信息;
6、,具有故障检测报警功能;
三、自动计价电子秤报告
摘要:自动计价电子秤使用AVR系列的ATmega16单片机作为主控芯片,通过采集压力传感器MPX4115产生的模拟信号,并将其通过其内部的ADC资源将模拟信号转换成对应的数字信号,并将其显示在八位共阳数码管上。同时设置了四个按键作为系统的单价加、减、计算总价、以及串口显示的功能。我们不仅可以通过数码管,也可以通过串口助手实时的显示出对应的单价、重量、总价的数据。
关键词:ATmega16 压力传感器 ADC 串口
1 设计要求
该自动报价系统要求能够实时的显示出设置的单价、称重的重量,并且在确认好之后计算总价并显示出来。首先该系统需要加入压力传感器得出重量数据,然后通过按键系统能够改变对应物品的单价,这时显示模块就会实时显示物品的重量和单价,待确认之后,按下确认按键计算出对应物品的总价。最后一个按键是串口打印的功能按键,可以通过串口向外发送单价、重量、总价信息。还有,当出现故障的时候,可以进行故障检测的报警提示。
2 总体设计
2.1 系统组成及工作原理
根据题目中的要求,系统共分为单片机处理模块、重量检测模块、按键控制模块、数码管显示模块、串口发送模块。系统的总体框图如图2.1所示。
图2.1 系统总体框图
(1)、单片机处理模块:单片机处理模块负责将重力传感器传递的模拟信号用其内部的ADC通道进行AD转换,同时检测按键数据进行相应的逻辑运算,最后将数据通过串口和数码管显示出来。
(2)、质量检测模块:给单片机的ADC通道传递所称物理重量的模拟信号,以便其进行AD转换。
(3)、按键控制模块:总共四个按键,牵连个按键对物品的单价进行加或减,第三个按键负责计算总价,第四个按键是串口打印按键,将处理好的重量、单价、总价通过串口发送出去。
(4)、串口发送模块:待串口配置好以及数据处理完之后,将对应的数据发送出去,并可以通过串口助手显示出来。
(5)、数码管显示模块:负责显示物品的重量和单价,待计算总价按钮按下之后,显示物品的总价。
2.2 称重传感器测量原理
称重传感器是用来将重量信号或压力信号转换成电量信号的转换装置。称重传感器采用金属电阻应变计组成测量桥路,利用金属电阻丝在张力作用下伸长变细,电阻增加的原理,即金属电阻随所受应变而变化的效应而制成的(应变,就是尺寸的变化)。称重传感器的构造原理金属电阻具有阻碍电流流动的性质,即具有电阻,其阻值依金属的种类而异。同一种金属丝,一般来讲,越是细长,其电阻值就越大。当金属电阻丝受外力作用而伸缩时,其电阻值就会在某一范围内增减。因此,将金属丝(或膜)紧贴在被测物体上,而且这种丝或膜又很细或很薄,粘贴又十分完善,那么,当被测物体受外力而伸缩时,金属电阻丝(膜)也会按比例伸缩,其阻值也会相应变化。称重传感器就是将金属电阻应变计粘贴在金属称重梁上进行测量重量信号的。
3 硬件设计
3.1 单片机处理电路
单片机选型用的是AVR系列的ATmega16型单片机,ATmega16单片机是一款高性能、低功耗的8位AVR微处理器,具有先进的RISC结构,内部有大容量的ROM、RAM、Flash和EEPROM,集成4通道PWM,SPI串行外设接口,同时具有8路10位A/D转换器,对于数据采集系统而言,外部无需单独的A/D转换器,从而可节省成本.另外,该单片机提供JTAG调试接口,可采用自制的简易JTAG仿真器进行程序调试。
单片机处理电路的仿真图如图3.1所示。
图3.1 单片机处理电路的仿真图
3.2 重量检测电路
重量检测电路的是MPX4115模块,这是一款称重传感器,其工作原理在2.2中提到过,这里就不再叙述了。它的一脚对应是数据输出端,连接的是单片机的PA1口,对应的是ADC1通道,可以通过其加减对其当前称重的数据进行调整,用此方法来仿真其称重的具体数据。重量检测电路的仿真图如图3.2所示。
图3.2 重量检测电路的仿真图
3.3 按键控制电路
按键控制电路共设置了四个按键,连接到单片机的PC1-PC4口,不按下按键的时候,端口检测到的是高电平信号,按下去之后,端口检测的是低电平信号。共有四个按键,第一个和第二个按键是对物品单价进行加或减,第三个按键是开始计算总价,第四个按键是通过串口发送数据。按键控制电路的仿真图如图3.3所示。
图3.3 按键控制电路仿真图
3.4 数码管显示电路
本系统的数据显示电路用了八位共阴数码管进行显示,一开始数码管显示的数据左面是重量数据,右面是单价数据,按下去之后,则显示的是总价数据。数码管的位选和段选端接到单片机相应的IO口端。
图3.4 数码管显示电路仿真图
3.5 报警模块
根据题目要求,该设计还设置了报警模块,当重量超过80的时候,对应的LED灯点亮,表示进行报警。报警模块的仿真图如图3.5所示。
图3.5 报警模块仿真图
3.6 串口发送模块
为了模拟串口发送,需要用到虚拟串口,则需要在仿真中加入RS232接口的串口元件,即图中的COMPIM,电脑中需要安装虚拟串口,配置完对应的串口和波特率、数据位、停止位等数据之后,就可以通过串口助手显示单片机发送的数据了。串口发送模块的仿真图如图3.6所示。
图3.6 串口发送模块仿真图
4. 程序设计
4.1 程序顶层设计
按照题目中的要求,本设计的程序算法共分为按键检测与控制程序、串口发送程序、主程序。
4.2主程序设计
主程序的工作流程图如图4.1所示。首先进行单片机初始化,然后进行其他功能模块的初始化,接下来称重传感器工作输出所称物体的重量数据,然后单片机通过AD转换将重物的模拟数据转换成相应的数字数据,即得到物体重量。然后判断是否重量是否超过80,是的话就进行相应的报警。
然后通过第一个和第二个按键得到物体的单价,待单价和重量数据都准备好之后,计算总价,并且通过数码管和串口发送到串口助手进行数据显示。整个程序的完整工作流程即结束。
图4.1 主程序的工作流程图
4.3 按键检测与控制程序
按键检测与控制程序的流程图如图4.2所示,首先进行按键初始化,然后判断单价按键是否按下,如果按下,则通过其按下的次数和组合得到单价数据,如果没有按下,则继续等待;然后判断计算总价按键是否按下,如果按下则计算得到总价数据,如果没有按下,则继续等待;接着判断串口打印按键。如果按下,则通过串口发送数据,如果没有按下,则继续等待。
4.4 串口发送程序流程图
串口发送程序的流程图如图4.4所示。首先进行初始化,然后设置波特率,然后设置串口的数据位、校验位、停止位等配置数据,然后就可以发送数据。
图4.3 按键检测与控制程序流程图
图4.4 串口发送程序流程图
5 仿真测试
5.1 称重数据显示
数码管显示的数据分为两个,A后面的数据是物体的总重,B后面的数据是物体的单价。一开始物体的重量是73.8,对应数码管显示的数据为74.1,显示的效果如图5.1所示。然后改变物体重量为75,显示的数据为75.5,显示的效果图如图5.2所示。误差进不超过百分之1。
图5.1 实重为73.8的称重显示仿真图
图5.2 实重为75的称重显示仿真图
5.2 单价改变测试
单价需要通过前两个按键进行控制,每按一下,单价变化0.1,一开始按第一个按键3次,将其单价变为0.3,仿真效果图如图5.3所示,然后按第二个按键1次,将其单价变为0.2,仿真效果图如图5.4所示。
图5.3 单价变为0.3的仿真图
图5.4 单价变为0.2的仿真图
5.3 总重计算测试
首先重量显示为75.5,单价为0.3,按下计算总价按钮,总价应该为22.65显示效果图如图5.5所示;接着重量显示为75.5,单价为0.2,按下计算总价按钮,总价应为15.1,显示效果图如图5.6所示。
图5.5 总价为22.65的仿真图
图5.5 总价为15.1的仿真图
5.4 串口通信测试
首先需要安装虚拟串口,然后运行程序,发送单价、重量、和总价数据,单价为0.2,重量为74.2,总价为14.84,串口助手显示效果图如图5.6所示。
图5.6 串口助手显示数据图
5.5 故障检测测试
当检测的物体重量超过80,LED亮表示提示,设置温度为80.1,显示的效果图如图5.7所示。
图5.7 故障检测测试仿真图
7. 总结
本实验以ATmega16单片机作为控制核心,通过称重传感器检测物体的重量,单片机通过AD转换把物体重量的模拟数据转换为相应的数字数据,然后通过按键调整物体的单价,然后通过计算总价案件计算物体总结,接着通过数码管显示和串口助手显示。
本实验通过在PROTEUS上进行原理图仿真,ICCAVR上编写代码,基本上达到了题目中的要求,并且具有良好的兼容性。
附录
整体原理图