自动售货机 - 单片机 - 程序,PROTUES仿真(DOC)

更新时间:2024-01-12 19:37:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

兰州理工大学

信号检测与处理课程设计

设计题目 自动售货机控制器的设计

学院 电气工程与信息工程学院

专业班级 10级自动化5班 学号 10220526 姓名 指导教师 刘仲明 时间 2013 年 春 学期

目录

第一章 绪论…………………………………………………………………………2 1.1设计任务和要求…………………………………………………………………2

1.1.1设计任务…………………………………………………………………2 1.1.2设计要求…………………………………………………………………2 1.2工作原理…………………………………………………………………………2 1.3设计思路和功能…………………………………………………………………2 第二章 方案论证……………………………………………………………………4 2.1 方案设计………………………………………………………………………4

2.2.1方案1……………………………………………………………………4 2.1.2方案2………………………………………………………………………4 2.1.3方案3………………………………………………………………………5 2.2 方案比较…………………………………………………………………………5 第三章 硬件设计……………………………………………………………………7 3.1 设计思路…………………………………………………………………………7 3.2 硬件设计方案……………………………………………………………………8 3.3 硬件设计概要……………………………………………………………………8 3.3.1 货币投入和选择货物……………………………………………………8 3.3.2 显示部分…………………………………………………………………10 3.3.3 货物输出与退币部分……………………………………………………11 第四章 软件设计…………………………………………………………………12 4.1 整体设计思路…………………………………………………………………12 4.2 系统流程图……………………………………………………………………12 4.3 软件程序………………………………………………………………………14 4.4 软件仿真与调试………………………………………………………………20

4.4.1 Proteus简介…………………………………………………………20 4.4.2 仿真结果………………………………………………………………20 第五章 设计总结……………………………………………………………………26

2

5.1调试结果……………………………………………………………………26 5.2调试问题……………………………………………………………………26 总结 …………………………………………………………………………………27 参考文献 ……………………………………………………………………………28

3

摘 要

自动售货机是劳动密集型的产业构造向技术密集型社会转变的产物。本文

设计了一种以AT89C51单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案论证、硬件设计、软件设计和结果仿真,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择独立按键模拟货物选择端,选择LED和继电器模拟货物输出,实现了货物的掉出以及货币数的显示功能。此外,系统程序采用keil软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。

关键词:自动售货机 控制系统 89C51单片机

第一章 绪 论

4

随着科技的发展及人们生活水平的提高,自动售货机市场的发展越来越呈现出

多元化及个性化的需求。通过自动售货机进行自助购物正逐渐成为市民的一种新的消费时尚,快捷方便的购物方式满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机已经成为城市各角落的一道亮丽风景线,其必将在国内普及,并成为城市现代文明程度的一种象征性标志。

本文详细介绍了自动售货机系统的方案论证、硬件设计、软件设计和结果仿真,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。共分为五章,系统介绍了自动售货机系统从控制方案,操作逻辑到系统软件等各个环节的设计及系统调试的方法和原则。

1.1设计任务和要求

1.1.1 设计任务

自动售货机控制器的设计

1.1.2设计要求

用MCS—51系列单片机设计一种简易的售货机,只识别1元和5元硬币(5元硬币可以在服务台用纸币兑换),不识别纸币。 基本要求:

1)啤酒每罐3元,可乐每罐5元。投入金额等于或超过定价时,相应的营业灯亮,同时用LED显示投入金额。营业灯亮,按相应按钮,即可取货。

2)选择啤酒或可乐后,找钱金额进行显示3s。

3)投入金额均为硬币,以1元和5元为单位。售货机按照币值进行计数。

1.2 工作原理

1)从投币口送入货币,然后通过传感器采集数据、识别器判断货币的

面值。

2)识别器把信息数据传给单片机。

3)单片机通过八位动态数码管显示投入金额,投入金额等于或超过定 时,相应的营业灯亮。

4)按相应按钮,售货机自动把商品送出,等待顾客取走。

5)显示余额,顾客可以选择找币或者继续买商品亦可继续投币如果选 择找币,系统会自动延时将硬币退出。 6)系统复零,完成售货。

1.3设计思路和功能

1)采用单片机MSC-51系列作为中央控制元件; 2)用P3.4和P3.5作为识别货币输入端; 3)P1作为货物选择选择端;

