智能仪表课程设计

更新时间:2024-05-24 12:20:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

沈阳理工大学课程设计专用纸

摘要

随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。

20世纪90年代以来,随着科学技术的进步,工业生产自动化、智能化水平的提高,各行业对称重计量提出了许多新要求,归纳起来主要是:称重技术从静态称重向动态称重方向发展;测量方法从模拟测量向数字测量方向发展;测量特点从单参数测量向多参数测量方向发展;电子衡器产品的技术性能向高速率、高准确度、高稳定性、高可靠性方向发展。

关键词:电子秤;智能仪表

- 1 -

沈阳理工大学课程设计专用纸

目录

引言????????????????????????????????3 1.设计背景?????????????????????????????4 1.1课题背景???????????????????????????4 1.2设计内容???????????????????????????4 2电子秤简介????????????????????????????5 2.1总体方案设计?????????????????????????5 2.2系统组成???????????????????????????6 3系统硬件设计???????????????????????????7 3.1传感器的设计?????????????????????????7 3.2电阻应变式传感器测量电路的设计????????????????8 3.3 A/D转换系统的电路设计????????????????????8 3.4 CPU控制系统的电路设计????????????????????11 3.5液晶显示简介?????????????????????????13 3.6 报警电路的设计????????????????????????15 3.7系统总体电路图????????????????????????16 4.软件设计?????????????????????????????17 4.1主程序的设计?????????????????????????17 5电路调试?????????????????????????????18 5.1系统调试及结果处理??????????????????????18 6.总结???????????????????????????????19 参考文献??????????????????????????????20 附录;源程序代码??????????????????????????21

- 2 -

沈阳理工大学课程设计专用纸

引言

近几年,我国的电子称重系统从最初的机电结合型发展到现在的全电子型和数字智能型。电子称重技术逐渐从静态称重向动态称重发展,从模拟测量向数字测量发展,从单参数测量向多参数测量发展。电子称重系统制造技术及其应用得到了新发展。国内电子称重技术基本达到国际上20世纪90年代中期的水平,少数产品的技术已处于国际领先水平。作为重量测量仪器,智能电子秤在各行各业开始显现其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量称,成为测量领域的主流产品。

- 3 -

沈阳理工大学课程设计专用纸

1.设计背景

1.1课题背景

随着数字信息时代的到来,在工业过程检测和称重计量与控制系统中,数字化电子称和数字称重系统的应用越来越多。

本设计则是以智能电子测量为设计方向,将传感器的输出信号经放大系统放大,再经过A/D转换系统进行模数转换后将信号发送到CPU控制系统处理并传送给LCD显示系统显示。在此基础上还增加了键盘控制及阈值报警功能,随时可改变称重上限阈值,调节单价,显示总价格,去皮处理等功能,使本产品进一步智能化,更接近本次设计的设计理念。

1.2设计内容

本设计主要是介绍了单片机控制下的电子秤,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下: (1)利用电子秤测量物体重量; (2)测量范围为0Kg~2Kg,精度20g;

(3)在此基础上还增加了键盘控制及阈值报警功能,随时可改变称重上限阈值,调节单价,显示总价格,去皮处理等功能。

- 4 -

沈阳理工大学课程设计专用纸

2.电子秤简介

2.1总体方案设计

显示器的选择方案

方案一:采用LED(数码管)显示。LED(数码管)是light-emitting diode的缩写,它经过合理的设置可以完成显示被测物质量、单价、总价以及可测上限值的任务,并且经济耐用。同时LED具有高亮度,高刷新率的优点,能提供宽达160°的视角,可以在较远的距离上看清楚。但是它的显示存在信息量少,显示不直观,不易理解,连线复杂等缺点。

方案二:采用LCD(液晶屏)显示。LCD(液晶屏)是Liquid Crystal Display的缩写,它具有字符显示的功能,不但可以同时显示被测物质量、单价、总价以及可测上限值,还可以同时显示相应的控制命令、指示符号及单位等,信息量丰富且直观易懂。另外,液晶显示有功耗低,体积小,质量轻,寿命长,不产生电磁辐射污染等优点。

综合比较二者的优缺点,本设计最终采用LCD1602作为显示器。 AD芯片的选择方案

