收藏 分销(赏)

自动售货机系统设计设计.doc

上传人:天**** 文档编号:4876994 上传时间:2024-10-17 格式:DOC 页数:41 大小:2.05MB
下载 相关 举报
自动售货机系统设计设计.doc_第1页
第1页 / 共41页
自动售货机系统设计设计.doc_第2页
第2页 / 共41页
自动售货机系统设计设计.doc_第3页
第3页 / 共41页
自动售货机系统设计设计.doc_第4页
第4页 / 共41页
自动售货机系统设计设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、江苏理工学院毕业设计说明书(论文)自动售货机系统设计摘要:自动售货机越来越多的出现在人们的视线当中,主要因为自动售货机不受任何场地,时间限制,而且方便快捷,操作简单。本文介绍一款以单片机AT89S52模块为核心的自动售货机系统,系统采用独立式44键盘模块实现货物选择、货币面值选择及找零功能,LED模块根据当前货币面值,提示出可购买的货物种类, LCD1602液晶模块将消费者在当前售货机上的购物信息显示出来。通过多次系统测试表明,该系统操作简单方便,交互性强,易于实现。关键词:自动售货机;控制系统;AT89S52;LCD显示The design of vending machine system

2、 Abstract: vending machine more and more appear in the line of sight of people,mainly because of the vending machine without any space, time constraints, and convenient, simple operation. This paper introduces a single-chip AT89S52 module as the core of the vending machine system, system uses an ind

3、ependent type 4 4 keyboard module choice of goods, currency of denomination choice and change function, the LED module according to the currency of denomination that can buy goods, LCD1602 LCD module will consumers shopping information displayed in the vending machines. That many times through the s

4、ystem test, this system is simple and convenient operation, strong interaction, easy to realize.Keywords: vending machine; control system; AT89S52; LCD display目 录 前言1第1章 系统总体设计31.1 自动售货机工作流程31.2系统硬件设计41.3系统软件设计51.4主要功能及技术指标6第2章 硬件电路设计72.1 单片机控制模块72.1.1 单片机AT89S52简介72.1.2单片机最小系统设计102.2按键输入模块112.2.1 4

5、4矩阵键盘的工作原理112.3输出显示模块132.3.1 LCD显示模块的设计132.3.2 LED显示模块的设计142.4电源模块142.4.1 LM7805简介142.4.2 5V直流稳压电源设计15第3章 系统软件设计173.1程序的设计思想173.2主程序流程图173.3液晶写命令子程序设计183.4液晶写数据子程序设计193.5 显示定位子程序设计203.5.1 LCD1602光标定位方法203.5.2 定位程序设计203.6定时中断服务子程序设计213.7按键扫描子程序设计22第4章 调试244.1硬件的调试244.2软件的调试244.3系统调试25第五章 结束语27参考文献28致

6、谢30附录1 电路原理图31附录2 实物图32附录3 程序33附录4 元器件清单36前言自动售货机最早出现在二十世纪五、六十年代的西欧,英国是较早实行自动售货机售货的国家之一。1942年,在食品销售中首先推广了自动售货的销售方式。1950年,英国食品杂货行有500家商家采用自动售货机售货。1969年,采用自动售货机售货的商家增加到23000家,销售的商品扩展到文化用品、唱片、香烟、食品等多个方面。进入70年代后,约有40多万家香烟、饮料店采用自动售货机售货。1980年英国有50余万台自动售货机,年销售额达8.81亿英镑。70年代后,日本、美欧等发达国家和地区自动售货机迅猛发展,短短30年的时间

7、,发达国家自动售货机产业已发展到相当大的规模。自动售货机被广泛地分放于车站、油站、码头、机场、宾馆、写字楼、娱乐场所及大街小巷和公路旁,人们通过自动售货机可以买到食品、香烟、饮料、报纸、票、卡甚至鲜花和小宠物等物品。自动售货机实现了商品需求化、性能多样化的发展, 又由原来只能出售有限商品品种, 转变为继百货公司、超级市场、便民店之后, 以消费者与售货机“一对一”自动售货的无店铺销售业态。自动售货, 给人们的生活带来了极大的方便。从广义上来说自动售货机就是投入硬币、纸币、信用卡等以后,便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件上来看,自动售货机可以充分补充人力资源的不足

