电子秤的设计与实现

合集下载

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

基于单片机的电子秤的设计与实现(毕业论文)
目前市场上使用的称量工具,或者结构复杂,或者运行不可靠,且成本高,而且整体水平不高,部分小型企业质量差且技术薄弱,设备不全,缺乏产品的开发能力,产品质量在低水平徘徊。因此,有针对性的开发出一套具有实用价值的电子秤系统,从技术上克服上述诸多缺点,改善电子秤应用中的不足之处,具有现实意义。
1.2 电子称重系统的应用领域
1.
本课题的主要设计思路是:利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。此外,还可通过键盘设定所称物品的价格。
在设计期间,本人努力查阅相关资料,对称重的基本原理以及各软件、硬件模块做了认真的分析、研究。根据性能成本考虑,在以下几方面做了仔细的分析研究,主要有:系统模块的划分、A/D精度的考虑、单片机与外围模块的接口电路以及电子秤应用程序的实现等。
论文的结构如下:
第二章 叙述了系统的方案论证以及硬件设备的选型。
第三章 详细叙述了硬件电路的设计过程,主要是各个模块的具体设计过程,以及各部分性能指标的要求和实现。
第四章 叙述了该设计软件部分的设计思路,主要是主程序和各个子程序的详细设计方案。
第五章 叙述了该设计仿真和调试结果。
第六章 论文工作的总结。
第二章 系统方案论证与选型
按照本设计功能的要求,本设计大致可分为五个模块:数据采集模块、信号放大模块、模数转换模块、单片机控制模块、人机交换模块。(其中人机交换模块中包括:声光报警、LCD显示、键盘输入)系统设计总体方案框图如图2-1所示。
图2-1设计思路框图
测量部分是利用称重传感器检测压力信号,得到微弱的电信号(本设计为电压信号),而后经处理电路(如滤波电路,差动放大电路,)处理后,送A/D转换器,将模拟量转化为数字量输出。控制器部分接受来自A/D转换器输出的数字信号,经过复杂的运算,将数字信号转换为物体的实际重量信号,并将其存储到存储单元中。控制器还可以通过对扩展I/O的控制,对键盘进行扫描,而后通过键盘散转程序,对整个系统进行控制。数据显示部分根据需要实现显示功能。

多功能精准电子秤的设计与实现

多功能精准电子秤的设计与实现

多功能精准电子秤的设计与实现摘要:随着社会信息化的发展,以及智能化的政务服务体系的不断完善,电子秤已经逐渐融入到人们的日常生活中。

在用户逐步深入使用了解电子秤的过程中,仅仅称量的功能已经不能满足用户的需求。

目前电子秤逐渐向多功能、精准化方向发展。

通过结构优化设计,结合现有用户的审美潮流与使用习惯,电子秤也更加可靠、准确、省时省力。

关键词:多功能精准电子秤;设计与实现;引言电子秤是一种通过电子传感器实现力电转换的计量设备,相较于传统的机械秤,具有读数方便、称量准确等特点。

随着科技水平的高速发展,电子秤的技术水平、功能多样化也在逐步提高和完善。

用户群的细分,使电子秤不断的集成新的功能。

如婴儿秤、孕妇秤、体脂秤、身高秤、地毯秤等。

此外,电子秤的精准化测量水平也在逐步提高,如高精度厨房秤、口袋秤、高精度人体秤等。

本文主要通过电子秤多功能、精准化两个方面来阐述电子秤的设计与实现方法。

1、电子秤多功能的设计与实现电子秤的多功能设计主要是根据用户的使用场景,分析用户称重时的使用需求,不断收集用户需求,结合市场导向,从而设计出多功能的电子秤。

本部分内容主要结合几个应用实例,阐述电子秤多功能的设计与实现方法。

1.1婴儿人体两用秤婴儿人体两用秤的出现将四点式电子人体秤与婴儿秤合二为一。

具体的设计与实现方法如下:在四点式电子人体秤的基础上,设计卡接口,卡接口用于卡接托盘,托盘用于承载婴儿。

当使用人体秤时,将托盘拆卸掉,即切换为四点式电子人体秤模式;当婴儿称重时,将托盘通过卡接口安装,即切换为婴儿秤模式。

