毕业设计(论文)基于ATmega48单片机的电子秤设计

上传人:1888****888 文档编号:39617848 上传时间:2021-11-11 格式:DOC 页数:63 大小:2.57MB
返回 下载 相关 举报
毕业设计(论文)基于ATmega48单片机的电子秤设计_第1页
第1页 / 共63页
毕业设计(论文)基于ATmega48单片机的电子秤设计_第2页
第2页 / 共63页
毕业设计(论文)基于ATmega48单片机的电子秤设计_第3页
第3页 / 共63页
点击查看更多>>
资源描述
目录 1 绪论.11.1 课题的背景及意义 .11.2 电子称重技术的发展概况 .12 系统的总体设计.32.1 电子称重技术的基本原理 .32.2 系统的组成 .32.3 电源电路 .33 系统的硬件设计.53.1 模拟电路设计 .53.2 数字电路设计 .114 系统的软件设计.184.1 软件的设计思想 .184.2 主程序流程图 .184.3 主要程序模块设计 .194.4 使用操作说明 .205 总体调试.225.1 测试仪表 .225.2 操作方法 .225.3 测试方法 .225.4 测试数据及测试结果分析 .22结论.24参考文献.25致 谢.26附录 1:软件程序 .27附录 2:英文资料 .45附录 3:英文翻译 .5511 1 绪论绪论电子衡器一般是指装有电子装置的衡器。因其种类繁多,且涉及到贸易结算和保护广大消费者的利益,所以为世界各国政府普遍关注和重视,并被确定为国家强制管理的法制计量器具。电子衡器是自动化称重控制和贸易计量的重要手段,对加强企业管理、严格生产、贸易结算、交通运输、港口计量和科学研究都起到了重要作用。电子衡器具有反应速度快,测量范围广、应用面广、结构简单、使用操作方便、信号远传、便于计算机控制等特点。被广泛应用于煤炭、石油、化工、电力、轻工、冶金、矿山、交通运输、港口、建筑、机械制造和国防等各个领域。 1.11.1 课题的背景及意义课题的背景及意义电子称重技术是从50年代中期电子技术深入到衡器的辅助侧量技术,从60年初出现了机电结合电子衡器开始,迅速发展成为一门新兴技术,它是集传感器技术、微电子技术、计算机控制及测试技术、机械制造自动化技术、物料输送和管理技术为一体的综合技术,是现代称重计量和控制系统工程的重要技术基础。应用电子称重技术开发的电子称重系统,具有广阔的应用领域和较强的渗透性、同其它高技术产业一样,电子衡器产业也是国家经济和科学竞争的重要阵地。1.21.2 电子称重技术的发展概况电子称重技术的发展概况1.2.11.2.1 国内外的发展状况国内外的发展状况电子称重技术是五六十年代发展起来的一门新兴技术。在我国发展比较晚,大约在80年代初才开始进入我国,随着计算机技术的普及电子称重技术在我国得到了长足的发展,在其在商业衡器领域电子秤的应用比例已达到7.7%,在工业计量领域电子称重技术也广泛应用于石油、化工、冶金、港口和码头、粮食等需定量包装的各个行业。虽然我国的电子衡器水平有了相当的提高:但与发达国家相比,无论应用指标还是技术指标都有很大的差距,如国外的商用电子衡器的比例大约在80%以上,而我国目前仅7.7%,在高档次的电子称重产品中,如定量包装秤、配料秤、自动校检秤仍2刚刚起步,水平尚待提高。在称重的理论研究方面存在巨大的差异。据悉,近年国际上解决运动中和振动中的动态称重的问题,运用了工程动力学的称重原理与技术处理动态称重问题:突破了依赖静力场下力平衡的称重原理,相比之下我国在称重理论研究方面相当薄弱15-61新材料,新技术的应用也同国外发达国家相比有很大的差距。在国际上衡器的发展几乎能与计算机技术、微电子技术同步发展,己向数字化和智能化方向发展,而我国还处于刚刚起步阶段。1.2.21.2.2 发展趋势发展趋势通过分析近年来电子秤的发展情况及国内外市场的需求,电子秤的发展趋势是小型化、模块化、集成化、智能化;其技术性能趋向是速率高、准确度高、稳定性高、可靠性高;其功能趋向是称重计量的控制信息和非控制信息并重的“智能化”功能;其应用性能趋向于综合性和组合性。其中小型化与智能化是最重要的发展趋势。体积小、高度低、重量轻,即小、薄、轻。近几年新研制的电子秤结构充分体现了小薄轻的发展方向。电子秤的重显示控制器与电子计算机组合,利用电子计算机的智能来增加称重显示控制器的功能,充分体现了智能化。32 2 系统的总体设计系统的总体设计2.12.1 电子称重技术的基本原理电子称重技术的基本原理称重技术的根本任务是测量各种状态下物体重量。实质上是测量被称物体质量,我们知道,质量的测量是物体在重力场下的重力测量获得的,用公式W=mg,w是物体的重量,g是在重力场的重力加速度,m是物体的质量。目前无论是利用杠杆的原理,还是利用弹性元件的弹力与被测物体的重力达到平衡来测量物体的质量,都没有离开两个必须的条件:一是重力场,二是静力平衡。随着现代传感技术的发展,人们已从传统的机械杠杆原理测量物体的质量,发展到现在的电子称重,即用传感器把重力信号转变成电信号,利用电子计算机技术,根据电信号同重力信号的数学模型,间接的求出物体的质量。2.22.2 系统的组成系统的组成本系统以 ATmega48 单片机为核心,主要制作原理是通过压力传感器使物品的压力信号转变为微弱的电信号,运用信号放大调理电路使电信号得到放大和整理,再将此信号进行 A/D 转换,使模拟信号转换成数字信号,再将其输入单片机中,利用单片机对其进行处理,最后用数码管显示出来。本系统主要由压力传感器、信号放大电路、A/D 转换、信号处理、键盘输入、数码管显示、报警电路、电源等组成。系统总体框图如下:压力传感器前端信号处理AVR单片机LED显示键盘输入图 2-1 系统总体框图2.32.3 电源电路电源电路系统需要5V,12V 电源,传感器需要+5V 的线性电源4图 2-2 电源电路图53 3 系统的硬件设计系统的硬件设计电子秤的硬件设计主要包括模拟电路部分和数字电路部分,模拟电路部分的功能主要是实现压力信号与电信号的转换、信号放大输出。数字电路部分的功能主要是实现 A/D 转换、显示、通讯等功能。本系统采用 ATMEL 公司的 atmega48 型单片机,具有运算速度快,数据处理能力强等特点。广泛应用于各类检测和工业控制系统,还适用于一般的信号处理和高级智能仪器,以及高性能的计算机外部设备控制器和办公自动化设备控制器。3.13.1 模拟电路设计模拟电路设计3.1.13.1.1 传感器传感器传感器(SENSOR)是由敏感元件和转换元件组成的可将电量或非电量转换为可测量的电量的检测装置。传感器技术是现代科技的前沿技术,是现代信息技术的三大支柱之一,其水平高低是衡量一个国家科技发展水平的重要标志之一。传感器产业也是国内外公认的具有发展前途的高技术产业,它以其技术含量高、经济效益好、渗透能力强、市场前景广等特点为世人瞩目。1压力传感器是工业实践中最为常用的一种传感器,而我们通常使用的压力传感器主要是利用压电效应制造而成的,这样的传感器也称为压电传感器。目前广泛应用的是电阻应变片式称重传感器。电阻应变式传感器主要有两部分组成,一个是弹性敏感元件,我们称弹性体,它把被测物的重量转变成弹性体的应变值,另一个是电阻应变片,它把弹性体的应变同步的转换成电阻值的变化,弹性体在弹性范围内的变化符合如下的数学公式: (3-1)LFLES6式中 弹性体的相对变形;, 弹性体的长度及其变化值;LLF 重量 (kg);E 弹性体的弹性模量();2Kg mmS 弹性体的截面积();2mm压阻式压力传感器,在硅基片上用扩散工艺制成4个电阻阻值相等的应变元件构成惠斯顿电桥。2当压力传感器受到压力作用时,一对桥臂的电阻值增大R,另一对桥臂的电阻值减少R,电阻变化量R与压力成正比,电桥如图所示:图3-1 传感器工作原理图此时: (受压桥) (3-2)3113RRKRR (受拉桥) (3-3)2424RRKRR 所以 (3-4)0121KuKu近似地 (3-5)012uku式中 电阻应变计的应变灵敏度;k 弹性体的泊松比;7 传感器的灵敏度。即单位电压供桥时的电桥输出电压。30uu随着技术的进步,由称重传感器制作的电子衡器已广泛地应用到各行各业,实现了对物料的快速、准确的称量,特别是随着微处理机的出现,工业生产过程自动化程度化的不断提高,称重传感器已成为过程控制中的一种必需的装置,从以前不能称重的大型罐、料斗等重量计测以及吊车秤、汽车秤等计测控制,到混合分配多种原料的配料系统、生产工艺中的自动检测和粉粒体进料量控制等,都应用了称重传感器,目前,称重传感器几乎运用到了所有的称重领域。4根据以上分析我们知道可以利用称重传感器把物体的重量通过传力机构作用于称重传感器,传感器输出电信号给单片机系统的前置电路,经滤波放大,模数转换传给计算机。5计算机系统利用其快速的数据处理能力,通过线性变换把它转换成重力信号并且完成显示及控制功能。3.1.23.1.2 前级放大器前级放大器在测量控制系统中,用来放大传感器输出的微弱电压、电流或电荷信号的放大电路称为测量放大电路,亦称仪用放大电路。6 前级放大电路的主要作用是提供足够大的增益,把传感器输出的微弱信号放大到足够的幅度,并且有足够大的共模抑制比,排除各种外来的共模干扰。压力传感器输出的电压信号为毫伏级,所以对运算放大器要求很高。7对信号进行放大可以利用普通低温漂运算放大器构成多级放大器。但是普通低温漂运算放大器构成多级放大器会引入大量噪声。由于 A/D 转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度,所以不宜采用。比较成熟的电路是三运放仪表放大电路,在提供大的共模抑制比的情况下,通过调节外部的一个电阻即可以灵活的设定增益范围,采用通用的运放 OP07 加精密电阻做成三运放测量放大器。其优点是元器件易得,价格便宜,其难点是必须保证各个元器件的精度,才能提高系统整体的共模抑制能力。由高精度低漂移运算放大器构成差动放大器。8差动放大器是把二个输入信号分别输入到运算放大器的同相和反相二个输入端,然后在输出端取出二个信号的差模成分,而尽量抑制二个信号的共模成分。差动放大器具有高输入阻抗,增益高的特点,电路图如下:832674U1OP0732674U2OP0732674U3OP07Rg1KR110KR210KR310KR410KR510KR610KR710KUi1Ui2Uo+12-12+12-12+12-12Uo1Uo2图 3-2 前级放大电路图输入级加入两个同相放大器,增大了输入阻抗,第二级为差动放大电路比较符合应用要求。图 3-2 中: (3-6)111121oiiggRRUUURR (3-7)222221oiiggRRUUURR (3-8)12552121331ooooogRRRRUUUUURRR测量放大器的增益: (3-9) 5123211oUgiiURRRAUURR测量放大器是一种带有精密差动电压增益的器件,具有高输人阻抗、低输出阻抗 ,强抗共模干扰能力、低温漂、低失调电压和高稳定增益等特点, 在检测微弱信号的系统中被广泛用作前置放大器。9用 Multisim7 软件进行电路仿真:(1)观测输入输出波形在 Multisim7 的电路窗口中创建电路,单击按钮进行仿真。双击示波器图标,打开示波器面板,观察输入、输出波形。9uiuO图 3-3 测量放大电路的输入、输出(2)测量电路的性能运用 Transfer Function Analysis 方法测量放大器的放大倍数、输入电阻和输出电阻。按 Simulate 按钮运行仿真,结果如图 3-5 所示。图 3-4 Transfer Function Analysis 参数设置放大倍数输入电阻输出电阻图 3-5 Transfer Function Analysis 的仿真结果(3)测量放大电路的通频带运行电路,双击波特仪图标,打开波特仪面板,观察电路的幅频特性曲线。移动垂直光标,测量幅度下降 3dB 时的频率,即为电路通频带,见图 3-6。10(4)测量共模抑制比测量共模抑制比的电路如图 3-7 所示。将输入两运放接同一输入信号,即为共模输入方式,用示波器观测输出波形,将输出电压与输入电压相比,可得到共模电压放大倍数。然后用差模电压放大倍数比共模电压放大倍数即得到电路的共模抑制比。U1ALM324AJ321141U1BLM324AJ561147R251kOhm R351kOhm V310mV 1kHz 0Deg XSC1ABGTV112 V V212 V R410kOhm R510kOhm R610kOhm R710kOhm U1CLM324AJ1091148R11kOhm .1.3.1.3 报警电路报警电路1122LS1SPEAKERQ219013R321kR3110KVCCPWM012J19(OC0A(PD6图 3-8 报警电路图 3-6 测量放大电路的幅频特性图 3-7 测量共模抑制比电路113.23.2 数字电路设计数字电路设计3.2.13.2.1 单片机单片机 AVR 单片机是 1997 年由 ATMEL 公司研发出的增强型内置 Flash 的 RISC(Reduced Instruction Set CPU) 精简指令集高速 8 位单片机。AVR 的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。 (1)AVR 的主要特性 高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。AVR 单片机硬件结构采取 8 位机与 16 位机的折中策略,即采用局部寄存器存堆(32 个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故 AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。 AVR 单片机内嵌高质量的 Flash 程序存储器,擦写方便,支持 ISP 和 IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的 EEProm 可长期保存关键数据,避免断电丢失。片内大容量的 RAM 不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像 MCS-51 单片机那样扩展外部 RAM。 AVR 单片机片内具备多种独立的时钟分频器,分别供 URAT、I2C、SPI 使用。其中与 8/16 位定时器配合的具有多达 10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR 单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出 PWM)”更是令人耳目一新。10增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时) 、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过 MCS-51/96 单片机的串口,加之 AVR 单片机高速,中断服务时间短,故可实现高波特率通讯。 12多个复位源(自动上下电复位、外部复位、看门狗复位、BOD 复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。 11应用 AVR 单片机进行高速信号采集和处理具有 51 不可比拟的优势。实践表明,使用 4MHz 时钟的 AVR 单片机较使用相同时钟的 51 系列单片机具有 20 倍以上的速度和性能。而且 AVR 提供的 JTAG/ISP 接口,可以使用户方便进行在线仿真调试和适时程序更新。使用 AVR 单片机开发产品具有开发周期短,成本低廉等特点,因为对于使用熟练的开发者,所需要的开发工具就是一根自制的 ISP 下载线即可(成本不过十几元) 。ATMEL 公司将推出的新型 AVR 单片机将带有 CAN、USB 等等,继续降低功耗。(2)ATmega48 的特点本系统基于 AVR 单片机来实现,因为系统需要大量的控制显示和键盘。不宜采用大规模可编程逻辑器件:CPLD、FPGA 来实现。 (因为大规模可编程逻辑器件一般是使用状态机方式来实现,即所解决的问题都是规则的有限状态转换问题。本系统状态较多,难度较大。 )另外系统没有其它高标准的要求,我们最终选择了ATmega48 单片机来实现系统设计。ATmega48 单片机图如下:PB418PB519AVCC20AREF21AGND22PC023PC124PC225PC326PC427PC528PC6(RE ST)1PD0(RX D)2PD1(T XD)3PD2(INT0)4PD3(INT1)5PD4(XCK/T 0)6VCC7GND8PB69PB710PB115PB216PB317PD511PD612PD713PB014U1MEGE 48PC6PD0PD1PD2PD3PD4PB6PB7PD5PD6PD7PB0PC5PC4PC3PC2PC1PC0PB5PB4PB3PB2PB1DU1RU11KVCC图 3-9 ATmega48 单片机ATmega48是基于AVR增强型RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间, ATmega48 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。ATmega48有如下特点: 4K字节的系统内可编程Flash(具有在编程过程中还可以读的能力,即RWW), 256字节 EEPROM, 512节 SRAM,23 个通用13I/O 口线, 32 个通用工作寄存器,三个具有比较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线串行接口,一个SPI 串行端口,一个 6 路10 位ADC (TQFP 与MLF 封装的器件具有8 路10 位ADC), 具有片内振荡器的可编程看门狗定时器,以及五种可以通过软件选择的省电模式。空闲模式时CPU 停止工作,而SRAM、T/C、USART、两线串行接口、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基准,器件的其他部分则处于睡眠状态; ADC 噪声抑制模式时CPU 和所有的I/O 模块停止运行,而异步定时器和ADC 继续工作,以减少ADC 转换时的开关噪声; Standby 模式时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力。ATmega48是以Atmel 的高密度非易失性内存技术生产的。片内 ISP Flash 可以通过SPI 接口、通用编程器,或引导程序进行多次编程。引导程序可以使用任意接口将应用程序来下载到应用Flash 存储区。在更新应用Flash 存储区时引导程序区的代码继续运行,从而实现了FLASH 的RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash集成在一个芯片内, ATmega48为许多嵌入式控制应用提供了灵活而低成本的方案。3.2.23.2.2 A/DA/D 转换转换微型计算机在实时控制、在线动态测量和对物理过程进行监控,以及图像、语言处理领域的应用中,都要与一些连续变化的模拟量(温度、压力、流量、位移、速度、光亮度、声音等模拟量)打交道,但数字计算机本身只能识别和处理数字量,因此必须经过转换器,把模拟量转换成数字量或将数字量转换成模拟量,才能实现CPU 与被控对象之间的信息交换,所以微机在面向自动控制、自动测量和自动监测系统与各种被控对象发生关系时,就需设置模拟接口。显然,模拟接口电路的作用,在于把微机处理器系统的离散信号与模拟设备中连续变化的模拟电压、电流之间建立起适配关系,以便计算机执行控制与测量任务。12A/D 转换器是将模拟电压或电流转换成数字量的器件或装置,它是一个模拟系统和计算机之间的接口,它在数据采集和控制系统中,得到了广泛的应用。常用的A/D 转换方式有逐次逼近式和双斜积分式,前者转换时间短(几十个微秒-几百微秒),14但抗干扰能力强。13随着称重技术的不断发展,人们对称重仪表的测量精度和自动化程度提出了越来越高的要求。近年来电阻应变称重传感器的制造技术有了突破性发展,传感器的各项技术指标已满足各种电子称重设备的要求。而精度的提高除了与测量传感器有关系外,AD转换器件也是影响称重仪表精度的一个重要的方面。选择合适的、高精度的模数转换器件将大幅度提高称重仪表的性能和精度,减少占用硬件资源。本系统采用ATmega48自带的8 路10 位AD转换器。(1) A/D 转换器的基本工作原理。 A/D 转换器的转换方式通常有逐位比较转换方式和双积分转换方式,前者的转换速度比后者的转换速度快 100 倍以上,所以逐位比较转换法的 A/D 转换器广泛用于计算机控制系统中。14逐位比较转换法的原理如图 3-9 所示,数/模转换SAR时序及控制逻辑转换命令状态线比较器_+数字量基准电源输入模拟电压输出图 3-10 A/D 转换器原理图它主要由控制时序和逻辑电路、逐位逼近寄存器(SAR) 、D/A 转换器和比较器四部分组成。逐位逼近寄存器(SAR)输出二进制编码数字送到 D/A 转换器,D/A 转换后的输出电逻辑电路,修改 SAR 的数据,使 SAR 中的数据对应的反馈电压 V0通过逐位比较去逼近被转换的输入电压 VIN。其转换过程类似于天平称重的原理。当V0VIN 时,就将对应的比较位置为“0” ,当 V0VIN 时,则保留比较位为“1” ,然后15对下一位进行比较,直到每一位都比较完后,其 V0与 VIN的电压差小于或等 D/A 转换器精度。 (2) ATmega48 自带模数转换器的特点: 1010 位 精度 0.50.5 LSBLSB 的非线性度 2 2 LSBLSB 的绝对精度 6565 - - 260260 ss 的转换时间 最高分辨率时采样率高达1515 kSPSkSPS 6 6 路复用的单端输入通道 2 2 路附加的复用单端输入通道(TQFP(TQFP 与MLFMLF 封装) ) 可选的向左调整ADCADC 读数 0 0 - - VCCVCC 的 ADCADC 输入电压范围 可选的1.1V1.1V ADCADC 参考电压 连续转换或单次转换模式 ADCADC 转换结束中断 基于睡眠模式的噪声抑制器ATmega48 有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能对来自端口A的8 路单端输入电压进行采样。单端电压输入以0V (GND) 为基准。ADC 包括一个采样保持电路,以确保在转换过程中输入到ADC 的电压保持恒定。ADC 由AVCC 引脚单独提供电源。AVCC 与VCC 之间的偏差不能超过 0.3V。标称值为1.1V 的基准电压,以及AVCC,都位于器件之内。基准电压可以通过在AREF引脚上加一个电容进行解耦,以更好地抑制噪声。ADC 通过逐次逼近的方法将输入的模拟电压转换成一个10 位的数字量。最小值代表GND,最大值代表AREF引脚上的电压再减去1 LSB。通过写ADMUX寄存器的REFSn位可以把AVCC 或内部1.1V 的参考电压连接到AREF 引脚。在AREF 上外加电容可以对片内参考电压进行解耦以提高噪声抑制性能。模拟输入通道可以通过写ADMUX寄存器的MUX位来选择。任何ADC输入引脚,像GND及固定能隙参考电压,都可以作为ADC 的单端输入。通过设置ADCSRA 寄存器的ADEN即可启动ADC。只有当ADEN 置位时参考电压及输入通道选择才生效。ADC转换结果为10位,存放于ADC数据寄存器ADCH及ADCL中。默认情况下转换结16果为右对齐,但可通过设置ADMUX 寄存器的ADLAR 变为左对齐。如果要求转换结果左对齐,且最高只需8 位的转换精度,那么只要读取ADCH 就足够了。否则要先读ADCL,再读ADCH,以保证数据寄存器中的内容是同一次转换的结果。一旦读出ADCL, ADC 对数据寄存器的寻址就被阻止了。也就是说,读取ADCL 之后,即使在读ADCH 之前又有一次ADC 转换结束,数据寄存器的数据也不会更新,从而保证了转换结果不丢失。ADCH 被读出后, ADC 即可再次访问ADCH 及ADCL 寄存器。ADC转换结果如下: (3-10)1024INREFADCVV式中,为被选中引脚的输入电压,为参考电压。INVREFVA/D 转换器接口:使 CPU 能起动 A/D 转换,并将转换结果传给 CPU。必须在两者之间设置接口与控制电路。接口电路的构成取决于 A/D 转换器本身的性能特点,又取决于采用何种方式读取 A/D 转换结果 CPU 读取 A/D 转换数据的方法有三种,查询法,定时法和中断法。15本系统采用定时法读 A/D 转换所需时间 Tc,那么起动 A/D 后,只需等待该段时间,就可以读 A/D 转换器。 3.2.33.2.3 键盘输入键盘输入键盘输入是人机交互界面中最重要的组成部分,它是系统接受用户指令的直接途径。16键盘接口图:11220SW-PB1SW-PB2SW-PB3SW-PB4SW-PB5SW-PB6SW-PB7SW-PB8SW-PB9SW-PBASW-PBBSW-PBCSW-PBDSW-PBESW-PBFSW-PBRJ1330RJ2330RJ3330RJ433012345678J6KEY71236450图 3-11 键盘接口电路173.2.4 显示输出显示输出显示电路是智能仪表的重要功能电路之一,为简化电路、降低成本,通常采用动态显示方式来实现。本系统采用四位 LED 显示。接口电路如下:abfcgdeDPY1234567abcdefg8dpdpSEL9DS2abfcgdeDPY1234567abcdefg8dpdpSEL9DS3abfcgdeDPY1234567abcdefg8dpdpSEL9DS4abfcgdeDPY1234567abcdefg8dpdpSEL9DS1LIGH1LIGH2LIGH0LIGH3LE D0LE D1LE D4LE D6LE D3LE D2LE D5LE D7LE D0LE D1LE D4LE D6LE D3LE D2LE D5LE D7LE D0LE D1LE D4LE D6LE D3LE D2LE D5LE D7LE D0LE D1LE D4LE D6LE D3LE D2LE D5LE D7RL0220X5RL1RL2RL3RL4RL5RL6RL7LE D0LE D1LE D4LE D6LE D3LE D2LE D5LE D712345678J34LE D1LIGH2LIGH1LIGH034U9B74ALS0656U9C74ALS0612U9A74ALS0689U9D74ALS06LIGH31011U9E74ALS06GND71213VCC14U9F74ALS06VCC123456J33LE D212J18图 3-12 LED 显示接口电路184 4 系统的软件设计系统的软件设计4.14.1 软件的设计思想软件的设计思想采用模块化程序设计与结构程序设计的方法,即将程序整体分解为几个相对独立的程序模块:键处理显示模块、数据采集与处理模块、数据控制模块、报警程序模块、参数显示偏移计算模块等等。整体程序安排为:首先进行系统初始化,然后打开中断,等待中断信号,最后查询压力越界标志,判断是否进行报警处理。各键程序按照各自的功能进行处理。本系统采用 C 语言作为编程语言。汇编语言作为传统嵌入式系统的编程语言,具有执行效率高等优点,但其本身是一种低级语言,编成效率低下,且可移植性和可读性差,维护极不方便,从而导致整个系统的可靠性也较差。而 C 语言以其结构化和能产生高效代码等优势满足了设计要求,是嵌入式系统编程的首选。用 C 语言进行嵌入式系统的开发,具有汇编语言编程所不可比拟的优势:可以大幅度加快开发进度;无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业水平的程序;可以实现软件的结构化编程,她使得软件的逻辑结构变得清晰、有条理,便于开发小组计划项目、分工合作。源程序的可读性和可维护性都很好;省去了人工分配单片机资源的工作;可移植性强;C 语言提供 auto、static、flash 等存储类型。由于涉及到大量数据的运算,程序不宜采用汇编语言,C 语言大大缩短了开发时间,且程序可读性非常好。17软件所实现的功能 称重 计价 累计,去皮 标定 键盘、显示4.24.2 主程序流程图主程序流程图系统的主程序流程框图如图 4-1 所示:19图 4-1 系统的主程序流程框图4.34.3 主要程序模块设计主要程序模块设计4.3.14.3.1 A/DA/D 转换模块转换模块采用 Mega48 内置 10 位逐次逼近式 A/D 转换器,完成模数转换。前级放大电路的输出与单片机的 PC5 口相连,将输入信号进行 A/D 转换。开开始始端端口口初初始始化化AD初初始始化化键键盘盘扫扫描描,是是否否有有键键按按下下?B键键(显显示示重重量量)?转转B键键子子程程序序E键键(清清单单价价)?F键键(设设定定单单价价)?A 键键(输输入入单单价价)?计计算算显显示示单单价价清清零零转转F键键子子程程序序转转A键键子子程程序序否是否是是是是20数据采集与数据处理模块针对的是由 A/D 转换器转换的压力字信号。包括采样通道选择与数据采样子程序。4.3.24.3.2 键盘扫描模块键盘扫描模块本系统采用 44 键盘,键盘电路与单片机的 PD0-PD7 口相连。键盘的扫描程序步骤如下: 查询是否有键按下。 查询按下键所在的行、列位置。 对得到的行号和列号译码,得到键值。 键的抖动处理,延时扫描。4.3.34.3.3 显示模块显示模块采用 4 位动态 LED 显示。段选码端口 I/O1 用来输出显示字符的段选码,与单片机 PB0-PB7 口相连。位选码端口 I/O2 与单片机 PC0-PC3 口相连。I/O1 不断送待显示字符的段选码,I/O2 不断送出不同的位扫描码,并使每位显示字符停留一段时间,一般为 1-5ms。利用眼睛的视觉惯性,从显示器上便可以见到相当稳定的数字显示。选择一动态扫描的频率有一定的要求,频率太低,LED 将出现闪烁现象。如频率太高,由于每个 LED 点亮的时间太短,LED 的亮度太低,肉眼无法看清,所以一般取几个 ms 左右为宜。4.44.4 使用操作说明使用操作说明本系统采用 16 键键盘来实现,分为数字键:0-9 为数字键,6 个控制键。开机正确输入后,进入称重显示。A 键 输入商品单价;B 键 显示商品重量;本次称重结束退出,进行下一次称重;C 键 确认键,可以将当前信息保存至购物清单;并且将金额累加,得到所购买商品的总金额;D 键 去皮键,用于去除皮重;E 键 清单价,用于输入的单价错误的时候,重新输入;F 键 用于设置单价;设定商品单价:开机后按两次 F 键,第二次按下 F 键后显示 F 即可设置单价。输入商品代码,按确认键 C 确定,显示所输入的价格;再输入第二种商品的代码,21按确认键确定,以此类推,最多可设定十种商品的单价。要设定的单价设定完后,按 B 键退出设置单价状态,返回称重状态。未设置商品单价时亦可直接输入商品价格,称重过程如下:开机后按 B 键进入称重状态,显示商品重量,按 D 键去除包装皮重,按确定键C 显示去皮后重量,按一次 A 键显示零,输入商品单价,按 C 键确定,显示商品总价格。运行中如果顾客购买已存入的 10 种商品,只需按下相应的商品键,再按确认键,即可保存此商品的信息,包括其重量,金额和当前累计金额。另外,已存入的 10 种商品的单价均可重新设置,直接输入其单价即可,方便实用。如果所称重物超过了系统最大量程 5Kg,则蜂明器发出报警声音。225 5 总体调试总体调试5.15.1 测试仪表测试仪表4 位半数字万用表(MASTECH MY-65),双踪示波器(YB4325),从 1g 到 1000g的砝码(两套) ,计算器5.25.2 操作方法操作方法 把传感器放平,接通电源,预热 10 分钟内,零点有漂移属正常; 如果空称时显示不为零,可按去皮键清零;如需去除器皿皮重,先按去皮键,再在器皿上放物件,则显示净重; 第一次使用或较长时间未用,则需用砝码标定; 如果物品重量超出测量范围,蜂鸣器发出警告; 单价设置时,先按设置键,再用数字键输入单价,可使用删除键修改。5.35.3 测试方法测试方法 电子秤放平,预热 10 分钟以上; 把 1g 到 10000g 的砝码往秤上放,读取显示重量; 设置单价,当物件重量变化时,读取相应的金额; 使用累计功能,读取总金额; 用 1000g 的砝码标称,标定功能; 使用汇总功能。5.45.4 测试数据及测试结果分析测试数据及测试结果分析5.4.15.4.1 测试数据测试数据 按照操作方法,在实验室对 1g 到 10000g 的砝码进行测试,从小到大,然后从大到小,间隔一定时间,共测量 10 个来回,共 20 次;5.4.25.4.2 测试结果及分析测试结果及分析 23 表一:重量测试结果与误差分析实际重量测示重量绝对误差相对误差0.001kg2kg0. 001|1.99900.0010%0.05%3kg2.9990.0010.033%4kg3.9990.0010.025%5kg4.9980.0020.04% 表二:单价金额计算误差分析(随机重量和单价)实际重量单价(元)实际金额显示金额0.200kg26.005.25.20.199kg15.323.053.050.500kg68.1634.0834.081.000kg3.563.563.56从表二可知,显示金额与实际金额相比,都在要求的范围之内。总价金额为各个金额的累加值,只要不溢出,总价金额绝对是各次显示金额的总和,其误差仅由单价金额的误差决定。24结论结论经过为期十二周的毕业设计,我得到了很大的锻炼。实践和理论相结合,实践验证理论,理论指导实践,本人对所学知识有了更深的领会。同时也在实际操作中遇到了很多问题。虽然我们在毕业设计当中遇到了很多问题,但在老师的细心指导下通过查阅书籍资料,一一将问题解决,温习了以前所学知识,还将知识应用于实践当中,这种在问题中学习到的知识留给自己的印象更加深刻。这次毕业设计中,我在了解电子秤的组成、特点、分类、发展以及在商业中的应用。通过本次毕业设计的实践,我体会最深的一点是做一件事之前,必须要清楚地知道自己想要什么样的结果,这样的结果将如何体现出来,为什么会有这样的结果。对于不满意的结果要如何改进,改进后的先进性又体现在哪里等等。总之,必须要清楚的知道自己在做什么样的事,否则,所有的工作都是盲目的,没有目的的工作就没有成效可言。此外我深深的体会到“实践出真知”这句话,实践过程中会出现很多问题,在这些问题的解决过程中的学习会使自己对知识的领会更加深刻。 25参考文献参考文献1 孙以材等编著.压力传感器的设计制造与应用M,冶金工业出版社, 20002 李道华等编.传感器电路分析与设计M,武汉大学出版社, 20003 黄继昌等编著.传感器工作原理及应用实例M,人民邮电出版社, 19984 丁镇生编著.传感器及传感技术应用M,电子工业出版社, 1998 5 黄贤武等编著.传感器实际应用电路设计M,电子科技大学出版社, 1997 6 吴兴惠,王彩君编著.传感器与信号处理M,电子工业出版社, 1998 7 颜杰先编著.实用电子电路设计制作例解M,电子工业出版社, 1993.68 Pual Horowitz and Winfield Hill. The Art of Electronics.2nd edM.Cambridge University Press,19899 Robert B.Northrop. Analog Electronic CircuitsM. Addison-Weseldy Publishing Company, New York.199010 张克彦编著.AVR 单片机实用程序设计M,北京航空航天大学出版社, 200411 宋建国主编.AVR 单片机原理及应用M,北京航空航天大学出版社, 199812 康华光主编.电子技术基础M 模拟部分,高等教育出版社, 1988.513 康华光主编.电子技术基础M 数字部分,高等教育出版社, 1988.514 顾德英,罗云林,张键著.计算机控制技术M,北京邮电大学出版社 ,2005 15 梁廷贵著.积分式 A/D 转换器其他专用集成电路分册M,科学技术文献出版社16 吴国经主编.单片机应用技术M,中国电力出版社,200417 佟长福编著.AVR 单片机 GCC 程序设计M,北京航空航天大学出版社,200626致致 谢谢毕业设计是检验大学四年学习结果的一个重要阶段,在这将近半年多的时间里,我不仅学到了不少新知识,还把以前所学到的知识提高到了一个更高的水平。更重要的是使我在学习和掌握这些知识的同时,能够在思维上得到锻炼和升华,在分析问题和解决问题的能力上得到培养和提高。在这里,我首先要感谢赵学玲老师,在她的细心的关怀指导帮助下,我们取得了很大的进步。其次感谢我的母校给了我这次锻炼机会,还提供了先进的试验设备。同时,我要感谢在此次毕业设计中给予我帮助的同学,没有他们的帮助,我不可能取得今天的成绩。最后感谢大学四年中所有的老师,感谢他们那对我的教导和帮助,还有各位同学,感谢他们对我的关心和帮助,让我愉快的渡过了大学四年。27附录附录 1 1:软件程序:软件程序程序:#include #include unsigned long sum=0; /unsigned int ad_con;/存放 PA0 的 AD 转换结果unsigned int shp10=0,0,0,0,0,0,0,0,0,0;unsigned int sum1,t,j,k=0;/unsigned long t,j,k=0;/延时/void delay_us(unsigned int t) /us do t-; while(t1); void delay_ms(unsigned char t) /ms while(t!=0) delay_us(1042); t-; / unsigned char led= 0X3F,/*0*/ /七段译码表 0X06,/*1*/28 0X5B,/*2*/ 0X4F,/*3*/ 0X66,/*4*/ 0X6D,/*5*/ 0X7D,/*6*/ 0X07,/*7*/ 0X7F,/*8*/ 0X6F,/*9*/ 0X77,/*A*/ 0X7C,/*b*/ 0X39,/*C*/ 0X5E,/*d*/ 0X79,/*E*/ 0X71/*F*/ ; /显示符 0,1,2,3,4,5,6,7,8,9,unsigned char led_buff=0 x3f,0 x3f,0 x3f,0 x3f; /显示缓冲区unsigned char scan_key(void) /不做按键释放检查的键盘扫描函数 unsigned char i,temp; DDRD=0X0F;PORTD=0XFF; for(i=0;i4;i+) PORTD=(1i); delay_us(500); temp=PIND&0XF0; if(temp!=0 xf0) /如有键按下,延时 15ms delay_ms(15); /延时用来消除显示抖动 temp=PIND&0 xf0; /再读键盘29if(temp!=0 xf0) temp&=0 xf0; switch (temp) /计算键值 case 0 x70:temp=15-(3-i)*4;break; case 0 xb0:temp=14-(3-i)*4;break; case 0 xd0:temp=13-(3-i)*4;break; case 0 xe0:temp=12-(3-i)*4;break; default:temp=0 x7f; return temp; PORTD=0 xff; return 0 x7f; void port_init(void) DDRB=0 xff; PORTB=0 xff; DDRC=0 x0f; PORTC=0Xf0; DDRD=0 x0f; PORTD=0 xff; void adc_init(void) / A/D 转换设置 Pc0.0 口30 DDRC|=0 x0f; PORTC|=0 x0f; ADCSRA=0 x00; /disable adc ADMUX=0 x45; /参考电压 AVCC(01),转换结果右对齐(0)通道 5 ACSR=0 x80; /模拟比较器禁用 ADCSRA=0 xEA; /AD 使能,启动 AD,ADC 自动触发使能,ADC 中断使能,预分频选择 64 DIDR0=0 x3f; /禁止输入 /ADC 转换结束/#pragma interrupt_handler adc_isr:22 void adc_isr(void) int n,m; ad_con=n=ADCL; m=ADCH; ad_con|=(int)m8; ADCSRA=0 x00; /disable adc ADMUX=0 x45; /select adc input5 ACSR=0 x80; /模拟比较器禁用 ADCSRA=0 xEA; /AD 使能,启动 AD,ADC 自动触发使能,ADC 中断使能,预分频选择 64 #define vref 5080void adctovol(unsigned int adc) unsigned int adz; unsigned char i; adz=(unsigned int)(unsigned long)(unsigned long)adc*vref)/1024); adz=adz/10; 31 sum=adz; for(i=0;i4;i+) led_buffi=ledadz%10; adz=adz/10; if(i=3) led_buffi=led_buffi|0 x80; void display(void) unsigned char i=0; for(;i4;i+) PORTB=led_buffi;PORTC=1(3-i); delay_us(1000); PORTC&=0Xf0; /ad/void ad (void) adctovol(ad_con); /ad_con display();/display();display();display();display(); /B 键/void b_jian() /已按下 B 键 /1unsigned int d,dan=0; unsigned char key1,key2;32 unsigned int i;while(key1!=12) /如果按下的不是 C 键,则 key1=scan_key();do key2=scan_key(); ad(); /进行 ad while(key1=key2);if (key1=12) /如果按下的是 C 键,则显示清零再跳出总循环 for(i=0;i4;i+) /先显示清零. led_buffi=led0; if(key1=13) /如果按下的是 D 键,则去皮 for(i=0;i4;i+) /先显示清零 led_buffi=led0; while(1) key1=scan_key(); /键盘扫描 do key2=scan_key(); display(); while(key1=key2);if(key110|key1=14|key1=12) 33 if (key1=14) for(i=0;i4;i+) /显示清零, led_buffi=led0; else if (key1=12) /若按下确认键 C for(i=0;i4;i+) /显示清零, led_buffi=led0;sum=sum-dan; d=sum;for(i=0;i4;i+) /计算价格 led_buffi=ledd%10; d=d/10; if(i=3) led_buffi=led_buffi|0 x80; break; else for (i=0;i3;i+) /显示 led_buff3-i=led_buff2-i; /按下一次移一次 /if(key1=10) /led_buff0=led_buff0|0 x80; led_buff0=ledkey1&0 x7f;dan=dan*10; /左移dan=dan+key1; /记单价34 display(); /4/1/F 键程序/void Fjian(void) /1unsigned int dan=0;unsigned char key1,key2;unsigned char i,p=0;unsigned int c=0; for(i=0;i4;i+) /先显示清零led_buffi=led0; led_buff0=led11&0 x7f; /按下 F 键delay_ms(400);led_buff0=led0;while(c10) /2 key1=scan_key();do /3 key2=scan_key(); display(); /3while(key1=key2);if(key110|key1=14|key1=12|key1=15|key1=11) /435 if(key1=15) /按下 F 键 /5 led_buff0=ledkey1&0 x7f; /显示 F while(1) /6 key1=scan_key(); /键扫 do /7 key2=scan_key(); display(); /7 while(key1=key2); if(key110|key1=12|key1=14|key1=11) /若按键 /8 if(key110|key1=14|key1=11) /9 if(key110) /10 for(i=0;i4;i+) /显示清零, led_buffi=led0; led_buff0=ledkey1&0 x7f; p=key1; /p 为 shp中的 p 位; /10 else /11 if(key1=14) led_buff0=led0; else /12for(i=0;i4;i+) /显示清零,36 led_buffi=led0; c=10;break;/12 /11 /9 else /13 for(i=0;i4;i+) /显示清零, led_buffi=led0; while(1) /14 key1=scan_key(); do /15 key2=scan_key(); /键扫 display(); /15 while(key1=key2); if(key111|key1=12|key1=14) /若按下数字键或 c 确认键 /16 if(key111|key1=14) /按下数字键 /17 if(key1=14) /18 for(i=0;i4;i+) /显示清零, led_buffi=led0; shpp=0; dan=0; /1837 else /19 for (i=0;i3;i+) /显示 led_buff3-i=led_buff2-i; /按下一次移一次 led_buff0=ledkey1&0 x7f; dan=dan*10; /左移 shpp=dan+key1; dan=shpp; /19 /17 else /if(key1=12) /按下 C 键 /20 for(i=0;i4;i+) /记单价 /21 led_buffi=leddan%10; dan=dan/10; if(i=2) led_buffi=led_buffi|0 x80; /21 break; /跳出循环 /20 /16 /14 /13 /8 /6 /5 else /2238 if (key1=14) for(i=0;i4;i+) /显示清零, led_buffi=led0; else /23 if (key1=12) /若按下确认键 C /24for(i=0;i4;i+) /25 for(i=0;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!