8、,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买的自身性能,可以很好地解决人工费用上升的问题等多种优点。 自动售货机的分布密度高,满足了消费者的便利性和即时性需求。随着人们生活方式向快节奏、高效率变化,时间的价值显著提高,消费者在购物时更加注重便利性、即时性。随着自动售货机数量的增加,商品包装的定量化和标准化,出售的商品多样化,自动售货的便利性日益显现。同时,被称为“永不下班的超级营业员”的自动售货机在满足人们的即时性需求方面是其它零售方式不可替代的。现在,自动售货机产业正在走向信息化,并进一步实现合理化。同时因经济复苏缓慢,社会对扩

9、大就业与工作场所提供茶点饮料的福利事业更为关注。自动售货机不仅保障了惬意的工休时间,也是最廉价、提高职工工作效率最有效的手段。特别是在24小时无休工作状态中的办公场所,使用独具魅力的迷你型饮料冲饮机,解决了不间断提供咖啡饮品服务的问题,这种服务加速了自动售货机与咖啡饮品服务的融合。随着劳动密集性的产业构造向技术密集型社会转变,自动售货机也随之出现在人们的视线当中。它的产生为许多人群密集的交易场所提供了新的途径。自动售货机不受任何场地限制,时间限制而且方便快捷,操作简单。零售业各业态日趋激烈的竞争,使得商家不断寻求新的投资机会,而自动售货业态恰好符合投资的风险收益原则。由于自动售货机的销售效率高

10、(平均每台自动售货机销售额达到1万美元) ,运营商规模大(一般拥有10多万台甚至100多万台) ,加上自动售货机本身具有的节约劳动力与场地等优势,从而降低了经营成本,提高了投资收益,满足了运营商获取高收益的需求。 专家预测,未来几年中国市场上的自动售货机将每年增加510万台。中国沿海比较富裕的地区,将大约有3.5亿人口经常使用自动售货机。目前按人均台数计算,自动售货机在日本达到每台25人,在美国达到每台50-60人,在欧洲每台50-120人,而中国的人均拥有量却很低,若按每台500人计算,中国城市人口3.6亿,中国自动售货机的潜在容量为73万台,以每天销售200元计,73万台自动售货机的全年销

11、售额可达500亿。因此加快发展中国自动售货业,对提高投资效益具有重要的意义。为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约1015的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。自动售货机作为自动化商业机械的代表被广泛应用于公共场所,它是中国生产技术机械化、智能化和自动化的体现。自动售货机的诞生完善了市政的建设,符合现代化建设的需要,提高了经济活动效率,节约劳动力,把有限的人力物力集中到其他资源上。相

12、信随着社会的发展,人们对于生活高效性的重视也会逐渐提高,自动售货机也会受到更多人的关注和喜爱。第1章 系统总体设计1.1 自动售货机工作流程自动售货机是集光、机、电一体化的独立机构,只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序流程如图1-1所示。图1-1 自动售货机工作程序流程图由图1-1可以看出,操作自动售货机基本流程如下:1、从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。2、识别器把信息数据传给通信模块。3、通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键并等待顾客按键选择商品。4、顾客选择商品后,售货机自动把商品送出,等待

13、顾客取走。5、显示余额,如果金额足够多,顾客可以选择找币或者继续买商品;如果款额不够,售货机予以退币。6、系统复零,完成售货由于系统的局限性,本次设计由按键来替代货币的投入动作,分别有一角、五角,一元3种投币金额,使用AT89S52为系统的核心,完成投币、金额计算、清零等操作,使用LCD1602来进行显示。1.2系统硬件设计依据上述自动售货机的工作程序,本次自动售货机的设计主要包括货币投入、选择货物、显示、货物输出、退币以及单片机控制模块等。图1-2硬件框图在图1-2中,各模块的主要作用如下:1、单片机控制模块:设计采用AT89S52单片机,主要完成各种信号处理。2、货币投入:投币的币值主要有

14、1角、5角,1元共3种,在本次设计中由按键来实现3种投币动作,每按下一次按键代表投一次货币,之后通过AT89S52处理再显示到LED上。3、选择货物:本次设计采用三个按键完成货物选择的模拟操作,本次设计可供选择的货物有3种,分别是1元的矿泉水、2元的可乐、2.5元的冰红茶,使用3个按键来完成选择。4、显示:设计采用LCD1602液晶显示器显示消费、投币、找零等信息。5、货物输出:使用LED指示灯来表示货物输出。6、退币:使用按键来模拟退币操作,按下按键后总金额清零。1.3系统软件设计 图1-3 软件设计流程图软件设计流程图如图1-3所示。首先,LCD进行初始化设置,顾客从投币口送入货币,自动售

