碰数电子玩具的设计毕业设计.doc_第1页
碰数电子玩具的设计毕业设计.doc_第2页
碰数电子玩具的设计毕业设计.doc_第3页
碰数电子玩具的设计毕业设计.doc_第4页
碰数电子玩具的设计毕业设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

乐山师范学院毕业论文(设计)本科生毕业设计报告设计题目: 碰数电子玩具的设计 碰数电子玩具的设计 物理与电子工程学院 电子信息工程 摘要该碰数电子玩具设计以数字电子技术为基础、at89c51单片机为核心,结合数码管、语音芯片等制作形成。两位数码管进行一分钟的计时显示,计时结束后播放结束的语音;三个一位数码管以不同速率运转,并用两个按键控制数码管的运行与停止,当显示的三个数据一样时产生成功的语音,反之播放失败的语音。一分钟计时时间内,若没有成功可重复进行游戏,一旦成功或时间停止游戏结束。正文着重将设计的原理与过程进行了详细的解释与说明。关键词碰数电子玩具; 单片机at89c51;语音芯片1 设计任务与要求11任务提出设计一个碰数电子玩具。12设计要求1)、玩具面板上有三位LED数码显示管和两个按键:“开始”、“停止”。2)、按下“开始”键,系统开始计时,同时三位数码管开始按不同速度循环显示“09”十个数字,并停留3秒,直到按下“停止”键或计时结束。游戏时间(计时时间)设为1分钟。3)、计时开始1分钟内按下“停止”键,停止计时,三个数码管显示的数字停留在最后一次显示的数字上,若三位数码管显示的数字一样,比如:222,444,666等,则游戏胜利,播放欢快的音乐;若三位数字不完全一样,则游戏失败,播放悲伤的音乐。4)、重新按下“开始”键后,重新计时,三位数码管重新从0开始显示。5)、若1分钟到了,还没有按下“停止”键,停止计时,同时系统发出“game over”的语音。2设计方案21基本方案按照实验设计1 李坚、朱嘉贤.计算机应用基础(第一版) M,科学出版社, 2007.9. 的要求,采用at89c51单片机2 邓兴成.单片机原理与实践指导(第一版) M,机械工业出版社, 2010.2. 作为主控芯片,结合两种七段数码管、语音芯片、按键、喇叭、74hc5733 阎石.数字电子技术基础(第五版) M,高等教育出版社, 2009.12. 等进行实验设计。 通过对单片机的编程,实现一分钟的定时效果并显示出来,三个数码管以不同的速率运转,循环显示0-9十个数字,通过对相应端口的按键控制使其能够重复利用,控制单片机端口条件控制语音芯片。 具体的来说,一个两位的数码管显示出一分钟的计时情况,计时结束后单片机激活语音芯片,使其发出游戏时间结束的语音;三个一位的七段数码管以不同的速率运行,循环显示出0-9,并用一个按键控制该三个数码管的运行与停止,另一个数码管进行清零操作。当按键按下是三个数码管停止时,若显示的三个数据相同则播放游戏成功的语音;反之播放游戏失败的语音。一分钟计时时间内,可重复进行碰数游戏,一旦游戏成功或游戏时间结束则该游戏结束。这样就基本能够实现该碰数电子玩具的相应功能。系统原理框图4 陆应华.电子系统设计教程(第二版) M,国防工业出版社,2011.3. 如下:数码管显示单片机at89c51发出语音按键2进行清零按键1控制运行/停止图1 原理框图22适度发挥1)、将一个开始按键和一个停止按键改为一个按键控制游戏的开始与停止,另一个按键进行清零操作;2)、将一分钟的定时采用两位数码管实时显示出来,效果清晰可见;3)、不用蜂鸣器而改用语音芯片,效果更好。3 设计原理分析3.1主要硬件介绍3.1.1 at89c51单片机本次设计我们采用的是单片机AT89C51作为主芯片。Atmel公司的AT89C51是一种低功耗、高性能的片内含有4kB快闪可编程/擦除只读存储器(FPEROM)的8位CMOS微控制器,使用高密度、非易失存储器技术制造,并且与80C51引脚和指令系统完全兼容。AT89C51具有40管脚,有P0,P1,P2,P3四个主要I/O口,每个口都分为八位,其中以P3口功能最强大,是单片机的主要功能口,AT89C51的引脚图如图1所示:图2AT89C51的引脚图3.1.2 语音芯片 图3 语音芯片引脚图本芯片工作电压宽1.8V-5.5V 的工作范围静态电流小于等于1UA1 脚 是去耦(可以接一个104 对地)可以不接4 脚电源正极 5 脚电源负极6 脚可以定义输入(来控制语音)也可以定于输出7 脚只能作为输入8 脚可作为输入也可以作为输出6 脚7 脚和8 脚都可以定义一下功能1:触发脚和正电源接触一次播放一编,在播放的时候重新触发5 童诗白、华成英.模拟电子技术基础(第五版) M),高等教育出版社, 2009.12. 不会停止或打断(或者几遍默认是一遍有要求请说明)若接在高电平上也不会一直播放2:触发脚和正电源接触一次播放一编,在播放的时候重新触发会打断然后重新播放,若接在高电平上也不会一直播放3:触发一下播放下一种声音(适合有几种声音文件的 )4:触发脚接在高电平上会一直循环的播放 离开高电平后播放完本次后停止5:触发脚接在高电平上会一直循环的播放 离开高电平后立即停止播放6:触发脚和电源正极接触一次就会播放播放完会自己停下来,但是播放的时候再接触一次就会停止7:触发脚和电源正极接触一下会一直循环播放 再接触一次会停下来(需要外接一个电子元件)8:当电源接通后会播放一段音乐,播放完后触发其他的脚位也播放其他音乐8:与单片机连接串口识别来控制语音的种类(请向本公司申请另一份关于此功能的说明书)3.1.3 74hc573锁存器74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。 图4 74hc573引脚图3.2系统程序介绍3.2.1初始化计数器void init_sys(void) TMOD=0x01; /定时器T0工作在方式16 陆应华.手把手教你学单片机C程序设计(第一版) M,北京航空航天大学出版社, 2007.10. TH0=(65536-10000)/256; /预先设定定时器初值为10msTL0=(65536-10000)%256; EA=1; /开启总中断ET0=1; /允许T0中断 TR0=1; /定时器0启动计数3.2.2 按键扫描void keyscan(void)static byte ss=0;if(key1=0)delay(3);if(key1=0&(fail_flg|win_flg)num_0=0;num_1=0;num_2=0; music1=0;music2=0;music3=0;ss=0;fail_flg=0;game_time=60;start_flg=0;win_flg=0;time_flg=0;while(!key1);if(key2=0)delay(3);if(key2=0&!fail_flg&!win_flg)ss+;time_flg=1;if(ss%2=0) start_flg=0;/游戏暂停if(ss!=0&num_1=num_2&num_0=num_1) win_flg=1;/有按键按下+数字1等于数字2等于数字3if(win_flg)music1=1;music2=0; music3=0;else if(!win_flg)music1=0;music2=1; music3=0;else start_flg=1;/游戏开始music1=0;music2=0; music3=0;while(!key2);该程序实现的功能:按键1:当游戏成功或者游戏时间结束时,按下按键1,进行清零并初始化相应的参数;按键2:首次按下按键2,游戏开始运行,再次按下游戏停止,这样可在一分钟定时时间内循环利用,当显示的三个数据都相同时,表示游戏成功,music1语音响起;反之表示游戏失败的music2语音响起。3.2.3数码管显示void led_show(void)display(num_0,2);/显示游戏数字1delay(50);display(num_1,3);/显示游戏数字2delay(50);display(num_2,4);/显示游戏数字3delay(50);display(game_time/10,0); /显示游戏时间delay(50);display(game_time%10,1);/显示游戏时间delay(50);void display(byte num ,byte wei)P3=addrwei; P0=lednum;P3口设置的为位选,P0口设置的为段选。0和1位显示的是游戏时间,2、3、4位显示的为三个以不同速率循环显示0-9的数据。3.2.4中断函数void timer0() interrupt 1 static byte tt_0=0;TH0=(65536-10000)/256; /10msTL0=(65536-10000)%256; if(time_flg&!win_flg)/游戏时间+!成功systemtime+;if(start_flg&!fail_flg)tt_0+;/游戏开始+!失败if(tt_05) tt_0=0;num_0+;if(num_09)num_0=0;num_1+;if(num_19)num_1=0;num_2+;if(num_29)num_2=0;if(systemtime100) /100*10mssystemtime=0;game_time-;if(game_time1)game_time=0;游戏开始后,三个数码管以不同速率循环显示0-9,并通过定时器进行一分钟定时。通过初始化的10ms乘以systemtime100再乘以设定的game_time60从而实现一分钟定时。3.2.5主函数void main(void)7 梁肇新.编程高手箴言(第一版) M,电子工业出版社, 2004.1. init_sys();music1=0;music2=0;music3=0;while(1)8 谭浩强.C程序设计(第四版) M,清华大学出版社,2012.7. 9 牛百齐.基于单片机的电容测量仪设计J.仪器仪表用户,2005,12(4):29-30.10 刘军, 李智. 基于单片机的高精度电容电感测量仪J.国外电子测量技术,2007,26(6): 48-51.11 闫玉德, 等.MCS:51 单片机原理与应用:C语言版M.机械工业出版社,2004.12 A l Dutche r. 使用少量元件的廉价易用电感测试仪 J.电子设计技术, 2007(7): 108- 111.13 陈江华, 杨霓清, 梁村梅. 一种实用的电容、电感和电阻自动测量仪 J. 计量与测试技术,2002,29(1):21-26.14 李华等MCS-51单片机实用接口技术M北京航空航天大学出版社15 黄川.智能电阻、电容、电感测试仪设计.科技资讯.2009.08.16 周民德.微机原理与接口技术.北京:人民邮电出版社,2002.17 阮德生.自动测试技术与计算机仪器系统设计M西安:西安电子科技大学出版社,1997Number of electronic toys designed touchPhysics and Electronic Engineering HU Yangyang 10310283Abstract The number of electronic toys designed for touch digital electronic technology as the foundation, at89c51 microcontroller as the core, combined with digital control, voice chips produced form. Two digital tube display one minute timer, chronograph speech after playback ends; three a digital tube running at different rates, and use two buttons control the digital control and stop running when the same data is displayed three produce successful voice, whereas failure playback voice. One minute time period, if no success can be repeated for the game, if successful, or time to stop the game is over. Text focuses on the design principles and explain the process in detail and description.Key words touch number MCU 附一:源程序#includeat89x51.h#include #define byte unsigned char #define word unsigned intsbit dula=P27;sbit wela=P26;sbit key1=P20;sbit key2=P21;sbit music1=P23;sbit music2=P24;sbit music3=P25;/*/byte code led10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; byte code addr6=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; word systemtime=0; /系统时间byte num_0=0,num_1=0,num_2=0; /游戏数字1,2,3char game_time=60; /游戏时间byte start_flg=0; /开始标志0-暂停;1-开始byte stop_flg=0; /停止标志byte time_flg=0; /时间标志byte win_flg=0; /成功标志byte fail_flg=0; /失败标志/*/ void delay(word t); /延时 void init_sys(void); /定时器初始化 void display(byte num ,byte wei); /数码管位显示 void keyscan(void); /按键扫描 void led_show(void); /数码管显示/*延时*/void delay(word t) while(t-);/*初始化计数器*/void init_sys(void) TMOD=0x01; TH0=(65536-10000)/256; /10msTL0=(65536-10000)%256; /10ms EA=1;ET0=1; TR0=1;/*主函数*/void main(void)init_sys();music1=0;music2=0;music3=0;while(1) keyscan(); led_show();if(!game_time)/游戏时间为0fail_flg=1;time_flg=0;music3=1; music1=0; music2=0; /*/void timer0() interrupt 1 static byte tt_0=0;TH0=(65536-10000)/256; /10msTL0=(65536-10000)%256; /10msif(time_flg&!win_flg)/游戏时间+!成功systemtime+;if(start_flg&!fail_flg)tt_0+;/游戏开始+!失败if(tt_05) tt_0=0;num_0+;if(num_09)num_0=0;num_1+;if(num_19)num_1=0;num_2+;if(num_29)num_2=0;if(systemtime100) /100*10mssystemtime=0;game_time-;if(game_time1)game_time=0;/*按键扫描*/ void keyscan(void)static byte ss=0;if(key1=0)delay(3);if(key1=0&(fail_flg|win_flg)/按键+(失败或成功)num_0=0;num_1=0;num_2=0; ss=0;fail_flg=0;game_time=60;start_flg=0;win_flg=0;time_flg=0;while(!key1);if(key2=0)delay(3);if(key2=0&!fail_flg&!win_flg)/按键+!失败+!成功ss+;time_flg=1;/开始计时if(ss%2=0) start_flg=0;/游戏暂停if(ss!=0&num_1=num_2&num_0=num_1) win_flg=1;/有按键按下+数字1等于数字2if(win_flg)music1=1;music2=0; music3=0;else if(!win_flg)music1=0;music2=1; music3=0;else start_flg=1;/游戏开始music1=0;music2=0; music3=0;while(!key2);/*数码管显示*/void led_show(void)display(num_0,2);/显示游戏数字1delay(500);display(num_1,3);/显示游戏数字2delay(500);display(num_2,4);/显示游戏数字3delay(500);display(game_time/10,0); /显示游戏时间delay(500);display(game_time%10,1);/显示游戏时间delay(500);/*数码位管显示*/void display(byte num ,byte wei)dula=0;P0=lednum;dula=1;dula=0; wela=0;P0=addrwei;wela=1;wela=0;delay(5); keyscan(); led_show();if(!game_time)/游戏时间为0fail_flg=1;time_flg=0;music3=1; music1=0; music2=0; 首先进行初始化,将music赋予低电平,然后再while循环里调用按键扫描函数、数码管显示函数。游戏时间结束,进行中断操作,并通过给music3赋予高电平,使其发出游戏结束的语音。4 软硬件设计和调试4.1软件仿真4.1.1总的设计流程图开始初始化计时开始按键一按下转动/停止失败三个数据相同?时间到成功按键2按下图5 总的设计流程图 接上电源之后进行初始化,当按键1按下,数码管以不同速率循环显示0-9.再次按下按键1数码管显示此时的数据,比较三个数据。如果都相同,则游戏成功,否则游戏失败。在规定的游戏时间内,如果失败可重复进行游戏,指导游戏成功或游戏时间结束。当游戏成功或游戏结束,按下按键2进行清零或者说初始化,以便重复进行游戏。4.1.2总的仿真电路图 图6 仿真电路图 该仿真电路图采用at89c51单片机、6位7段数码管、排阻、两个按键、三个发光二极管组合而成。从左向右数,6位数码管前两位用于一分钟计时的实时显示,最后三位用于不同速率循环显示0-9,而中间一位作为前两者的分界线,便于区分且观察效果较好。三个发光二极管代表三种不同的语音,绿色的代表成功的语音,红色的代表失败的语音,黄色的代表游戏结束的语音。相应发光二极管点亮,就表示相应语音想起。4.1.3 软件仿真运行及调试1)软件运行系统上电初始化,60秒倒计时准备,三个不同速率循环显示0-9进行“000”的初始化。图7 初始化电路图2)按下开始按键,游戏开始进行60秒倒计时,同时最后三位数码管以不同速率循环显示0-9,再次按下该按键显示如下,红灯亮(发出失败的语音),游戏失败。倒计时未结束是,可重复进行以上操作直至游戏成功或时间结束。图8 游戏失败电路图3)按下停止键,数据显示如下,绿灯亮(发出成功的语音),游戏成功。图9 游戏成功电路图4)游戏时间结束,计时显示为“00”,而最后三位停留在实时显示的数据。图10 时间结束电路图5)当游戏成功或者游戏时间结束,按下另一个按键进行清零操作。再按以上操作可循环重复运行。图11 清零后电路图4.2硬件运行与调试4.2.1硬件焊接1)实际焊接电路图图12 实际焊接电路图为了符合设计要求并结合开发板将实际焊接电路图完善如上图所示。由于单片机端口不够用,采用两个74hc573进行端口扩展端口。为了实现效果好,采用三个单独分离的一位数码管。4.2.2硬件结果及调试1)游戏初始化,发出初始化成功提示音。图13 初始化实物图2)游戏运行,按下停止键,显示如下,发出失败的语音。图14 游戏失败实物图3)游戏运行,按下停止键,显示如下,发出游戏成功的语音。图15 游戏成功实物图4)当游戏时间结束后,显示如下,发出游戏结束的语音。图16 游戏结束实物图5)当游戏时间结束或者游戏成功,按下清零按键,显示如下。图17 清零后实物图5总结思考1)、在焊接的过程中一定要认真仔细,这样可以减少不必要的错误产生;在焊接导线时,先给导线镀锡是极为方便焊接的,包线时要选择包线钳合适的空洞;2)、在实际的操作过程中,要能够把所学的或者查阅的知识灵活运用起来,这也是一种能力,一种值得我去进一步学习和掌握的能力。3)、对于我而言,该碰数电子玩具的设计,看似比较简单,实则要通过很多很多的知识点以及硬件常识再加上不断地修改仿真调试才能做出来。这些工作包括定时器的运用,数码管的扫描显示,按键的扫描与运用,相关的芯片的掌握与发挥等等。 4)、通过这次的设计,我充分的认识到学无止境,要想将设计做好做精必须学习并掌握有足够的知识,否则就会非常的吃力。不管做什么都要认真去做,要坚持下去,只有这样才有可能成功。 5)、总而言之,这次的设计遇到了很多的问题,但通过查阅资料以及实时的仿真调试加上老师和同学们的指导,虽然很吃力但还是做出来了。付出才会有收获。毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论