数显电子秤的设计【毕业论文】

数显电子秤的设计【毕业论文】

ID:363943

大小:1.61 MB

页数:46页

时间:2017-07-28

上传者:U-944
数显电子秤的设计【毕业论文】_第1页
数显电子秤的设计【毕业论文】_第2页
数显电子秤的设计【毕业论文】_第3页
数显电子秤的设计【毕业论文】_第4页
数显电子秤的设计【毕业论文】_第5页
资源描述:

《数显电子秤的设计【毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

( 2011 届)毕业设计题目:数显电子秤的设计姓  名:       专  业:  电子信息工程 班  级:     学号:指导教师:       导师职称:          年 月 日III 数显电子秤的设计摘要伴随着微电子技术的应用,目前市场上使用的一些传统的称重工具已经满足不了人们的需求。为了改变传统称重工具在使用上存在的一些问题,在本设计中将自动化、智能化、人性化用在了电子秤重的控制系统中。本系统主要由单片机来控制,测量物体重量部分由称重传感器及A/D转换器构成,显示单元采用12864点阵液晶显示,此电子秤具有性能价格比高、系统设计简单、使用方便直观、速度快、测量准确等特点。本系统以AT89C51单片机为主控芯片,外围附以称重电路、显示电路、键盘电路等构成智能称重系统,从而实现自动称重系统的各种控制功能。可以说,此设计所完成的电子秤很大程度上满足了应用需求。最后我通过PROTUES软件进行了本次设计的仿真。关键词:称重传感器,A/D转换器,12864点阵液晶,AT89C5139 ThedesignofdigitaldisplayelectronicscalesAbstractWiththeapplicationofthemicroelectronicstechnology,sometraditionalweighingtoolsusedonthemarketalreadycan'tsatisfythepeople'sneedsatpresent.Inordertochangesomeexistingproblemsoftraditionalweighingtools,inthissystem,automationandintelligence,humannaturewillbeusedintheelectronicweighingsystem.Thissystemismainlycontrolledbythesingle-chipmicrocomputer,measuringunitisconsistofpressuresensorandA/Dconverter,12864dotmatrixLCDdisplayischoseninthedisplayunit,Thiselectronicscalehasamulti-function,highcostperformance,andsystem’sdesignissimple,intuitiveandeasytouse,fast,accuratemeasurementandsoon.AT89C51isasthemainchipinthissystem,attachedtointegratedcircuit,displaycircuit,keyboardcircuitconstitutesanintelligentweighingsystem,soastorealizetheautomaticweighingsystem’scontrolfunction.Thedesignofelectronicscalelargelymeettheapplicationrequirements.Finally,thisdesignissimulatedbyPROTUES.朗读显示对应的拉丁字符的拼音 字典1.介词1.dueto2.becauseof3.inviewofKeywords:weighingtransducer,A/Dconverter,12864dotmatrixLCD,AT89C5139 目录数显电子秤的设计III摘要IIIAbstractIV1绪论11.1称重技术和衡器的发展11.2电子秤的组成11.2.1电子秤的基本结构11.2.2电子秤的工作原理21.2.3电子秤的计量性能21.3设计思路21.4本章小结32设计方案的比较和选择42.1控制器部分42.2数据采集部分62.2.1传感器的选择62.2.2放大电路选择72.2.3A/D转换器的选择72.2.4键盘处理部分方案论证82.3显示电路部分的选择92.4本章小结93硬件电路设计103.1AT89C51的最小系统电路103.2电源电路设计113.3数据采集部分电路设计113.3.1传感器和其外围电路的设计123.3.2A/D转换芯片与AT89C51单片机接口电路设计133.4显示电路与AT89C51单片机接口电路设计133.5键盘电路与AT89C51单片机接口电路设计143.6本章小结144.系统软件设计154.1主程序设计1539 4.2子程序设计154.2.1A/D转换启动及数据读取子程序的设计154.2.2数制转换子程序的设计154.2.3显示子程序的设计184.2.4键盘扫描子程序的设计184.3本章小结205仿真软件21参考文献22致谢23附录Ⅰ24附录Ⅱ仿真程序清单2539 数显电子秤的设计1绪论1.1称重技术和衡器的发展称重技术自古以来就被人们所重视,作为一种计量手段,广泛应用于工农业、科研、内外贸易等各个领域,与人民的生活息息相关。衡器是国家法定的计量器具,是国计民生、内外贸易、科学研究不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高[1]。称重装置不仅是提供重量数据的测量仪表,而且作为工业控制系统的一个组成部分,推进了工业生产的自动化,它起到了缩短作业时间、改善操作条件、提高产品质量等多方面的作用。称重器件的应用已普及到国民经济的各个方面,取得了非常显著的经济效益。因此,称重技术的研发和衡器工业的发展各个国家都很重视。60年代初期电子技术的发展推进了衡器制造业的发展。70年代中期出现的结合式电子衡器以来,经过40多年的改良与完善,我国电子衡器已经发展到了数字智能型。电子称重技术已经可以实现动态称重,在计量方法上可以进行数字测量,还可以同时进行多个参数的测量[2]。1.2电子秤的组成1.2.1电子秤的基本结构电子秤是利用物体的重力作用来确定物体质量的测量仪器,也可用来确定与质量相关的其它量的大小。电子秤一般由以下三个部分组成:(1)秤体部分这部分含有承载器、减振机构和秤桥结构等。(2)称重传感器部分传感器就是把采集到的非电量转换成电量的转换元件。按照称重传感器的结构型式不同,可以分直接位移传感器和应变传感器。对称重传感器的基本要求是:输出电量与输入重量保持单值对应,并有良好的线性关系,对被称物体的状态的影响要小,有较高的灵敏度,能在较差的工作条件下工作,稳定可靠[3]。(3)测量显示和数据输出的载荷测量装置部分即处理称重传感器信号的电子线路(包括放大器、模数转换、调节器、补尝元件、保护线路等)和指示部件(如显示、打印和存贮器件等)。这部分习惯上称载荷测量装置[4]。39 数显电子秤的设计1.2.2电子秤的工作原理当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由放大电路进行放大、经滤波后再由模/数(A/D)器进行转换,数字信号再送到CPU处理,CPU不断扫描键盘和各种功能开关,根据键盘输入内容和各种功能开关的状态进行必要的判断、分析,由仪表的软件来控制各种运算。运算结果送到内存贮器,需要显示时,CPU发出指令,从内存贮器中读出送到显示器显示。一般信号的放大、滤波、A/D转换以及信号各种运算处理都在仪表中完成[5]。1.2.3电子秤的计量性能电子秤的计量性能涉及的主要技术指标有:量程、分度值、准确度等级等。(1)量程:电子秤在正常工作情况下,所能称量的最大值。(2)分度值:电子秤的测量范围被分成若干等份,每份值即为分度值。(3)准确度等级:国际法制计量组织把电子秤按不同的分度数分成Ⅰ、Ⅱ、Ⅲ、Ⅳ四类等级,分别对应不同准确度的电子秤和分度数n的范围,如表1-1所示:表1-1电子秤等级分类标志及等级电子秤种类分度数范围特种准确度基准衡器n>100000高准确度精密衡器10000#include#defineGDM12864ADataPortP0//LCD数据线#defineAD_PORTP1#defineKEYPORT((P3&0xf0)>>4)#defineCLEAN0x0a#defineENTER0x0b#defineEXIT0x0c#defineMODE0x0d#defineDEC0x0e#defineADD0x0fsbitDI=P2^2;//数据指令选择sbitRW=P2^1;//读写选择sbitEN=P2^0;//读写使能sbitcs1=P2^4;//片选1sbitcs2=P2^3;//片选2//sbitOE=P2^6;sbitEOC=P3^0;sbitSTA=P3^1;sbitCLK=P3^2;//重量-最大10KgunsignedintWeight=0;//单价-最大99.9元unsignedintPrice=0;39 数显电子秤的设计//金额-最大值9999.99元unsignedlongSum=0;//工作模式unsignedcharMode=0;//累加标志unsignedcharAddFlag=0;//保存按键unsignedcharKey=0xff;unsignedcharKeyNum=0;unsignedcharKeyCode[]={7/*0*/,4/*1*/,1/*2*/,10/*3*/,8/*4*/,5/*5*/,2/*6*/,0/*7*/,9/*8*/,6/*9*/,3/*10*/,11/*11*/,12/*12*/,13/*13*/,14/*14*/,15/*15*/};//状态检查voidCheckState(){unsignedchardat;DI=0;RW=1;do{GDM12864ADataPort=0x00;EN=1;dat=GDM12864ADataPort;EN=0;dat=0x80&dat;}while(!(dat==0x00));}39 数显电子秤的设计//command:命令SendCommandToLCD(unsignedcharcommand){CheckState();RW=0;GDM12864ADataPort=command;EN=1;EN=0;}/*----------------------------------------------------------------------------------------------------*///写显示数据//dat:显示数据voidWriteByte(unsignedchardat){CheckState();DI=1;RW=0;GDM12864ADataPort=dat;EN=1;EN=0;}/*----------------------------------------------------------------------------------------------------*///读显示数据unsignedcharReadByte(){unsignedchardat;CheckState();DI=1;RW=1;39 数显电子秤的设计GDM12864ADataPort=0xff;EN=1;dat=GDM12864ADataPort;EN=0;return(dat);}/*----------------------------------------------------------------------------------------------------*///设定行地址(页)--X0-7voidSetLine(unsignedcharline){line=line&0x07;//0<=line<=7line=line|0xb8;//10111xxxSendCommandToLCD(line);}/*----------------------------------------------------------------------------------------------------*///设定列地址--Y0-63voidSetColumn(unsignedcharcolumn){column=column&0x3f;//0=16){return;}if(column<8)SelectScreen(1);//如果列数<8(0,1,2,3,4,5,6,7)则写在第一屏上else{SelectScreen(2);//否则(8,9,10,11,12,13,14,15)写在第二屏上column=column&0x07;//防止越界}SetLine(lin);SetColumn(column<<3);for(i=0;i<8;i++)WriteByte(ASC[address+i]);}voidShow88hz(unsignedcharlin,unsignedcharcolumn,unsignedintaddress){unsignedchari;if(column>16){return;}if(column<8)SelectScreen(1);//如果列数<8(0,1,2,3,4,5,6,7)则写在第一屏上else{SelectScreen(2);//否则(8,9,10,11,12,13,14,15)写在第二屏上column=column&0x07;//防止越界}SetLine(lin);SetColumn(column<<3);for(i=0;i<8;i++)WriteByte(Hztable[address+i]);39 数显电子秤的设计}/*------------------------------------------------------------------------------------------------*///显示8*16字符//旋转90度:字模被竖着切分//lin:行(0-3),column:列(0-15)//character:字符代码(标准ASCII码)voidShowChar(unsignedcharlin,unsignedcharcolumn,unsignedcharcharacter){lin=lin<<1;//一个字符占两页Show88(lin,column,character*16);Show88(lin+1,column,character*16+8);}/*----------------------------------------------------------------------------------------------*///显示一个汉字//旋转90度:字模被竖着切分//lin:行(0-3),column:列(0-7)//hzcode:汉字代码(自定义的)//ucharcodeHZtablevoidShowHZ(unsignedcharlin,unsignedcharcolumn,unsignedinthzcode){lin=lin<<1;//lin*2,一个汉字占两页Show88hz(lin,column,hzcode*32);Show88hz(lin,column+1,hzcode*32+8);Show88hz(lin+1,column,hzcode*32+16);Show88hz(lin+1,column+1,hzcode*32+24);}39 数显电子秤的设计/*----------------------------------------------------------------------------------------------*///定时器0初始化voidTime0_Init(){TMOD=0x01;ET0=1;TH0=0xFF;TL0=0x18;//12MZ晶振,1msTR0=1;}//外部中断0初始化voidInit0_Init(){IT1=1;//下降沿触发EA=1;//全局中断有效PX1=1;//设置为优先中断EX1=1;//启动外部中断0}//定时器0服务中断函数voidTime0_Int()interrupt1{CLK^=1;TH0=0xFF;TL0=0x18;//12MZ晶振,1ms}39 数显电子秤的设计//INT0中断函数,接收到数据有效信号,开始接收数据voidReceiveData(void)interrupt2{Key=KeyCode[KEYPORT];}//延时函数voiddelay(unsignedintx){unsignedinta,b;for(a=x;a>0;a--)for(b=10;b>0;b--);}//演示主程序voidmain(){Time0_Init();Init0_Init();GDM12864delay();//等待设备准备调用延时InitLCD();//初始化LCDSetLine(0);SetColumn(0);SetStartLine(0);ClearScreen(0);//清屏//显示"模式:"ShowHZ(0,0,0);39 数显电子秤的设计ShowHZ(0,2,1);ShowChar(0,4,10);//显示"普通"ShowHZ(0,12,2);ShowHZ(0,14,3);//显示"重量:"ShowHZ(1,0,4);ShowHZ(1,2,5);ShowChar(1,4,10);//显示KgShowChar(1,14,11);ShowChar(1,15,12);//显示"单价:"ShowHZ(2,0,6);ShowHZ(2,2,7);ShowChar(2,4,10);//显示元ShowHZ(2,14,10);//显示"金额:"ShowHZ(3,0,8);ShowHZ(3,2,9);ShowChar(3,4,10);//显示元ShowHZ(3,14,10);STA=0;39 数显电子秤的设计while(1){//读取ADC0808转换值,并计算重量if(EOC==1){STA=1;delay(10);STA=0;}Weight=AD_PORT*39.2118;//按键处理if(Key!=0xff){if(Mode==0)//处于普通模式下{if((Key<10)&&(KeyNum<3))//为数字键且未输入满数字{switch(KeyNum){case0:Price=Price+Key*100;break;case1:Price=Price+Key*10;break;case2:Price=Price+Key;break;}KeyNum++;Key=0xff;}39 数显电子秤的设计elseif(Key==CLEAN){Price=0;Sum=0;Mode=0;KeyNum=0;Key=0xff;}}}Sum=(unsignedlong)Weight*Price/100;//显示重量值ShowChar(1,6,(Weight%10000)/1000);ShowChar(1,7,13);ShowChar(1,8,(Weight%1000)/100);ShowChar(1,9,(Weight%100)/10);ShowChar(1,10,Weight%10);//显示单价值ShowChar(2,6,(Price%1000)/100);ShowChar(2,7,(Price%100)/10);ShowChar(2,8,13);ShowChar(2,9,Price%10);//显示金额值if(Sum<999999){39 数显电子秤的设计ShowChar(3,6,(Sum%1000000)/100000);ShowChar(3,7,(Sum%100000)/10000);ShowChar(3,8,(Sum%10000)/1000);ShowChar(3,9,(Sum%1000)/100);ShowChar(3,10,13);ShowChar(3,11,(Sum%100)/10);ShowChar(3,12,Sum%10);}else{ShowChar(3,6,14);ShowChar(3,7,14);ShowChar(3,8,14);ShowChar(3,9,14);ShowChar(3,10,14);ShowChar(3,11,14);ShowChar(3,12,14);}}}39

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