单片机电子秤设计报告DOC58页.docx

上传人:b****1 文档编号:14293470 上传时间:2023-06-22 格式:DOCX 页数:36 大小:425.55KB
下载 相关 举报
单片机电子秤设计报告DOC58页.docx_第1页
第1页 / 共36页
单片机电子秤设计报告DOC58页.docx_第2页
第2页 / 共36页
单片机电子秤设计报告DOC58页.docx_第3页
第3页 / 共36页
单片机电子秤设计报告DOC58页.docx_第4页
第4页 / 共36页
单片机电子秤设计报告DOC58页.docx_第5页
第5页 / 共36页
单片机电子秤设计报告DOC58页.docx_第6页
第6页 / 共36页
单片机电子秤设计报告DOC58页.docx_第7页
第7页 / 共36页
单片机电子秤设计报告DOC58页.docx_第8页
第8页 / 共36页
单片机电子秤设计报告DOC58页.docx_第9页
第9页 / 共36页
单片机电子秤设计报告DOC58页.docx_第10页
第10页 / 共36页
单片机电子秤设计报告DOC58页.docx_第11页
第11页 / 共36页
单片机电子秤设计报告DOC58页.docx_第12页
第12页 / 共36页
单片机电子秤设计报告DOC58页.docx_第13页
第13页 / 共36页
单片机电子秤设计报告DOC58页.docx_第14页
第14页 / 共36页
单片机电子秤设计报告DOC58页.docx_第15页
第15页 / 共36页
单片机电子秤设计报告DOC58页.docx_第16页
第16页 / 共36页
单片机电子秤设计报告DOC58页.docx_第17页
第17页 / 共36页
单片机电子秤设计报告DOC58页.docx_第18页
第18页 / 共36页
单片机电子秤设计报告DOC58页.docx_第19页
第19页 / 共36页
单片机电子秤设计报告DOC58页.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机电子秤设计报告DOC58页.docx

《单片机电子秤设计报告DOC58页.docx》由会员分享,可在线阅读,更多相关《单片机电子秤设计报告DOC58页.docx(36页珍藏版)》请在冰点文库上搜索。

单片机电子秤设计报告DOC58页.docx

单片机电子秤设计报告DOC58页

单片机电子秤设计报告(DOC58页)

单片机电子秤设计报告

秤是一种在实际工作和生活中经常用到的测量器具。

随着计量技术和电子技术的进展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被剔除,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。

和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片机设计实现,具有精度高、功能强等特点。

本课题设计的电子秤具有差不多称重、键盘输入、运算价格、显示、超重报警功能。

该电子秤的测量范畴为0-10Kg,测量精度达到5g,有高精度,低成本,易携带的特点。

电子秤采纳液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。

另外,该电子秤电路简单,使用寿命长,应用范畴广,能够应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。

一、功能描述

1、采纳高精度电阻应变式压力传感器,测量量程0-10kg,测量精度可达5g。

2、采纳电子秤专用模拟/数字〔A/D〕转换器芯片hx711对传感器信号进行调理转换,HX711采纳了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片。

3、采纳STC89C52单片机作为主控芯片,实现称重、运算价格等主控功能。

4、采纳128*64汉字液晶屏显示称重重量、单价、总价等信息。

5、采纳4*4矩阵键盘进行人机交互,键盘容量大,操作便利。

6、具有超量程报警功能,能够通过蜂鸣器和LED灯报警。

7、系统通过USB电源供电,单片机程序也可通过USB线串行下载。

二、硬件设计

1、硬件方案

单片机电子秤硬件方案如图1所示:

图1 单片机电子秤硬件方案

称重传感器感应被测重力,输出柔弱的毫伏级电压信号。

该电压信号通过电子秤专用模拟/数字〔A/D〕转换器芯片hx711对传感器信号进行调理转换。

HX711采纳了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片,内置增益操纵,精度高,性能稳固。

HX711芯片通过2线串行方式与单片机通信。

单片机读取被测数据,进行运算转换,再液晶屏上显示出来。

