




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机公交车自动找零系统的控制系统设计摘要:本文详细介绍了公交车自动找零机控制系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动找零机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动找零机全过程的自动控制。本系统选择LCD显示器实现投币总数的显示功能,独立式键盘按键作为乘车人数选择端。此外,系统程序采用keil软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。关键词:自动找零机,AT89C51,LCD显示BusAutomaticallyChangeSystemDesignofControlSystemBasedonMCUAbstract:Thispaperintroducesthehardwareselection,softwareplanningandpreparationanofanautomaticallychangemachinedesignofcontrolsystem,anddescribesthefocusoftheworkautomaticallychangemachinesystemtheory,systemdesignandsoftwareprogrammingprinciplesandtechniques.ThesystemwithMCUAT89C51chipasthecore,thecentralizedcontrolmodeisadoptedtoaccomplishtheautomaticchangemachinethewholeprocessofautomaticcontrol.Choiceofthesystemasastand-alonekeyboardkeystochoosethegoodsside,therealizationofthecoinshowsthetotalnumberofpassagers.Inaddition,thesystemprogramusingkeilsoftwaretoprepareandcompileprocedures,thesoftwareprogrammingissimple,convenienterrorchecking,easytoreadandsoon.Assemblylanguageisthebasiclanguageprogramwitheasytounderstand,easytorememberanduseandsoon.Keywords:AutomaticallyChangeMachines,AT89C51,LCDDisplay目录1前言.11.1选题背景.11.2课题研究的目的及意义.21.3国内外概况.21.4课题主要研究工作.22自动找零机的总体设计方案.42.1设计目标.42.2自动找零机的工作程序.42.3自动找零机的硬件原理.52.4自动找零机的功能简介.53控制系统的硬件设计.73.1总体硬件电路图.73.2中央控制元件简介.83.3投币及投币总数LCD显示系统.113.3.1投币系统.113.3.2LCD显示.133.4键盘选择系统.163.4.1独立式键盘按键的识别.173.4.2键盘的编码.173.5找钱系统.174控制系统的软件编程.184.1软件设计概述.184.2主程序设计.184.3键盘程序设计.204.4字符型液晶显示模块程序设计.254.5找钱系统.295设计仿真.305.1Proteus简介.305.2仿真电路.30I结论.36参考文献.37致谢.38附录.3901前言1.1选题背景众所周知,城市公交系统是一个城市的窗口,其工作的质量与效率会直接影响到人民群众的日常生活和工作。城市公交系统是我国大部分城市的主要交通方式,随着居民乘车次数和公交车辆的不断增加,现有的乘车收费方式越来越不能满足需要。目前,全国很多大城市各种收费和缴费机构都实现了无币化的电子货币交易;不任你是到商场购物,还是在餐厅用餐,您都可以不用现金买单,取而代之的是信用卡等付款方式。很多超级市场,公汽车上都集成了信用卡和IC卡收费系统。这不仅象征着人类文明的进步,也确实给广大消费者和商家带来了很大的方便。但是,就中国大多数人的消费观念,利用现金交易仍然是大众消费的最主要形式。涉及到现金交易,找零钱是在所难免的事情了。因此,像一些涉及到要经常需要零钱的场所和地方,如公交车上,超市等一些公共场所就需要有一种方便快捷的找零方式。2004年10月22日武汉市就发生一起因一男乘客投币不足被揭穿后殴打女司机的事件;2004年8月3日郑州市公汽公司出台“多投币不找零”的政策,结果被人们称为“霸王合同”,引得人们怨声不断。综合考虑多方面因素,许多大城市流动人口众多,并多外来的打工人员,他们大部分都不可能拥有IC卡电子车票,除此之外谁都不能保证随时都有足够的零钱,毕竟公交车零钱兑换点有限,也许我们中很多人都有这样经历那就是:有时想换些零钱是多么的难啊。乘车时,乘客投币不足,司机不高兴,投多了乘客当然不乐意。问题的解决是要靠双方共同努力才能得到完美的解决。乘车时乘客应尽可能使用零钱,公汽公司尽可能增设方便快捷的零钱兑换装置和零钱兑换点。这样才能坚持“社会本位”,“以人为本”的科学发展观。所以我有了设计公交车自动找零系统这个产品的念头15。本文阐述了智能公交车找零系统的研究背景、现状以及发展方向和前景,明确指出了现阶段中零钱兑换所面临的问题。11.2课题研究的目的及意义自动找零系统在银行、商场有着广泛的应用前景,同时它与一卡通系统是实现铁路、公路、商场等五人售票系统的两类重要环节,它们可以配合使用,也可以单独作为无人售票的基本环节。该系统集成了纸币识别收取与找零以及兑换等功能。该装置设置在公交车上、公交站点和乘客较集中的地方,也可以用在一些经常需要小额现金交易的场合。该装置为这些场合提供了一种快捷方便的电子收费、零钱兑换及找零的方式10。1.3国内外概况在国内专门用于找零钱的装置在市面上已经有产品出现。由北京三银龙科贸有限公司和北京公交凯鸿科技有限责任公司共同引进开发的“可找零公交投币机”,全面的解决了公交车无法找零钱的大难题,填补了国内无人售票车自动投币无法实现找零的空白。另外还有很多单位都在研究该装置。2003年8月12日楚天都市报记者从武汉市知识产权局获悉,一种新型智能投币箱可以解决公交车无法找零的问题;该投币箱已申请国家专利其产品也即将面世。但是就目前的情况来看,在全国大部分主要城市都还没有用上该装置,零钱兑换和公交车找零问题仍然是困扰公交公司的大难题。而且零钱的兑换也一直是一些超市和零售商大伤脑筋的问题。因此,一种快捷方便的找零方式在目前来说是很有必要的,也是很有市场潜力的。1.4课题主要研究工作在本文中主要的研究工作是设计出一种方便快捷的自动找零机。文中介绍的该系统主要包括两个部分:控制部分和机械部分。控制部分用于获取用户输入信息并将其处理,最后向执行部件发出执行的命令和执行的方式;机械部分是完成找零的执行部件,具体作用是在软件的控制下实现精确的出币。本文重点讲述控制部分的分析和原理。对于公交车自动找零系统的控制系统,采用单片机控制。单片机具有价格2便宜,体积小,可靠性高,低能耗,控制功能强大,开发周期短等优点。芯片虽小,五脏俱全,是单片机主要特点之一。其内部设有程序存储器、数据存储器、各种接口电路。而大型的处理器运算速度较高,运算器位数较多,处理能力较强,但需要在外部配置接口电路,单片机主频一般在100MHZ以下,适合用于独立工作的小型产品之中,引脚数量从几个到百余个。应用简单、灵活,可用汇编语言及C语言开发单片机产品。虽然单片机相对于现在的高端处理器而言,其性能较为低,但由于其极高的性价比,在低端控制领域有很大的市场。在工业检测与控制、计算机外设、智能仪器仪表、通讯设备、家用电器等控制领域应用广泛,特别适合于嵌入式微型机应用系统2。所以采用单片机控制公交车自动找零系统,是一个再合适不过的选择。本文共分为四部分。系统介绍了自动找零机系统从控制方案,操作逻辑到系统软件等各个环节的设计及系统调试的方法和原则。第一部分简单介绍了自动找零机的系统结构,第二部分介绍了自动找零系统控制系统的硬件电路设计,第三部分介绍了自动找零机控制系统的软件程序设计及分析,第四部分主要介绍了自动找零机的系统软件仿真模拟的实现。32自动找零机的总体设计方案2.1设计目标自动找零机只接收最大面值20元的纸币,乘客将5元(或者10元、20元)纸币送入识币口,机器自动识别货币,辨别真伪;然后乘客按下按键选择乘车人数,人数选择最多为5人,然后按确定键,自动找零机会自动将扣除车票钱的零钱从出币口送出,等待乘客取走;若乘客按下取消键,则投入的钱币会从出币口返还给乘客。2.2自动找零机的工作程序自动找零机是集光、机、电一体化的独立机构,它只需要乘客投币和按键选择票数即可自动找零,其工作程序如下图2.3。图2.2自动找零机工作程序找零机的工作原理是:(1)从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。(2)识别器把信息数据传给通信模块。(3)通信模块与找零机的主控系统通信,主控系统显示面值,启动找零机的面板键,并等待乘客按键选择乘车人数。(4)人数选择后按确定键,找零机自动把零钱送出,如果按取消键,找零机乘客投币乘客按按钮乘客取出零钱机器自动识别机器自动找零4经过延时予以退币。退币分为两种情况:一种是由货币识别器完成退纸币,另一种是由硬币的通信模块完成退硬币。(5)系统复零,完成找零。2.3自动找零机的硬件原理自动找零机的硬件原理构成如下图2.3所示。图2.3自动找零机硬件原理图从系统的主电路图中可以知道,该系统大体上可以分为四个模块:单片机模块、键盘模块、显示器模块、纸币、硬币找零控制模块。其中后三个模块通过与单片机模块相连接从而构成了一个功能完整的系统,实现了找零机的基本硬件结构。2.4自动找零机的功能简介基本原理:货币识别器对所投货币进行识别,根据金额将人数选择权提供乘客,乘客选择人数后,控制芯片发出指令实现找零。其功能描述:找零机分为纸币找零和硬币找零,纸币找零有5元,10元钱的找零,硬币找零则可以找1元,2元,3元,4元。纸币检测及识别元件纸币检测接口AT89C51单片机纸币传送找零接口硬币传送找零接口键盘接口电路LCD显示器接口键盘5自动找零机能够投币总数LCD显示功能。本设计中有一共有7个按键选择,其中有五个乘车人数选择按键,分别为1元、2元、3元、4元、5元,还有1个确定键和1个取消键。如果没有按照预先设计的流程顺序进行按键选择,自动找零机将会自动返回操作前的状态,等待再次正确的按键选择。自动找零机的原理框图如图1.2所示。P3.4P0.0P0.6P1.0P1.6P2.0P2.6图1.2自动找零机原理框图实现自动找零机的功能的设计思路:(1)采用单片机89C51作为中央控制元件;(2)用P3.4(XO)口作为识别货币输入端;(3)P1口作为乘车人数选择选择端(采用独立式键盘做为选择票数端);(4)采用P0口实现找零功能。单片机货币识别系统键盘找零输出LCD显示63控制系统的硬件设计3.1总体硬件电路图硬件是控制系统的物理载体,硬件设计是整个设计的基础环节。如图3.0所示,本次设计的自动找零机系统包括以下几个部分:中央控制元件89C51、投币及投币总数LCD显示系统、票数选择系统、找钱系统。各元器件的选用质量在此次设计中很重要,是否合理直接影响控制系统的设计质量,要以经济适用、稳定可靠为原则进行设计。图3.1硬件接口电路73.2中央控制元件简介在计算机技术高速发展的时代,许多可编程控制器件和芯片被广泛的应用与生产生活中的各个领域,并且发挥着巨大的作用,实现了工业、农业、商业等方面的自动化。其中最常用的有,PLC,PLD,FPEROM(单片机)等;在性能结构上,他们各有各的优点。其中,可编程控制器(ProgrammableController),简称PLC。它是20世纪70年代以来再集成电计算机技术基础上发展起来的一种新型工业控制装置,主要用于工业控制;DSP最早是指一种信号处理技术,直到八十年代初第一颗商用数字处理器问世,DSP才逐步成为一种全新高速处理器的名称。最初DSP的应用在于专业数据通信和语音处理,各种专用调制解调器、声码器、数据加密机初步获得市场。其后DSP应用扩展到广泛的民用产品,诸如硬盘驱动器、通用调制解调器、数字答录机、无线通信终端。九十年代中DSP在数字GSM手机应用和无线基站应用中都获得了巨大的成功。与此同时,DSP开始全面拓展到新兴应用,并在宽带通信、数字控制、数字音频、数字视频等市场上捷报频传。DSP器件的特点使得它特别适合嵌入式的实时数字信号处理任务6。单片微型计算机简称单片机或单片微机,又称微型控制器。它是在一块半导体芯片上,集成了CPU、ROM、RAM、I/O接口、定时器/计数器、中断系统等功能部件,够成了一台完整的数字电子计算机。单片机芯片的集成度很高,它将微型计算机的主要部件都集成在一块芯片上,具有以下优点:(1)它具有体积小、重量轻、价格便宜、耗电少。(2)其信号通道受外界影响小,可靠性高,抗干扰性能强。(3)控制功能强,运行速度快。其结构组成与指令系统都着重满足工控要求。由上述单片机的优点可知它能广泛的应用各控制领域。由于它具有“小、轻、廉、省”的特点,尤其耗电少,又可使供电电源的体积小、重量轻,所以特别适用于“电脑型产品”,在家用电器、玩具、游戏机、声像设备、电子秤、收款机、办公设备、厨房设备等许多产品上的到广泛的应用。它同样也特别适用于数控机械、医疗设备,汽车等地方。在我国,Intel公司MCS-48系列、MCS-51系列、MCS-96系列的各种机型用的最多7。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处8理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。在本次设计中,中央控制元件采用MCS-51系列单片机中的89C51。如图3.2所示。图3.289C51引脚图(1)主要特性:与MCS-51兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式片内振荡器和时钟电路(2)管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作9为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。10RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出1。3.3投币及投币总数LCD显示系统3.3.1投币系统投币系统涉及到货币识别系统,包括纸币识别和硬币的识别。纸币识别及传送机构包括双向微型电机和捻纸皮带、纸币面值检测元件(磁头0到7)、入口处一组光电检测元件(光源、透镜、光敏二极管)等;硬币贮币退币机构为圆筒式贮币,步进电机驱动实现硬币退币找零。(1)纸币真伪及面值识别。由于本系统设定只接收新版5元、10元及20元纸币,纸币真伪及面值识别可根据其上金属线的磁带分布来确定。如图3.3.1,阴影部分表示有磁,上面的黑框表示的是拾磁磁头的位置布置。11图3.3.1纸币识别及识磁原理左边对齐后按照以上的磁头布置法,可以测出这三种纸币的磁性分布情况。平均布置8个磁头,当有纸币通过磁头下方时开始拾磁,当检测到某一段有磁性分布时,对应磁头读出的信号经整形电路输出为高电平。据此实现纸币真假和面值的判断。(2)纸币传送。当有纸钞投入进口时,入口处光敏二极管发出信号,电机正转,带动捻纸皮带将纸钞送进识钞器内。在送进过程中,检测元件对纸钞进行识别,如是真钞则进入内部贮钞箱;否则,微电机反转将其退出。该模块的输入信号有磁头0到7的输入信号、入口处光电检测元件输入信号。该模块需控制输出的信号有纸币传送直流电机控制信号。(3)硬币找零控制。找零时,单片机根据记录从最末筒开始找零。找零步进电机经减速后带动硬币拨片转动,从储币筒下端拔出一枚硬币,硬币落入退币口内,步进电机再反转使硬币拨片回到起始位置完成一次找零。当检测到筒内硬币量不足时,将从前一筒中拨出硬币进行找零。该模块的输入信号有电涡流传感器的输入信号、光电检测元件13输入信号。该模块需控制输出的信号有继电器T1T3控制信号、找零直流电机控制信号11。对于识别货币器是如何设计、如何工作的,在这里将不做进一步的研究。本课题设计主要是要实现自动找零系统的控制系统的设计,即投币总数显示、票数选择以及找零功能。在本次设计中,用P3.4上的一个按键来代替投币系统的输出,把货币的识别及投币数目的输入简单用这一个按键来代替。本次设计的货币累加是对判断P3.4上的按键上所按下的次数进行累加来12实现的,并将累加的次数送到寄存器B,然后系统根据投币的总数和相应的操作来实现输出。3.3.2LCD显示本次设计选用TC1602AL液晶显示屏,可以直接跟51系列单片接口相连,如图3.3.2所示。图3.3.2LCD液晶显示屏液晶模块TC1602AL采用标准的16脚接口,其引脚功能如下:表3.3.2液晶显示模块接口说明标号功能说明备注Vss逻辑负电源输入引脚,0VVdd逻辑正电源输入引脚,+5VV0LCD驱动电源输入引脚,大小可调先是对比度一般接0VE读写使能引脚:高电平有效,下降沿锁定数据RS数据/指令寄存器选择引脚:RS=“1”:数据D0-D7与数据寄存器通信RS=“0”:数据D0-D7与指令寄存器通信R/W读/写选择引脚:高电平:读数据低电平:写数据若不须读操作功能,该引脚可直接接地D0D78位数据线引脚13第1脚:VSS为电源地,接GND。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:BLA背光电源正极(+5V)输入引脚。第16脚:BLK背光电源负极,接GND。TC1602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个57点阵字符,32个510点阵字符。另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。1602液晶模块内部的控制器共有11条控制指令。指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。14指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块。不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据3。1602液晶的读写时序如图所示:读操作时序:写操作时序:153.4键盘选择系统键盘是微机系统中最常用的输入设备。键盘有两种类型:编码键盘和非编码键盘。这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。编码键盘本身除了按键以外,还包括产生键码的硬件电路。这种键盘使用十分方便,但是价格高,一般在单片机系统中较少采用。非编码键盘常用一些按键排列成行列矩阵。按键的作用只是使相应接点通或断,然后由软件来完成闭和键的识别并产生编码。非编码键盘硬件电路极为简单。因此,在单片机系统中被普遍使用。其中非编码键盘又可以分为很多种,有独立式结构,矩阵式结构等。独立式按键是指直接用I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线上按键的工作状态不会影响其他I/O口线的工作状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时。I/O口线浪费较大。故在按键数量不多时,常采用这种按键电路。由于本次设计只需要七个按键即可满足设计要求,所以采用独立式键盘,这样对键盘识别的编程也比较简单。163.4.1独立式键盘按键的识别独立式按键的识别很简单,当某个键按下时,相应的接口会出现低电平,无键按下时则为高电平,由此就可以判断出哪个键有按下。3.4.2键盘的编码将P1.0P1.6上的按键编码为00H、01H、02H、03H、04H、05H、06H,按键所对应的功能见表3.4。表3.4按键功能表按键号对应的功能00H选择1人乘车01H选择2人乘车02H选择3人乘车03H选择4人乘车04H选择5人乘车05H确定06H取消3.5找钱系统本次设计中采用P1.0P1.6口作为找零输出口,P1.0P1.6分别对应10元纸币找零口、5元纸币找零口、4元硬币找零口、3元硬币找零口、2元硬币找零口、1元硬币找零口。这样设计的目的是方便实现不同数额的找零输出。找钱系统用LED指示灯来表示找零,对应的端口上若指示灯亮则表示有零钱掉出。174控制系统的软件编程4.1软件设计概述汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度。像这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。汇编语言有如下优点:(1)因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。(2)目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛5。综合考虑自动找零机的功能需求和硬件设计,软件程序的编写应该包括以下几个内容:主程序;键盘模块程序;LCD显示模块的程序;LED灯选择程序。4.2主程序设计在程序层次结构方面,当系统上电之后,应先对其进行相关初始化。然后程序应当进入无限循环,再根据相应的触发条件进入相应的子程序,完成相应的状态下的工作。由于系统在多个状态间跳转切换,所以在程序编写时比较适合应用循环结构实现。自动找零机工作的整个流程图如图4.2所示。18NY图4.2主程序主程序将调用其他子程序以达到自动找零机的完整工作。例如,当用户投乘客投币按确定键否?找钱按取消键返还投入的钱按键选择乘车人数显示货币数开始结束19币时,主程序将调用TC1602AL显示程序,以达到显示投币数额的功能,再让用户选择是否继续交易。主程序详见附录。4.3键盘程序设计NY当用户按下键盘,程序通过去抖动的方法来解除干扰,再以行扫描的方式来确定所按键盘,并确定键值,最后再等待顾客释放。键识别流程键测试是否有键按下?去抖动键号送R50键处理子程序(1人)1键处理子程序(2人)2键处理子程序(3人)3键处理子程序(4人)4键处理子程序(5人)200键处理子程序:NNYYYNNYYY投入5元否?按确定键否?找钱MOVA,BSUBBA,#01H投入10元否?投入20元否?按取消键否?返还投入的钱返回,等待下次投币211键处理子程序NNYYYNNYYY投入5元否?按确定键否?找钱MOVA,BSUBBA,#02H投入10元否?投入20元否?按取消键否?返还投入的钱返回,等待下次投币222键处理子程序NNYYYNNYYY投入5元否?按确定键否?找钱MOVA,BSUBBA,#03H投入10元否?投入20元否?按取消键否?返还投入的钱返回,等待下次投币233键处理子程序NNNYYYNYYY投入5元否?按确定键否?找钱MOVA,BSUBBA,#04H投入10元否?投入20元否?按取消键否?返还投入的钱返回,等待下次投币244键处理子程序NNNYYYNYYY具体软件编程见附录。4.4字符型液晶显示模块程序设计TC1602AL液晶模块的功能相对简单,而控制器的设置也不多,下面就介绍常用的控制驱动特性。TC1602AL的基本操作分为以下4种,如表4.4所示。投入5元否?按确定键否?找钱MOVA,BSUBBA,#05H投入10元否?投入20元否?按取消键否?返还投入的钱返回,等待下次投币25表4.4TC1602AL的基本操作类别名称输入输出状态字的读操作RS=L;RW=H;EP=HDB0-7读出为状态字数据读出操作RS=H;RW=H;EP=HDB0-7读出为数据指令写入操作RS=L;RW=L;EP=上升沿无数据写入操作RS=H;RW=L;EP=上升沿无TC1602AL指令的描述(其中:L=0,H=1,X=0/1)(1)清显示CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLLLLLLLH功能:送20H“空代码”到所有的DDRAM中,清楚所有的显示数据,并将DDRAM地址计算器(AC)清零,光标返回到原始状态,设置I/D=H,AC为自动加一的输入方式。(2)返回CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLLLLLLHX功能:设DDRAM地址为零,显示回原位,DDRAM内容不变。(3)输入方式设置CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLLLLLLI/DSH功能:设置光标移动方向并指定整体显示是否移动。I/D表示地址的修改方式,也是光标的移动方式:I/D=1:光标由左向右移动且AC自动加一;I/D=0:光标由右向左移动且AC自动减一。SH表示是否允许显示画面的滚动方式:SH=0:禁止滚动;SH=1:允许滚动。SH=1且I/D=0:显示画面向右移动一个字符。26SH=1且I/D=1:显示画面向左移动一个字符。(4)显示开关控制CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLLLLHDCB功能:控制整体显示开关(D),光标开关(C)及闪烁开关(B)的开关。D=1:整体显示开;D=0:整体显示关。C=1:光标显示开;C=0:光标显示关。B=1:光标闪烁;B=0:光标不闪烁。(5)光标或整体显示移位位置CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLLLHS/CR/LXX功能:移动光标或整体显示,同时不改变DDRAM内容,S/C和R/L置位不同时对应的操作:00:光标左移;01:光标右移。10:所有显示左移:11:所有显示右移。(6)功能设置CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLLHDLNFXX功能:设置接口数据位数(DL)、显示行数(N)以及字形(F)。DL=1:8位数据接口模式,DL=0:4位数据接口模式(DB4-7有效,在这种模式下,传送的方式为先高4位,后低4位)。N=1:两行显示;N=0:单行显示。F=1:510点阵模式加光标;F=0:57点阵模式加光标。(7)设置CGRAM地址CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLLHACG5ACG4ACG3ACG2ACG1ACG0功能:将CGRAM地址送入AC中。设置后MCU对数据的操作是对DDRAM的读/写操作。27(8)设置DDRAM地址CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LLHADD6ADD5ADD4ADD3ADD2ADD1ADD0功能:DDRAM地址送入AC中。当N=0时,DDRAM地址范围为:80H-FFH;当N=1时:第一行的DDRAM地址范围为:80H-BFH;第二行的DDRAM地址范围为:C0H-FFH。(9)读忙状态位(BF)及地址CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0LHBFAC6AC5AC4AC3AC2AC1AC0功能:读最高位(BF)判断内部操作是否正在执行,并读低7位地址计数器的内容。(10)写数据CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0HLD7D6D5D4D3D2D1D0功能:写数据到CGRAM或是DDRAM.。如果写数据到CGRAM,要先执行“设置CGRAM地址”命令;如果写数据到DDRAM,则要先执行“设置DDRAM地址”命令。(11)读数据CODE:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0HLD7D6D5D4D3D2D1D0功能:从CGRAM或是DDRAM读出数据。如果从CGRAM读数据,要先执行“设置CGRAM地址”命令;如果写数据到DDRAM,则要先执行“设置DDRAM地址”命令。执行读操作后,地址自动加/减1(根据输入方式设置指令)3。TC1602AL显示器在交易过程能起到金额显示作用,对显示器的识别流程如图4.4。显示模块程序详见附录。28图4.4LCD显示原理图4.5找钱系统程序流程图。详细编程见附录。图4.5找钱程序流程图295设计仿真5.1Proteus简介Proteus嵌入式系统仿真与开发平台是英国Labcenter公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台。它是一种可视化的支持多种型号单片机(如51、PIC、AVR、Motorolahcll等),并且支持与当前流行的单片机开发环境(Keil、MPLAB、IAR)连接调试的软硬件仿真系统。Proteus除了具有和其他EDA工具一样的原理图、PCB自动或人工布线及电路仿真功能外,针对微控制系统与外设的混合电路的电路仿真、软件仿真、系统协同仿真也做到了一体化和互动效果,是目前电子设计爱好者广泛使用的电子线路设计与仿真软件Proteus和Multisim功能的联合和进一步发展。Proteus软件已有近20年的历史,在全球拥有庞大的企业用户群,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原型时就可对系统进行设计、测试与验证。由于Proteus软件包括逼真的协同仿真功能,得到了包括剑桥大学在内的众多大学用户作为电子学或嵌入式系统的课程教学、实验和水平考试平台。目前,Proteus在国内单片机开发者及单片机爱好者之中已开始普及,有很多开发者已经开始用此开发环境进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版一年级下册第三单元《小公鸡和小鸭子》教案
- 2023-2024学年陕西省安康市高二下学期期末质量联考数学试卷(解析版)
- 高中英语选择性必修四课本同步课件UNIT-4-SHARING-Using-Language
- 随申如何开委托书
- 公积金委托协议风险
- 对不好的员工评语
- 食堂用餐文化建设
- 作业帮新员工管理制度
- 供暖公司计量管理制度
- 供水企业行政管理制度
- 2023年国开(中央电大)04114《会计学概论》题库及标准答案
- 广东省广州市天河区2024年八年级下册数学期末考试试题含解析
- 中建测评2024二测题库及答案
- 24春国家开放大学《统计学原理》形成性考核1-3参考答案
- 环卫保洁整体服务方案
- 小学数学小组合作学习有效性课题研究结题报告
- 磁控溅射原理详细介绍课件
- 线路人工起道捣鼓作业指导书
- 大学语文(第三版)课件 渔父
- 提升医患沟通效果的标准化培训指南
- 企业专职消防队建设标准
评论
0/150
提交评论