4)P2.7和P2.6分别作为8255A的片选输入端。

5

6

第二章 方案论证

根据设计要求,该系统由以下四个部分组成,分别是预设硬币投入、金额累计、可售指示和退币系统。经我们小组多次讨论,总结,从多个方案选择最佳的方案进行设计。

2.1 方案设计 2.1.1方案1

此方案中,自动售货机系统以FPGA器件作为处理和控制核心,能完成货物的信息存储,进程控制,硬币处理,余额计算,显示等功能。系统根据用户输入的货币,判断钱币是否足够,足够则售货,不够则提示并退出。系统自动的计算出应找钱币余额、库存数量并显示。系统按功能分为:分频模块、控制模块、译码模块、译码显示模块。

时钟 分频器 按键 控制器 RAM 译码 显示 数据

方案1的系统组成方框图:

2.1.2方案2

基于PLC的方案设计,自动售货机控制系统设计主要有三个功能模块,一个为售货机输入模块:该模块能完成货物信息的存储,硬币处理,余额计算。一个为中央处理模块:功能主要是硬件实验板上让两路信号同时在两个7段数码管上显示出来。另一个为输出控制模块:该模块主要是控制输出信号来控制阀门打开与找钱,并且控制阀门的打开时间。

7

投币 各种指示灯 退币电动机 PLC 货物选择 出货继电器 退币 输出显示

方案2的系统组成框图

2.1.3 方案3:

基于单片机的自动售货机设计,选择AT89C51单片机在一块芯片中集成了CPU、RAM、 ROM、定时器/计数器和I/O口等基本功能部件。各功能部件由内部总线连接在一起。89C51基本结构见图3-6所示。

图3-6 89C51单片机基本结构图

CPU是单片机的核心部件,由运算器和控制器等部件组成。运算器的功能主要是进行算术运算和逻辑运算。由8位ALU单元,两个8位的暂存器,8位的累加器ACC、B寄存器,程序状态寄存器PSW等组成。控制器用于控制单片机各部分的运行,由程序计数器PC,指令寄存器、译码器及定时控制逻辑和数据指针DPTR组成。

2.2 方案比较

方案1功能模块较多,且每个功能模块下还包括几个程序模块,设计起来,

8

程序输入必然很多很繁琐,当然涉及到的问题就较多,较复杂,而且对clk的分频也有多次,这不太利于功能和时序仿真,也不太利于最后在硬件实验板上进行模拟实验。

方案2设计程序简单,操作简单,但其PLC价格太高,并维护费用高,过程复杂,输入输出电压过高,在人口活动较高的地方,售后机的显示,输出都是小功率,不适合使用,不经济。

方案3功能模块较少,但是功能实现都一样,这就减少了程序的繁冗,最后电路图显得就更加简短明了,越少的中间环节,实际操作起来肯定相对要容易一些。另外单片机的工作电压低,价格便宜,运行可靠,经济,维护费用不高。

所以最后选择方案,最终考虑使用AT89C51单片机。

9

第三章 硬件设计

3.1设计思路

自动售货机是集光、机、电一体化的独立结构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图3-1

顾客投入货币 顾客按动按钮 机器自动计数 机器送出选定商品 机器将余币送出 顾客取出余币

图3-1 自动售货机工作时序图 售货机的工作原理是:

1)从投币口送入货币,然后通过传感器采集数据、识别器判断货币的 面值。

2)识别器把信息数据传给单片机。

3)单片机通过八位动态数码管显示投入金额,投入金额等于或超过定 时,相应的营业灯亮。

4)按相应按钮,售货机自动把商品送出,等待顾客取走。

5)显示余额,顾客可以选择找币或者继续买商品亦可继续投币如果选 择找币,系统会自动延时将硬币退出。 6)系统复零,完成售货。 由于系统的局限性,本次设计有按钮来代替货币的投入动作,分别有1元和5元两种投币金额,使用89C51为系统的核心,完成投币、装货、金额计算、清

10

顾客取出商品

零等操作,使用8位共阴极LED显示器来显示投入金额。

3.2 硬件设计方案

系统的硬件部分主要包括货币投入、选择货物、显示、货物输出、退币以及主机,系统的结构框图如图3-2

