单片机电子秤设计报告Word格式文档下载.docx
- 文档编号:19133750
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:31
- 大小:425.53KB
单片机电子秤设计报告Word格式文档下载.docx
《单片机电子秤设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机电子秤设计报告Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
当电子秤应用于工业环境时,在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;
工作电压:
5.5V-3.5V(5V单片机);
工作频率范围:
0~40MHz,相当于普通8051的0~80MHz;
用户应用程序空间4K//8K/16k/32K/64K字节;
片上集成1280字节RAM;
通用I/O口(32/36个),复位后为准双向口/弱上拉(普通8051传统I/O口);
ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器。
每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;
可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;
有EEPROM功能;
看门狗;
内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);
时钟源:
外部高精度晶体/时钟,内部R/C振荡器;
用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟;
常温下内部R/C振荡器频率为:
5.0V单片机为:
11MHz~17MHz;
共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;
外部中断I/O口4路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,PowerDown模式可由外部中断唤醒;
通用全双工异步串行口(UART);
工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级);
封装:
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板设计
定元件的封装
①打开网络表(可以利用一些编辑器辅助编辑),将所有封装浏览一遍,确保所有元件的封装都正确无误并且元件库中包含所有元件的封装,网络表中所有信息全部大写,一面载入出问题,或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主程序编写,其他程序略。
头文件和一些宏定义
#include<
reg52.h>
intrins.h>
string.h>
#include"
lcd.h"
hx711.h"
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+'
}
//重新找回零点,每次测量前调用
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);
=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);
display_string(5,84,str1);
//显示重量,单位kg,两位整数,三位小数
voidDisplay_Weight()
display_string(3,60,"
//weight单位是g
i=weight/1000;
j=weight-i*1000;
display_string(3,60,str1);
display_string(3,68,str1);
display_string(3,76,"
display_string(3,84,"
00"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子秤 设计 报告