您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 单片机课程设计-老虎机
广西科技大学单片机原理与嵌入式系统课程设计说明书课程名称:51单片机C语言教程课题名称:老虎机姓名:***学号:201100402053院系:计算机学院通信工程专业班级:通信112班指导教师:***完成日期:2013年12月30日一、任务设计:1、设计任务:设计并制作一个由数码管和流水灯组成的老虎机。2、设计要求:通过按键控制流水灯的移动,并计算相应的数值并在数码管上显示;可以通过按键对老虎机的分数进行设置,上分,下注,开始。二、方案论证:1.显示部分:显示部分采用2位的7段数码管,来回交替的进行显示,通过数码管的余晖效应,达到数码管的动态显示。2.流水灯部分流水灯应该给人一种节奏感,就是应该先慢后快之后再慢下来再到随机停止。3.按键部分按键部分用的是6脚自锁开关作为总开关,之后用4脚开关作为复位以及其他案件4.电源部分为方便起见,使用的是usb供电模式。三、系统硬件设计(单元电路设计及分析):1.STC89C52RC单片机最小系统:最小系统包括晶体振荡电路、复位开关和电源部分。图2为STC89C52RC单片机的最小系统。2.流水灯模块:3.数码管显示模块:4.整体电路:四、布线图:五、程序:数码管显示模块:在数码管显示模块中并没有像书上说的那样要锁存器来实现数码管动态显示,而是利用单片机P2^6P2^7口快速的转换输出高低电频,让数码管的余晖来实现数码管的动态显示,数码管显示代码如下unsignedcharled[]={0x09,0xaf,0x98,0x8c,0x2e,0x4c,0x48,0x8f,0x08,0x0c};voiddisplay(ucharsum2)//数码管显示函数部分{ucharshi,ge;shi=sum2/10;ge=sum2%10;we1=0;//原来段选数据通过位选锁存器造成混乱//送位选数据we2=1;P0=led[shi];//送十位段选数据delay(10);//送位选数据前关闭所有显示,防止打开位选锁存时we1=1;//原来段选数据通过位选锁存器造成混乱//送位选数据we2=0;P0=led[ge];//送个位段选数据delay(10);}按键扫描模块:按键扫描模块使用的是一个死循环,之后用if语句来判断按键是否按下,当按键按下时,按键接通接地端,使管脚处于低电平状态,之后if语句成立,执行完相关操作之后,再用if语句判断按键释放来完成操作,避免按键按下时间内产生多次操作。/按键2结按键扫描代码:while(1){if(k2==0)//按键2实现上分{delay(10);if(k2==0){sum=sum+10;if(sum==99)//到99归0;sum=0;while(!k2);//等待按键释放}}}/流水灯快慢模块在流水灯快慢模块中,先前有定义的延时函数在这里被用到,先给延时函数附500ms初值,之后让初值每运行一次自减50ms,当减到100之后再自加50到500,这样来实现由慢到快再由快到慢的变化。代码:while(1){P1=aa1;delay(num);aa1=_crol_(aa1,1);num=num-50;if(num==100)while(a40){a++;P1=aa1;delay(num);aa1=_crol_(aa1,1);//左循环函数}if(num==100)while(num500){P1=aa1;num=num+50;aa1=_crol_(aa1,1);delay(num);}if(num==500){while(cb){c++;P1=aa1;num=num+50;aa1=_crol_(aa1,1);delay(num);}break;}}随机函数模块:这个模块利用到了单片机的定时器功能,利用每次取TH0值都不一样的原理,实现随机函数功能。代码:while(isum1)//sum1为随机函数形参{i++;P1=aa1;delay(500);aa1=_crol_(aa1,1);}//随机部分结束计算模块:计算模块利用if语句,判断先前在随机函数模块时随机停留的灯的值来乘以相应的倍数返回到原来的值。代码:if(aa1==0x01||aa1==0x04||aa1==0x40)sum=sum+pg*2;if(aa1==0x80||aa1==0x10)sum=sum+xg*3;if(aa1==0x08)sum=sum+xx*5;六、老虎机使用说明:1)Star按键:启动流水灯。2)Up按键:上分,按一下加10分。3)苹果:下注苹果,若中,得2倍所压返还4)铃铛:下注铃铛,若中,得3倍所压返还5)大7:下注大7,若中,得5倍所压返还七、设计心得体会:在本次课程设计中,我学到了好多知识,特别是在制作电路板方面。比如布的线要在合理的大小范围内较量大点儿,这样能减少打印时出现断线的现象;在整个系统的器件布局上,要尽量整齐有序,这样使得电路看起来条理清晰,易读懂与观察电路图;焊盘口也要尽量大点儿,穿孔的直径要小点儿,这样钻出来的孔周围才有足够的铜去连接电路。避免不必要的微小的断线或接触不良;在焊接时要认真仔细,小心焊接,极力避免虚焊现象。总的来说,这是一次让我获益匪浅的课程设计,我的动手能力得到了很大的提高,对一些芯片的功能也有一定的了解,希望在以后的设计中,我会一次次地进步。
本文标题:单片机课程设计-老虎机
链接地址:https://www.777doc.com/doc-7351069 .html