该两用秤的结构设计要点是托盘的安装方式、托盘本身的结构强度,安装方式要可靠,常见的为活动扣与弹性扣;托盘本身的强度要通过结构设计来加强,防止承载时过大的变形,导致婴儿不舒适。

1.2地毯秤为满足电子秤复杂地面的使用需求,有厂家设计出一种地毯秤,即将在四个支撑点下增加一个支撑壳体。

当秤体在较柔软或者不平整的地面上称量时,靠支撑壳体将力传递给四个支撑点,四个支撑点将力传递给传感器,实现准确称量。

基于单片机的智能电子秤控制系统的设计

基于单片机的智能电子秤控制系统的设计

基于单片机的智能电子秤控制系统的设计智能电子秤控制系统是一种集成数字电子技术、传感技术、自动控制技术于一体的高精度、高可靠性的电子秤系统。

本文将介绍基于单片机的智能电子秤控制系统的设计原理及实现方法。

一、系统设计原理基于单片机的智能电子秤控制系统主要由称重传感器、AD转换模块、单片机、LCD显示模块和通信接口模块等组成。

其工作原理如下:1. 称重传感器智能电子秤的核心部件是称重传感器,用于将物体的重量转换为电信号。

常用的称重传感器有应变式、电阻式、电容式等。

它们能够根据物体的质量变化而改变输出电信号,作为下一步处理的输入信号。

2. AD转换模块AD转换模块用于将模拟信号转换为数字信号,通过单片机进行处理。

通过AD转换模块,可以将称重传感器输出的模拟信号转换为单片机可以理解的数据,为后续的数据处理提供基础。

3. 单片机单片机是整个智能控制系统的核心,负责接收AD转换模块的信号,并进行数据处理,并通过LCD显示模块将结果实时显示出来。

同时,单片机还可以通过通信模块与其他设备进行数据交互。

4. LCD显示模块LCD显示模块用于将称重结果以数字形式显示出来,提供直观的测量结果给用户。

5. 通信接口模块通信接口模块允许智能电子秤与其他设备进行数据交互,如与计算机进行连接,实现数据的上传和下载。

二、系统设计方法基于单片机的智能电子秤控制系统的设计可以按照以下步骤进行:1. 硬件设计根据系统的功能需求,选择适当的称重传感器和AD转换模块,并通过电路设计将其与单片机和LCD显示模块进行连接。

此外,根据实际需求选择合适的通信接口模块。

2. 软件设计编写单片机的控制程序,包括AD转换的初始化和读取、数据处理、LCD显示等功能。

根据实际需求,可以添加一些额外的功能,如单位选择、重量校准等。

3. 系统测试将硬件和软件进行组装后,进行系统测试。

通过放置不同重量的物体进行秤量,检查显示结果的准确性和稳定性。

同时,测试通信功能是否正常工作。

单片机电子秤毕业设计

单片机电子秤毕业设计

单片机电子秤毕业设计毕业设计题目:基于单片机的电子秤设计与实现一、设计要求:1.设计并实现一款能够准确测量物体质量的电子秤,使用单片机进行控制与数据处理。

2.电子秤应具备高精度、高稳定性和可靠性等特点。

3.电子秤的测量范围应足够大,能够适用于不同质量的物体。

4.电子秤的设计应尽可能简洁、实用、易于操控和维护。

二、设计方案:1.传感器选择:使用称重传感器作为负载传感器,可选用应变片式传感器或压阻式传感器。

2.信号放大与转换:将传感器测得的微小变化信号通过专用放大电路进行放大,并转换为0-5V或0-3.3V的直流电压信号。

3.单片机控制与显示:使用适当的单片机进行控制与数据处理,可选用常见的51单片机或STM32系列单片机,并通过数码管、液晶显示屏或LED显示屏等显示当前测量的质量值。

4.按键与操作:通过按键实现归零、单位选择、累计等基本操作实现。

5.通信接口:可选用串口或IIC总线等通信模式,将测量结果实时传输到上位机或其他设备。

6.电源系统:使用稳压电源保证整个系统的稳定工作。

三、设计流程:1.硬件设计:a.选择合适的电子元件,包括称重传感器、单片机、显示器、按键、通信模块等。

b.设计传感器接口电路,包括信号放大与转换电路。

