计量标准技术报告
计量标准名称 电子天平检定装置
计量标准负责人
建标单位名称(公章)
填 写 日 期
目 录
一、 建立计量标准的目的……………………………………………(2)
二、计量标准的工作原理及其组成……….……..…………….. ……..(2)
三、计量标准器及主要配套设备……………. ………………………..(3)
四、计量标准的主要技术指标……………….……....………………...(4)
五、环境条件…………………………………..…….………..………...(4)
六、计量标准的量值溯源和传递框图………….…….………. ………(5)
七、计量标准的测量重复性试验………………………….…. ……….(6)
八、计量标准的稳定性考核……………………………….…………..(7)
九、检定或校准结果的测量不确定度评定…………….…..…………(8)
十、检定或校准结果的验证……………………...…….……..............(15)
十一、结论……………………………………..…….……..………….(16)
十二、附加说明………………………………….…………………….(16)
第二篇:电子秤报告
测控技术与仪器专业
《传感器技术》课程设计任务书
课题:电阻应变式电子秤
电子与电气工程学院
1.系统方案设计
1.1 概述
1.2 系统方案框图
2.工作原理
2.1 检测原理
2.2 传感器选择
2.3 测量电路介绍
2.4 误差分析与修正
(1)系统误差
(2)随机误差
3.系统软件设计
3.1 软件设计方法
3.2 测试系统流程图
3.3 系统软件
4.系统调试与验证
5.课程设计体会与总结
附录:1、参考资料 2、元器件表
基于电阻式应变片式传感器的电子秤设计
1.系统方案设计
1.1概述
电子秤作为现代生活中不可或缺的一部分,在各行各业显现出其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量秤,成为测量领域的主流产品。
本文设计的电子秤以单片机为核心控制部件,用C语言作为编程语言来进行软件设计,以全桥压力传感器作为压力感受部件,制作出一套测量范围在0~1.999kg,最小分度值为0.001kg的电子秤。压力传感器输出的电量是模拟量,数值比较小达不到A/D 转换接收的电压范围。所以送A/D 转换之前要对其进行前端放大、整形滤波等处理。然后,A/D 转换的结果才能送单片机进行数据处理并显示。其数据显示部分采用LCD 显示,成本低且能很好地实现所要求的功能。
1.2系统原理框图
本高精度电子秤系统可分为单片机控制电路、A/D转换电路、复位电路、传感器、时钟电路、LCD显示、滤波电路等几部分,其系统组成如图1所示。
图1 系统组成框图
电子秤的测量过程是把重量这种非电参数转换电参数即电压,并通过信号调节电路进行放大,把微弱的电压信号,mV级的转换成V级的电压信号,再通过A/D转换器将电信号转换成数字信号送给单片机处理,单片机实现软件清零,软件调整,软件控制等功能,对A/D转换器发送的信息进行处理,送入LCD显示电路,由显示电路输出测量结果。整个系统实现了用单片机来控制输出,在线性度的确定过程中,需要对程序进行反复的修改,最终实现设计的要求。
2.工作原理
2.1检测原理
电阻式应变片传感器是通过电阻的应变效应进行测量。
系统通过传感器将压力这种物理量转化为电信号,即传感器内部的电阻应变片感应到压力后,电阻发生微小变化,通过全桥测量电路将电阻的微小变化转化成电压的微小变化,ADC0832将信号调整到A/D能采集的范围,然后由A/D进行采集转换,接着把采集到的8位高低电平通过DOUT送到单片机进行处理,单片机处理后,把数字信号输送到显示电路中,由显示电路输出测量结果。
2.2传感器的选择
本课题采用电阻式应变片传感器,因为其在小重量的测量上具有较好的线性关系。并且该传感器是我们最熟悉的一种,上课和实验都接触到,比较了解,设计起来比较容易。
我们选择具有过载保护的SP20C-G51,内部惠斯顿电桥具有抑制温度变化的影响,抑制干扰等特点。其工作原理图如下图所示:
图2全桥应变式传感器
其输出电压为:
Eout=R2×R4/(R2+R4)×(△R1/R1+△R2/R2+△R3/R3+△R4/R4)×Ein
在传感器实验课上,我们研究了电阻应变式压力传感器的输入和输出关系。通过研究我们实验中测量的数据,我们发现:输入的重量和经放大器放大的电桥输出电压值成线性关系。其结果如下表所示:
表1-1应变片全桥特性实验数据
重量(g) |
20 |
40 |
60 |
80 |
100 |
120 |
140 |
160 |
180 |
200 |
电压(mv) |
-11 |
-31 |
-33 |
-46 |
-59 |
-72 |
-85 |
-97 |
-110 |
-124 |
从实验数据可以看出重量和电压的线性关系,我们只需要通过调整电路、运算电路、显示电路将测量的重量和显示的数值的线性系数求出来,就可以在数码管上显示出物体的重量。
2.3测量电路介绍
2.3.1 STC89C52单片机性能介绍
STC89C52是一种低功耗、高性能8位微控制器,具有8K的可编程flash存储器[5]。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。内512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHZ,6T/12T可选。片上flash允许程序存储器在线可编程,也适于常规编程器[6]。在单芯片上,拥有灵巧的8位CPU和在系统上可编程闪烁存储单元,使得STC89C52为众多嵌入式控制应用系统提供灵活、有效的解决方案。
图3 STC89C52单片机复位、晶振电路图
2.3.2 STC89C52单片机引脚功能
VCC:电源。
P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在闪烁编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻[6]。
P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送“1”。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在闪烁编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
RST:复位输入。当晶振工作时,RST引脚持续2个机器周期高电平将使单片机复位。
EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在闪烁编程期间,EA也接收12伏VPP电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
2.3.3 复位电路
单片机上电时,当振荡器正在运行时,只要持续给出RST引脚两个机器周期的高电平,便可完成系统复位。外部复位电路是为提供两个机器周期以上的高电平而设计的。系统采用上电自动复位,上电瞬间电容器上的电压不能突变,RST上的电压是VCC上的电压与电容器上的电压之差,因而RST上的电压与VCC上的电压相同。随着充电的进行,电容器上的电压不断上升,RST上的电压就随着下降,RST脚上只要保持10ms以上高电平,系统就会有效复位。电容C1可取10-33μF,R取10KΩ,充电时间常数为10×10-6×10×103=100ms。
复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。本设计使用了第二种方法,其电路图如图3所示。
2.3.4 晶振电路
STC89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端,外接石英晶体或陶瓷振荡器以及补偿电容C2、C3构成并联谐振电路。当外接石英晶体时,电容C2、C3选30pF±10pF;当外接陶瓷振荡器时,电容C2、C3选40pF±10pF。STC89C52系统中晶振频率一般在1.2-12MHz选择。外接电容C2、C3的大小会影响振荡器频率的高低、振荡频率的稳定度、起振时间及温度稳定性。在本系统中,选择了12MHz石英晶振,电容C1、C2为30pF。其电路图如图3所示。
将电阻应变式传感器的电阻变化转换成电压或电流信号,在应用中一般采用电桥电路作为测量电路。电桥电路具有结构简单、灵敏度高,测量范围宽、线性度好且易实现温度补偿等优点。
2.3.5 A/D转换芯片ADC0832接口电路
图4
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。 正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
2.3.6 A/D转换芯片ADC0832引脚说明
图5
2.3.7 电桥电路介绍
应变式传感器常用的测量电路有单臂电桥、差动半桥和差动全桥,其中差动全桥可提高电桥的灵敏度,消除电桥的非线性误差,并可消除温度误差等共模干扰。一般在测量中都使用4片应变片组成差动全桥,本设计所采用的传感器就是全桥测量电路。其电路图如图8所示。桥式测量电路有四个电阻,其中任何一个都可以是电阻应变片电阻,电桥的一个对角线接入工作电压U,另一个对角线位输出电压Uo。其特点是:当四个桥臂电阻达到相应关系时,电桥输出为零,否则就有电压输出,可用灵敏检流计来测量,所以电桥能够精确地测量微小的电阻变化。应变电阻作为桥臂电阻接在电桥电路中。无压力时,电桥平衡,输出电压为零;有压力时,电桥的桥臂电阻值发生变化,电桥失去平衡。 全桥测量电路中,将受力性质相同的两片应变片接入电桥对边。其输出灵敏度比半桥提高了一倍,非线性误差和温度误差均得到了改善。
图6 全桥测量电路
2.3.8 放大调整电路介绍
传感器输出的电压范围为0-20mV,而A/D转换器的输入电压要求为0-2V,因此放大器需要有100倍左右的增益。采用INA128放大器设计的调整电路如下
图7基于INA128的共模抑制放大电路
INA128的增益G=1+50KΩ/RG,确定RG的大小为500Ω左右。图1-2的放大电路中,前级采用运放A1和A2组成并联型差动放大器。阻容耦合电路放在前级放大器和后级放大器之间,这样可以为后级放大器提高增益,进而提高电路的共模抑制比。同时由于潜质放大器的输出阻抗很低,又采用共模抑制技术,避免了阻容耦合电路中的阻、容元件参数不对称导致的共模干扰的情况发生。后级电路采用价廉的仪器放大器,将双端信号转换为单端信号输出。由于阻容耦合电路的隔直作用,后级放大器可以做到很高的增益,进而得到很高的共模抑制比。
2.3.9 信号采集电路
本课题的信号采集电路是由电阻应变片传感器、信号调整电路(放大器电路)和ICL7109组成。传感器选择集成过载保护的SP20C-G501,内部含有电桥具有温度补偿的特点。放大器需要提供100倍左右的增益,所以选择INA128放大器设计电路,并设置RG为500Ω。
物体的重量信号先被传感器采集并转换成电阻的变化,再通过电桥将电阻的变化转换成电压显示出来,因为传感器所产的电阻变化产生的电压信号微弱,需要经过放大才能达到A/D转换器的输入电压要求,经测量需要100倍左右的增益。
图8 信号采集电路中传感器和放大器
通过调节Rg的阻值来改变放大倍数。微弱信号Vi1和Vi2被分别放大后从INA128的第6脚输出。A/D转换器ICL7109的输入电压变化范围是-10V~+10V,传感器的输出电压信号在0~20mv左右,因此放大器的放大倍数在500~600左右。由于 ICL7109对高频干扰不敏感,所以滤波电路主要针对工频及其低次谐波引入的干扰。因为压力信号变化十分缓慢,所以滤波电路可以把频率做得很低。
2.3.10 LCD显示电路
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等点阵型液晶模块它有若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有间隔起到了字符间距和行间距的作用。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶[10]。
1602外围电路简单微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。因此,笔者在本设计中选用了该显示模块,其连接结构如图9示:
图9 液晶显示电路
2.4 误差分析
一个系统中必然存在误差,这是不可避免的,也是不可能消除的。误差分为系统误差和随机误差,系统误差是由系统本身的属性决定的,与周围环境无关。而随机误差跟周围环境有关,受其影响。
下面列举几个对误差的处理
(1)无效物理量的消除
在称重系统中,称重传感器输出的信号是秤台、支架和被测物之和的转换信号,实际所要测的是被测物的重量,因此,秤台、支架等是无效的物理量,在信号处理过程中要用软件方法来消除。
(2)零漂处理
零位稳定是影响电子秤精度非常重要的因素,因受温度或其它因素影响将引起零位不稳定,这种现象称为零漂。由于零漂的影响,零输入信号时,输出可能不为零,为消除这个零位漂移值,采用零位补偿技术,零位补偿就是把这个零位漂移值储存起来,每一数据采集时减去这个数值,得到的数值就是消除零漂的有效信号。
(3)非线性补偿
在检测中,由于检测传感器的输入输出特性往往只在一定范围内近似呈线性,而在某些范围内则明显呈非线性,同时,传感器具有离散性,还可能有温漂、滞后等。在信号处理过程中也常用软件处理方法来补偿和校正以上误差。
(4)数字滤波技术
实际测量中,由于被测对象的环境比较恶劣,干扰源比较多,各种电子秤在称量过程中,来自传感器的有用信号往往混杂有各种频率的干扰信号。数字滤波就是在软件设计时采用一定的计算方法对输入的信号进行数学处理,减少干扰信号在有用信号中的比重,提高信号的真实性,它不需要增加硬件,只需根据预定的滤波算法编制相应的程序,即可达到信号滤波的目的。
3.系统软件设计
3.1软件设计方法
智能电子秤软件系统设计的基本思想是充分利用微机丰富的软件功能,实现称重过程一系列要求,提高系统可靠性,使得系统性能价格比达到最优。智能电子秤作为一种实时性要求不是很高系统,用软件代替部分硬件功能很合算。
首先,我们通过对软件进行分析,确定那些任务是由软件来完成的。在本系统中,从软件功能来看,其包括执行软件和监控软件两类。执行软件,完成各种实质性的功能,如采集数据,进行滤波处理,价格计算,中断处理,重量、价格的显示都利用软件来完成,不仅使得电子秤的性能提高,以达最高性能价格比;监控软件,用来协调各模块和操作者之间的关系,如本系统中A/D转换、数据处理各模块的工作。
其次,智能电子秤系统中有着大量的数据计算,各个模块之间进行信息传递,我们必须数据类型和结构进行规划,对系统内程序存储器、RAM、定时器/计数器和中断源的分配。
3.2软件流程图
图10
3.3系统软件
#include<reg51.h>
#include<intrins.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define BUSY 0x80 //常量定义
#define DATAPORT P0
sbit ADCS =P3^5;
sbit ADDI =P3^7;
sbit ADDO =P3^7;
sbit ADCLK =P3^6;
sbit LCM_RS=P2^0;
sbit LCM_RW=P2^1;
sbit LCM_EN=P2^2;
uint x1,y1,z1=0,w1,temp1;
uchar ad_data; //采样值存储
sbit beep =P3^0;
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 "};
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 display(void);
uchar Adc0832(unsigned char channel);
void alarm(void);
void data_pro(void);
/**********main funcation************/
void main(void)
{
delay(500); //系统延时500ms启动
ad_data=0; //采样值存储单元初始化为0
initLCM( );
WriteCommandLCM(0x01,1); //清显示屏
DisplayListChar(0,0,str0);
while(1)
{
ad_data =Adc0832(0); //采样值存储单元初始化为0
alarm();
data_pro();
display();
}
}
/*********延时K*1ms,12.000mhz**********/
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<100;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(15);
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); //显示屏打开,光标不显示,不闪烁,检测忙信号
TMOD=0x11;
EA=1;
ET1=1;
TR1=1;
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; //指令码为地址码+0X80
WriteCommandLCM(X,1);
WriteDataLCM(DData);
}
/*******显示指定坐标的一串字符子函数*****/
void DisplayListChar(uchar X,uchar Y,uchar code *DData)
{
uchar ListLength=0;
Y&=0x01;
X&=0x0f;
while(X<16)
{
DisplayOneChar(X,Y,DData[ListLength]);
ListLength++;
X++;
}
}
/*****************系统显示子函数*****************/
void display(void)
{
WriteCommandLCM(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号
DisplayListChar(0,0,str0);
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); //稳定显示
}
/************
读ADC0832函数
************/
uchar Adc0832(unsigned char channel) //AD转换,返回结果
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
ADDI=1;//控制命令结束
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高数据端,回到初始状态
dat<<=8;
dat|=ndat;
return(dat); //return ad k
}
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 alarm(void)
{
if(ad_data>=256)
beep=0; //则启动报警
else
beep=1;
}
4.系统调试与验证
4.1调试过程
调试分为软件的调试和硬件的调试。软件的调试通过keil软件进行运行调试,因为我们的程序是使用c语言进行的变成,用keil仿真可以检查语法错误等,并且可以生成hex文件方便硬件调试。硬件调试采用proteus软件进行仿真模拟,proteus功能十分强大,可以实现大部分的硬件仿真包括大部分的单片机,们可以导入hex文件进行单片机的仿真。
4.2仿真结果截图
晶振电路如上
测量电路如上
LCD1602显示电路如上
总体仿真设计如上
采用滑动变阻器代替电阻应变片式传感器。
5.课程设计体会与总结
一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我动手能力。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。
在设计制作高精度电子秤的过程中,我深切体会到理论与实践相结合的重要性。本系统的制作主要应用到了模拟电子技术、数字电子技术、单片机控制技术、电子工艺和C程序设计等多方面的知识,所设计的基于MCS-51单片机程序控制的高精度数字电子秤,达到了设计要求,同时也使我的动手能力和电子设计能力得到了极大锻炼。
我们在课堂中了解到各种传感器及其涉及的应用,而课程设计让我们有机会去使用传感器并利用传感器。让我们不只是知道,了解而是会熟练的应用。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
附录
1.参考资料
[1] 宋文续,扬帆.传感器与检测技术.北京:高等教育出版社,2005.4
[2] 康华光.电子技术基础 模拟电路部分(第五版).北京高等教育出版社
[2] 康华光.电子技术基础 数字电路部分(第五版).北京高等教育出版社
[4] 丁元杰.单片微机原理及应用.北京:机械工业出版社,1999.8
2.元器件表
元器件 |
数量 |
P89C52X2BN |
1 |
喇叭 |
1 |
ADC8032 |
1 |
LCD1602 |
1 |
SP20C-G51 |
1 |
滑动变阻器 |
若干 |
电容 |
若干 |
电阻 |
若干 |
排阻 |
1 |
晶振 |
1 |
IN128 |
1 |