电子秤 毕业论文 (2).doc

上传人:来看看 文档编号:3957942 上传时间:2019-10-11 格式:DOC 页数:49 大小:295KB
返回 下载 相关 举报
电子秤 毕业论文 (2).doc_第1页
第1页 / 共49页
电子秤 毕业论文 (2).doc_第2页
第2页 / 共49页
电子秤 毕业论文 (2).doc_第3页
第3页 / 共49页
电子秤 毕业论文 (2).doc_第4页
第4页 / 共49页
电子秤 毕业论文 (2).doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《电子秤 毕业论文 (2).doc》由会员分享,可在线阅读,更多相关《电子秤 毕业论文 (2).doc(49页珍藏版)》请在三一文库上搜索。

1、摘 要单篇微型计算机(简称单片机)作为微型计算机的一个重要分支,自7单片微型计算机(简称单片机)作为微型计算机的一个重要分支,自70年代问世以来,以及其高的性能价格比,受到人们的重视和关注,应用很广,发展也很快。首先需要压力传感器来将物品的重量转化为模拟信号,之后利用A/D转换工具将模拟信号转化为数字信号,将得到的模拟信号传送至单片机,通过程序对信号进行处理,所以在这里我们需要存储器来储存一些必要的信息,之后是显示这里的显示我们是用LED显示,在这里我们要提到键盘的作用,键盘在这里既可以进行输入(例如输入物品的单价),还可以对显示进行控制,使之实现重量与价格的切换。 目 录摘要(宋体小四)1第

2、一章绪论4 第二章 整体设计思路5第三章硬件设计各部分元件简单介绍6第一节 8031单片机6第二节 其他各部分硬件介绍10第三节 硬件连接11第四章软件设计13第一节 A/D转换13第二节 LED显示15第三节 键盘扫描17第五章 设计总结及改进意见22第六章 程序清单第一章 绪论单片微型计算机(简称单片机)作为微型计算机的一个重要分支,自70年代问世以来,以及其高的性能价格比,受到人们的重视和关注,应用很广,发展也很快。什么叫单片机?普遍认为单片机是在一块硅片上集成了中央处理器、存储器和各种输入、输出接口,这样一块芯片具有计算机的功能,因而被称为单片微型计算机。由于单片机的硬件结构与指令系统

3、的功能都是按工业控制要求而设计的,常用在工业的检测、控制装置中,因而也称为微控制器或嵌入式控制器。单片机的发展趋势将是向大容量、高性能化、外围电路内装化等发面发展。单片机以其卓越的性能,得到了广泛的应用,以深入到各个领域。单片机应用在检测、控制领域中,具有如下特点:(1)、小巧灵活、成本低、易于产品化;(2)、可靠性好,适用温度范围宽;(3)、易扩展,很容易构成各种规模的应用系统,控制功能强;(4)、可以很方便的实现多机和分布式控制;单片机从家用电器、智能仪器仪表、工业控制直到火箭导弹尖端技术领域,单片机都发挥着十分重要的作用。工业方面,各种测控系统;智能仪器仪表方面;通讯方面,调制解调器;民

4、用方面,电子玩具;各种计算机外部设备及电器方面,打印机、硬盘驱动器,导弹与控制方面,导弹控制、航天飞机导航系统;等等。通过三个月的学习,我们对单片机有了进一步的了解。在此次的电子秤设计中,我们主要选择了8031单片机,它的内部包括一个8位的CPU、128字节的RAM,21个特殊功能寄存器、4个8位并行I/O口,1个全双工的串行口,2个16位的定时器/计数器,但是程序存储器要外扩EPROM芯片。8031单片机功耗低,非常适用于电池供电或其他低功耗的场合,是目前使用最多的单片机。第二章整体设计思路 我们想设计的是电子秤,那么我要达到的最简单想法是可以称量物品重量,所以在有被测物品的前提下,我们首先