矩阵键盘要紧用于运算金额。

当被测物体重量得到后,用户能够通过矩阵键盘输入单价,电子秤自动运算总金额并在液晶屏显示。

电源系统给单片机、HX711电路及传感器供电。

2、称重传感器

传感器是测量机构最重要的部件。

称重传感器本身具有单调性,其要紧参数指标是灵敏度、总误差和温度漂移。

(1)灵敏度

称重传感器的电灵敏度为满负荷输出电压与鼓舞电压的比值,典型值是2mV/V。

当使用2mV/V灵敏度和5V鼓舞电压的传感器时,其满度输出电压为10mV。

通常,为了使用称重传感器线性度最好的一段称重范畴,应当仅使用满度范畴的三分之二。

因此满度输出电压应当大约为6mV。

当电子秤应用于工业环境时,在6mV满度范畴内测量微小的信号变化并非易事。

(2)总误差

总误差是指输出误差和额定误差的比值。

典型电子秤的总误差指标大约是0.02%,这一技术指标相当重要,它限制了使用理想信号调剂电路所能达到的精确度,决定了ADC辨论率的选择以及放大电路和滤波器的设计。

(3)漂移

称重传感器也产生与时刻相关的漂移。

目前常用的称重传感器有电阻应变式压力传感器、电容压力传感器、压电式压力传感器。

选用时应按稳固行、精度登记、寿命和安装环境要求考虑,其要紧特点如下:

(1)电容式压力传感器稳固性较差,精度和灵敏度较高,寿命较短,对环境要求苛刻,不易长距离传输。

(2)压电式压力传感器稳固性好,精度和灵敏度高,寿命长,但大量程的压力传感器尚待进一步研究。

(3)电阻应变式压力传感器稳固性较好,精度和灵敏度较高,寿命较长,对测量环境要求不太严格。

综上所述,选用电阻应变式压力传感器作为电子秤称重传感器是最为合适的。

电阻应变式压力传感器要紧由弹性体、电阻应变片电缆线等组成,内部线路采纳惠更斯电桥,当弹性体承担载荷产生变形时,电阻应变片〔转换元件〕受到拉伸或压缩应变片变形后,它的阻值将发生变化〔增大或减小〕,从而使电桥失去平稳,产生相应的差动信号,供后续电路测量和处理。

电阻应变式传感器测量原理如图2所示。

图2 电阻应变式传感器测量原理

当垂直正压力P作用于梁上时,梁产生形变,电阻应变片R1、R3受压弯拉伸,阻值增加;R2、R4受压缩,阻值减小。

电桥失去平稳,产生不平稳电压,不平稳电压与作用在传感器上的载菏P成正比,从而将非电量转化成电量输出。

R1、R2、R3和R4组成惠更斯电桥,将2对电阻应变片的阻值变化转变成输出电压,其工作原理如图3所示。

图3 测量电桥原理

3、电子秤专用24位AD转换芯片HX711及其电路

HX711采纳了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片。

与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。

降低了电子秤的整机成本,提高了整机的性能和可靠性。

该芯片与后端MCU芯片的接口和编程专门简单,所有操纵信号由管脚驱动,无需对芯片内部的寄存器编程。

输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。

通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。

通道B那么为固定的32增益,用于系统参数检测。

芯片内提供的稳压电源能够直截了当向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。

芯片内的时钟振荡器不需要任何外接器件。

上电自动复位功能简化了开机的初始化过程。

HX711内部方框图如图4所示。

其外部管脚如图5所示。

图4 HX711内部方框图

图5 HX711外部管脚图

图5为HX711芯片应用于计价秤的一个参考电路图。

该方案使用内部时钟振荡器(XI=0),10Hz的输出数据速率(RATE=0)。

电源〔2.7~5.5V〕直截了当取用与MCU芯片相同的供电电源。

通道A与传感器相连,通道B通过片外分压电阻与电池相连,用于检测电池电压。

图6 HX711计价秤应用参考电路图

  本课题设计的HX711电路如图7所示:

图7 HX711电路

