搜档网
当前位置:搜档网 › 武汉理工大学数电课设自动售货饮料机控制电路的设计与实现

武汉理工大学数电课设自动售货饮料机控制电路的设计与实现

武汉理工大学数电课设自动售货饮料机控制电路的设计与实现
武汉理工大学数电课设自动售货饮料机控制电路的设计与实现

课程设计任务书

学生姓名:张亚男专业班级:通信1104班

指导教师:刘可文工作单位:信息工程学院

题目: 自动售货饮料机控制电路的设计与实现

初始条件:

本设计既可以使用计数器、比较器、脉冲发生器等和必要的门电路等,也可以使用单片机系统构建。用数码管、LED灯显示结果。

要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)

1、课程设计工作量:1周。

2、技术要求:

1)售货机只接受5角和1元的硬币,可以用按钮代替硬币的投入。投入硬币的总金额用两位数码管显示,最大投入金额为9.5元。

2)售货机可以自动出售3种饮料,售价分别是0.5元,1元和1.5元。当顾客完成投币后,根据投入金额,各饮料对应的LED将亮起(如投入1元硬币,0.5元和1元饮料的LED亮起,表示可以购买0.5元或1元饮料)。

3)顾客根据自身需要按下各饮料对应的按钮,每按一次掉出一瓶饮料,两位数码管显示剩余金额,LED继续指示可购饮料的种类;

4)顾客按下“找零”按钮将使机器发出找零信号,两位数码管清零。

5)确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。

3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。

时间安排:

1、2013年5 月16 日,布置课设具体实施计划与课程设计报告格式的要求说明。

2、2013年6 月27 日至2013年6 月29 日,方案选择和电路设计。

3、2013年6 月30 日至2013年7 月3 日,电路调试和设计说明书撰写。

4、2013年7 月5 日,上交课程设计成果及报告,同时进行答辩。

指导教师签名:年月日

目录

摘要........................................................................ I Abstract.................................................................... II 1 总体方案设计.. (1)

1.1方案比较选择 (1)

1.2 实现自动售货饮料机功能的总体思路 (2)

2 硬件单元电路设计 (3)

2.1 中央控制单元---单片机最小系统 (3)

2.1.1 STC89C52的介绍 (3)

2.1.2 51系列单片机最小系统的介绍 (5)

2.2 投币单元 (6)

2.3 选择购买单元 (7)

2.4 找零单元 (8)

2.5 显示单元 (8)

2.5.1 可购买类型指示灯显示 (8)

2.5.2 余额显示 (9)

2.6 原理总图 (12)

3 软件设计 (13)

3.1 软件简介 (13)

3.1.1 Keil简介 (13)

3.1.2 Proteus简介 (13)

3.2 程序设计 (15)

4 Proteus仿真结果及分析 (16)

5 实物焊接及调试 (20)

5.1 实物焊接图 (20)

5.2 调试过程中出现的问题 (20)

6 总结及体会 (21)

7 参考文献 (22)

附录1:元件清单 (23)

附录2:源程序 (24)

摘要

本文详细介绍了自动售货饮料机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的思路。该系统以单片机STC89C52芯片为核心,采用集中控制方式实现了对自动售货饮料机全过程的自动控制。本系统选择独立式键盘按键作为投币和货物选择端,用数码管实现了投币总数和余额的显示功能。此外,系统程序采用keil软件进行程序的编写和编译,并用Proteus软件进行仿真,最后根据原理电路焊接实物并调试。

关键词:自动售货饮料机STC89C52数码管显示Proteus仿真

Abstract

This paper describes a vending machine system design, hardware selection, software planning and preparation, and describes the focus of the work vending machine system theory, system design, software programming mentality. STC89C52 in the system as the core chip, realizes the automatic control of the vending machine’s entire process by using the centralized control mode. The stand-alone keyboard keys are chose to insert coins and choose the goods side, the Nixie tube is used to realize the function of showing the total number of inserted coins and remaining sum. In addition, the system program using keil software to prepare and compile procedures, and Proteus software is used for simulation. At last, the material object is welded and debugged according to the schema circuit.

Keywords:The Vending Machines STC89C52 Digital Display Proteus Simulation

1 总体方案设计

根据设计要求,自动售货饮料机主要由四个模块构成,即投币模块、选择购买模块、找零模块和显示模块(余额显示和可购买类型指示灯显示)。按照此思路,可以用数字芯片设计,也可以用单片机系统设计,两种设计方案如下。

1.1方案比较选择

方案1:

电路从两部分输入,第一部分通过开关闭合模拟投币,投币后进入计数器74LS161和二进制全加器74LS283进行累加,通过数码管显示投币总值。再通过数值比较器74LS85比较可以购买不同价格的饮料类型。

另一部分通过开关闭合模拟选择饮料,选择货物后用编码器和数码管显示饮料价格,最后将投币总值和饮料价格一起通过减法器,做差值后显示。原理框图如图1-1所示。

图1-1 方案一原理框图

方案2:

用单片机实现自动售饮料功能,通过编写程序来控制数码管上金额的显示和各种价格的饮料对应的LED灯显示,通过按键的操作来实现投币,买饮料和找零。原理框图如图1-2所示。