5、需要压力传感器来将物品的重量转化为模拟信号,之后利用A/D转换工具将模拟信号转化为数字信号,将得到数字信号传送至单片机,通过程序对信号进行处理,所以在这里我们需要存储器来储存一些必要的信息,之后是显示这里的显示我们是用LED显示,在这里我们要提到键盘的作用,键盘在这里既可以进行输入(例如输入物品的单价),还可以对显示进行控制,使之实现重量与价格的切换。设计思路图见图一。图一:设计思路存储器单片机键盘A/D转换显示压力传感器物体第三章硬件设计各部分元件简单介绍第一节 8031单片机单片机普遍认为是在一块硅片上集成了中央处理器、存储器和各种输入、输出接口,这样的一块芯片具有一台计算机的功能,因而被

6、称为单片微型计算机。我们所使用的是通用型单片机,它可以把可开发资源全部提供给使用者。一、8031单片机的硬件结构及其功能Intel公司生产的8031单片机的硬件结构具有功能部件种类全,功能强等特点。以下介绍8031单片机的硬件结构及其功能:8031单片机如果按功能划分,它由八个部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、I/O(P0口、P1口、P2口、P3口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。它们都是通过片内单一总线连接而成,其基本结构依然是采用CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器(

7、SFR)的集中控制方式。下面对各功能部件进行进一步的说明:1、数据存储器(RAM):片内为128个字节(单元),片外最多可外扩64K字节。2、程序存储器(ROM/EPROM):8031片外最多可外扩至64K字节,64K程序存储器中有5个单元具有特殊用途,5个特殊单元分别对应5种中断源的中断服务程序的入口地址。程序存储器中的0000H地址式系统程序的启动地址。在设计中,我们选择了外扩16K字节EPROM的27128,它有28脚,升级方便;8031在使用外扩存储器时,EA必须接地。3、中断系统:具有5个中断源,2个中断优先权。4、串行口:1个全双工串行口,具有四种工作方式。控制8031单片机串行口

8、的控制寄存器有两个:SCON、PCON。单片机内部的串行口有两个物理上独立的接收、发送缓冲器SBUF。在设计中,我们采用串行口串行发送数据。5、P1口、P2口、P3口、P0口:为四个并行8位I/O口。6、微处理器(CPU):为8位的CPU,且内含有一个1位CPU(位处理器),不仅处理字节数据,还可以进行位变量操作。二、8031单片机的引脚功能如图二所示8031单片机的40引脚配置图:(图二)引脚除+5V(Vcc40脚)和电源地(Vss20脚)外,按其功能主要由以下三大部分组成:(一)时钟电路8031的时钟可由内部方式或外部方式产生。XTAL1(19脚)芯片内部振荡电路(单级反相放大器)输入端;

9、XTAL2(18脚)芯片内部振荡电路(单级反相放大器)输出端;(二)、控制信号1、RST/Vpd(9脚)复位信号当此引脚上出现两个机器周期的高电平,芯片内部进行初始复位,P0P3口输出高电平,初值07H写入堆栈指针SP,清零程序计数器PC和其余特殊功能寄存器。初始复位不影响片内RAM状态,只要该引脚保持高电平,8031将循环复位。8031通常采用上电自动复位和开关复位两种。2、ALE/PROG(30脚)地址锁存信号P0口上的信息究竟是地址还是数据完全由ALE来定义。ALE高电平期间,P0口上一般出现地址信息;在ALE低电平期间,P0口上一般出现指令和数据信息。3、PSEN(29脚)片外程序存储

10、器读选通PSEN低电平有效;8031访问片外程序存储器时,程序计数器PC通过P2口和P0口输出16位指令地址,PSEN作为程序存储器读信号,输出负脉冲将相应的存储单元的指令读出并送到P0口上,供8031执行。 4、EA/VPP(31脚)内部和外部程序存储器选择信号对于8031单片机(无内部ROM型)的EA必须接地。(三)I/O端口8031单片机有4个8位I/O端口P0P3。1、 P0口(P0.0P0.7,3932脚)为三态双向口;2、 P1口 (P1.0P1.7,18脚) 准双向口(用作输入时口锁存器必须先写“1”);3、 P2口(P2.0P2.7,2128脚)准双向口;4、 P3口(P3.0

11、P3.7,1017脚)双功能口;三、8031的存储器组织8031单片机片具有强大的外部存储器扩展能力。8031从物理上可分为3个存储空间:片外扩展的程序存储器,片内数据存储器和片外扩展的数据存储器。第二节其他各部分硬件介绍一、74LS373(8D锁存器)8031单片机在对外部存储器进行读/写操作时地址必须保持不变这就需要选用适当的寄存器存放低8位的地址,这个外接的寄存器就称为地址锁存器。在我们的设计中进行外部存储器扩展时,凡具有输入输出控制的8位寄存器均可作为地址锁存器,在这里我们选用了74LS373地址锁存器芯片。74LS373为8D锁存器,有8个D输入端,8个Q输出端,一个时钟输入端CP,

12、一个锁存允许信号,当E=1时,CP端上的上跳变,把8位D输入端的数据打入8位锁存器。利用74LS373的这些特性,可以作为8031系统中的一个8位输出口。其功能表如下所示:OEGDQLHHHLHLLLLXQ不变HXX高阻态二、A/D转换器 本设计中我们选择了ADC0809转换器,它是逐次逼近型八位A/D转换器,实现模拟信号到数字信号的转换,每采集一次一般需100us。三、存储器 本设计我们采用2764A存储器第三节硬件连接 在确定各部分所需硬件及硬件型号以后,我们就进行了硬件连接,具体如图三所示。图三第四章软件设计第一节A/D转换本设计我们采用ADC0809转换器,以下是A/D转换的程序框图:

13、开始初始化启动A/DA/D转换完?数据输出清读零标志NYN图四:A/D转换程序框图第二节LED显示本设计所用的数码管是基于8位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。本设计仅用到8位中的六位数码管,用动态方式显示。8位数码管的8段段码是由一片74HC574控制输出,8位数码管的8个位选是由一片ULN2003倒相驱动后,选择相应显示位。还有一种控制方式是由一片串行芯片MAX7219,串行输入并行输出8段段码和8个位选,本设计选用第一种方案。七段数码管的字型代码表如下表1。表1 七段数码管的字型代码表显示字型gfedcba段码001111113FH10000110a

14、06H210110115BH310011114FH41100110gfb66H511011016DH611111017DH70000111c07H81111111e7FH911011116FHA1110111dpd77HB11110007CHC011100139HD10111105EHE111100179HF111000171HN开始初始化显示参数关所有位显示取显示数据输出段码数据输出位选通信号延时指向下一个显示数据位选通信号移位6位完成?返回YLED显示程序框图第三节键盘扫描键盘扫描工作原理键盘是由若干个按键组成的,它是单片机最简单的输入设备。操作员通过键盘输入数据或指令,实现简单的人机对话

15、。按键是一个简单的开关,当按键按下时,相当于开关闭合;当键盘松开时,相当于开关断开。按键在闭合和断开时,触点会存在抖动现象,抖动现象的去除常采用软件延时10ms来实现。当单片机检测到有键按下时,先延时10ms,然后再检测按键的状态,若仍是闭合状态,则认为真正有键按下。当检测到按键释放时,亦需要做同样的处理。1、 常用键盘的分类:(1)独立式键盘:其键盘的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行口或其它接口芯片的并行口)相连。其芯片内部又有上拉电阻接口和无上拉电阻接口之分,无上拉电阻接口的应在片外设置上拉电阻。 独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根口线,在