4、单片机STC89C52及其电路

(1)STC89C52单片机概述

STC89C52系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。

(2)STC89C52单片机特点

l       增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;

l       工作电压:

5.5V-3.5V〔5V单片机〕;

l       工作频率范畴:

0~40MHz,相当于一般8051的0~80MHz;

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       时钟源:

外部高精度晶体/时钟,内部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模块,PowerDown模式可由外部中断唤醒;

l       通用全双工异步串行口(UART);

l       工作温度范畴:

-40~+85℃(工业级)/0~75℃(商业级);

l       封装:

PDIP-40,PLCC-44。

 (3)STC89C52单片机管脚及封装

STC89C52单片机有多种封装形式,本设计中选用40DIP封装,其管脚定义如图8所示。

图8STC89C52管脚图 

本课题设计的电子秤的单片机应用电路如图9所示:

图9 STC89C52单片机电路

图中DOUT和PDSCK为单片机与HX711的AD转换电路交换数据的通信线。

beep为蜂鸣器报警信号线,alert为报警灯信号线,RXD和TXD为串口通信线,也能够用于单片机程序的串行ISP下载。

5、液晶屏电路

图10 LCD显示电路

液晶屏电路如图10所示。

LCD_CS、LCD_RES、LCD_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数字、小数点和五个功能键。

键盘行扫描信号为ROW1—ROW4,列扫描信号为COL1—COL4。

行信号为输入信号,低电平有效;列信号为输出信号。

当没有键按下时,即使行扫描输入低电平信号,列信号仍为高电平;当行扫描为低电平同时有键按下时,相应的列输出低电平。

该低电平信号能够定位至按下键的位置。

7、声光报警电路

声光报警电路如图12所示。

图12  声光报警电路

   当测量重量超过量程时,beep和alert给出低电平信号,驱动蜂鸣器鸣响,报警灯亮。

8.电源电路

本设计采纳USB接口供电,电源电压5V。

同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写。

其电路原理如下图。

图16 供电及程序下载电路

三、Protel硬件开发软件

Protel是目前国内最流行的通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿真和PLD设计等多个有用工具软件组合后构成的EDA工作平台,是第一个将EDA软件设计成基于Windows的普及型产品。

它集成了软件界面、仿真功能和PLD设计和信号完整性分析,在此基础上Protel99SE又增加了一些新的功能,用户使用更加方便灵活。

Protel的功能十分强大,在电子电路设计领域占有极其重要的地位。

它以其强大功能和有用性,逐步获得宽敞硬件设计人员的青睐,是目前众多EDA设计软件中用户最多的产品之一。

1.Protel软件组成

Protel软件要紧由电路原理图设计模块、印制电路板设计模块〔PCB设计模块〕、电路信号仿真模块和PLD逻辑器件设计模块等组成,各模块具有强大的功能,能够专门好的实现电路设计与分析。

(1) 原理图设计模块〔Schematic模块〕

电路原理图是表示电气产品或电路工作原理的重要技术文件,电路原理图要紧由代表各种电子器件的图形符号、线路和结点组成。

图4.1所示为一张电路原理图。

该原理图是由Schematic模块设计完成的。

Schematic模块具有如下功能:

丰富而灵活的编辑功能、在线库编辑及完善的库治理功能、强大的设计自动化功能、支持层次化设计功能等。

 

(2)印制电路板设计模块〔PCB设计模块〕

印制电路板〔PCB〕制板图是由电路原理图到制作电路板的桥梁。

设计了电路原理图后,需要依照原理图生设计成印制电路板的制板图,然后在依照制板图制作具体的电路板。

印制电路板设计模块具有如下要紧功能和特点:

可完成复杂印制电路板〔PCB〕的设计;方便而又灵活的编辑功能;强大的设计自动化功能;在线式库编辑及完善的库治理;完备的输出系统等。

(3)电路信号仿真模块

电路信号仿真模块是一个功能强大的数字/模拟混合信号电路仿真器,能提供连续的模拟信号和离散的数字信号仿真。

