攀枝花学院本科毕业设计(论文) 5 系统软件仿真
⑤ 当完成以上步骤后则完成一次自动购物过程,机器自动复位回到初始化界面如图5.5所示:
图5.5 自动复位返回初始化界面
27
攀枝花学院本科毕业设计(论文) 6 结论
6 结论
本次自动售货机的设计主要通过单片机80c51作为中央处理原件在protues7.5中连接输入模块4*4矩阵键盘、输出模块LCD1602液晶显示和LED显示来进行系统调试仿真。通过keil3.0来实现程序的编译和调试,最终得到能正确完善地实现设计要求功能的结果。本次设计实现了所有自动售货功能,包括系统的初始化待机、等待顾客选择货物并确认、投币购买货物、自动出货并找零功能、最后自动跳转到初始化待机界面。通过4*4矩阵键盘来模拟实现顾客的选择货物系统以及投币系统、通过LED灯来显示所选择的货物类别、再通过LCD1602液晶来显示当前的操作状态以及货物的数量和货币的总值,最后通过LCD显示来模拟系统的出货系统和找零系统。在不断地仿真和调试下都完整的实现了以上功能,达到了基于单片机的自动售货机设计的要求。
28
攀枝花学院本科毕业设计(论文) 参考文献
参考文献
[1] 白丽.自动售货机:第三次零售业革命[J].电子商务.2005.(3). [2] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版,1996. [3] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社,2004.5. [4] 潘新民.微型计算机控制技术[M].北京:人民邮电出版社,1999.9.
[5] 余锡存 曹国华. 单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7. [6] 雷丽文.微机原理与接口技术[M].北京:电子工业出版社,1997.2.
[7] 叶银兰.自动售货机的设计与实现.微计算机信息[J],2008年23期,53-55 [8] 朱清慧,张凤蕊,翟天嵩.Proteus教程[M].清华大学出版社,2008.9.
[9] Guiyun Tian.Foundtion and Application of Microcontroller[M].高等教育出版社,2004.11.
[10] 丁元杰.单片微机原理及应用[M].北京:机械工业出版社,2005.7. [11] 张元良.单片机原理及应用教程[M].北京:清华大学出版,2011.2. [12] 朱军.自动售货机的结构[J].信息与电脑.1995
[13] 裴进灵.一种新型自动售货机的研制[J].科技情报开发与经济.2002.
[14] 张文祥,李志军,张子红,张小清.单片机系统设计与开发教程[M].北京:电子工业出版社,2011.5.
[15] 宋萧,李佩佩,韩莹莹.自动售货机控制设计[J].科技信息,机械与电子,2009. [16] 徐仁贵.单片微型计算机应用技术[M].北京:机械工业出版社,2001. [17] 冯克.MCS-51单片机实用子程序及其应用实例.黑龙江科学技术出版社,1990 [18] 马刚.用Proteus和Keil整合构建单片机虚拟仿真平台.[J].现代电子技术,2006.24:129-131.
[19] 朱军.基于Proteus的单片机仿真实验.[J].计算机光盘软件与应用.
29
攀枝花学院本科毕业设计(论文) 附录
附录A:C源程序
C源程序列表: #include
/*******************define*************************/ #define WAIT_SALE 0 //定义1602显示状态 #define NO_WATER 1 #define INPUT_MONEY 2 #define SALING #define CHANGE #define CANCLE
3 4 5 0
#define NO_DATA
#define water_change(x, y) ((x) & (~(0x01 << y))) //宏 控制水种类的切换 #define uint unsigned int #define uchar unsigned char
unsigned char water_total[] = {10, 10, 10, 10, 10, 10, 10, 10}; unsigned char water_price[] = {1, 2, 3, 4, 5, 6, 7, 8};
uchar code wait_sale[]=\定义所显示的内容 uchar code no_water[] = %uchar code price[] = %uchar code number[] = %uchar code sum[] = %uchar code input[] = %uchar code change[] = %uchar code put_water[] = %uchar code cancle[] = \
unsigned char e=0x00;
sbit P2_0=P2^0; //定义接端口 sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3;
30
攀枝花学院本科毕业设计(论文) 附录
sbit lcd_en=P3^4; sbit rs=P3^2; sbit rw = P3^3;
/****************************************************/
/***********************function**********************************/ /************lcd 1602*************************/ void lcd_1602_delay(uint z) //延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
void lcd_1602_write_com(uchar com) //写命令 { rs=0; rw=0; P2=com;
lcd_1602_delay(5); lcd_en=1;
lcd_1602_delay(5); lcd_en=0; }
void lcd_1602_write_data(uchar date) //写数据 { rs=1; rw=0; P2=date;
lcd_1602_delay(5); lcd_en=1;
lcd_1602_delay(5); lcd_en=0;
31