16、按键数量多时,口线占用太多。所以独立式按键键盘常用于按键数量不多的场合,不适合本设计系统的扩展。(2)矩阵式键盘:采用行列式结构,按键设置在行列的交点上。当口线数量为10时,可以将4根口线定义为行线,另外6根口线定义为列线,形成4*6键盘,可以配置24个按键,其硬件连接如下图4:由于其功能的优越性,本设计选择此种类型键盘。2、 矩阵式键盘的软件实现原理:矩阵式键盘的行线通过电阻接+5V(芯片内部有上拉电阻时,就不用外接了),当键盘上没有键闭合时,所有的行线和列线是断开的,行线均呈高电平。 当键盘上某一键闭合时,该键所对应的行线与列线短接。此时该行线的电平将由被短接的列线电平决定。因此,可以采用

17、以下办法完成是否有按键按下及按下的是哪一个键的判断:(1)判断有无按键按下:将行线接至单片机的输入口,列线接至单片机的输出口。首先使所有列线为低电平,然后读行线状态,若行线均为高电平,则没有按键按下;否则,可以断定有键按下。(2)列扫描法识别按键:先让第一列为低电平,其余列为高电平,读行线状态,如果行线状态不全为“1”,则说明所按键在该列,否则不在该列。然后,让第二列为低电平,做同样判断,其余列类推。这样就可以找到所按键的行列位置。此种方法称为列扫描法,此方法在原理上易于理解,但当所按键在最后一列时,所需要扫描的次数较多。本设计扫描列数不多,鉴于编程简单,本设计选择此种方案。(3)线反转法识别