它运行在Protel的EDA/Client集成环境下,与ProtelAdvancedSchematic原理图输入程序协同工作,作为AdvancedSchematic的扩展,为用户提供了一个完整的从设计到验证仿真设计环境。

在Protel中进行仿真,只需从仿真用元器件库中放置所需的元器件,连接好原理图,加上鼓舞源,然后单击防真按钮即可自动开始。

2.PCB板设计

(1) 定元件的封装

①打开网络表〔能够利用一些编辑器辅助编辑〕,将所有封装扫瞄一遍,确保所有元件的封装都正确无误同时元件库中包含所有元件的封装,网络表中所有信息全部大写,一面载入出问题,或PCBBOM不连续。

②标准元件全部采纳公司统一元件库中的封装。

③④⑥⑤元件库中不存在的封装,应自己建立元器件库。

(2)建立PCB板框

①依照PCB结构图,或相应的模板建立PCB文件,包括安装孔、禁布区等相关信息。

②尺寸标注。

在钻孔层中应标明PCB的精确结构,且不能够形成封闭尺寸标注。

(3)载入网络表

①载入网表并排除所有载入问题,具体请看«PROTEL技术大全»。

其他软件载入问题有专门多相似之处,能够借鉴。

②假如使用PROTEL,网表须载入两次以上〔没有任何提示信息〕才能够确认载入无误。

(4)布局

①第一要确定参考点。

一样参考点都设置在左边和底边的边框线的交点〔或延长线的交点〕上或印制板的插件的第一个焊盘。

②一但参考点确定以后,元件布局、布线均以此参考点为准。

布局举荐使用25MIL网格。

③依照要求先将所有有定位要求的元件固定并锁定。

④布局的差不多原那么

A.遵循先难后易、先大后小的原那么。

B.布局能够参考硬件工程师提供的原理图和大致的布局,依照信号流向规律放置要紧原器件。

C.总的连线尽可能的短,关键信号线最短。

D.强信号、弱信号、高电压信号和弱电压信号要完全分开。

E.高频元件间隔要充分。

F.模拟信号、数字信号分开。

⑤相同结构电路部分应尽可能采取对称布局。

⑥按照平均分布、重心平稳、版面美观的标准来优化布局。

(5)PCB设计遵循的规那么

①地线回路规那么:

图17地线回路规那么

环路最小规那么,即信号线与其回路构成的环面积要尽可能小,环面积要尽可能小,环面积越小,对外的辐射越少,接收外界的干扰也越小。

针对这一规那么,在地平面分割时,要考虑到地平面与重要信号走线的分布,防止由于地平面开槽等带来的问题;在双层板设计中,在为电源留下足够空间的情形下,应该将留下的部分用参考地填充,且增加一些必要的过孔,将双面信号有效连接起来,对一些关键信号尽量采纳地线隔离,对一些频率较高的设计,需专门考虑其地平面信号回路问题,建议采纳多层板为宜。

②窜扰操纵

窜扰〔CrossTalk〕是指PCB上不同网络之间因较长的平行布线引起的相互干扰,要紧是由于平行线间的分布电容和分布电感的作用。

克服窜扰的要紧措施是:

A.加大平行布线的间距,遵循3W规那么。

B.在平行线间插入接地的隔离线。

C.减少布线层与地平面的距离

③屏蔽爱护

图18 屏蔽爱护

对应地线回路规那么,实际上也是为了尽量减小信号的回路面积,多用于一些比较重要的信号,如时钟信号,同步信号;对一些专门重要,频率专门高的信号,应该考虑采纳铜轴电缆屏蔽结构设计,立即所布的线上下左右用地线隔离,而且还要考虑好如何有效的让屏蔽地与实际地平面有效结合。

④走线方向操纵规那么

相邻层的走线方向成正交结构,幸免将不同的信号线在相邻层走成同一方向,以减少不必要的层间窜扰;当由于板结构限制〔如某些背板〕难以幸免显现该情形,专门是信号速率较高时,应考虑用地平面隔离各布线层,用地信号线隔离各信号线。