15、货机扫描键盘获取键值并加以计算,通过LCD液晶屏幕显示面值,自动售货机根据顾客投入不同的面值启动售货机不同的面板键,并等待顾客按键选择商品。顾客选择商品后,售货机自动把商品送出,等待顾客取走,自动售货机显示余额并找零。系统复零,完成售货。1.4主要功能及技术指标本课题设计的具体工作任务如下:售货机可以出售矿泉水1元、可乐2元、冰红茶2.5元。此售货机可投入1角、5角和1元硬币,当投入的硬币总值超过1元时,矿泉水灯亮;当投入的硬币总值超过2元时,矿泉水灯和可乐灯亮;当投入的硬币总值超过2.5元时,矿泉水灯、可乐灯和冰红茶灯亮。当按键矿泉水灯亮时,按动矿泉水按键,开始售货,同时矿泉水灯闪3s后熄灭

16、。可乐和冰红茶售货与矿泉水售货相同,本系统可以进行找零,找零时三个LED灯全闪。 第2章 硬件电路设计2.1 单片机控制模块2.1.1 单片机AT89S52简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。图2-1 AT89S52芯片引脚图1、AT89S52主要性能参数:(1)与MC

17、S-51单片机的产品兼容;(2)8K字节在系统可编程Flash存储器;(3)全静态操作:0Hz-33MHz;(4)三级加密程序存储器;(5)32个可编程I/O口线;(6)三个16位定时器/计数器;(7)六个中断源;(8)低功耗空闲和掉电模式;(9)掉电后中断可唤醒;(10) 看门狗定时器;(11) 双数据指针;(12) 掉电标识符。2、AT89S52引脚说明:VCC:电源端。GND:接地。P0口:P0口是一个8位漏极开路的双向I/0口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式

18、下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1 输出缓冲器能驱动4个TTL逻辑电平。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位的地址字节。引脚号第二功能:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出;P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制);P1.5 MOSI(在系统编程用);

19、P1.6 MISO(在系统编程用);P1.7 SCK(在系统编程用);P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用 8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8

20、位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。端口引脚第二功能:P3.0 RXD(串行输入口);P3.1 TXD(串行输出口);P3.2 INTO(外中断0);P3.3 INT1(外中断1);P3.4 TO(定时/计数器0);P3.5 T1(定时/计数器1);P3.6 WR(外部数据存储器写选通);P3.7 RD(外部数据存储器读选通);此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。并不是所有的地址都被定义了,片上没有被定义的地址是不能用的。读取这些

21、地址会得到一个随机的数据,这个数据写入程序会无效,复位以后,这些都会被置为“0”。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位

22、后,只有一条指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编

23、程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2单片机最小系统设计单片机最小系统,或者称为最小应用系统,对于AT89S52单片机来说,最小系统一般应该包括:单片机模块、时钟模块及复位模块。1、时钟模块。时钟电路就像是单片机的心脏,没有时钟电路来驱动单片机,单片机无法执行程序,它为单片机产生时钟信号。原理图如图2-2所示:图2-2时钟电路图图2-2中,利用芯片内部振荡电路,在XTAL1,XTAL2的引脚上外接定时元件,内部振荡器便能产生自激振荡。本次

24、设计选择12MHz的晶体,每个机器周期为1us。电容一般选择20PF,本系统电容选择22pF。电容C1,C2的大小对振荡频率有微小影响,可起频率微调作用。2、复位模块。无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的触发器中的。当系统处于正常工作状态时

25、,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期以上,则CPU就可以响应并将系统复位。复位原理图如图2-3所示:图2-3复位电路图2-3中,上电后,VCC对电容C1充电,C1端的电流达到最大,此时,电容C1相当于短路,复位端为高电平,单片机自动复位。复位要求RST上加高电平的时间为2个机器周期以上,本系统中晶振为12MHz,则每个机器周期为1us。当电容C1两端的电压达到电源电压时,流过C1的电流变为0,此时复位端降为低电平,单片机开始正常工作。复位时间为: (2-1)由公式(2-1)可知为1ms,值远大于2us,满足复位要求。当按下按键S0后,RST直接通过R2和VCC相连,

26、此时复位端RST为高电平,电容C1短路放电,放电完成之后,系统开始正常工作。只要复位端持续高电平两个机器周期以上,就可以保证可靠复位。2.2按键输入模块2.2.1 44矩阵键盘的工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。 在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵

27、式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。如图2-4为矩阵键盘电路图,列线接P1.4P1.7,行线接P1.0P1.3。 图2-4 矩阵键盘电路图图2-5 按键排列图2-4中,P1.4P1.7为 44 键盘的列扫描线,P1.0P1.3 为 44 键盘的行扫描线。行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被

28、按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。基本的扫描原理是:先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0。这也就可以判断有无按键的按下了。一旦检测到有键按下时,还需要有一个延时消除抖动的操作,以消除按键时带有的抖动信号;一般延时在12ms左右即可。延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状态

29、,得到列码;如果本行无键按下,则得到的列码为全0,并扫描下一行;如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。当第一行扫描没有检测到按键时,则扫描下一行,即使第二行扫描线输出高电平,其它行扫描线输出低电平,其它与前面所述类似。在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键值时可以利用此行号以及列码得知是哪一行、哪一列上的按键按下了。2.3输出显示模块2.3.1 LCD显示模块的设计为了让顾客看到购物的整个过程,设计添加了LCD显示电路,具体电路如图2-6所示:图2-6 LCD显示电路图2-6中,AT89S52芯片的P2.5,P2.6,P2.7作为LCD1602显

30、示器的控制口。P2.5接RS端,RS为1时,进行数据操作,RS为0时进行指令操作;P2.6接RW端,RW为1时,进行读操作,RW为0时进行写操作;P2.7接E使能端,E为1时使能端拉高,E为0时,使能端拉低;把P0口作为数据输出,P0.0-P0.7接D0-D7端口,D0-D7为8位双向数据端。15-16为空脚或背光电源,15为背光正极,16为背光负极。电路中还加了一个10K的可调变阻器W1,因为3号脚为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”。2.3.2 LED显示模块的设计为了使售货机能够根据当前投入币值指示出可售物品状态,系统设计添加了

31、LED显示电路,具体电路如图2-7所示:图2-7 LCD显示电路图2-7中,D2表示矿泉水,D3表示可乐,D4表示冰红茶;D2,D3,D4分别与单片机P2.0口,P2.1口,P2.2口相连,单片机三个端口P2.0,P2.1,P2.2输出为低电平时点亮,R3,R4,R5这三个电阻的作用是限流。2.4电源模块2.4.1 LM7805简介电子产品中,常见的三端稳压集成电路有正电压输出的LM7805系列和负电压输出的LM7905系列。顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。它的样子像是普通的三极管,TO-220的标准封装。三端稳压集成电路LM7805

32、如图2-8所示。图2-8 LM7805用LM7805系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中LM78后面的数字代表该三端集成稳压电路的输出电压,如LM7805表示输出电压为正5V。2.4.2 5V直流稳压电源设计为了给单片机模块,时钟模块及复位模块供电,本次设计添加了5V直流稳压电源设计。电路原理图如图2-9所示:图2-9直流稳压电路图2-9中,交流220V电压经过6v/10w的变压器T1降压成7.6v的交流电压。桥式整流电路是利用二极管的单向导通性进行整流的最常用的电路,常用来将交流

33、电转变为直流电。电路中采用D1,D2,D3,D4四个二极管,互相接成桥式结构。利用二极管的电流单向导通作用,在交流输入电压的正半周内,二极管D1、D3导通,D2、D4截止,在负载上得到上正下负的输出电压;在负半周内,正好相反,D1、D3截止,D2、D4导通,流过负载的电流方向与正半周一致。因此,利用变压器的一个副边绕组和四个二极管,使得在交流电源的正、负半周内,整流电路的负载上都有方向不变的脉动直流电压和电流。通过C1滤波之后,经过LM7805稳压成5V的直流电压。再通过C2高通滤波,C3低通滤波使电压更为稳定。该稳压电源设计简单方便,但也有不足,就是电路温度会升高,对电路的保护要求更高,但在

34、这里足够了。第3章 系统软件设计3.1程序的设计思想本次程序的设计思想是在主程序一开始就进行初始化子程序的操作,然后开始进行按键扫描,等待按键按下,再进入相应的子程序从而完成相应的操作。下面就介绍一下主程序和重要子程序。3.2主程序流程图主程序流程图如图3-1所示:图3-1主程序流程图图3-1为主程序流程图。首先,系统对LCD1602进行初始化设置,对系统设置初值。自动售货机判断顾客是否投币,当顾客投币满1元时,矿泉水指示灯亮并启动矿泉水按键;当顾客投币满2元时,矿泉水和可乐指示灯亮并启动矿泉水和可乐按键;当顾客投币满2.5元时,矿泉水,可乐及冰红茶指示灯亮并启动全部键盘。当顾客按键选择商品后