18、按键:先把列线置为低电平,行线置成输入状态,读行线;再把行线置成低电平,列线为输入状态,读列线。有键按下时,由两次所读得的状态即可确定所按键的位置。(4)按键处理:按键处理是根据所按键散转进入相应的功能程序。为了散转的方便,通常应先得到按下键的键号。键号是键盘的每个键的编号,可以是十进制或十六进制。键号一般通过键盘扫描程序取得的键值求出。键值是各键所在行号和列号的组合码。根据键值中的行号和列号信息就可以计算出键号,例如: 键号 = 所在行号 * 键盘列数 + 所在列号 根据键号就可以方便地通过散转进入相应键的功能程序。3、 本设计键盘扫描模块的实现:在上述数码显示的基础上,利用实验仪器提供的键

19、盘扫描电路和显示电路,实现电子秤的控制。本部分可分为三个模块:(1) 键盘输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。(2) 显示模块:将要显示的显示单元的内容在显示器上动态显示。(3) 主程序:调用键盘输入模块和显示模块。本设计用到十二个键,分别为0-10数字键、重量价格切换键以及求总额键。利用实验板上5*2的小键盘,向列扫描码地址逐列输出低电平,然后从行码地址读回。如果有键按下,则相应地址应为低,如果无键按下,由于上拉的作用,行码为高,这样就可以通过输出的列码和读取的行码来判断按下的是什么键。同时,为防止键盘抖动,需要有一定的延时。开始显示缓冲区初始化LED显示有键输入?读取

20、键值键值转换为显示数据主程序框图YN开始初始化地址参数输出列扫描信号列扫描信号移位读输入行信号返回按照行列计算键值查表得键码等待按键释放返回读键输入子程序框图该列有键输入?6列扫描完?YYNN第五章设计总结及改进意见此次设计是由我独立完成的,本设计分为硬件设计和软件设计两部分,我首先开始的是硬件设计,在硬件设计基本完成以后才开始软件设计的,那么我们就先从硬件设计开始。 硬件设计中遇到的问题:首先是了解各硬件的构成及其功能,在多种考虑下我首先确定了单片机型号为8031,它属于MCS-51单片机中的一种,属于基本型, 主要有以下几部分:1、数据存储器(RAM):片内为128个字节(单元),片外最多

21、可外扩64K字节。2、程序存储器(ROM/EPROM):8031片外最多可外扩至64K字节,64K程序存储器中有5个单元具有特殊用途,5个特殊单元分别对应5种中断源的中断服务程序的入口地址。程序存储器中的0000H地址式系统程序的启动地址。在设计中,我们选择了外扩16K字节EPROM的27128,它有28脚,升级方便;8031在使用外扩存储器时,EA必须接地。3、中断系统:具有5个中断源,2个中断优先权。4、串行口:1个全双工串行口,具有四种工作方式。控制8031单片机串行口的控制寄存器有两个:SCON、PCON。单片机内部的串行口有两个物理上独立的接收、发送缓冲器SBUF。在设计中,我们采用