CPU 货币投入 货币显示 89C51 货物输出 货物选择

退币

图3-2 系统结构框图

退币显示 3.3 硬件设计概要

系统的硬件电路主要包括投币输入、选择货物、货物输出、退币、显示以及主机这几个重要组成部分。

主机:核心是89C51,晶振频率为12MHz。 投币输入:投币的币值主要有1元和5元两种,在本次设计中由按钮来实现两种投币动作,每按一下代表投一次,之后通过89C51处理再显示在LED上。

退币和货物输出:由89C51输出链接继电器来实现。

3.3.1货币投入和选择货物

1)在本次设计中由于条件所限货币的投入由键盘来实现,货物的选择同样由按键盘实现。

2)键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。

3)按键开关的抖动问题

4)组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。在下图中,当开

11

图1

图2

关S未被按下时,P1。0输入为高电平,S闭合后,P1。0输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动动,P1。0输入端的波形如图2所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。前面我们讲到中断时曾有个问题,就是说按键有时灵,有时不灵,其实就是这个原因,你只按了一次按键,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。

为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法,因此,对于硬件方法我们不介绍。软件法其实很简单,就是在单片机获得P1。0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1。0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1。0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序,但以上是消除键抖动的原则。

键盘与单片机的连接

图3

图4

通过1/0口连接。将每个按键的一端接到单片机的I/O口,另一端接地,这是最简单的方法,如图3所示是实验板上按键的接法,四个按键分别接到P3.2 、P3.3、P3.4和P3.5。对于这种键各程序可以采用不断查询的方法,功能就是:检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的键处理。

2、采用中断方式:如图4所示。各个按键都接到一个与非上,当有任何一个按键按下时,都会使与门输出为低电平,从而引起单片机的中断,它的好处是不用在主程序中不断地循环查询,如果有键按下,单片机再去做相应的处理。

3、K1模拟一块硬币输入,K2模拟五块硬币输入,K3模拟可乐输出,K4模

12

拟啤酒输出,K5模拟退币。

3.3.2显示部分

在单片机系统中,通常用 LED 数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

八段 LED 显示器由 8 个发光二极管组成。基中 7 个长条形的发光管排列成“日” 字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED 显示器有两种不同的形式:一种是 8 个发光二极管的阳极都连在一起的,称之为共阳极 LED 显示器;另一种是 8 个发光二极管的阴极都连在一起的,称之为共阴极 LED 显示器。如下图所示。

共阴和共阳结构的 LED 显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8 个笔划段 h g f e d c b a 对应于一个字节(8 位)的 D7 D6 D5 D4 D3 D2 D1 D0, 于是用 8 位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴 LED 显示器,当公共阴极接地(为零电平),而阳极 h g f e d c b a 各段为 0111011 时,显示器显示\字符,即对于共阴极 LED 显示器,“P ” 字符的字形码是 73H。如果是共阳 LED 显示器,公共阳极接高电平,显示“P ” 字符的字形代码应为 10001100(8CH)。

在单片机应用系统中,显示器显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的 I/O 接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中 CPU 的开销小。

动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。

13

在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

3.3.3货物输出与退币部分

由89C51输出直接接继电器来模拟货物的输出和退币。当单片机没有输出的时候把它的端口置低,当程序执行货物输出和退币的时候,端口为高电平,这时继电器动作,并且动作后延时,以此来充分的模拟货物输出和退

14

第四章 软件设计

4.1整体设计思路

5)由按键模拟投币,且用两个按键分别模拟1元和5元,分别接P1.0和P1.2口。

6)货物的选择由两个按键组成,P1.1接啤酒选择键,P1.3接可乐选择键。 7)两个营业灯由发光二极管显示,P0.0接啤酒营业灯,P0.1接可乐营业灯。 8)取货和找钱由继电器来模拟,P0.2接取货的继电器,P0.3接找钱的继电器。

9)完成购物后按结束键来找钱,P1.6接结束键。 10)P2口接八位数码管。

11)段锁存和位锁存分别接P1.4和P1.5

4.2 系统流程图

15

开始 是否投入1元 N 是否投入5元 N 是否选择啤酒 N 是否选择可乐 N 是否按下结束 N Y 金额加1 Y 金额加5 Y 金额是否≥3 Y N 金额是否≥5 Y N 找钱 Y 金额减3 Y 金额减5 是否≥3元 N N 是否≥5元 Y 啤酒营业灯亮 Y 可乐营业灯亮 4.3软件程序