c.设计按键与控制电路,将按键输入与单片机相连接,实现操作控制功能。

d.设计显示电路,将单片机输出与显示设备相连接,实现结果显示功能。

e.设计电源电路,保证整个系统的稳定工作。

2.软件设计:a.编写初始化程序,对单片机进行初始化设置。

b.编写按键扫描程序,实现按键输入的检测和处理。

c.编写称重传感器读取程序,实时读取称重传感器输出的模拟电压信号。

d.编写质量计算程序,根据传感器输出的模拟电压信号进行质量计算,并实现单位选择功能。

e.编写显示程序,将计算得到的质量值进行显示。

f.编写通信程序,如果需要与上位机或其他设备进行通信,则需要编写相应的通信协议和数据传输程序。

四、测试与调试:1.对硬件进行连接并进行通电测试,确保电子秤的各个部分能够正常工作。

电子秤的设计与实现

电子秤的设计与实现

南阳理工学院本科生毕业设计(论文)学院:电子与电气工程学院专业:电气工程及其自动化学生:指导教师:完成日期2014 年 5 月南阳理工学院本科生毕业设计(论文)电子秤的设计与实现Design and Implementation of Electronic Scales总计:25 页表格:0 个插图:17 幅南阳理工学院本科毕业设计(论文)电子秤的设计与实现Design and Implementation of Electronic Scales学院:电子与电气工程学院专业:电气工程及其自动化学生姓名:学号:指导教师(职称):评阅教师:完成日期:南阳理工学院Nanyang Institute of Technology电子秤的设计与实现[摘要]用单片机作为实现电子秤的中心控制单元,通过压力传感器对重力进行A/D转换单元,再加以键盘和显示电路以及软件来实现。

电子秤不仅称量准确并且快速方便,最重要的是自动称重、数字显示对人们生活的影响越来越大,广受欢迎。

本课题由单片机作为主控制系统,称量物体重量部分包括压力传感器、A/D转换器及显示单元,所以电子秤拥有了功能量多、性能价格比较高、功率损耗较低、控制系统方案简单、方便携带、运行速度很快、自动测量精准及自动化等特点。

[关键词]重量;压力传感器;a/d转换器;数码管Design and Implementation of Electronic ScalesElectrical Engineering and Automation Specialty ZHU Yan - qingAbstract:MCU as the implementation of electronic scales central control unit via a pressure sensor on gravity for a/d conversion unit, coupled with a keyboard and display circuits and software. Accurate electronic scales and weighing only quick and easy, most importantly, automatic weighing, figures show the impact on people's lives more and more, the most popular. The issue by the microcontroller as the main control system, weighing weight of the object portion includes a pressure sensor, a/d converter and display unit, so the amount of electronic scales have multi-function, high performance and low cost, low power consumption, simple control system solutions easy to carry, run fast, precise automatic measurement and automation features.Key words:Weight;sensor;a/d converter;digitron目录1 引言 (1)1.1 电子秤的研究背景 (1)1.2 电子秤的国内外发展现状 (1)1.2.1 电子秤国内外现状 (1)1.2.2 电子秤的发展趋势 (1)1.3 课题研究目的与意义 (2)2 设计方案及元器件介绍 (3)2.1 电子秤的基本工作原理 (3)2.2 电子秤设计要求 (3)2.3 电子秤系统各模块的方案选型 (4)2.3.1 A/D转换器 (4)2.3.2 传感器 (4)2.3.3 电子秤主控制系统核心 (4)2.3.4 显示器 (5)3 硬件设计 (6)3.1 电子秤硬件设计方案 (6)3.2 单片机电子秤应用电路 (6)3.3 电子秤AD转换芯片HX711及其电路 (7)3.4 称重传感器 (8)3.5 显示电路 (10)3.6 电源电路 (12)4 软件设计与结果 (12)4.1 软件流程 (12)4.2 Proteus仿真软件 (13)5 硬件下载与调试 (14)结束语 (17)参考文献 (18)附录 (19)致谢 (25)1引言1.1 电子秤的研究背景秤是一种在实际工作和生活中经常用到的测量器具。

电子行业课程设计电子秤

电子行业课程设计电子秤

电子行业课程设计电子秤1. 引言电子秤是一种利用电子技术来测量物体质量的仪器。