22、串行口串行发送数据。5、P1口、P2口、P3口、P0口:为四个并行8位I/O口。6、微处理器(CPU):为8位的CPU,且内含有一个1位CPU(位处理器),不仅处理字节数据,还可以进行位变量操作。接下来是确定各部分连接器件,例如存储器,锁存器,A/D转换器等等,在这个过程中,我有一段时间很茫然,在众多型号中选择哪一个让我很为难,最后在老师及同学的帮助和介绍下,我将大家介绍的几种器件详细的了解了一下,最终确定了各部件型号。外文资料程序清单 ORG 0100H MOV SP,#60H ;堆栈指针;*;键盘输入测试程序演示,按动K0K9,数码管有10种显示 按动K10,数码管实现价格和物品重量的切换

23、 按动K11,数码管显示总金额;;蜂鸣器响50ms。因为键盘输入、显示使用总线方式 LCALL RAMBLANK ;显示缓存区内容置为1BH,其显示代码为空KEYIN: LCALL KEYOP ;调用键值查找子程序,F01有键按下,A=键值JNB F0,KEYIN_1 ;没有键按下,自动运行 MOV B,ALCALL XCHMOV ;将输入的键值放到KEYBUF的低地址单元, ;其他单元内容移一位 MOV A,B MOV DPTR,#TAB ;由键值查找共阴数码管显示字型码 MOVC A,A+DPTR CPL A ;由于P1口数码管共阳,A求反 LCALLBELL50 ;蜂鸣器响50毫秒。KE

24、YIN_2: LCALLKEYOP LCALL KEYOUT JB F0,KEYIN_2 ;判断按键是否释放KEYIN_1: LCALL START ;自动运行 LJMP KEYIN;*;按键扫描子程序:;F01表示有键按下,键值在A中。程序使用R2、R3、R4、R5。子程序使用11区,退出时恢复为00区。;使用R2R5,MCS51没有PUSH R 及POP R 指令,使用改变R0R7映射区。KEYOP: SETB RS0 ;改变R0R7映射区 SETB RS1 CLR F0 ;清标志F1时有键盘输入 MOV R2,#00H ;R2键值(0009H) MOV R3,#00H MOV R4,#0

25、5H ;列数,决定扫描次数 MOV R5,#01111111B ;从第一(D7)列开始K_AGAIN: MOV A,R5 ;输出扫描列 MOV DPTR,#0002H MOVX DPTR,A NOP NOP MOVX A,DPTR ;输入行值 ORL A,#3FH ;将输入的值变为111111 CPL A ;求反,输入的值变为000000 JNZ K_OPRAT ;求反后,如果不是全0,表示有键按下 MOV A,R5 ;如果是全0,表示没有键按下 RR A MOV R5,A;扫描列右移,表示扫描下一列,保存在R5 MOV A,R2 ADD A,#02H ;扫描列每移动一位,R2的值增加02(每

26、列2行) MOV R2,A DJNZ R4,K_AGAIN;5列是否扫描完,扫描2行,一次扫描结束 CLR F0 ;没有键按下,强调F00,退出子程序 LJMP KEYEND ;有键按下处理K_OPRAT: CPL A ;恢复键值 SWAP A ;4位键值置换到低4位 SETB CK_NEXT: RRC A JNC K_OP1 ;移出行位值0,由R3得到行值 INC R3CJNE R3,#02H,K_NEXT ;行值为0001,当R32,表示2行;查找结束MOV R3,#00H LJMP K_AGAIN ;有键按下,找到行值后出来。K_OP1: MOV A,R3 ;由列值、行值得到键值 ADD

27、 A,R2 SETB F0 ;设置有键输入标志F0KEYEND: CLR RS0 ;恢复R0R7映射区 CLR RS1 RET;*按键处理子程序KEYOUT:CHULI: CJNE A,#00H,CHULI0 ;如果第一个键没按下,跳转CHULI0 LCALL START ;自动运行 LCALL XIAN0 ;数码管第六位显示5 RETCHULI0: CJNE A,#01H,CHULI1 ;如果第二个键没按下,跳转CHULI1 LCALL SHOUDONG ;手动控制 LCALL XIAN1 ;数码管第六位显示6 RETSHOUDONG:;手动控制输入单价CHULI1: CJNE A,#02H