/*----------------------------------------------- 名称:自动售货机控制程序 编写:shi wei song 日期:2013.6.22 修改:无

------------------------------------------------*/

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit KEY_ADD1=P1^0; //定义按键输入端口 sbit KEY_DEC3=P1^1; //定义按键输入端口 sbit KEY_ADD5=P1^2; //定义按键输入端口 sbit KEY_DEC5=P1^3; //定义按键输入端口 sbit KEY_STOP=P1^6;

#define DataPort P2 //定义数据端口 程序中遇到DataPort 则用P2 替换 sbit LATCH1=P1^4;//定义锁存使能端口 段锁存 sbit LATCH2=P1^5;// 位锁存 sbit LED_YY_pijiu=P0^0; sbit LED_YY_kele=P0^1; sbit QUHUO=P0^2; sbit ZHAOQIAN=P0^3;

Unsigned char code

dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9

unsigned char code

dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码

unsigned char TempData[8]; //存储显示值的全局变量

void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t);

void Display(unsigned char FirstBit,unsigned char Num); void Init_Timer0(void); DELAY() {

unsigned int i;

for(i=0;i<60000;i++);

17

}

void main (void)

/*------------------------------------------------ 主函数

------------------------------------------------*/ {

unsigned char num=0; KEY_ADD1=1; //按键输入端口电平置高 KEY_DEC3=1; //按键输入端口电平置高 KEY_ADD5=1; //按键输入端口电平置高 KEY_DEC5=1; //按键输入端口电平置高

Init_Timer0();

while (1) //主循环 {

if(!KEY_ADD1) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_ADD1) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_ADD1);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{ if(0

} } }

if(!KEY_ADD5) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_ADD5) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_ADD5);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{ if(num<99) //加操作 num++;

18

} } }

if(!KEY_DEC3) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_DEC3) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_DEC3);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{

if(num>2) //减操作 { num=num-3; if(num>=0) { QUHUO=1; DELAY(); QUHUO=0; } } } } }

if(!KEY_DEC5) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_DEC5) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_DEC5);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{

if(num>4) //减操作 { num=num-5; if(num>=0) { QUHUO=1; DELAY();

QUHUO=0; }

19

} } } }

if(!KEY_STOP) //如果检测到低电平,说明按键按下 {

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY_STOP) //再次确认按键是否按下,没有按下则退出 {

while(!KEY_STOP);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁

{ if(0

if(0

LED_YY_pijiu=1;//灯全灭 LED_YY_kele=1;

if(num>2)//如果投币金额大于等于3元 {

LED_YY_pijiu=0;//啤酒灯亮 }

if(num>4)//如果投币金额大于等于5元 {

LED_YY_kele=0;//可乐灯亮 } }

20

TempData[0]=dofly_DuanMa[num/10];//分解显示信息,如要显示68,则68/10=6 68=8

TempData[1]=dofly_DuanMa[num]; // Display(0,8); //显示全部8位

//主循环中添加其他需要一直工作的程序 } }

/*------------------------------------------------

uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS

------------------------------------------------*/ void DelayUs2x(unsigned char t) {

while(--t); }

/*------------------------------------------------

mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {

while(t--) {

//大致延时1mS DelayUs2x(245); DelayUs2x(245); } }

/*------------------------------------------------ 显示函数,用于动态扫描数码管

输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示

如输入0表示从第一个显示。

Num表示需要显示的位数,如需要显示99两位数值则该值输入2

21

------------------------------------------------*/

void Display(unsigned char FirstBit,unsigned char Num) {

static unsigned char i=0;

DataPort=0; //清空数据,防止有交替重影 LATCH1=1; //段锁存 LATCH1=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位码 LATCH2=1; //位锁存 LATCH2=0;

DataPort=TempData[i]; //取显示数据,段码 LATCH1=1; //段锁存 LATCH1=0; i++;

if(i==Num) i=0; }

/*------------------------------------------------

定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) {

TMOD |= 0x01; //使用模式1,16位定时器,使用\符号可以在使用多个定时器时不受影响

//TH0=0x00; //给定初值 //TL0=0x00;

EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 }

/*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 {

TH0=(65536-2000)/256; //重新赋值 2ms TL0=(65536-2000)%6;

22

Display(0,8);

}

4.4软件仿真与调试:

4.4.1 Proteus简介:

Proteus嵌入式系统仿真与开发平台是英国Labcenter公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台。它是一种可视化的支持多种型号单片机(如51、PIC、AVR、Motorola hcll等),并且支持与当前流行的单片机开发环境(Keil、MPLAB、IAR)连接调试的软硬件仿真系统。Proteus除了具有和其他EDA工具一样的原理图、PCB自动或人工布线及电路仿真功能外,针对微控制系统与外设的混合电路的电路仿真、软件仿真、系统协同仿真也做到了一体化和互动效果,是目前电子设计爱好者广泛使用的电子线路设计与仿真软件Proteus和Multisim功能的联合和进一步发展。

Proteus软件已有近20年的历史,在全球拥有庞大的企业用户群,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原型时就可对系统进行设计、测试与验证。由于Proteus软件包括逼真的协同仿真功能,得到了包括剑桥大学在内的众多大学用户作为电子学或嵌入式系统的课程教学、实验和水平考试平台。目前,Proteus在国内单片机开发者及单片机爱好者之中已开始普及,有很多开发者已经开始用此开发环境进行仿真。

4.4.2 仿真结果:

如图仿真所示,用按键K1模拟一块的硬币,当按键按下时,数码管加一。当数值投入的数额达到3是,可乐的营业灯亮(D1),其仿真结果如下所示:

23

24

25

用K2模拟五块的硬币,当按键按下时,数额加五,当数额大于5时,啤酒的营业灯亮(D2),表示金额可以买到啤酒,在此时,D2,D1都亮,即表示俩种货物都可以买到。

26

用按键K3模拟买啤酒,按键按下时,数额减3 ,D3亮,同时相应的继电器开始动作。K4 按下时,数额减5,D4亮,同时相应的继电器开始动作。

27

用按键K4模拟退币,按键按下时,相应的继电器开始动作,延时3s之后,数码管清零,表示退币结束。

28

第五章 设计总结

5.1调试结果

经过以上所诉步骤,在89C51单片机开发板,经程序烧写,得出以下的调试结果,且起始俩个数码管显示全零。

(1)按下K1一个按键,数码管加一,当显示数额大于等于3时,小于5时,啤酒营业灯点亮;大于五时,可乐营业灯亮,且按键按一下,数目加一,调试结果符合设计要求。

(2)按下K2一个按键,数码管加五,当显示数额大于等于5时,可乐营业灯点亮。且按键按一下,数目加五,且啤酒和可乐营业灯同时亮,调试结果符合设计要求。 (3)按下K3一个按键,数码管减三,当显示数额小于5时,可乐营业灯点熄灭;数额小于3时,啤酒营业灯点熄灭。且按键按一下,调试结果符合设计要求。 (4)按下K4一个按键,数码管数码管减五,当显示数额小于5时,且啤酒和可乐营业灯同时熄灭,且按键按一下,数目减五,调试结果符合设计要求。

(4)按下K5一个按键,数码管清零, 延时3S之后继电器开始动作,表示退币完成,调试结果符合设计要求。

经反复多次调试,无论是单个按键还是不同的的按键,其结果符合设计要求,并与仿真结果吻合,且程序运行稳定,单片机显示良好。

5.2调试问题

在本次设计中我们碰到了许多问题其中大部分通过我们一起的努力克服了,但是有一部分我们努力之后没有解决,后来通过老师的讲解我们最终攻克了它。

1)继电器的接法:刚开始的时候我们把继电器接在P2口上,后来发现程序执行时继电器无法动作。一开始还以为是电压不够,结果用万用表测得电压时够的。后来经过老师的讲解我们知道,是因为上拉电阻的缘故。P2口没有上拉电阻,而P0口有。后来我们把继电器接在P0口上,继电器就可以正常工作了。

(2)显示问题:由于本次课设选用数码管显示,在接线过程中存在片锁存和位锁存,合适正确的接线是结果运行的保证。

29

总结

为期两周的信号检测与处理课程设计,到此画上短暂而完美的句号,深刻体会到“授之一鱼,不如授之一渔”哲理意味。所收获不仅仅是知识的累积,更重要的是我们以后道路的缩影,让我们每一人获益匪浅,终身受益。

短短的两周时间,让我学会了许多的知识,同时也感受到单片机在生活中的应用广泛,提升了我们对这门课,以及自动化这个专业更加深刻的认识,巩固平时在课堂所学的知识,加深了理解。两周的时间,短暂而又充实,我们每一个人,每天天都在忙碌着查阅资料,设计电路,程序调试,写说明书;我们每一个小组成员,一起构思、设计、安装、检测,每一个步我们都融入了汗水与思考,每天都有不同的感受与收获。大家一起研究方案,不仅仅提高了我们的团队意识,也提高了个人协作和动手能力。 “实践是检验真理的标准”,现在我终于明白了。仅仅依靠书本的知识是远远不能做成一件事情的,没有实践的经验,就无法将一件事情做的完整,需要耐力,需要毅力,更加需要团队精神,需要每一人孜孜不倦的努力。知识只是给予帮助实践的一个脊柱;只是提供了一个大概的轮廓;只是指明了一个实践的方向。我们在此次课设中,通过对原理图的设计计算,才选择出器件的参数,然后再搜寻器件信息,最后选择好器件。

从设计到最后的调试成功,每一个步骤的成功都需要认真的思考,只要有一点衔接不上,那就会导致各种错误。在所有的步骤中我觉得调试是最困难的,前面的正确的设计、正确的仿真、正确器件的连接、其实都是为实现电路功能的准备,真正重要的是是否能将前面所有的准备变成现实,事实告诉我们,这真的很难,如同现实与理想之间的差距。即便如此,但我们不曾言过放弃,每一次错误的出现,我们都会认真,细心,谨慎检查错误,经过一系列严密的排查之后,一个个错误接二连三排除掉,最终调试成功。

有些事情不经历,怎么会知道其中的艰辛与快乐。除了学习我还有些许的想法想借这个机会说一下,信号检测与处理综合这种实践可以更早一点走入我们的学习安排中,也希望学校能多安排像这类型的课程,比如大一大二期间也可以开设类似的综合训练,这有利于我们更早更好的的掌握所学的知识点。

最后我感谢刘仲明老师每天对我们细心、严格、深刻的教诲,正因为老

师的谆谆教导,我们的过程还算顺利。希望我们以此为契机,以实践为平台,在知识的天空里飞的更高,更远!

30

参考文献

1.李广弟等.《单片机基础》修订本.北京航空航天大学出版社,2001 2.李朝青编.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998

3.公茂法等.《单片机人机接口实例》.北京航空航天大学出版社,1998 4.冯克.《MCS-51单片机实用子程序及其应用实例》.黑龙江科学技术出版社,1990

5.王福瑞等.《单片微机测控系统设计大全》.北京航空航天大学出版社,1999 6.徐仁贵等.《单片微型计算机应用技术》.机械工业出版社,2001 7.杨恢先等.《单片机原理及应用》国防科技大学出版社,2003 8.李鸿等.《单片机原理及应用》.湖南大学出版社,2002 9.徐惠民等.《单片微型计算机原理、接口与应用》.北京邮电大学出版社,2001 10.杨欣荣等.《智能仪器原理、设计与发展》.中南大学出版社,2003

31

参考文献

1.李广弟等.《单片机基础》修订本.北京航空航天大学出版社,2001 2.李朝青编.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998

3.公茂法等.《单片机人机接口实例》.北京航空航天大学出版社,1998 4.冯克.《MCS-51单片机实用子程序及其应用实例》.黑龙江科学技术出版社,1990

5.王福瑞等.《单片微机测控系统设计大全》.北京航空航天大学出版社,1999 6.徐仁贵等.《单片微型计算机应用技术》.机械工业出版社,2001 7.杨恢先等.《单片机原理及应用》国防科技大学出版社,2003 8.李鸿等.《单片机原理及应用》.湖南大学出版社,2002 9.徐惠民等.《单片微型计算机原理、接口与应用》.北京邮电大学出版社,2001 10.杨欣荣等.《智能仪器原理、设计与发展》.中南大学出版社,2003

31

本文来源:https://www.bwwdw.com/article/3iqo.html

Top