在电子行业课程设计中,设计和制作一个电子秤是一个常见的任务。

本文将介绍电子秤的基本原理、设计要求以及实现过程。

2. 基本原理电子秤通过测量物体所产生的重力来确定物体的质量。

其基本原理如下:1.电子秤采用压力传感器来测量物体对秤盘的压力。

2.压力传感器将压力转换为电信号。

3.电信号经过放大和滤波后,被微处理器处理。

4.微处理器根据压力信号的大小计算出物体的质量。

5.最后,将质量数值显示在数码显示屏上。

3. 设计要求设计一个电子秤需要满足以下要求:1.精度要求:电子秤的测量精度应满足工业或商业应用的要求,一般为0.1g或更高。

2.承重能力:电子秤的设计应根据使用场景和物体的质量范围确定合适的承重能力。

3.可靠性:电子秤的设计应考虑系统的稳定性和可靠性,包括传感器的精度、放大电路的稳定性等。

4.功耗:电子秤的设计应考虑尽可能降低功耗,延长电池寿命。

5.显示和操作:电子秤应提供直观的显示屏和简单的操作方式,以方便用户使用。

6.价格和成本:电子秤的设计应考虑成本控制,尽量降低生产成本和售价。

4. 实现过程电子秤的实现过程可以分为以下几个步骤:4.1 传感器选择选择合适的传感器是设计电子秤的关键步骤。

常用的传感器有压力传感器和应变传感器。

根据设计要求,选择合适的传感器,同时考虑成本和可获得性。

4.2 电路设计电路设计包括放大电路、滤波电路、模数转换和微处理器接口。

通过放大电路和滤波电路,将传感器输出的低电压信号放大和去除干扰信号。

然后,进行模数转换将模拟信号转换为数字信号。

最后,将数字信号通过微处理器进行处理和计算。

4.3 软件开发软件开发主要包括数据处理和显示。

微处理器通过编程对传感器产生的模拟信号进行处理和计算,得到物体的质量数值。

然后,将质量数值通过数码显示屏显示出来。

4.4 调试和优化完成硬件和软件的设计后,进行调试和优化是非常重要的一步。

电子秤的设计与实现

电子秤的设计与实现

电子秤的设计与实现一.研究的目的和意义随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。

常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。

传统的机械秤有很多缺点,比如精度不高,结构复杂,易老化,成本高等。

随着社会的发展,市场对秤的要求的越来越高,尤其是人体秤、厨房秤等各类便携式小型秤。

电子秤与传统的机械秤相比有许多优越性,它用压力传感器取代机械秤的弹簧大大减小了秤的体积和制造难度,以LCD或LED显示屏取代传统的刻度盘使外形更加美观,由于内部集成了单片机以及软件系统,电子秤还拥有传统机械秤无法比拟的智能性。

他可以完成过载报警,总价计算,数据通信等众多功能。

目前市场上使用的称量工具,或者结构复杂,或者运行不可靠,且成本高,而且整体水平不高,部分小型企业质量差且技术薄弱,设备不全,缺乏产品的开发能力,产品质量在低水平徘徊。

因此,有针对性的开发出一套具有实用价值的电子秤系统,从技术上克服上述诸多缺点,改善电子秤应用中的不足之处,具有现实意义。

二.设计原理1.电子秤的原理就是利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过A\D模数转换器转换为数字信号,最后把数字信号送入单片机。

单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。

此外,还可通过键盘设定所称物品的价格。

2. 原理仿真设计电路图图13.程序框图(1)主程序设计开始LCD 初始化重量数据显示总价计算LCD 清屏报警AD 转换重量数据处理是否超过上限按键判断Y N Y N图2 主程序设计(2)子程序A/D 0832的转化图3 A/D 0832的转化(3)显示子程序的设计图4 显示子程的设计(4)按键子程的设计在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。

电子秤毕业设计

电子秤毕业设计

电子秤毕业设计一、引言在当今社会,电子秤作为一种重要的测量工具,广泛应用于商业、工业、农业以及日常生活等各个领域。

其高精度、快速响应和便捷操作的特点,使得它成为了不可或缺的设备。

本次毕业设计旨在设计一款功能完善、性能可靠的电子秤。

