基于单片机地电子秤设计_第1页
基于单片机地电子秤设计_第2页
基于单片机地电子秤设计_第3页
基于单片机地电子秤设计_第4页
基于单片机地电子秤设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

word文档精品文档分享.论文题目:基于单片机的电子秤设计基于单片机的电子秤设计XX:X延海专业:电气工程及其自动化指导教师:马惠兰摘要衡器是我们日常生活中不可缺少的重要仪器,衡器的开展是关系国计民生关键之一。衡器的应用已普及到国民经济的各个领域,并取得了显著的..word文档精品文档分享.经济效益。近年来,随着电子科技的飞速开展,杆秤已越来越难以满足人们的日常生活需求,电子秤的应用也逐渐越来越重要。本文重点介绍了基于单片机的简单电子秤的一些根本构造原理和功能。本设计以AT89C51单片机为控制芯片,附以传感器电路,调理放大电路,模/实现,并由4x4矩阵键盘实现简单的操作,最后由LCD液晶显示器实现。此系统可以实现根本的称重显示,单价输入以及总金额计算。放上重物〔即关键词电子秤,单片机,AT89C51,LCDABSTRACTWeighingapparatusisanindispensableimportantourdailylife.ThedevelopmentofWeighingapparatushasakeyfactorinourlife.Theapplicationofweighingapparatushasalreadyspreadtonationaleconomyinallareas,andhavegotsingnificanteconomicbenefits.Inrecentyears,withtherapiddevelopmentofelectronictechnology,thesteelyardhasbecomemoreandmoredifficulttomeetpeopledailylifedemand,sotheapplicationofelectronicscaleshavebecomemoreandmoreimportant.Thispapermainlyintroducedsomeofthebasicconstructionprincipleandfunctionoftheelectronicscales.ThisdesignuseAT89C51single-chipmicrocomputerasthecontrolchip.Attachedwithsensorcircuit,regulateamplifiercircuit,A/Dconversioncircuit,keyboardcircuitanddisplaycircuit.Thenusethe..word文档精品文档分享.programminglanguagematrixkeyboardforcontrolling.ATlast,weuseLCDmonitortodisplaytheresult.Thissystemcanrealizethebasicweighingdisplaying,unitpriceinput,andtotalamount.Whenputthingsontheelectronicscales(thesensorbeingstressed),ifyouputintheunitprice,thesystemwillautomaticallycalculatethetotalvalueofthegoods.Keywords:Electronicscales,Single-chipmicrocomputer,AT89C51,LCD..word文档精品文档分享.目录第1章绪论11.1称重和衡器技术的开展11.2选题背景和意义21.3设计目的21.4设计要求21.5电子秤简介31.5.1电子秤根本构造31.5.2电子秤的工作原理3第2章系统方案的设计42.1系统整体设计42.2各模块设计与选择52.2.1控制器局部52.2.2传感器模块62.2.3调理放大模块72.2.4模/数转换模块92.2.5键盘模块·102.2.6显示模块·11第3章电子秤系统设计133.1硬件系统设计133.1.1控制器·133.1.2传感器·143.1.3A/D转换·153.1.4键盘·163.1.5显示器·173.2软件系统设计183.2.1单价显示程序设计·183.2.2重量显示程序设计193.2.3金额显示程序设计203.2.4运算模块·21第4章系统调试与仿真224.1系统软件调试224.2仿真234.3仿真程序234.4调试过程中遇到的问题23结论25参考文献27附录28..word文档精品文档分享.致谢38..word文档精品文档分享.第1章绪论1.1称重和衡器技术的开展称重作为计量的一种手段,在国计民生的各个领域被广泛的应用。而衡器的开展水平,很大程度的影响了各行业的现代化水平和社会的经济效益。。人们由最初的等量交换,逐渐开展为利用简单的秤来作为衡量的标准,,并开场普及。随着社会的开展,传统的机械秤已越来越难以满足人们的需求。在电子技术飞速开展的带动下,电子秤应运而生,极大地方便了人们的需求。50年代中期,电子技术的渗入推动了衡器制造业的开展。60年代初期,机电结合式电子衡器初步形成,经过40多年的不断改良与完善,我国电子衡器从最初的机电结合型开展到现在的全电子型和数字智能型。我国电子衡器的技术装备和检测试验手段也根本到达国际90年代中期的水平,电子衡器制造技术及应用得到了新的开展。总结过去,电子称重技术从静态称重向动态称重开展;计量方法从模拟测量向数字测量开展;测量特点从单参数测量向多参数测量开展,特别是对快速称重和动态称重的研究与应用。通过分析这些年电子衡器产品的开展情况及国内外市场的需求,电子衡器总的开展趋势是小型化、模块化、集成化、智能化;技术性能那么趋向于速率高、准确度高、稳定性高、可靠性高;功能那么趋向于称重计量的控制信息和非控制信息并重的“智能化〞功能;其应用性能趋向于综合性和组合性。衡器是国家法定计量器具,是国计民生、国防建立、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的上下,将直接影响各行各业的现代化水平和社会经济效益的提高。世纪,电力电子技术飞速开展,使得电子产品也变得十分丰富,给人..word文档精品文档分享.们带来了极大的方便。作为人们生活中不可缺少的一局部,电子秤的开展也十分重要。种类丰富,功能多样的电子秤为人们节省了时间,提高了工作效率。1.2选题背景和意义电子秤是日常生活中常用的电子衡器,广泛应用于大型超市、商场、物流配送中心。但是在一些偏远地区,电子秤仍难以普及,传统的杠杆机械秤仍占据着主要地位。目前市场上使用的称量工具,或者是构造复杂,或者运行不可靠,且本钱高,精度稳定性不好,调正时间长,易损件多,维修困难,装机容量大,能源消耗大,生产本钱高等各种因素导致需要一种有实用价值的电子秤系统,既能满足日常需求,克制上述诸多缺点,又能很好地普及,具有十分重大的现实意义。1.3设计目的通过所学知识和相关资料,完成基于单片机的简易的电子秤的设计,掌握以单片机为核心的控制电路和LCD显示技术。并通过设计,了解电子秤的根本工作原理,将理论知识与现实实际问题相结合,提高自己对所学知识的应用能力。1.4设计要求〔〕有重物时LCD显示重量〔〕开机时“单价〞显示为“:〞〔〕当输入单价时,单片机自动将单价和重量两个数据进展乘法运算,结果显示在“SUM〞里。〔〕当按下“清零〞键时,单价自动清零,可以重新输入。..word文档精品文档分享.〔〕当结果溢出时〔即结果大于999999SUM〞将显示最后一次单价输入前的值1.5电子秤简介1.5.1电子秤根本构造电子秤是利用物体的重力作用来确定物体质量〔重量〕的测量仪器,也可用来确定与质量相关的其它量大小、参数、或特性。不管根据什么原理制成的电子秤均由以下三局部组成:〔1〕承重、传力复位系统〔〕称重传感器〔〕测量显示和数据输出的载荷测量装置1.5.2电子秤的工作原理当被称物体放置在秤体的托盘上时,其重量便通过托盘传递到称重传感器,传感器随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)电路进展放大滤波后再由模/数〔A/D〕器进展转换,数字信号再送到CPU进行处理,CPU根据接收到的数据经由LCD显示出来,再根据键盘输入内容进行必要的判断、分析、运算。运算结果送到内存贮器,并由CPU发出指令,从内存贮器中读出送到显示器显示。..word文档精品文档分享.第2章系统方案的设计2.1系统整体设计按照本设计功能的要求,系统由:传感器模块、调理放大模块,A/D转换模块、键盘模块、现实模块组成,系统的整体设计框图如图2-1所示:图2-1系统整体框图测量局部是运用称重传感器去检测压力信号,并将得到的微弱的电信号〔本设计为电压信号〕经处理电路〔本设计为调理放大电路〕处理后,送给A/D转换器,将模拟量转化为数字量输出。控制器局部承受来自A/D转换器输出的数字信号,经过运算,将数字信号转换为物体的实际重量信号,并将其存储到存储单元中。控制器还可以通过对扩展I/O的控制,扫描键盘,对整个系统进展控制。数据显示局部根据需要实现显示功能,如单价和总金..word文档精品文档分享.额等。2.2各模块设计与选择2.2.1控制器局部本设计由于要求必须使用单片机作为系统的主控制器,而且以单片机为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起,组成新型的只需要改变软件程序就可以更新换代的“智能化测量控制系统〞。本文采用的AT89C51是一种带4K字节FLASH存储器〔MFlashProgrammableandErasableReadOnlyMemory〕的低电压、高性能CMOS8位微处理器,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。而且AT89C51是一种比拟应用比拟广泛的单片机。AT89C51单片机引脚构造图如图2-2所示:..word文档精品文档分享.图2-2单片机引脚构造单片机的主要特性及各引脚功能特点已经学习过,在这里不再介绍。2.2.2传感器模块在设计中,传感器是一个十分重要的元件因此对传感器的选择也显的特别的重要,不仅要注意其量程和参数,还有考虑到与其相配置的各种电路的设计的难以程度和设计性价比等等本设计采用应变片电桥测量电路作为传感器模块,由应变片电阻R1和另外3个电阻R2、R3、R4构成电桥。电路图如图2-3所示:..word文档精品文档分享.图2-3应变片电桥测量原理图电桥输出为:当R1R4=R2R3,V0=0,电桥处于平衡状态。当应变片受力后,电桥差开工作,R1=R-△R,R2=R+△R,R3=R+△R,R4=R-△R,那么应变片式传感器有如下特点:〔〕应用和测量X围广,应变片可构成各种机械量传感器;〔〕分辨率和灵敏度高,精度较高;〔〕构造小,适用性好,能应用于多种特殊场合,频率响应好;〔〕经济性好,使用方便。2.2.3调理放大模块经由传感器敏感元件转换后输出的信号一般电平较低,经由电桥变换后的信号也难以直接用来显示、记录、控制或信号转换。因此需要对传感器的..word文档精品文档分享.输出信号进展处理,就要采用调理放大电路,对传感器输出的高阻抗,低电平信号进展处理,才能做进一步的应用。本设计利用TLC1078和INA122设计的调理放大电路如图2-4所示:图2-4调理放大模块本电路具有以下特点:1.前级采用运放两个TLC1078组成并联型差动放大器。在运算放大器为理想的情况下,并联型差动放大器的输入阻抗为无穷大,共模抑制比也为无穷大。2.阻容耦合电路放在并联型差动放大器构成的前级放大器和由INA122放大器构成的后级放大器之间,这样不仅为后级仪器放大器提高了增益,还提高了电路的共模抑制比。而且,由于前置放大器的输出阻抗较低,又采用共模驱动技术,防止了阻容耦合电路中的阻、容元件参数不匹配导致共模干扰转换成差模干扰情况发生。..word文档精品文档分享.3.后级电路采用经济的仪器放大器,将双端信号转换为单端信号输后级的仪器放大器可以做到很高的增益,进而得到很高的共模抑制比。2.2.4模/数转换模块本设计采用ADC0832/数转换器,将放大后的信号转化为数字量送给单片机,然后由LCD液晶显示器显示出来,即为所称物体的重量。ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道转换芯片。由于它体积小,兼容性好,性价比高而深受单片机爱好者及企业欢送,其目前已经有很高的普及率。2引脚构造如图2-5所示:图2-5ADC0832引脚构造特点:·8位分辨率;·双通道A/D转换;·输入输出电平与TTL/CMOS相兼容;·5V电源供电时输入电压在0~5V之间;·工作频率为250KHZ,转换时间为32μ;..word文档精品文档分享.·一般功耗仅为15mW;·8P、14P—PICC多种封装;·商用级芯片温宽为°Cto+70°,工业级芯片温宽为-40°Cto+85°;芯片接口说明:·CS_片选使能,低电平芯片使能。·CH0模拟输入通道,或作为IN+/-使用。·CH1模拟输入通道,或作为IN+/-使用。·GND芯片参考0·DI数据信号输入,选择通道控制。·DO数据信号输出,转换数据输出。·CLK芯片时钟输入。·Vcc/REF电源输入及参考电压输入〔复用〕。ADC0832是8位分辨率的A/D转换芯片,其最高分辨可达256级,能适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间为32μ,具有双数据输出可作为数据校验,以减少数据误差,转换速度快,而且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。2.2.5键盘模块方案一:采用独立式按键作为输入模块。这种键盘的硬件比拟容易实现,直接用I/O口构成单个按键电路,接口电路配置灵活,按键识别和软件..word文档精品文档分享.I/OI/O口资源。其原理图如图2-6所示。图2-6独立式功能按键方案二:采用4*4矩阵式键盘作为输入模块。采用矩阵式键盘作为输入电路,其特点:电路和软件稍复杂,但相比之下,当按键数越多时越节约I/O口,节约了资源。这种键盘的硬件构造简单,而且这种键盘的编程方法比拟成熟。其原理图如图2-7所示。图2-74x4矩阵式键盘原理图由于本设计键盘输入预置用于计算,清零等,按键较多,假设是采用独立按键,按键麻烦,为软件设计增加负担;但是采用矩阵式按键,既可以节约I/O口资源,输入数值又方便,而且使操作界面更具人性化。通过比照,故采用方案二作为系统的输入模块。2.2.6显示模块方案一:采用LED数码管静态显示。采用LED数码管串行静态显示,..word文档精品文档分享.这种显示方式接口,编程容易且管理简单;虽然其显示亮度高,但是如果显示器的位数较多,需要增加锁存器,故而静态显示占用I/O口线较多,CPU的开销较大。如图2-8所示。图2-84位数码管静态显示方案二:采用LED数码管动态显示。采用LED数码管动态显示,显示亮度不及静态显示,但其电路简单,适合于显示位数较多的情况。如图2-9所示。图2-94位数码管的动态显示方案三:采用LM016L液晶显示。LM016L作为一个成熟的产品,使用简单,模式固定,便于移植到各种类型的程序,但是要注意结合LCD本身的时序图来完善初始化程序。又以其微功耗、体积小、显示内容丰富、超薄轻巧、可以调节其背光亮度,这种显示方式接口,编程虽然有些麻烦,但管理较方便,占用的I/O口资源线也不多。在计算器运算中,需显示的数字、符号较多,通过比照,根据各方面的特..word文档精品文档分享.点,故采用LM016L液晶显示屏显示输出。第3章电子秤系统设计3.1硬件系统设计3.1.1控制器..word文档精品文档分享.本设计采用AT89C51单片机作为控制器,其最小系统如图3-1所示:图3-1单片机最小系统本设计单片机的硬件分配:1.P2口:作为输入口,与键盘连接,实现数据的输入;2.P1口:作为输出口,控制LCD液晶显示屏显示数据的结果;3.3.P3.5-P3.7口:作为控制端口,控制LCD液晶显示屏显示输出数据。3.1.2传感器本设计采用MOTOROLA司的系列传感器,传感器产生的信号可以直接送给转换器进展模/数转换,MPX4250将接收到的压力信号和电压信号送给A/D转换器的模拟量输入通道CH0,经过处理的信号就可以送给单片机了。与A/D转换器的连接如图3-2所示:..word文档精品文档分享.图3-2传感器接口线路3.1.3A/D转换本设计中的数据输出口接单片机的串行输出口P3.1输入接单片机的外部中断0引脚,正常情况下ADC0832与单片机的接口应为4条数据线,即CS、CLK、DO、DI。但由于端与DI端在通信时并未同时有效,而且与单片机的接口是双向的,所以设计电路时可以将DO和DI并联在一根数据线上使用。当未工作时,CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进展A/D转换时,须先将CS使能端置于低电平,并且保持低电平直到转换完全结束。其与单片机的引脚连接如图3-3所示:..word文档精品文档分享.图3-3A/D转换器与单片机接口电路3.1.4键盘本次设计所选的4X4矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成。采用这种键盘构造能够提高单片机系统中I/O口的利用率。本设计矩阵键盘与单片机的P1口相连作为输入。键盘包括数字键〔0~9〕和清零键。本次设计计算器键盘布局及与单片机接口电路如图3-4所示。图3-4仿真中矩阵键盘按键布局实际实现的功能如图3-5所示。..word文档精品文档分享.图3-5实际键盘功能与矩阵键盘布局比照由于本设计的键盘功能比拟简单,4x4矩阵键盘没有被充分利用,主要是考虑到仿真过程中布局方便而采用的。在实际应用中,假设功能简单,为了节省材料可以适当减少几个按键,。电子秤采用4x4矩阵键盘的其余功能还有待开发。3.1.5显示器由于液晶显示器可以多段显示,鉴于设计要求显示三个数据,P1口作为液晶显示的数据端口,P3.5-P3.7口作为其控制端口,控制LCD液晶显示屏显示输出数据。这样即实现了目的,又经济方便。LM016L与单片机的接口电路如图3-6所示。..word文档精品文档分享.图3-6LCD接口线路3.2软件系统设计程序设计比拟复杂,要把复杂的工作条理化,就得有相应的步骤和方法。大致可概括为以下三点:⑴分析系统控制要求,然后确定算法:并对复杂的问题进展具体的分析,找出合理的计算方法及适当的数据构造,从而确定编写程序的步骤。⑵由算法画流程图:画程序流程可以把算法和解题步骤逐步具体化,从而减少出错。⑶编写程序:根据程序流程图所表示的算法和步骤,选用适当的指令排列起来,即编写程序。编程的理想方法就是构造化程序设计法。构造化程序设计是对所用到的控制构造类程序做适当的限制,尤其是限制转向语句或指令的使用,控制了程序的复杂性,并使程序的上、下文顺序与执行流程保持一致性,令程序更易懂,减少了逻辑错误,而且易于修改、调试。3.2.1单价显示程序设计开机启动时LCD显示器上单价模块显示为“P:示,系统中连接的是4*4行列式按键键盘,其中“0-9“ON/C〞为功能键〔清零键〕,数字键按下那么将相应的数字送入数字缓冲区;功能键按下那么执行相应的程序;最终进展运算后,综合结果将送入结果缓冲区,并在LCD液晶显示屏上显示出来。其程序流程图如图3-7所示:..word文档精品文档分享.图3-7单价显示程序流程图3.2.2重量显示程序设计MPX4250生的信号送给ADC0832进展模数转换,然后通过单片机的串行输出口和外部中断接口,控制显示在LCD液晶显示器上。其程序流程图如图3-8所示:..word文档精品文档分享.图3-8称重程序流程图3.2.3金额显示程序设计对于金额显示“SUM即传感器是否受力,然后再判断单价输入情况,当两个显示都不为空时,将两个数据传给单片机进展乘法运算,结果送给显示缓冲区,由LCD液晶显示器显示出来,其程序流程图如图3-9所示:..word文档精品文档分享.图3-9计价程序流程图3.2.4运算模块本次设计应用了乘法运算,其运算程序流程图如图3-10所示:图3-10运算模块程序流程图..word文档精品文档分享.第章系统调试与仿真4.1系统软件调试软件调试方法与所选用的软件和编写的程序有关。由于本次设计采用模块化程序设计,首先要逐个模块进展调试,然后进展软件功能调试。调试模块程序时,要符合现场环境,确定好入口条件和出口状态。各程序模块调试全部软件调试完成后,应反复运行,观察系统的稳定性及系统的功能是否到达设计的要求。在软件调试过程中,对出现的错误进展认真的分析和修改,能较好的到达既定的设计效果。本设计的调试是应用KeiluVision4软件进展程序的编译调试,在没有.hex的十六进制文件,调试结果如图4-1所示:图4-1程序调试图如下图,当调试结果没有错误时,才可以将文件加载入单片机进展仿真。..word文档精品文档分享.4.2仿真翻开Proteus仿真软件,将搭建好的仿真模块翻开,然后鼠标左键双击单片机,在弹出的对话框中加载调试程序时生成的“.hex〞文件,然后运行,即可实现简易的电子秤。系统整体仿真构造图及仿真结果如图4-2、图4-3所示:图4-2系统仿真全图图4-3仿真结果图4.3仿真程序见附录4.4调试过程中遇到的问题..word文档精品文档分享.在设计过程中,首先是找不到适宜的信息输入模块,,即传感器。因为没有输入信息,仿真无从谈起。通过查找大量的传感器资料,Proteus〞元件库中选取适宜的型号,经过筛选,发现MPX4250较适合本设计,它随时可以改变输入的信号值〔即重量变化〕0一种硅半导体压力传感器,输出的是模拟型信号,市场应用也比拟广泛,比拟适合本次设计。其次是在A/D转换器的选型上也遇到了困难,在设计之初,我选的是ADC0809主要是因为我们在课堂上学习过ADC0809引脚功能和特性,对其比拟了解。但是在软件调试过程中,编好的程序无法使LCD液晶显示器将传感器的信号显示出来,即不能进展模数转换。首先我想到的是程序出了问题,但是经过检查发现,程序是正确的,然后我又仔细的检查了ADC0809单片机的引脚连接,仍然不能显示数据。有同学建议我换一个转换器,于是我尝试了ADC08042最终发现ADC0832很好地满足本次设计的目的。还有一个问题就是在编写乘法运算程序时,也就是LCD显示函数“SUM〞时,在函数的拆分问题上遇到了麻烦。如何将一个六位数拆分,在哪一位上先整除再求余,或者是先求余再整除,在这个算法上困惑了我很久,我查阅了一些资料,但仍然不能解决。后来我就去向精通语言同学请教,经过一番讨论和研究,终于把这个问题弄明白了。由于个人能力有限,本文所设计的电子秤功能单一,与市场上实际使用的电子秤相比功能不够完善,缺乏之处还请见谅。以上几个问题是设计过程中比拟突出的问题,还有一些其他小问题,在教师和同学的帮助下都迎刃而解了,在此不一一详述。..word文档精品文档分享.结论本次设计使我了解了电子秤的一些根本的工作原理,也使我明白,理论与实际的差异还是很大的,比方在仿真时传感器的选择上,现实中所使用的电子秤得传感器必须经过信号放大才能进展模/数转换。设计中应用了硬件单片机芯片模块,结合软件程序借助Keil软件调试实现显示功能。在设计过程中由于所学知识的欠缺而导致设计无法快速的完成。单片机种类繁多,功能多种多样。本设计采用了AT89C51单片机,原因之一是我们对51系列的单片机比拟熟悉,而且51单片机的功能比拟齐全,市场应用广泛。编程语言那么是利用我们所学过的C语言编程方法。由于C语言功能强大,便于模块化开发,所带库函数丰富,编写的程序易于移植等诸多优点使之成为单片机应用系统开发最快速高效的程序设计语言。采用C语言,充分表达了构造化的思想,当每个模块都完成时,将其功能加到一起就完成了整体的设计。但是仅仅进展简单的叠加无法真正的实现软件与硬件的统一,而是还需要不断地进展调试。此次设计过程中遇到了许多困难,根本原因是自己所学知识不够全面,对知识的掌握也不够扎实。出现问题后,我首先是努力去寻找问题的所在,然后用自己所掌握的知识去试着分析问题,尽可能地通过查阅资料来独立解决问题。但是个人能力有限,有些问题实在解决不了的,就去请教同学或老师。特别是在C语言的编程方面,非常感谢教师和同学们的帮助。在这分析问题、解决问题的过程中不仅稳固了以前所学的知识,通过查阅资料还掌握..word文档精品文档分享.了一些新的知识,使得个人能力得到了提高,专业水平也有了进步。这次设计是大学四年来一个总结,不仅是对自己所学专业知识的考核,也锻炼了将所学专业理论知识应用于实际问题中的能力。通过本次设计,考验了我将理论应用于实践和独立解决问题的能力,也加强了我教师,同学一起协作的能力,更使我认识到自己在知识方面存在的缺乏,明确了今后的学习方向,也为将来的的就业提前打了下坚实的根底。我会好好珍惜这次设计过程中所经历的一切,这将是我人生中一笔珍贵的财富。..word文档精品文档分享.参考文献[1]李朝青?单片机原理及接口技术?,航天航空大学,2005年第3版[2]谭浩强?C程序设计?,清华大学,2005年第3版[3]贾石峰?传感器原理与传感器技术?,机械工业,2021.8[4]李移伦?单片机原理及应用?,中南大学2006.7[5]于军胜?显示器件技术?,国防工业,2021.7[6]杨居义?单片机课程设计指导?,清华大学,2021年[7]楼然苗51些列单片机设计实例航天航空,2003.3[8]李全利,迟荣强单片机原理及接口技术[M]:教育2004.1[9]X毅刚MCS-51单片机应用设计,哈工大出版2004第二版..word文档精品文档分享.附录程序清单#include<reg51.h>#include<math.h>#include<intrins.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedint//*********定义变量区*******************sbitlcden=P3^7;//LCD使能信号sbitlcdrs=P3^5;//LCD数据/命令选择信号sbitCS=P3^3;sbitCLK=P3^2;sbitDIO=P3^1;uchartab_key[50];ucharweight;longintmoney,money1;ucharcodetab[]="0123456789";ucharcodetab0[]="p:";ucharcodetab1[]="w:";ucharcodetab2[]="SUM:";ucharn=0,temp,key;unsignedcharCH=0x02;//*********延时函数开场**************voiddelay(uintk){uinti,j;for(i=k;i>0;i--)for(j=50;j>0;j--);}..word文档精品文档分享.unsignedcharADconv(void){uchari,dat1=0,dat2=0;CS=0;CLK=0;DIO=1;_nop_();_nop_();CLK=1;_nop_();_nop_();CLK=0;DIO=1;_nop_();_nop_();CLK=1;_nop_();_nop_();CLK=0;DIO=1;_nop_();_nop_();CLK=1;DIO=1;_nop_();_nop_();CLK=0;DIO=1;_nop_();_nop_();for(i=0;i<8;i++){CLK=1;_nop_();_nop_();CLK=0;_nop_();_nop_();dat1=dat1<<1|DIO;}/*for(i=0;i<8;i++){dat2=dat2<<((uchar)(DIO)<<i);CLK=1;_nop_();_nop_();CLK=0;_nop_();_nop_();}*/CS=1;//return(dat1==dat2)?dat1:0;returndat1;}//**********写命令函数开场************voidwrite_com(ucharcom){lcdrs=0;//低电平写命令P1=com;//写入命令delay(3);//延时约3mslcden=1;//LCD使能端置高电平delay(5);//延时约5mslcden=0;//LCD使能端拉低电平}//**********写数据函数开场************voidwrite_data(uchardat){lcdrs=1;//低电平写数据P1=dat;//写入命令..word文档精品文档分享.delay(3);//延时约3mslcden=1;//LCD使能端置高电平delay(5);//延时约5mslcden=0;//LCD使能端拉低电平}//**********LCD初始化函数开场*********voidlcd_init(){lcden=0;write_com(0x38);//设置显示模式:16X2,5X7,8位数据接口write_com(0x0c);//开显示,显示光标,光标闪烁write_com(0x06);//读写一个字符后,地址指针及光标加一,且光标加一整屏显示不移动write_com(0x80);//设置光标指针}//******键盘功能分配函数群开场********voidkey_manage1(){tab_key[n]=0;if(n<4)n++;}voidkey_manage2(){tab_key[n]=1;if(n<4)n++;}voidkey_manage3(){tab_key[n]=2;if(n<4)n++;}voidkey_manage4(){tab_key[n]=3;if(n<4)n++;}voidkey_manage5()..word文档精品文档分享.{tab_key[n]=4;if(n<4)n++;}voidkey_manage6(){tab_key[n]=5;if(n<4)n++;}voidkey_manage7(){tab_key[n]=6;if(n<4)n++;}voidkey_manage8(){tab_key[n]=7;if(n<4)n++;}voidkey_manage9(){tab_key[n]=8;if(n<3)n++;}voidkey_manage10(){tab_key[n]=9;if(n<4)n++;}voidkey_manage11(){uchari;n=0;tab_key[50]=0;money=0;money1=0;write_com(0x01);write_com(0x0c);write_com(0x80);..word文档精品文档分享.for(i=0;i<2;i++){write_data(tab0[i]);}write_data(0+'0');write_com(0x89);for(i=0;i<2;i++){write_data(tab1[i]);}write_data(0+'0');write_com(0xc0);for(i=0;i<4;i++){write_data(tab2[i]);}write_data(0+'0');write_com(0xcf);write_data('$');}//**********键盘扫描函数开场****voidkey_scan(){//**********扫描第一行*********P2=0xfe;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(100);if(temp!=0xf0){temp=P2;switch(temp){case0xee:key_manage8();break;case0xde:key_manage9();break;case0xbe:key_manage10();break;..word文档精品文档分享.case0x7e:break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}}//**********扫描第二行*********P2=0xfd;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(100);if(temp!=0xf0){temp=P2;switch(temp){case0xed:key_manage5();break;case0xdd:key_manage6();break;case0xbd:key_manage7();break;case0x7d:break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}}//**********扫描第三行*********P2=0xfb;temp=P2;..word文档精品文档分享.temp=temp&0xf0;if(temp!=0xf0){delay(100);if(temp!=0xf0){temp=P2;switch(temp){case0xeb:key_manage2();break;case0xdb:key_manage3();break;case0xbb:key_manage4();break;case0x7b:break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}}//**********扫描第四行*********P2=0xf7;temp=P2;temp=temp&0xf0;if(temp!=0xf0){delay(100);if(temp!=0xf0){temp=P2;switch(temp){case0xe7:key_manage11();break;case0xd7:..word文档精品文档分享.key_manage1();break;case0xb7:break;case0x77:break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}}}//**********LCD显示函数开场***********voidlcd_disp(){uchara,i=0;if(n==1)money1=tab_key[0];if(n==2)money1=tab_key[0]*10+tab_key[1];if(n==3)money1=tab_key[0]*100+tab_key[1]*10+tab_key[2];if(n==4)money1=tab_key[0]*1000+tab_key[1]*100+tab_key[2]*10+tab_key[3];weight=ADconv()*500.0/255+1;money=money1*weight;write_com(0x82);for(i=0;i<n;i++){a=tab_key[i];write_data(tab[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论