方案一:采用AD7810作为A/D转换器件。 AD7810是美国模拟器件公司(Analog Devices)生产的一种低功耗10位高速串行A/D转换器。该产品有8脚DIP和SOIC两种封装形式,并带有内部时钟。它的外围接线极其简单,AD7810的转换时间为2μs,采用标准SPI同步串行接口输出和单一电源(2.7V~5.5V)供电。在自动低功耗模式下,该器件在转换吞吐率为1kSPS时的功耗仅为27μW,因此特点适合于便携式仪表及各种电池供电的应用场合使用。

方案二:采用ADC0809作为A/D转换器件。ADC0809是采样分辨率为8位的、微处理机兼容的控制逻辑的CMOS组件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。它是逐次逼近式A/D转换器,可以和单片机直接接口。

综上所述,由于考虑到8位模数转换已经满足本次设计要求,而且ADC0809的价格相对较低,所以本设计采用ADC0809作为模数转换器件。

CPU的选择方案

方案一:采用传统的8位的51系列单片机作为系统控制器。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读

- 5 -

沈阳理工大学课程设计专用纸

3.4 CPU控制系统的电路设计

AT89C52芯片简介

AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

图3-6 AT89C52芯片引脚图

AT89C52芯片的引脚说明

P0口:P0口是一组8 位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位以吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验

- 11 -

沈阳理工大学课程设计专用纸

时,要求外接上拉电阻。

P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。

P3口:P3口是一组带有内部上拉电阻的8 位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0位置位,可禁止ALE操作。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机

- 12 -

沈阳理工大学课程设计专用纸

器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器,EA端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。

XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 单片机控制电路的设计

在本次设计中,CPU控制系统的设计如图3-7所示:

图3-7 CPU电路的设计原理图

包含了复位电路、振荡电路,P0口作为LCD1602的数据端,P1口作为A/D

转换后的信号输入端,P2口作为报警电路、键盘电路及LCD1602的控制接口。 显示系统电路的设计

3.5液晶显示简介

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,

- 13 -

沈阳理工大学课程设计专用纸

有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

LCD1602的结构及引脚功能 LCD1602的结构如下图所示:

图3-8 LCD1602的结构图

第1脚:VSS为地电源。 第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

- 14 -

沈阳理工大学课程设计专用纸

第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极 显示电路的硬件设计

LCD1602的电路设计如下图所示:

图3-9 LCD1602的结构图

其中数据口接单片机的P0口,E接P2.5,RS接P2.7,RW接P2.6。

3.6 报警电路的设计

本设计采用蜂鸣器作为报警器,从而实现阈值报警功能。其设计电路如图3-9所示,将蜂鸣器的正极接VCC,负极接三极管8550的集电极,8550的基极串联一个2K的电阻再接到CPU的P2.4口,当P2.4为高电平时,8550无法导通,蜂鸣器不叫,当P2.4为低电平时,8550导通,蜂鸣器报警。

图3-10 报警电路原理图

- 15 -

沈阳理工大学课程设计专用纸

3.7系统总体电路图

图3-11 电子称的主板电路图

- 16 -

沈阳理工大学课程设计专用纸

4.软件设计

4.1主程序的设计

主程序设计的流程如下图所示,开机后先对LCD1602进行初始化,并显示单价及上限阈值,接下去则循环采集AD数据及键盘程序。

开始LCD1602初始化显示初始化AD数据采集及处理键盘扫描及处理

图4-1 主程序流程图

- 17 -

沈阳理工大学课程设计专用纸

5电路调试

5.1系统调试及结果处理

在硬件调试过程中重量与电压的关系如表一所示:

表4-1 重量与电压的关系表

质量20 /g 电压0.39 0.78 1.16 1.56 1.94 2.34 2.73 3.12 3.50 3.89 4.28 4.67 /V 线性符合设计要求,且每个砝码对应的电压值转BCD码后正好近似20,则无需其他处理。

- 18 -

40 60 80 100 120 140 160 180 200 220 240 沈阳理工大学课程设计专用纸

6.总结

在本次的设计过程中,我花了大量的时间和精力进行资料查阅和方案论证,根据自己曾经学过的数电和模电知识,以及本学期对传感器、微机原理等课程的学习,结合智能仪器的相关知识及其设计方法,完成了对此便携式电子秤的设计。但由于缺乏实践经验,还有很多因素没有能够顾及周全,如未考虑调零电路,电路中还有些功能不够完善,而且抗干扰能力处理的还不够细致。

