为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于单片机的自动售货机的系统设计

2018-09-22 4页 doc 1MB 41阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
基于单片机的自动售货机的系统设计 本科毕业论文(设计) 基于单片机的自动售货机的系统设计 姓 名: **** 学 号: ********* 专 业: ***** 院 系: *************** 指导老师: ****** 职称学历: ********* 完成时间: **************** 教务处制 安徽新华学院本科毕业论文(设计)独创承诺书 本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调...
基于单片机的自动售货机的系统设计
本科毕业论文(设计) 基于单片机的自动售货机的系统设计 姓 名: **** 学 号: ********* 专 业: ***** 院 系: *************** 指导老师: ****** 职称学历: ********* 完成时间: **************** 教务处制 安徽新华学院本科毕业论文(设计)独创承诺书 本人按照毕业论文(设计)进度积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研究成果,不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。 毕业论文(设计)作者签名: 日期: 基于单片机的自动售货机的系统设计 摘 要 本文设计了一种以STC89C52单片机为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择3×3矩阵式键盘作为控制按键,实现货物的掉出、退币以及货币数的LCD显示等功能。 关键词: STC89C52,自动售货机,键盘控制,LCD显示 Design of automatic system of vending machine based on Microcontroller Abstract This paper introduces a design of STC89C52 microcontroller as the core, adopts the centralized control method to realize the automatic control of the whole process of automatic vending machine. In this system, 3 * 3 matrix keyboard as the control button, realize the goods out of, the coin and currency number LCD display and other functions. Keywords:STC89C52, vending machine, keyboard control, LCD display 目 录 11 绪 论 22 自动售货机系统总体#设计# 22.1 工作原理 32.2 项目要求 32.2.1 硬件设计要求 42.2.2 软件设计要求 53 控制系统的硬件电路设计 53.1 硬件设计概述 53.2 微控制器 63.3 货币识别系统 83.3 LCD显示系统模块 93.4 提示程序模块 104 控制系统的软件设计 104.1软件设计概述 104.2 主程序 124.3 键盘程序设计 134.4 字符型液晶显示模块程序设计 164.5 提示模块程序设计 185 结 论 19致 谢 20参考文献 21附 录1 主函数程序 24附 录2 TC1602AL显示程序 27附 录3 提示程序 28附 录4 总原理图 1 绪 论 自动售货机是一种全新的商业零售形式,20世纪70年代自日本和欧美发展起来。它又被称为24小时营业的微型超市。从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。 从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。 此次自动售货机的设计是以单片机为核心的自动化控制装置,它集按键选择技术、单片机技术和显示技术于一体。因此,在商业、生活中得到了广泛的应用。有些自动售货机不仅能够自动识别1元、5角硬币,而且能够自动识别20元、10元、5元纸币,还会自动找零,人机对话的应用性提高使自动售货机在国内外大面积普及成为可能。 随着科技的发展及人们生活水平的提高,自动售货机市场越来越呈现出多元化及个性化的需求。人们通过自动售货机自助购物,这种简单、快捷的方式正逐渐成为市民的一种新的消费时尚,并且满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化城市环境,方便群众生活,它已经成为城市各角落的一道亮丽风景线。 自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。 本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。 2 自动售货机系统总体设计方案 该章节对自动售货机的控制系统进行完整的功能需求分析,并确定总体设计方案,这是完成系统设计的前提。这不仅有助于时间的合理计划和安排,还可以避免因盲目进行设计而达不到要求的情况。 2.1 工作原理 自动售货机是集机、电的独立智能化售货设备,只需顾客进行投币、选货、退币等简单的操作选择,就能够方便快捷地购买到想要的商品。其工作程序如下图2.1 顾客投入钱币 顾客选取货物 机器记录金额 机器送出货物 顾客取出货物 机器计算余额 顾客取出余币 图2.1 自动售货机的工作时序图 自动售货机的工作时序是: 顾客从投币口投入货币,然后通过货币识别器采集数据、识别判断货币的真伪并判别面值,并把信息数据传给主控系统通信,启动售货机的货物选择键和退币按钮,并等待顾客按键选择货物。顾客选择货物后,自动售货机把货物准确送出领货口,顾客再取走货物。如果售货机内还有顾客未用完的货币,顾客可以选择按下退币按钮进行取零或者继续买商品;如果款额不够但还有余额,顾客依然可以按下退币按钮取零;如果没有余额,售货机将自动调成售货结束。最后系统复零,完成售货。 2.2 项目要求 此次自动售货机设计将满足一下几点要求:主控制系统对货币识别器识别的金额进行记录,根据金额数通过LCD显示器跟踪显示,同时售货机将货物选择权提供用户,用户选择货物后,单片机发出指令将所选商品从储货仓送到取物口。其功能描述:货物种类一共设有8种,这8种物品分别对应着8个不同的按键选择,其中价格不等的物品各3种,1元的有3个可选按键,2元的有3个可选按键,3元的有2个可选按键;自动售货机将顾客投的货币进行金额累加。投了几次货币后,这样机器就会把投入的货币总额数目大小输入中央控制元器件,进行处理。如果累计投入的货币数目多于物品的设定价格,机器能够实现找钱功能,或者顾客可以继续选择货物;如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还。 2.2.1 硬件设计要求 控制系统要完成图2-1中的各个环节,应具备中央处理模块(微控制器),键盘输入模块,报警提示模块,数额显示模块、货币识别模块和电机驱动模块等,电机驱动模块是自动售货设计当中比较重要的一块,涉及到送出货物的功能。对于驱动电机是如何设计、如何工作的,在这里将不做进一步的研究。本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货(用发光二极管替代)以及找零功能。在本次设计中用P2.0~P2.7作为送出货物输出接口,以发光二极管作为出货状态。这就需要控制系统提供如表2.1中所列的外设器件。 表2.1 硬件电路接口列表 外 设 名 称 数 量 用 途 备 注 MDB货币识别器 1 货币识别、找零 硬币器要符合国际标准MDB接口 键盘输入 1 输入设备 采用3×3键盘,和1个退币按键 报警提示 1 语音提示 采用语音提示功能 显示模块 1 显示货币金额 采用TC1602的LCD显示器 这些外设元器件的总体原理框架如图2.2所示 图2.2 硬件系统总体框架图 2.2.2 软件设计要求 控制系统的软件应包括主程序、启动退币系统程序、货币数额显示程序以及提示程序四个部分。参照国内外自动售货机的系统设计实例,结合自身硬件特点,系统要编写的程序需满足以下特点和要求:1、友好的人机交互界面,简易的操作步骤和可靠的销售流程;2、键盘模块能够激活自动售货机的售货系统,同时完成对商品的选择操作以及对货币识别器的退币系统的启动;3、语音提示模块要实现选取货物时金额不足的提示功能。本文第四章将重点讲述软件程序的设计。 3 控制系统的硬件电路设计 3.1 硬件设计概述 硬件是控制系统的物理载体,硬件设计是整个设计的基础环节。根据对第2.2.1节的硬件设计要求可知,此次控制系统的构成模块应包括:中央处理模块(微控制器),键盘输入模块,语音提示模块,LCD显示模块和MDB货币识别模块。各元器件的选用质量在此次设计中很重要,是否合理直接影响控制系统的设计质量,要以经济适用、稳定可靠为原则进行设计。 3.2 微控制器 微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过30多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。微控制器主要分为单片机、DSP、ARM等等,其中单片机体积小、使用灵活方便、价格便宜,主要应用于工业控制和智能仪表等领域;DSP芯片具高速运算能力,常用来处理大量数据或数字信号;ARM凭借低功耗、高性能的特点,广泛应用在移动通信和手持设备领域。 综合考虑技术指标、接口需求和经济性等因素,本设计采单片机STC89C52最合理。STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 该单片机具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。 该单片机的引脚配置如图3.1所示: 图3.1 STC89C52引脚配置图 3.3 货币识别系统 货币识别分别有对硬币和纸币的识别,由此在下文中分别介绍说明: 我国目前发行的1元、5角和1角硬币的金属原材料是为造币而专门使用的特殊合金,因此在它通过投币入口进入由电感和电容组成的特定高频振荡线路所产生的磁场时,金属材质和体积的体积的差别对电感量的影响大小也出现微弱差异,电感量的变化将引起振荡频率的变化,与设定值进行比较,确定某种硬币后,经窄带选频电路将频率信号变为电压信号输出,完成对金属硬币的识别。金属硬币识别器种类繁多,但存币退币机构基本上分为两类:一类是平面是存币,电磁阀退币;另一类是圆筒式存币,步进机退币。当硬币投入后经过识别识别出电信号后,伪币和异物被排出真币按面值由几组分配电磁阀分配到不同存币腔体内备用。当收到退币找零电信号后,通过退币电磁阀或者退币电机拉杆,将存币腔内下部依电信号程序退出,完成自动售货机的退币找零功能。硬件数据采集设备的电源为发光二极光,所发出的光的波长峰值在红外线波段,但不是单光谱,其中红外光成分达到90%以上,因此,光源辐射光中起主要作用的实际上是红外辐射。实验中对各种纸币的特征的识别也主要是根据纸币的表面特征对红外辐射的敏感。红外辐射是光辐射中的一种类型,它具有普通光辐射的共性。这主要是因为不同的纸币表面特征不同,所以在相同的光辐射下会呈现不同的反映,从而可以用来识别不同的纸币,具体地说,首先,钞票的纸张材料是特定的,所以同一种钞票具有一定程度的共性;其次,钞票表面的图案差异,对于相同面值的钞票而言,其表明的各种图案相同,不同面值的钞票之间表明图案有较大区别,所以,根据所述的光的辐射理论,也可以根据它们对相同光辐射的不同反映来判断起面值归属;再次,钞票流通过程中所造成的不同程度的污损,就会造成钞票表面特征的变化,接受光辐射的特性就是有所变化。因此,光辐射可以反映钞票的新旧程度;另外,相对于伪币的鉴别,因为伪币的纸张一般都无法满足真钞的纸张特性,而且,伪币中某些图案达不到钞票的实际标准,如水印是在造纸过程中通过特征工艺抄制上去的无色图案,而伪钞的水印则是通过一定方式轧印或描绘上去的等等,这都能在钞票对光辐射的接受信息中反映出来。但是光辐射在传输过程中,会受外界环境的影响而产生能量损失。比如经过大气传输时,就会受到大气成分的吸收,而在不同的环境条件下,大气的成分含量有某些程度的变化,因而导致能量损失的程度不同。所以光辐射到钞票介质的传输距离越短,所造成的能量损失的影响就越微小,如果硬件的性能较好,外界的这种影响可以不予考虑。 作为整个货币识别系统的核心部分,纸币控制器必须由一颗功能相对较强的嵌入式微处理器以及一系列外围器件构成。 89C52拥有4个I/O口即P0、P1、P2、P3,它有两个可编程的定时器/计数器,分别称为定时器/计数器0和定时器/计数器1。它们都是16位加法计数结构,分别由TH0和TL0及TH1和TL1两个8位计数器组成。 其主要功能是:处理器通过控制发光二极管发光,当纸币进入时,入口处发光二极光投射过纸币的光强变化,被相应入口处的光电三极管接受到后转换为电信号,传给89C52处理器,经过判断,处理器直接控制;当用户按下退币按钮时,单片机将信号发送到MDB中,再施行退币功能。其中注意的是,当选取货物后,货币器能监测到金额的减少,在退币系统启动时退出相应的金额。 MDB的通信接口是全双工的主从式接口,使用标准的专用6针插头连接,其中4号接口与P3.0相连,CPU接收到信号并记录金额,5号接口与P3.1相连,CPU通过发送信号控制退币系统的运行。由于货币识别器的核心是保密的,可供参考的资料较少,因此本系统中的MDB的使用仅限1元的投币、退币方式,同时下一章的软件设计中不做详细的介绍。MDB接口电路设计如图3.2所示。 图3.2 MDB接口电路图 3.3 LCD显示系统模块 在用户操作自动售货机时,为了让用户(顾客或运营商)更加简便、容易达成交易,本设计选用广州捷胜吉电子科技公司的TC1602AL型液晶显示模块实现此功能。其规格参数如下:外形尺寸:80×36mm; 视域尺寸:64.5×13.8mm 点尺寸:宽×高=0.52×0.6mm 本文设计的电路如图3.3所示。 图3.3 液晶模块电路图 表3.1 液晶显示模块接口说明 标 号 功 能 说 明 备 注 Vss 逻辑负电源输入引脚,0V Vdd 逻辑正电源输入引脚,+5V V0 LCD驱动电源输入引脚,大小可调先是对比度 一般接0V E 读写使能引脚: 高电平有效,下降沿锁定数据 RS 数据/指令寄存器选择引脚: RS=“1”:数据D0-D7与数据寄存器通信 RS=“0”:数据D0-D7与指令寄存器通信 R/W 读/写选择引脚: 高电平:读数据 低电平:写数据 若不须读操作功能,该引脚可直接接地 D0~D7 8位数据线引脚 目前,液晶显示模块在国内已经规范化。其引脚接口形式都是标准统一的,只要在指令设置上稍加改动,就可驱动各规格的字符型液晶显示模块,因此使用起来非常方便。关于图3.3中各引脚的功能如表3.1中所描述。 3.4 提示程序模块 提示模块电路图,如图3.4所示。 图3.4 提示模块电路图 1.此次提示电路的功能是当用户投入金额不够并且按下货物选择按键时,短暂发出提示音,会给用户提示作用。 2.参数计算:这是一个报警提示电路它由电阻、三极管、蜂鸣器组成,R4作为保护电阻它的阻值范围:330~1K。 4 控制系统的软件设计 4.1软件设计概述 C语言是编译型程序设计语言的一种,它兼顾了各种高级语言和汇编语言的特点。使用C语言进行程序设计已经成为单片机软件开发的主流。其有以下优点: 1、 C语言具有语法简洁的特点 2 、运算符丰富,夺得我有时后都分不清 3 、数据结构类型丰富 4 、结构化,就是想一小块一小块的程序,这样写起来容易 5 、语法要求不严格,这样的话相对容易一些,但有时喉也不爽,有错的时候不知道语言的语法错了 6 、功能强大,现在诸如nuix这样的操作系统就是用c 语言写的 本设计使用被广泛应用的Keil uVision2 C语言编译器为开发环境,进行了单片机的C语言程序设计。 综合考虑自动售货机的功能需求和硬件设计,软件程序的编写应该包括以下几个内容:主程序;键盘模块程序;液晶显示模块的程序;提示模块程序。 4.2 主程序 在程序层次结构方面,当系统上电之后,应先对其进行相关初始化(如对每种饮料价格的设定和商品原始库存数量的设定等)。然后程序应当进入无限循环,再根据相应的触发条件进入相应的子程序,完成相应的状态下的工作。由于系统在多个状态间跳转切换,所以在程序编写时比较适合应用循环结构实现。自动售货机工作的整个流程图如图4.1所示。 N N N Y N Y Y Y N Y 图4.1自动售货机的流程图 主程序将调用其他子程序以达到自动售货机的完整工作。例如,当用户按下按键并顺利取得货物时,主程序将调用TC1602AL显示程序,以达到显示余额的功能,再让用户选择是否继续交易。主程序详见附录。 4.3 键盘程序设计 主程序中将直接对键盘实施控制,当用户在与自动售货机进行交易时,键盘则是重要的人机交互设备,对键盘的识别流程如图4.2。 图4.2 按键识别模块原理图 此次的键盘设计是以3X3矩阵形式,其中前八个按键是货物选择键,第九个键盘是作为退币系统启动按键,当用户按下键盘,程序通过去抖动的方法来解除干扰,再以行扫描的方式来确定所按键盘,并确定键值,最后再等待顾客释放。 4.4 字符型液晶显示模块程序设计 TC1602AL液晶模块的功能相对简单,而控制器的设置也不多,下面就介绍常用的控制驱动特性。 TC1602AL的基本操作分为以下4种,如表3-1所示。 表3-1 TC1602AL的基本操作 类 别 名 称 输 入 输 出 状态字的读操作 RS=L;RW=H;EP=H DB0-7读出为状态字 数据读出操作 RS=H;RW=H;EP=H DB0-7读出为数据 指令写入操作 RS=L;RW=L;EP=上升沿 无 数据写入操作 RS=H;RW=L;EP=上升沿 无 TC1602AL指令的描述(其中:L=0,H=1,X=0/1) 1、清显示 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L L L L L H 功能:送20H“空代码”到所有的DDRAM中,清楚所有的显示数据,并将DDRAM地址计算器(AC)清零,光标返回到原始状态,设置I/D=H,AC为自动加一的输入方式。 2、返回 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L L L L H X 功能:设DDRAM地址为零,显示回原位,DDRAM内容不变。 3、输入方式设置 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L L L L I/D SH 功能:设置光标移动方向并指定整体显示是否移动。 I/D表示地址的修改方式,也是光标的移动方式: I/D=1:光标由左向右移动且AC自动加一; I/D=0:光标由右向左移动且AC自动减一。 SH表示是否允许显示画面的滚动方式: SH=0::禁止滚动;SH=1:允许滚动。 SH=1且I/D=0:显示画面向右移动一个字符。 SH=1且I/D=1:显示画面向左移动一个字符。 4、显示开关控制 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L L H D C 功能:控制整体显示开关(D),光标开关(C)及闪烁开关(B)的开关。 D=1:整体显示开;D=0:整体显示关。 C=1:光标显示开;C=0:光标显示关。 B=1:光标闪烁;B=0:光标不闪烁。 5、光标或整体显示移位位置 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L H S/C R/L X X 功能:移动光标或整体显示,同时不改变DDRAM内容,S/C和R/L置位不同时对应的操作: 00:光标左移;01:光标右移。 10:所有显示左移:11:所有显示右移。 6、功能设置 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L H DL N F X X 功能:设置接口数据位数(DL)、显示行数(N)以及字形(F)。 DL=1:8位数据接口模式,DL=0:4位数据接口模式(DB4-7有效,在这种模式下,传送的方式为先高4位,后低4位)。 N=1:两行显示;N=0:单行显示。 F=1:5×10点阵模式加光标;F=0:5×7点阵模式加光标。 7、设置CGRAM地址 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L H ACG5 ACG4 ACG3 ACG2 ACG1 ACG0 功能:将CGRAM地址送入AC中。设置后MCU对数据的操作是对DDRAM的读/ 写操作。 8、设置DDRAM地址 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L H ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 功能:DDRAM地址送入AC中。 当N=0时,DDRAM地址范围为:80H-FFH; 当N=1时:第一行的DDRAM地址范围为:80H-BFH; 第二行的DDRAM地址范围为:C0H-FFH。 9、读忙状态位(BF)及地址 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L H BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 功能:读最高位(BF)判断内部操作是否正在执行,并读低7位地址计数器的内容。 10、写数据 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H L D7 D6 D5 D4 D3 D2 D1 D0 功能:写数据到CGRAM或是DDRAM.。 如果写数据到CGRAM,要先执行“设置CGRAM地址”命令; 如果写数据到DDRAM,则要先执行“设置DDRAM地址”命令。 11、读数据 CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H L D7 D6 D5 D4 D3 D2 D1 D0 功能:从CGRAM或是DDRAM读出数据。 如果从CGRAM读数据,要先执行 “设置CGRAM地址”命令; 如果写数据到DDRAM,则要先执行“设置DDRAM地址”命令。执行读操作后,地址自动加/减1(根据输入方式设置指令)。 TC1602AL显示器在交易过程能起到金额显示作用,对显示器的识别流程如图4.3。显示模块程序详见附录。 图4.3 LCD显示原理图 4.5 提示模块程序设计 本系统的提示模块将实现的功能是:当客户按下选货按键后,如果金额足够,蜂鸣器不工作;如果金额不足,蜂鸣器将工作两秒,以提示余额不足,之后再停止工作。提示模块程序原理如图4.4。提示模块程序详见附录。 图4.4 提示模块原理图 5 结 论 本次的毕业设计是一次真正的理论与实际相结合,通过这次基于单片机的自动售货机系统的设计,不仅更加深入的了解了单片机等方面的理论知识,而且通过实际的动手操作,也更加成功地将理论知识与实际设计相结合在一起,全方面地提升了所学专业基础知识的理解和解决实际问题的能力,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,虽然毕业设计内容多,我的收获却更加丰富。通过几个月的不断努力,我摆脱了单纯的理论知识学习状态,理论知识和实际设计的结合锻炼了我的综合运用所学专业基础知识的能力,使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。 致 谢 在毕业设计期间,每次的工作方案的确定、资料的收集还是论文的撰写,我都打到了指导老师薛老师的全力帮助和耐心指导。薛老师学识渊博、治学严谨而且还为人谦和、易于亲近,是我们学习和生活的榜样,在此我特向薛老师表示最崇高的敬意和由衷的感谢。其次,我要感谢每个曾经教导过我的所有老师们,他们广博精湛的学识,严谨的治学态度使我学到的不仅是知识,还有对知识孜孜不倦的追求精神及做人的品质。同时,我也要感谢其他同学的帮助,从他们身上我学到了很多理论知识,自己的实践能力也得到了很大的提高。 在未来的学习和工作中,我会继续努力,不断地实现自己的人生价值,以更好的成绩来回报母校,回报社会。 参考文献 [1]张毅刚等.新编MCS-51单片机应用设计.哈尔滨工业大学出版社,2008 [2]张志良.单片机原理与控制技术.机械工业出版社,2011 [3]陈涛等.货币识别器的原理与设计.贵州大学电气工程学院,2006年(第35卷)第6期 [4]王琼.单片机原理及应用.合肥工业大学出版社,2008 [5]彭保基.Keil C51入门教程.西安交通大学,2005 [6]朱清慧,王志奎等.Protues教程.清华大学出版社,2011 [7]陈慧.基于嵌入式单片机的智能自动售货机控制系统.华东交通大学学报,2008,第25卷第6期:78-82 [8]丁昊.自动售货机控制系统的设计与实现.东南大学硕士学位论文,2008 [9]蔡美琴,张为民等.MCS-51系列单片机系统及其应用.北京.高等教育出版社,2004:1-156,234-268 [10]张建龙.一种新型自动售货机控制系统研发.浙江工业大学硕士学位论文,2009 [11]宋潇,李佩佩等.自动售货机控制器设计.科技信息,2009,第3期:119-120 [12]余世明,晁岳磊等.自动售货机研究现状及展望.中国工程科学,2008,第10卷第7期:51-55 [13]侯连宏.自动售货机主控系统的研制.东南大学硕士学位论文,2009 [14]李明.C语言程序设计教程.上海交通大学,2008 [15]广州捷胜吉电子科技.字符液晶模块使用手册.www.gzjsjdz.com.2013 [16]广州致远电子有限公司.ZY1730使用.www.embedcontrol.com.2013 [17]洪强宁,齐国生等.基于MDB/ICP的自动售卖系统的主控实现. 计算机应用.2002,第9期:28-30 附 录1 主函数程序 #include #include # include sbit IN0=P3^2; #define uchar unsigned char // 宏定义 #define uint unsigned int sbit TuiBi=P3^1; uchar m=0; uchar a; /********************************按键拐角定义*********************************/ sbit Row1=P1^0; sbit Row2=P1^1; sbit Row3=P1^2; sbit Line1=P1^3; sbit Line2=P1^4; sbit Line3=P1^5; uchar code chuhuo[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; /********************************延时程序*************************************/ void delay(uint count) { uint i ; while (--count!=0) for(i=0;i<125;i++); } /********************************主程序初始化*********************************/ void main( ) { LCD(); a=Data; EA=1; EX0=1; IT0=1; //开中断 while(1) {   Row1=0;Row2=0;Row3=0; Line1=1;Line2=1;Line3=1; TuiBi=1;   P2=chuhuo[m];   delay (500) ; } } void into_ISR(void) interrupt 0 {   if (IN0==0)   { delay (10); //延时消抖    if (IN0==0)    {    Row1=0;Row2=1;Row3=1;    if(Line1==0) //按键K1被按下    {    if (a>=1)    {    m=1; a=a-1; Data=a;    LCD();    }    else Tishi();    return;    }    else if (Line2==0) //按键K2被按下    {    If (a>=1)    {    m=2; a=a-1; Data=a;    LCD();    }    else Tishi();    return;    }    else if(Line3==0) //按键K3被按下    {    If (a>=1)    {    m=3; a=a-1; Data=a;    LCD();    }    else Tishi();    return;    }       Row1=1;Row2=0;Row3=1;    if(Line1==0) //按键K4被按下    {    if (a>=2)    {    m=4; a=a-2; Data=a;    LCD();    }    else Tishi();    return;    }    else if (Line2==0) //按键K5被按下    {    If (a>=2)    {    m=5; a=a-2; Data=a;    LCD();    }    else Tishi();    return;    }    else if(Line3==0) //按键K6被按下    {    If (a>=2)    {    m=6; a=a-2; Data=a;    LCD();    }    else Tishi();    return;    }       Row1=1;Row2=1;Row3=0;    if(Line1==0) //按键K7被按下    {    if (a>=3)    {    m=7; a=a-3; Data=a;    LCD();    }    else Tishi();    return;    }    else if (Line2==0) //按键K8被按下    {    If (a>=3)    {    m=8; a=a-3; Data=a;    LCD( );    }    else Tishi( );    return;    }    else if(Line3==0) //按键TuiBi被按下    {    TuiBi=0; // 启动退币系统    String_s1="We appreciate your";    String_s2= "business,bye!";    LCD();    return;    }    } } } 附 录2 TC1602AL显示程序 #include # include #include sbit LCD_EP=P3^6; sbit LCD_RW=P3^5; sbit LCD_RS=P3^4; #define uchar unsigned char ; // 宏定义 #define uint unsigned int #define LCD_Out P0 #define LCD_In P0 code uchar LCD_addr[18]={ //共18行显示的首地址 0x85,0xc5,0x86,0xc1, 0x82,0xc3,0x83,0xc3, 0x83,0xc0,0x81,0xc0, 0x82,0xc6,0x84,0xc6, 0x81,0xc3}; code uchar LCD_InitialCode[]={0x30,0x30,0x30,0x38,0x01,0x06,0x0c}; //初始化代码 uchar *string_s1,*string_s2; uchar i,j; /****************************************************************************** 函数: void LCD_DataWrite(unsigned char Data) 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中 参数: Data 写入的数据 ******************************************************************************/ void LCD_DataWrite(unsigned char Data) { unsigned int Read_Dat=0; LCD_EP = 0; //EP、RS端口为低,RW为高 LCD_RS = 0; LCD_RW = 1; do{ //RS=0,RW=1时,在E高电平作用下,BF输出到总线DB7上 LCD_In = 0xff; LCD_EP = 1; Read_Dat = LCD_In&0x80; LCD_EP = 0; }while(Read_Dat!=0); //读状态字(BF位)并判断是否可进行读写操作 LCD_RW = 0; LCD_RS = 1; LCD_Out = Data; LCD_EP = 1; LCD_EP = 0; } /****************************************************************************** 函数: void LCD_RegWrite(uchar Command) 描述: 写一个字节的数据至LCD中的控制寄存器当中 参数: Command 写入的数据(byte) ******************************************************************************/ void LCD_RegWrite(uchar Command) { uint Read_Dat=0; LCD_EP = 0; //EP、RS置低,RW置高,表为读状态字 LCD_RS = 0; LCD_RW = 1; do{ LCD_In = 0xff; LCD_EP = 1; Read_Dat = LCD_In&0x80; LCD_EP = 0; }while(Read_Dat!=0); //读状态字并判断是否可进行读写操作 LCD_RW = 0; //RW to Low,表为写指令 LCD_Out = Command; LCD_EP = 1; //EP to Hight LCD_EP = 0; } /****************************************************************************** 函数: unsigned char LCD_StatusRead(void) 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据 返回: 读出的数据,低八位有效(byte) ******************************************************************************/ unsigned char LCD_StatusRead(void) { unsigned char Read_Dat=0; LCD_EP = 0; //EP、RS置低,RW置高,表为读状态字 LCD_RS = 0; LCD_RW = 1; LCD_In = 0xff; LCD_EP = 1; Read_Dat = LCD_In; //读状态字 LCD_EP = 0; return Read_Dat; } /****************************************************************************** 函数: void LCD_Init(void) 描述: LCD初始化程序,在里面会完成LCD初始所需要设置的许多寄存器 ******************************************************************************/ void LCD_Init(void) { uchar uiTemp=0,i; uchar *Point; Point = (uchar *)LCD_InitialCode; //获取初始化序列数据的首地址 LCD_EP = 0; LCD_RS = 0; LCD_RW = 0; for(i=0;i<4;i++) { uiTemp = *Point++; LCD_Out = uiTemp; LCD_EP = 1; //EP to Hight LCD_EP = 0; //EP to Hight delay(5); //延时5ms,一般要求4.5ms以上就可以,没有那么严格的了 } LCD_RegWrite(*Point++); LCD_RegWrite(*Point++); LCD_RegWrite(*Point++); } /****************************************************************************** 函数: void LCD() 描述: LCD初始化程序,在里面会完成LCD初始所需要设置的许多寄存器 参数: 4个 ******************************************************************************/ void LCD() { uchar uiTemp=0; LCD_Init(); uiTemp = LCD_StatusRead(); //无意义,只是测试读状态字的子程序 LCD_RegWrite(LCD_addr[i]); //设置地址为第一行第一个字符的位置 while((*String_s1)!=0) //显示字符串 { LCD_DataWrite(*String_s1); String_s1++; } LCD_RegWrite(LCD_addr[j]); while((*String_s2)!=0) //显示字符串 { LCD_DataWrite(*String_s2); String_s2++; } } 附 录3 提示程序 #include #define uchar unsigned char #define uint unsigned int void Tishi( ) { sbit d=P3^3; sbit c=P3^7; sbit f; void baojing( ) { EA=1; //*******开总中断******* EX0=1; //*******开外部中断0******* IT0=1; //*******开中断******* c=1; { if (f==1) c=0; else c=1; } if( } void extero( ) interrupt 0 { f=1; } } 附 录4 总原理图 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 货币识别模块 显示器 STC89C52 提示模块 键盘模块 MCU STC89C52 STC89C52 STC89C52 语音模块 开始 顾客投币 显示货币数 顾客退币? 顾客选货 有货? 金额足够? 顾客取走货物 有零? 顾客退币? 退币 交易结束
/
本文档为【基于单片机的自动售货机的系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索