35、,自动售货机扫描键盘获取键值,并根据顾客的选择出货。一旦检测到有键按下时,还需要有一个延时消除抖动的操作,以消除按键时带有的抖动信号,顾客可以选择继续购买商品或者找零。3.3液晶写命令子程序设计 图3-2 LCD1602写入控制命令流程图图3-2为液晶写命令子程序流程图,主要可以分以下几个步骤:1、延时5ms,作用是等待数据写入。2、将LCD1602的RS置0,表示要对LCD1602指令寄存器操作。3、将LCD1602的RW置0,表示单片机将要对LCD1602写操作。4、将LCD1602的使能端E拉低,表示LCD1602可以执行指令寄存器中的控制命令。5、通过单片机的P0口向LCD1602的指

36、令寄存器写入需执行的控制指令,如:(1)当P0口为0X38时,LCD1602执行初始化;(2)当P0口为0X0C时,LCD1602执行开显示;(3)当P0口为0X01时,LCD1602执行清屏。6、LCD1602执行指令寄存器中的指令,同时,重新将使能端E拉高。7、延时20ms,作用是等待数据写入。8、将LCD1602的使能端E拉低。3.4液晶写数据子程序设计 图3-3写数据流程图图3-3为液晶写数据子程序流程图。写数据子程序设计与写命令子程序设计大致相同,不同点主要有:1、将LCD1602的RS置1,表示要对LCD1602数据寄存器操作。2、通过单片机的P0口向LCD1602的数据寄存器写入

37、需执行的控制指令。3.5 显示定位子程序设计3.5.1 LCD1602光标定位方法1、定义光标位置显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。Set DDRAM address命令如表3-4所示。光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。表3-4Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址与第2行DDRAM地址并不连续,如表3-5所示。表3-5 DDRAM地址row12345141516lin180

38、H81H82H83H84H8dH8eH8fHlin20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH3.5.2 定位程序设计 goto_xy(uchar x,uchar y) if(y=0) write_com(0x80+x);delay(5000); elsewrite_com(0x80+0x40+x);delay(5000);显示定位子程序设计的目的是进行光标定位,把数据显示在LCD1602的液晶屏幕上。显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址并不连续。比如:要显示第一行第三列的值,首先,设置X的值为2,y的值为0,则读取的数值为82H;当要

39、显示第二行第四列的值,首先,设置X的值为3,y的值为1,则读取的数值为0C3H。3.6定时中断服务子程序设计图3-6中断服务子程序流程图 图3-6为定时中断服务子程序流程图。首先,对定时器T设置初值,THO=0xd8,TL0=0xf0。设置定时器每隔10ms加1,当定时器累加到达3S时,将系统设置为投币状态。自动售货机判断顾客是否投币,系统根据顾客投入不同的币值点亮不同的指示灯;自动售货机判断顾客是否购物,系统根据顾客的选择闪烁不同的指示灯。3.7按键扫描子程序设计接下图图3-7 按键扫描流程图图3-7为按键扫描子程序流程图。下面对图3-7中一些问题作较为详尽的描述:1、 启动面板键(1) 当

40、顾客投币达到1元时,表示矿泉水的LED灯被点亮,矿泉水按键启动,顾客可以购买矿泉水。(2) 当顾客投币达到2元时,表示矿泉水和可乐的LED灯分别被点亮,矿泉水、可乐按键启动,顾客可以购买矿泉水及可乐。(3) 当顾客投币达到2.5元时,表示矿泉水、可乐及冰红茶的LED灯分别被点亮,全部按键启动,顾客可以购买任意饮料。2、 1,2,3号按键为投币键,当1,2,3号按键被按下时,LCD液晶屏幕上投币显示处分别添加1角、5角及1元。3、 找钱子程序就是自动售货机退换顾客购买货物后的余币。找钱时,表示矿泉水,可乐及冰红茶的LED灯一起闪三下后熄灭。4、 矿泉水、可乐及冰红茶子程序在设计过程中,主要采用L

41、ED灯进行表示,当顾客购买货物后,对应的LED灯会闪三下。第4章 调试4.1硬件的调试1、逻辑故障的调试:首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,然后用万用表检测,看看每条电路是否都是联通的,一经发现情况要及时处理。在用万用表检测的过程当中就发现了一个情况,有一个电阻看似是焊上去了,其实是虚焊,马上用电烙铁将那个点焊实。 2、元器件的调试:在调试过程中也要注意元器件失效的情况。造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误