但是总的来说,在这次课程设计中,我学会了怎样把自己所学的各种知识综合运用,将它们应用到实处。通过具体的过程,我掌握了各个功能模块的接口设计方法,使自己无论是在设计思想还是在知识的具体运用上都有了很大的提高。

从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,课程设计更是如此,只有经常的动手,理论与实际结合的过程中才能提高,这就是我在这次课程设计中的最大收获。期待老师的指点!

- 19 -

沈阳理工大学课程设计专用纸

参考文献

[1] 孙育才.《单片微型计算机及其应用》.东南大学出版社,2004。 [2] 潘新民 王燕芳.《微型计算机控制技术》.电子工业出版社,2003。 [3] 李群芳.《单片机原理及接口技术》.电子工业出版社,2008。

[4] 凌志浩.《 智能仪表原理与设计技术》. 华东理工大学出版社,2003。

- 20 -

沈阳理工大学课程设计专用纸

附录:源程序代码

#include #include #include sbit EP=P2^5;//6 sbit RW=P2^6;//5 sbit RS=P2^7;//4 sbit ST=P3^5;//4

sbit B_DIS=P2^4;//声音信号指示 sbit BUSY=P3^3;//AD转换忙信号 sbit EN=P3^4;

unsigned char count,pr=5,max=199,key_num=0,M,s,d,l; unsigned int G=0x00;

unsigned char bcd_dis[4],bcd_P[2],bcd_M[4],bcd_Z[5]; void delay(unsigned int i) { for(;i>0;i--); }

void LCD_WC(unsigned char command) { RS=0; RW=0; EP=0; delay(2); P0=command; delay(4); EP=1; delay(4); EP=0; }

void LCD_WD(unsigned char dat) { RS=1; RW=0; EP=0; delay(2); P0=dat; delay(2); EP=1; delay(4); EP=0; }

void LCD_ON(void) { LCD_WC(0x0c); delay(256); }

void LCD_OFF(void) { LCD_WC(0x08);

- 21 -

沈阳理工大学课程设计专用纸

delay(256); }

void LCD_CLEAR(void) { LCD_WC(0x01); delay(256); }

void LCD_SET_POS(unsigned char wz) { LCD_WC(wz|0x80); delay(256); }

void LCD_INIT(void) { LCD_WC(0x38); delay(256); LCD_ON(); LCD_WC(0X06); delay(256); LCD_CLEAR(); }

void LCD_DISP(unsigned char string[]) { int i=0;

while(string[i])

{ LCD_WD(string[i++]); delay(1000); } }

void A_D(void) { G=0;

for(h=0;h<10;h++) { P1=0XFF; ST=0; delay(1); ST=1; delay(1); ST=0; while(BUSY); G=G+P1;

delay(1000); } }

unsigned char key(void) { unsigned char temp,i; key_num=0;

if((P2&0x0f)==0x0f) return(0xff); delay(5);

if((P2&0x0f)==0x0f) return(0xff); temp=P2&0x0f;

- 22 -

沈阳理工大学课程设计专用纸

for(i=0;i<3;i++)

{ if((temp&0x01)==0) break; temp=temp>>1;

key_num++; }

while((P2&0x0f)!=0x0f); return(key_num); }

void BCD_P(unsigned char b) { bcd_P[0]=b+0x30; bcd_P[1]=0x00; }

void BCD(unsigned char b) { bcd_dis[0]=b/100+0x30; bcd_dis[1]=b/10+0x30; bcd_dis[2]=b+0x30; bcd_dis[3]=0x00; }

void BCD_Z(unsigned int b) { bcd_Z[0]=b/1000+0x30; bcd_Z[1]=b/100+0x30; bcd_Z[2]=b/10+0x30; bcd_Z[3]=b+0x30; bcd_Z[4]=0x00; }

unsigned char F_BCD(void)

{ d=(bcd_M[0]-0x30)*100+(bcd_M[1]-0x30)*10+bcd_M[2]-0x30; return(d); }

void m_INIT(void)