28、,CHULI2 ;如果第三个键没按下,跳转CHULI2 LCALL XIAN1 LCALL BELL50 ; MOV P1,#28H ; LCALL WERSNS ; LCALL SNSWER ; RET;手动控制CHULI2: CJNE A,#03H,CHULI3 ;如果第四个键没按下,跳转CHULI3 LCALL XIAN1 LCALL BELL50 MOV P1,#048H ; LCALL WERSNS ; LCALL SNYWER ; RET;手动控制CHULI3: CJNE A,#04H,CHULI4 ;如果第五个键没按下,跳转 LCALL XIAN1 LCALL BELL50 MO

29、V P1,#18H ; LCALL WERSNS ; LCALL SNLWER ; RET;手动控制CHULI4: CJNE A,#05H,CHULI5 ; LCALL XIAN1 LCALL BELL50 MOV P1,#82H ; LCALL WESSNR ; LCALL SNRWES ; RET;手动控制CHULI5: CJNE A,#06H,CHULI6 ; LCALL XIAN1 LCALL BELL50 MOV P1,#84H ; LCALL WEYSNR ; LCALL SNRWES ; RET;手动控制CHULI6: CJNE A,#07H,CHULI7 ; LCALL XIA

30、N1 LCALL BELL50 MOV P1,#81H ; LCALL WELSNR ; LCALL SNRWES ; RET;手动控制设置时间CHULI7: CJNE A,#08H,CHULI8 ;如果第九个键没按下,跳转CHULI8 LCALL XIAN2 ;数码管第六位显示7 INC R0 ;设置模式下手动加一延长显示时间 RETCHULI8: CJNE A,#09H,CHULI ;如果第十个键按下,跳转CHULI9 LCALL XIAN2 DEC R0 ;设置模式下手动减一缩短显示时间 RETXIAN0:TESTLED_DIS0: LCALL BELL50 LCALL TIME_100

31、ms LCALL BELL50 MOV R2,#05HDIS_0: MOV A,R2 MOV DPTR,#TAB MOVC A,A+DPTR MOV R3,ALCALL DISTESDISTES: MOV DPTR,#0000H MOV A,R3 MOVX DPTR,A MOV DPTR,#0001H MOV A,#00100000B MOVX DPTR,A RET;*XIAN1:TESTLED_DIS1: LCALL BELL50 LCALL TIME_100ms LCALL BELL50 MOV R2,#06HDIS_1: MOV A,R2 MOV DPTR,#TAB MOVC A,A+D

32、PTR MOV R3,A LCALL DISTES1 DISTES1: MOV DPTR,#0000H MOV A,R3 MOVX DPTR,A MOV DPTR,#0001H MOV A,#00100000B MOVX DPTR,A RET;*XIAN2:TESTLED_DIS2: LCALL BELL50 LCALL TIME_100ms LCALL BELL50 MOV R2,#07HDIS_2: MOV A,R2 MOV DPTR,#TAB MOVC A,A+DPTR MOV R3,A LCALL DISTES2DISTES2: MOV DPTR,#0000H MOV A,R3 MOV

33、X DPTR,A MOV DPTR,#0001H MOV A,#00100000B MOVX DPTR,A RET;*;显示缓存区的其他单元内容地址上移,A的内容放在显示缓存区最低单元。DISBUF EQU 30H ;要显示的单元地址。COUNT EQU 08H ;显示缓冲器中连续显示单元的个数。XCHMOV: MOV R2,#COUNT MOV R0,#DISBUFXCHMOV_1: XCH A,R0 INC R0 DJNZ R2,XCHMOV_1 RET;*;延时1ms子程序TIME_1ms: MOV R7,#00H ;(一个循环25641000微秒)TIME_1ms0: NOP NOP DJNZ R7,TIME_1MS0 RET;*;延时30ms子程序;内层循环256(211)1ms;整个延时大约30130ms。TIME_30ms: MOV R6,#1EHT1MS30: LCALL TIME_1MS DJNZ R6,T1MS30 RET;*;延时50ms子程序,内层循环256(211)1ms;整个延时大约50150ms。TIME_50ms: MOV R6,#32HT1MS50: LCALL TIME_1MS DJNZ R6,T1MS50 RET;*

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1