图1-2 方案二原理框图

分析得出,方案一和方案二都可行。

但是,方案一需要使用74LS161,74LS283,74LS85等芯片,电路组成比较复杂,焊接电路花费的时间较长,不容易做出实物。而方案二使用单片机思路清晰,电路简单易焊接。

综合考虑,我选择方案二。

1.2 实现自动售货饮料机功能的总体思路

采用单片机系列中的STC89C52所组成的单片机最小系统作为中央控制元件。 投币模块: 用端口P1.0和P1.1作为投币输入端,分别表示投入0.5元和1.0元。 选择购买模块:用端口P1.2、P1.3和P1.4作为选择购买输入端,分别表示购买0.5元、1.0元和1.5元的饮料。

找零模块:用端口P1.7作为找零输入端。

显示模块:用端口P0.5、P0.6和P0.7作为可购买指示输出端,分别表示可购买0.5元、1.0元和1.5元的饮料;用端口P2.0-P2.7作为显示输出端,连接数码管显示余额。

2 硬件单元电路设计

2.1 中央控制单元---单片机最小系统

2.1.1 STC89C52的介绍

STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制作技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。其引脚图如下图所示。

图2-1 STC89C52引脚图

STC89C52RC引脚功能说明:

VCC(40引脚):电源电压

VSS(20引脚):接地

P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此

时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。

P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流()。在对Flash ROM编程和程序校验时,P1接收低8位地址。

P2端口(P2.0~P2.7,21~28引脚):P2口的基本功能和P1端口相同。在访问外部程序存储器和16位地址的外部数据存储器时,P2送出高8位地址。在访问8位地址的外部数据存储器时,P2口引脚上的内容在整个访问期间不会改变。在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。

P3端口(P3.0~P3.7,10~17引脚):P3口的基本功能和P1端口相同。在对Flash ROM 编程或程序校验时,P3还接收一些控制信号。

RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用作编程输入脉冲。