{ LCD_SET_POS(0x00); LCD_DISP(\ LCD_SET_POS(0x08); LCD_DISP(\ LCD_SET_POS(0x40); LCD_DISP(\ LCD_SET_POS(0x48); LCD_DISP(\ LCD_SET_POS(0x02); BCD_P(pr);

LCD_DISP(bcd_P); LCD_SET_POS(0x4c); BCD(max);

LCD_DISP(bcd_dis); B_DIS=1; BCD(max);

- 23 -

沈阳理工大学课程设计专用纸

bcd_M[0]=bcd_dis[0];bcd_M[1]=bcd_dis[1];bcd_M[2]=bcd_dis[2];bcd_M[3]=bcd_dis[3]; s=max; BCD_P(pr);

LCD_SET_POS(0x42);

BCD_Z((int)M*(bcd_P[0]-0X30)); LCD_DISP(bcd_Z); }

void key_0(void) { if(count==3) count=0;

else count+=1;

switch(count)

{case1:LCD_SET_POS(0x4f);LCD_DISP(\break;

case2:LCD_SET_POS(0x05);LCD_DISP(\break;

case3:LCD_SET_POS(0x05);LCD_DISP(\=G/10;LCD_SET_POS(0x0a);BCD(M);LCD_DISP(bcd_dis);break;

default:LCD_SET_POS(0x05);LCD_DISP(\\\ } }

void key_1(unsigned char b) { if(count==1)

{ bcd_P[0]+=1;

if(bcd_P[0]==0x3a) { bcd_P[0]=0x30; }

LCD_SET_POS(0x02); LCD_DISP(bcd_P); }

if(count==2) { bcd_M[2]+=1;

if(bcd_M[2]==0x3a) { bcd_M[2]=0x30; bcd_M[1]+=1;

if(bcd_M[1]==0x3A) {bcd_M[1]=0x30;

bcd_M[0]+=1;

} }

if((bcd_M[0]==0x32)&(bcd_M[1]==0x30))

{bcd_M[0]=0x30;bcd_M[1]=0x30;bcd_M[2]=0x31; }

LCD_SET_POS(0x4C);

- 24 -

沈阳理工大学课程设计专用纸

LCD_DISP(bcd_M); F_BCD(); s=d;

if(s

void key_2(unsigned char b) { if(count==1) { bcd_P[0]-=1;

if(bcd_P[0]==0x2f) { bcd_P[0]=0x39; }

LCD_SET_POS(0x02); LCD_DISP(bcd_P); }

if(count==2) { bcd_M[2]-=1;

if(bcd_M[2]==0x2f) { bcd_M[2]=0x39; bcd_M[1]-=1;

if(bcd_M[1]==0x2f) { bcd_M[1]=0x39; bcd_M[0]-=1; } }

if((bcd_M[0]==0x30)&(bcd_M[1]==0x30)&(bcd_M[2]==0x30)) { bcd_M[0]=0x32;bcd_M[1]=0x30;bcd_M[2]=0x30; }

LCD_SET_POS(0x4C); LCD_DISP(bcd_M); F_BCD(); s=d;

if(s

void main()

{ unsigned char k=0xff,adda,dat,h; EN=1; LCD_INIT(); delay(15*256); m_INIT(); while(1) { A_D(); k=key(); B_DIS=1; switch(k)

- 25 -

沈阳理工大学课程设计专用纸

{ case 0:key_0();break; case 1:key_1(M);break; case 2:key_2(M);break; default:break; }

if(count==3) {

if(G/10>l) M=G/10-l;

else M=l-G/10; }

else M=G/10;

LCD_SET_POS(0x0a); BCD(M);

LCD_DISP(bcd_dis); if(s

BCD_Z((int)M*(bcd_P[0]-0X30)); LCD_DISP(bcd_Z); } }

- 26 -

沈阳理工大学课程设计专用纸

{ case 0:key_0();break; case 1:key_1(M);break; case 2:key_2(M);break; default:break; }

if(count==3) {

if(G/10>l) M=G/10-l;

else M=l-G/10; }

else M=G/10;

LCD_SET_POS(0x0a); BCD(M);

LCD_DISP(bcd_dis); if(s

BCD_Z((int)M*(bcd_P[0]-0X30)); LCD_DISP(bcd_Z); } }

- 26 -

本文来源:https://www.bwwdw.com/article/s9w7.html

Top