二、设计目标与要求(一)精度要求能够准确测量物体的重量,精度达到 01g 以内,满足一般商业和工业应用的需求。

(二)量程范围设计量程为 0 10kg,以适应常见物体的称重需求。

(三)显示与操作配备清晰直观的液晶显示屏,操作按键简单易懂,方便用户进行称重、去皮、单位转换等操作。

(四)稳定性与可靠性在不同环境条件下(如温度、湿度变化)能够保持稳定的测量性能,具备良好的抗干扰能力,长时间使用不易出现故障。

三、系统总体设计(一)硬件设计1、传感器选择选用高精度的电阻应变式传感器,其具有精度高、稳定性好、线性度优良等特点。

2、信号调理电路将传感器输出的微弱信号进行放大、滤波和模数转换,以获得准确的数字信号。

3、微控制器采用主流的单片机作为控制核心,负责处理传感器数据、控制显示和执行操作逻辑。

4、电源模块提供稳定的电源供应,确保系统正常工作。

(二)软件设计1、编程语言选择 C 语言进行编程,具有高效、灵活和可移植性强的优点。

2、算法实现采用均值滤波算法对采集的重量数据进行处理,提高测量精度;通过线性拟合算法对传感器的输出特性进行校准,保证测量的准确性。

四、硬件电路设计(一)传感器接口电路设计合适的接口电路,实现传感器与信号调理电路的连接,确保信号传输的稳定性和准确性。

(二)信号放大与滤波电路采用运算放大器和无源滤波器构建放大与滤波电路,将传感器输出的微弱信号放大到合适的幅度,并去除噪声干扰。

(三)模数转换电路选用高精度的 ADC 芯片,将模拟信号转换为数字信号,供单片机处理。

(四)单片机最小系统包括单片机芯片、晶振电路、复位电路等,为单片机的正常运行提供必要的条件。

(五)显示与按键电路使用液晶显示屏显示重量、单位等信息,通过按键实现操作功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子秤的设计与实现一.研究的目的和意义随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。

常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。

传统的机械秤有很多缺点,比如精度不高,结构复杂,易老化,成本高等。

随着社会的发展,市场对秤的要求的越来越高,尤其是人体秤、厨房秤等各类便携式小型秤。

电子秤与传统的机械秤相比有许多优越性,它用压力传感器取代机械秤的弹簧大大减小了秤的体积和制造难度,以LCD或LED显示屏取代传统的刻度盘使外形更加美观,由于内部集成了单片机以及软件系统,电子秤还拥有传统机械秤无法比拟的智能性。

他可以完成过载报警,总价计算,数据通信等众多功能。

目前市场上使用的称量工具,或者结构复杂,或者运行不可靠,且成本高,而且整体水平不高,部分小型企业质量差且技术薄弱,设备不全,缺乏产品的开发能力,产品质量在低水平徘徊。

因此,有针对性的开发出一套具有实用价值的电子秤系统,从技术上克服上述诸多缺点,改善电子秤应用中的不足之处,具有现实意义。

二.设计原理1.电子秤的原理就是利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过A\D模数转换器转换为数字信号,最后把数字信号送入单片机。

单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。

此外,还可通过键盘设定所称物品的价格。

2. 原理仿真设计电路图图1 3.程序框图(1)主程序设计图2 主程序设计(2)子程序A/D 0832的转化图3 A/D 0832的转化(3)显示子程序的设计图4 显示子程的设计(4)按键子程的设计在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。