(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。

/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。

XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2(18引脚):振荡器反相放大器的输入端。

2.1.2 51系列单片机最小系统的介绍

单片机最小系统是能补足单片机工作的最简单电路,它由单片机、电源、晶体振荡器、复位电路等构成。它是本系统的处理单元也是控制单元,负责处理信号、外设的接口与控制,同时它也是所有软件的载体。对51系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/ 输出设备等。51系列单片机最小系统见下图。

图2-2 51系列单片机最小系统

时钟电路:

XTAL1(19脚):芯片内部振荡电路输入端。

XTAL2(18 脚):芯片内部振荡电路输出端。

XTAL1和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2-2中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2 ~12MHz 之间任选,甚至可以达到24MHz或者更高,但是频率越高功耗也就越大。在本实验套件中采用的11.0592M的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 ~40pF之间选择(本实验套件

复位电路:

在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。

5l系列单片机的复位引脚RST(第9管脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。

复位操作通常有两种基本形式:上电自动复位和开关复位。图2-2中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替。

EA/VPP(31 脚)的功能和接法:

51单片机的EA/VPP(31脚)是内部和外部程序存储器的选择管脚。当EA保持高电平时,单片机访问内部程序存储器;当EA保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。

在本实验套件中,EA 管脚接到了VCC上,只使用内部的程序存储器。

P0口外接上拉电阻:

51 单片机的P0端口为开漏输出,内部无上拉电阻。所以在当做普通I/O输出数据时,由于V2截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。

2.2 投币单元

用端口P1.0和P1.1作为投币输入端,分别表示投入0.5元和1.0元。原理电路图如图2-3所示。

图2-3 投币单元原理电路

如图所示,KEY_5为投入0.5元的按键开关,与端口P1.0相接。KEY_10为投入1.0元的按键开关,与端口P1.1相接。P1.0和P1.1初始置为高电平1,按下开关瞬间,接地置为低电平0,表示投入对应的硬币。

2.3 选择购买单元

用端口P1.2-P1.4作为选择购买输入端,分别表示购买0.5元、1.0元和1.5元的饮料。原理电路图如图2-4所示。

图2-4 选择购买单元原理电路

如图所示,KEY_buy5、KEY_buy10和KEY_buy15分别为购买0.5元、1.0元和1.5

元饮料的按键,分别与端口P1.2-P1.4相连。初始置为高电平1,按下按键瞬间,接地置为低电平0,表示购买对应金额的饮料。

2.4 找零单元

用端口P1.7作为找零输入端。原理电路图如图2-5所示。

图2-5 找零单元的原理电路

如图所示,KEY_getchange表示找零,与端口P1.7相接。P1.7初始置为高电平1,按下按键瞬间,接地置为低电平0,表示找零信号。

2.5 显示单元

2.5.1 可购买类型指示灯显示

用端口P0.5-P0.7作为指示灯显示输出端,分别连接LED灯指示0.5元、1.0元和1.5元的饮料可以购买。原理电路图如图2-6所示。

图2-6 可购买类型指示灯显示单元原理电路

如图所示,LED_A、LED_B、LED_C分别用来指示0.5元、1.0元和1.5元的饮料可以购买,分别与端口P0.5-P0.7相接,每个LED灯加一个100欧姆的限流电阻,然后接VCC。

P0.5-P0.7初始置为高电平1,此时LED灯截止,为熄灭状态。当按键输入后经程序控制使P0.5、P0.6或P0.7为低电平时,对应的LED灯导通,为点亮状态。

2.5.2 余额显示

用端口P2.0-P2.7作为余额显示输出端,连接译码器分别驱动两个数码管共同显示余额。原理电路图如图2-7所示。

图2-7 余额显示单元原理电路

一、元件选取:显示元件选择了两个一位共阳数码管,并用74LS47译码器作为驱动。

二、元件介绍:

1、74LS47译码器

74LS47是BCD-7段数码管译码器/驱动器,

74LS47的功能用于将BCD码转化成数码块中的数字,

通过它解码,可以直接把数字转换为数码管的显示数

字。74LS47为低电平作用。管脚图如图2-8所示。

图2-8 74LS47引脚图引脚功能:

(1)LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当LT=0时,无论输入A3 ,A2 ,A1 ,A0为何种状态,译码器输出均为低电平,也就是七段将全亮,若驱动的数码管正常,是显示8。

(2)BI:灭灯输入,是为控制多位数码显示的灭灯所设置的。当BI=0时,不论LT 和输入A3 ,A2 ,A1,A0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。

(3)RBI:灭零输入,它是为使不希望显示的0熄灭而设定的。当对每一位A3= A2 =A1

=A0=0时,本应显示0,但是在RBI=0作用下,使译码器输出全为高电平。其结果和加入灭灯信号的结果一样,将0熄灭。

(4)RBO:灭零输出,它和灭灯输入BI共用一端,两者配合使用,可以实现多位数码显示的灭零控制。

74LS47是输出低电平有效的七段字形译码器,它在这里与数码管配合使用,表2-1列出了74LS47的真值表,表示出了它与数码管之间的关系。

表2-1 74LS47真值表

2、七段显示数码管

七段发光二极管是多种显示器中的一种,它可以直接显示出译码器输出的十进制数。七段发光二极管显示器有共阳接法和共阴接法两种。共阳接法就是把发光二极管的阳极都连在一起接到高电平上,输入低电平有效。七段共阳显示器的外引线排列图和内部原理图

如下。

图2-9 数码管外引线排列图图2-10 共阳数码管内部原理图

三、原理分析:

如图2-7所示,驱动整数部分数码管显示的译码器输入端A1-D1分别与单片机的端口P2.4-P2.7相接,驱动小数部分数码管显示的译码器输入端A2-D2分别与单片机的端口P2.0-P2.3相接。编写程序控制端口P2.0-P2.7,并通过译码器驱动数码管显示对应的余额。在实际电路中,译码器和数码管的对应端口间需加限流电阻,由于实际电路中VCC为5V,而发光二极管的工作电压一般在2V左右,故在实物焊接中,我选择用300欧姆的电阻作为限流电阻。

2.6 原理总图

用中央控制单元--单片机最小系统控制投币模块,选择购买模块,找零模块和显示模块,设计出整体原理图如图2-11。

图2-11 整体原理图

3 软件设计

3.1 软件简介

3.1.1 Keil 简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

下面详细介绍Keil C51开发系统各部分功能和使用。C51工具包的整体结构,uVision 与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

3.1.2 Proteus 简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真

虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,2010年增加了Cortex 和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil 和MPLAB等多种编译器。

Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:

(1)原理布图

(2)PCB自动或人工布线

(3)SPICE电路仿真

另外,Proteus还有以下功能

(1)互动的电路仿真,用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

(2)仿真处理器及其外围电路:可以仿真51系列、A VR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

其功能模块有4部分组成:智能原理图设计(ISIS);完善的电路仿真功能(Prospice);Prospice混合仿真;独特的单片机协同仿真功能(VSM)

在Proteus绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在Proteus 的原理图中看到模拟的实物运行状态和过程。

Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台使用Proteus 软件进行单片机系统仿真设计, 是虚拟仿真技术和计算机多媒体技术相

结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在课程设计和全国大学生电子设计竞赛中,我们使用Proteus 开发环境进行培训,在不需要硬件投入的条件下,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用Proteus 进行系统仿真成功之后再进行实际制作,能极大提高单片机系统设计效率。

3.2 程序设计

主程序设计思路如图3-1,源程序见附录2。

图3-1 主程序设计思路框图

4 Proteus仿真结果及分析

1.设置投币0.5元,未购买饮料。仿真图如下:

图4-1 投0.5硬币,未购买状态仿真图

仿真结果分析:

此时,LED_A灯亮,表示0.5元的饮料可以购买;LED_B和LED_C为熄灭状态,表示1.0元和1.5元的饮料不能购买。

数码管上显示0.5,表示投入金额为0.5元。符合设计要求。

2.设置投币1.0元,未购买饮料。仿真图如下:

图4-2 投1.0硬币,未购买状态仿真图

相关主题