42、后,用替换方法排除错误。3、对5V电源电压的检查调试:这部分的调试最好应该放在前面,因为这一块电路是要给整个电路供电,如果电压过大,会烧坏电路。这部分的测试很简单,插上插头,用万用表测量输出部分电压是否为5V,如果不是,则要重新检查电路。4、LCD1602屏幕的调试:因为3号脚为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”。电路中有一个10K的可调变阻器W1,通过调试W1,将屏幕调试到适中亮度。5、在安装器件的过程中也要格外的小心,要将引脚对好卡槽,因为引脚都比较脆弱,稍微不小心一用力,引脚可能就被弄歪或者弄断了。4.2软件的调试自动售货机的组

43、成原理不是太复杂,但是需要很强的逻辑判断,因此在这次设计中碰到了一些问题:1、 按键去抖的调试:由于一开始没有按键去抖动的部分,所以导致按一下往往会累加多次,导致按键输入不精确,后来加入了按键去抖动部分后就解决了这个问题。2、错误输入的调试:在程序编译的过程中,由于粗心大意把程序错误的输入进去,造成很大的困扰,然后经过多次反复不断的查看程序,最后找到了错误并加以解决。3、对显示子程序的调试:将硬件电路连接完毕后,对源程序进行编译,可以从液晶屏上看到有相应的字符出现,满足了预期的设置,没有出现异常情况,可证明显示子程序调试成功。4、键盘的调试:键盘调试就比较简单,完全可以借助于LCD1602显示

44、器,利用程序进行调试。通过按下按键看LCD屏幕上的显示即可判断是否有误。调试中每按下一次按键,屏幕就进行了相应的显示。没有出现异常情况,即可证明按键调试成功。4.3系统调试接上电源后,查看电源指示灯是否点亮;然后查看LCD显示屏是否处于货物待售状态;最后,进行功能的检测。如图4-1所示为自动售货机待售状态图。图4-1自动售货机待售状态图1.投币输入检测:投币的币值主要有1角、5角,1元3种,在本次设计中由按键来实现3种投币动作,每按下一次按键代表投币一次,之后通过AT89S52处理再显示到LED灯上。如图4-2所示为自动售货机投币状态图。图4-2自动售货机投币状态图2.货物选择检测:本次设计可

45、供选择的货物有3种,分别是1元的矿泉水、2元的可乐、2.5元的冰红茶,使用3个按键来完成选择。分别按下按键,查看LCD上是否显示其对应的商品,另外,商品对应的指示灯是否被点亮。如图4-2所示,绿灯表示矿泉水,黄灯表示可乐,红灯表示冰红茶,商品对应的指示灯分别被点亮。3.显示检测:本次设计采用LCD1602来同时显示消费、投币及找零,计算其正确性。如图4-3所示为自动售货机找零状态图。图4-3自动售货机找零状态图4.货物输出:使用LED灯来表示货物输出。5.退币:使用按键来模拟退币操作,按下按键后总金额清零。指示灯的显示,屏幕的显示,通过按键来投币选择购物,找零等都正确的显示出来了,没有出现异常

46、情况。第五章 结束语时间过得真快,转眼之间四年就这么过去了,想起当初大一刚进校门的时候,仿佛好像是昨天一样。在没有做这次毕业设计以前,觉得毕业设计只是对我们之前几年所学知识的一个单纯总结,但是通过这次做毕业设计,我发现自己的看法有点儿太片面了。毕业设计不仅仅是对我们前面所学知识的一种检验,而且也是对我们自身能力的一种提高。这次毕业设计使我明白了,原来自己的知识还比较欠缺。需要学习的地方实在是太多了,以前老是觉得自己什么东西都会,什么东西都懂,原来是半桶水,有点眼高手低。通过这次毕业设计,我才明白原来学习是一个长期积累的过程,在以后的学习、工作、生活中都应该不断的学习,努力提高自己的知识和自身的综合素质。通过这次的毕业设计,使我得到了一次用专业的知识、专业的技能分析和解决问题的机会,使我得到了一次锻炼。让我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能够向前迈进一步,为日后成为合格的应用型人才打下了良好的基础。经过了几个月的学习、研究以及谈老师的细心指导,终于按时完成了毕业设计。本文中,自动售货机控制器系统就是利用了89S52芯片的I/O引角。系统采用了MSC-51系列单片机为中心器件来设计自动售货机的控制

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服