键盘扫描子程序的流程图如下:图5 按键子程序的设计3.程序清单#include<regx51.h>#include<intrins.h>#include <absacc.h>#include <math.h>#define uchar unsigned char#define uint unsigned int#define BUSY 0x80 //常量定义#define DATAPORT P0sbit bADcs=P1^3; //片选位sbit bADcl=P1^6; //时钟位sbit bADda=P1^7; //数据位sbit LCM_RS=P1^0;sbit LCM_RW=P1^1;sbit LCM_EN=P1^2;uint x1,y1,z1=0,w1,temp1;uchar ad_data,k,n,m,e,num,s; //采样值存储uchar z;uchar data1;char press_data; //标度变换存储单元unsigned char ad_alarm; unsigned char press_ge=0; //显示值百位unsigned char press_shifen=0; //显示值十位unsigned char press_baifen=0; //显示值个位unsigned char press_qianfen=0; //显示值十分位uchar code str0[]={"Weight: . Kg "};uchar code str2[]={"Price: "};uchar code str3[]={"Total: "};uchar code table2[]={0x37,0x38,0x39,0xfd,0x34,0x35,0x36,0x78,0x31,0x32,0x33,0x2d,0x3d,0x 30,0x2e,0x2b}; //键盘码void intu();void jianpan();void delay(uint);void lcd_wait(void);void delay_LCM(uint); //LCD延时子程序void initLCM( void); //LCD初始化子程序void lcd_wait(void); //LCD检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC); //写指令到ICM子函数void WriteDataLCM(uchar WDLCM); //写数据到LCM子函数void DisplayOneChar(uchar X,uchar Y,uchar DData); //显示指定坐标的一个字符子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData); //显示指定坐标的一串字符子函数void weishu(uint m);void weishu1(uint m);void display(void);void ad0832();void alarm(void);void data_pro(void);void ad0832(void){ uchar i;bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,开始工作CS为低电平bADcl=0; //第一个时钟下降沿前da为1,第二个与第三时钟下降沿前的数据为通道选择bADda=1; //选置起始位bADcl=1;bADcl=0; // 1downbADda=1; //通道选择第1位bADcl=1;bADcl=0; // 2 downbADda=0; //通道选择第2位,通道选择为1,0选通道0bADcl=1;bADcl=0; // 3 downbADda=1;bADcl=1;bADcl=0; // 4 downfor(i=8;i>0;i--){ad_data<<=1; //从第7位开始,要左移data1=data1<<1bADcl=0;bADcl=1;if(bADda==1) ad_data|=0x01; //如果输出1,data1最后一位补1}bADcs=1; //转换完后CS置1}/**********main funcation************/void main(void){delay(50); //系统延时500ms启动ad_data=0; //采样值存储单元初始化为0initLCM( );intu();WriteCommandLCM(0x01,1); //清显示屏DisplayListChar(0,0,str0);DisplayListChar(0,1,str2);while(1){ad0832(); //采样值存储单元初始化为0data_pro();display();jianpan();if(k==1){if(s<=3){DisplayOneChar((s+7),1,table2[num-1]);if(s==1)data1=n;elsedata1=data1*10+n;}}if(k=='='){z1=data1*temp1;WriteCommandLCM(0x01,1);DisplayListChar(0,1,str3);s=0;weishu1(z1);k=0;}if(k==' '){WriteCommandLCM(0x80+0x40,1);WriteCommandLCM(0x01,1);z1=0;s=0; //防止清零时指针后移动}}/*********延时K*1ms,12.000mhz**********/void delay(uint k){uint i,j;for(i=0;i<k;i++)for(j=0;j<10;j++);}/**********写指令到ICM子函数************/void WriteCommandLCM(uchar WCLCM,uchar BusyC) {if(BusyC)lcd_wait();DATAPORT=WCLCM;LCM_RS=0; // 选中指令寄存器LCM_RW=0;LCM_RW=0; // 写模式LCM_EN=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LCM_EN=0;/**********写数据到LCM子函数************/void WriteDataLCM(uchar WDLCM){lcd_wait( ); //检测忙信号DATAPORT=WDLCM;LCM_RS=1; // 选中数据寄存器LCM_RW=0; // 写模式LCM_EN=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LCM_EN=0;}/***********lcm内部等待函数*************/void lcd_wait(void){DATAPORT=0xff; //读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色LCM_EN=1;LCM_RS=0;LCM_RW=0;LCM_RW=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();while(DATAPORT&BUSY){ LCM_EN=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LCM_EN=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}LCM_EN=0;}/**********LCM初始化子函数***********/void initLCM( ){LCM_EN=0;DATAPORT=0;delay(10);WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,1); //8bit数据传送,2行显示,5*7字型,检测忙信号WriteCommandLCM(0x08,1); //关闭显示,检测忙信号WriteCommandLCM(0x01,1); //清屏,检测忙信号WriteCommandLCM(0x06,1); //显示光标右移设置,检测忙信号WriteCommandLCM(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号}void intu(){k=0;x1=0;y1=0;z1=0;}/****显示指定坐标的一个字符子函数****/void DisplayOneChar(uchar X,uchar Y,uchar DData){Y&=0x01;X&=0x0f;if(Y)X|=0x40; //若y为1(显示第二行),地址码+0X40 X|=0x80; //指令码为地址码+0X80WriteCommandLCM(X,1);WriteDataLCM(DData);}/*******显示指定坐标的一串字符子函数*****/void DisplayListChar(uchar X,uchar Y,uchar code *DData) {uchar ListLength=0;Y&=0x01;X&=0x0f;while(X<10){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}/*****************系统显示子函数*****************/ void display(void){WriteCommandLCM(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);//DisplayListChar(0,1,str2);DisplayOneChar(8,0,press_ge+0x30);DisplayOneChar(10,0,press_shifen+0x30);DisplayOneChar(11,0,press_baifen+0x30);DisplayOneChar(12,0,press_qianfen+0x30);delay(1000); //稳定显示}void data_pro(void){unsigned int;float press;if(0<ad_data<256){int vary=ad_data;press=(0.019531*vary);temp1=(int)(press*1000); //放大1000倍,便于后面的计算press_ge=temp1/1000; //取压力值百位press_shifen=(temp1%1000)/100; //取压力值十位press_baifen=((temp1%1000)%100)/10; //取压力值个位press_qianfen=((temp1%1000)%100)%10; //取压力值十分位} }void weishu1(uint m){uchar wei5,wei4,wei3,wei2,wei1,wei0;wei5=m/100000;wei4=m%100000/10000;wei3=m%10000/1000;wei2=m%1000/100;wei1=m%100/10;wei0=m%10;DisplayOneChar(7,1,0x30+wei4);DisplayOneChar(8,1,0x30+wei3);DisplayOneChar(9,1,'.');DisplayOneChar(10,1,0x30+wei2);//DisplayOneChar(10,1,'.');DisplayOneChar(11,1,0x30+wei1);DisplayOneChar(12,1,0x30+wei0);}/***** 键盘扫描程序*****/void jianpan(){ uchar temp;P2=0xfe;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(5);temp=P2;temp=temp&0xf0;while(temp!=0xf0){temp=P2;switch(temp){case 0xee:num=1;n=7;k=1,s++;break;case 0xde:num=2;n=8;k=1,s++;break;case 0xbe:num=3;n=9;k=1,s++;break;case 0x7e:num=4;k='/',s++;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}//DisplayOneChar((s+6),1,table2[num-1]); }}P2=0xfd;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0){temp=P2;switch(temp){case 0xed:num=5;n=4;k=1;s++;break;case 0xdd:num=6;n=5;k=1;s++;break;case 0xbd:num=7;n=6;k=1;s++;break;case 0x7d:num=8;k='*';s++;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}//DisplayOneChar(k+6,1,table2[num-1]);}}P2=0xfb;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0){temp=P2;switch(temp){case 0xeb:num=9;n=1;k=1;s++;break;case 0xdb:num=10;n=2;k=1;s++;break;case 0xbb:num=11;n=3;k=1;s++;break;case 0x7b:num=12;k='-';s++;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}// DisplayOneChar(k+6,1,table2[num-1]);}}P2=0xf7;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0){temp=P2;switch(temp){case 0xe7:num=13;k=' ';break;case 0xd7:num=14;n=0;k=1;s++;;break;case 0xb7:num=15;k='=';s++;break;case 0x77:num=16;k='+';s++;;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}//DisplayOneChar(k+6,1,table2[num-1]);}}}三.元件清单C51单片机1个LCD1602显示1个A/D0832芯片1个UA741放大器1个按键13个电解电容30PF 1个15PF电容2个10k电阻1个1k电阻5个1k滑动变阻1个4.7k滑动变阻1个四.调试过程遇到的问题及解决方法在调试过程中,一开始单片机程序烧不进去,发现是单片机坏了,找老师重新换了一块,重量部分显示,但发现没有放大,在进行检查电路发现,放大器的3和4引脚短路,器件本身是坏的,重新换了一个,有了放大,在调试按键部分的过程中,按键显示不正常,经过重新修正程序和换了单片机,按键和总价显示正常。

相关文档
最新文档