⑤电源与地线层的完整性规那么

关于导通孔密集的区域,要注意幸免孔在电源和地层的挖空区域相互连接,形成对平面层的分割,从而破坏平面层的完整性,并进而导致信号线在地层的回路面积增大。

四、 软件设计

1、软件流程图

本设计主程序使用了定时器,用来实现每0.5秒称重一次的功能,流程图如图19所示。

键盘扫描程序如图20所示。

                               

   图19 时钟中断程序流程图              图20 键盘扫描程序流程图

主程序软件流程如图21所示。

             

图21 主程序流程图            

3、主程序

   下面介绍main.c主程序编写,其他程序略。

(1) 头文件和一些宏定义

#include

#include

#include

#include"lcd.h"

#include"hx711.h"

#include"keyboard.h"

//定义量程系数

#defineRATIO    2114/1623

(2)管脚、常量、变量定义

//定义标识

volatilebitFlagTest=0;                 //定时测试标志,每0.5秒置位,测完清0

volatilebitFlagKeyPress=0; //有键按下标志,处理完毕清0

volatilebitFlagSetPrice=0; //价格设置状态标志,设置好为1。

//管脚定义

sbitLedA=P2^2;

sbitbeep=P1^0;

sbitalert=P1^1;

//显示用变量

intCounter;

ucharidatastr1[6]="000000";

inti,iTemp;

//称重用变量

unsignedlongidataFullScale;//满量程AD值/1000

unsignedlongAdVal;    //AD采样值

unsignedlongweight;   //重量值,单位g

unsignedlongidataprice;    //单价,长整型值,单位为分  

unsignedlongidatamoney;    //总价,长整型值,单位为分

//键盘处理变量

ucharkeycode;

ucharDotPos;                                  //小数点标志及位置

(3)函数声明

voidint2str(int,char*);

voidData_Init();

voidPort_Init(); 

voidTimer0_Init();

voidTimer0_ISR();

voidINT1_Init();

voidKeyPress(uchar);

voidTo_Zero();

voidDisplay_Price();

voidDisplay_Weight();

voidDisplay_Money();

(4)各子程序

//整型转字符串的函数,转换范畴0--65536

voidint2str(intx,char*str)

{

   inti=1;

   inttmp=10;

   while(x/tmp!

=0)

   {

       i++;

       tmp*=10;

   }

   tmp=x;

   str[i]='\0';

   while(i>1)

   {

       str[--i]='0'+(tmp%10);

       tmp/=10;

   }

   str[0]=tmp+'0';

}

//重新找回零点,每次测量前调用

voidTo_Zero()

{

  FullScale=ReadCount()/1000;

  price=0;

}

//显示单价,单位为元,四位整数,两位小数

voidDisplay_Price()

{

  unsignedinti,j;

  display_string(5,44,"      ");

  

  i=price/100;   //得到整数部分

  j=price-i*100;//得到小数部分

  int2str(i,str1);

  //显示整数部分

  if(i>=1000)

  {

     display_string(5,44,str1);

  }

  elseif(i>=100)

  {

     display_string(5,52,str1);

  }

  elseif(i>=10)

  {

     display_string(5,60,str1);

  }

  else

  {

     display_string(5,68,str1);

  }

  //显示小数点

  display_string(5,76,".");  

  //显示小数部分

  int2str(j,str1);

  if(j<10)

  {

     display_string(5,84,"0");

     display_string(5,92,str1);

  }

  else

  {

     display_string(5,84,str1);

  }

}

//显示重量,单位kg,两位整数,三位小数

voidDisplay_Weight()

{

  unsignedinti,j;

  

  display_string(3,60,"     ");

  //weight单位是g

  i=weight/1000;   //得到整数部分

  j=weight-i*1000;//得到小数部分

  int2str(i,str1);

  if(i>=10)

  {

     display_string(3,60,str1);

  }

  else

  {

     display_string(3,68,str1);

  }

  display_string(3,76,".");  

  int2str(j,str1);

  if(j<10)

  {

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2