基于STC89C51的开灯游戏设计数电课程设计.docx
- 文档编号:9927262
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:23
- 大小:127.72KB
基于STC89C51的开灯游戏设计数电课程设计.docx
《基于STC89C51的开灯游戏设计数电课程设计.docx》由会员分享,可在线阅读,更多相关《基于STC89C51的开灯游戏设计数电课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于STC89C51的开灯游戏设计数电课程设计
课程设计说明书
课程名称:
数字电子技术
题目:
基于AT89C51的“开灯”游戏设计
日期:
2013年6月21日
课程设计任务书
一、设计题目:
基于AT89C51的“开灯”游戏设计
二、主要内容及要求
要求实现逻辑功能:
游戏目的:
通过按键将灯阵全部点亮。
游戏规则:
(1)开始时灯阵为全灭;
(2)按下按键时,其对应的灯与其上下左右灯状态全部反转;
(3)当游戏没有完成的时候指示灯一(红灯)持续亮,只有全部的LED被点亮后指示灯二(绿灯)才会点亮表明游戏结束。
利用仅仅单片机18个I/O来控制矩阵键盘和矩阵LED共50个独立的元件,将实现游戏特定的效果,每次按键的时候都将其本身及其上下左右的灯的状态全部翻转。
三、进度安排
四、总评成绩
基于AT89C51的“开灯”游戏设计
一、设计任务与要求
游戏目的:
通过按键将灯阵全部点亮。
游戏规则:
(1)开始时灯阵为全灭;
(2)按下按键时,其对应的灯与其上下左右灯状态全部反转;
(3)当游戏没有完成的时候指示灯一(红灯)持续亮,只有全部的LED被点亮后指示灯二(绿灯)才会点亮表明游戏结束。
画出电路图,编写出游戏程序并实现电路的模拟实验。
利用仅仅单片机18个I/O来控制矩阵键盘和矩阵LED共50个独立的元件,将实现游戏特定的效果,每次按键的时候都将其本身及其上下左右的灯的状态全部翻转。
二、方案设计与论证
1、所用器件及实现平台、
(1)AT89C51单片机一块
(2)LED灯25个
(3)按键开关25个
(4)74HC138译码器一块
(5)74HC573锁存器一块
(6)单片机最小系统部分元件
(7)电阻、导线若干。
2、游戏实现的基本原理
电路主要分为:
单片机最小系统部分、键盘部分、LED显示等三部分组成。
(1)单片机最小系统部分:
电路如图一所示
(2)键盘扫描部分:
voidkey(uchar*hang,uchar*lie)
{
P2=0x00;
P3=0xFF;
while
(1)
{
if(P3!
=0xFF)//检测到了按键
{
P3=P3;//将P3口状态锁存
P2=0xFF;//检测P2口状态
*hang=change(P2);//将P2口状态转换为行坐标并输出
*lie=change(P3);//将P3口状态转换为列坐标并输出
while(P2!
=0xFF)
{
}
//P2=0xFF;
//P3=0xFF;
return;
}
}
}
ucharchange(uchardat)
{
uchari;
dat=~dat;
for(i=0;i<5;i++)
{
if(dat==0x01<
{
returni;
}
}
return9;
}
电路如图2所示
(3)LED灯显示部分:
为使灯的状态反转
voidDispose(ucharx,uchary)
{
Light[x]^=0x01< if(x>0)//翻转指定点的上一点 { Light[x-1]^=0x01< } if(x<4)//翻转指定点的下一点 { Light[x+1]^=0x01< } if(y>0)//翻转指定点的左一点 { Light[x]^=0x01<<(y-1); } if(y<4)//翻转指定点的右一点 { Light[x]^=0x01<<(y+1); }} 电路所图三所示 3、游戏电路设计、参数计算和器件选择 电路的仿真采用是Protues,是英国Labcenterelectronics公司出版的EAD工具软件。 它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。 其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。 (1)采用AT89C51作为系统的主控制芯片; (2)采用74HC138译码器作为LED显示的行的动态扫描芯片,仅仅使用的138输出口的底五位作为行选部分; (3)采用74HC573锁存器作为LED显示电路的驱动芯片;在实际电路在还应该添加300Ω左右的电阻作为限流电阻使用。 而在模拟时,为方便起见不做处理; (4)键盘扫描部分采用静态的扫描,经过翻译程序得到行与列的数据X,Y。 (5)显示的核心结构在于P0口的第三位作为LED矩阵的行扫描,选中行的时候对应的列(P0口的高五位)被执行相应的动作,如此便可以实现每一位LED的变化, voidscan()interrupt1 { staticuchari=0;//静态变量 P1=i;//138译码器的三位控制,做行的扫描 P1|=Light[i]<<3;//左移动三位,为五列的驱动 i=(i+1)%5;//01234 }以上程序部分即为行列扫描,其实是一个中断的实现,中断时间为单片机计数器的溢出触发时间65536us约为65ms,作为扫描时间相对于人眼的视觉暂留足够实现。 三、游戏实际模拟的效果图 图四游戏效果图: 只剩一盏灯的时候,游戏没有终结。 图四—控制系统电路AT89C51 四、仿真调试与分析 在经历至少四五次的电路设计之后选定了使用74LS138起码器作为了矩阵LED的动态扫描芯片,由于单片机的驱动电流一般仅有5毫安左右,而且总输出电流在100毫安以下,而LED的驱动电流一般在10毫安左右,因此单片机不具有直接驱动多个LED的能力。 所以采用了74HC573并入并出寄存器作为了矩阵LED的驱动芯片。 在实际的调试中,前期的电路设计更改,多次发现设计的电路并不理想,不得不一次次的更改设想,最终的成型电路便是上图的电路,另外程序的构思也是很费心思,作为一款简单的游戏电路,还是涉及到了很大量的数据据算,安排,一次次的调试。 再调试过程中本来才有的已有的点阵灯列,但是点阵的LED太小,效果不是很好,从网上的资料得知可以更改LED矩阵的工作模式为模拟模式或者是数字模式,这就为模拟的LED能够显示出预期的效果提供了方便,在实际的电路中,也是可以达到特定的效果。 五、结论与心得 通过这次数字电子的课程设计,把学到的东西与实践相结合。 从中对我们学的知识有了更进一步的理解,而且更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。 也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。 虽然只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。 设计本身并不是有很重要的意义,而是对待问题时的态度和处理事情的能力。 各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。 同一个电路可以用那些芯片实现,各个芯片实现同一个功能的区别。 另外,我还渐渐熟悉了pretues这个仿真软件的各个功能,让我体会到了其中的乐趣,还在电脑制作文档的过程中,使我对办公软件有了更进一步的了解和掌握。 最主要的是,通过这次的简单游戏的设计,虽然仅仅是一款结构简单的游戏,但作为一个独立的作品,可以让我从一款产品的设想,设计,开发,再到应用有了一个清晰简单的认识。 这对以后的学习和工作应该是一个好的开始,好的经验。 六、参考文献 七、附录 源程序代码 /*************************************************** ****************本设计为开灯游戏******************** 游戏目的: 通过按键将灯阵全部点亮。 游戏规则: (1)开始时灯阵为全灭; (2)按下按键时,其对应的灯与其上下左右灯状态全部反转; (3)最终点亮全部LED灯。 来源: ***同学编写的一个简单JAVA小游戏。 时间: 2013年*月21日。 作者: 迟木 ****************************************************/ #include #defineucharunsignedchar #defineuintunsignedint voidDispose(ucharx,uchary); ucharchange(uchardat); voidkey(uchar*hang,uchar*lie); uintLight[5]={0}; voidmain() { ucharx,y; EA=1; ET0=1; TH0=0x00; TL0=0x00; TMOD=0x02; TR0=1; while (1) { key(&x,&y);//读取键值 Dispose(x,y);//处理读到的键值 } } /********************************** **voidscan() **点阵动态扫描产生连续的效果 **********************************/ voidscan()interrupt1 { staticuchari=0;//静态变量 P1=i;//138译码器的三位控制,做行的扫描 P1|=Light[i]<<3;//左移动三位,为五列的驱动 i=(i+1)%5;//01234 } /************************************* **voidkey(uchar*hang,uchar*lie) **键值扫描,扫描出按键 **************************************/ voidkey(uchar*hang,uchar*lie) { P2=0x00; P3=0xFF; while (1) { if(P3! =0xFF)//检测到了按键 { P3=P3;//将P3口状态锁存 P2=0xFF;//检测P2口状态 *hang=change(P2);//将P2口状态转换为行坐标并输出 *lie=change(P3);//将P3口状态转换为列坐标并输出 while(P2! =0xFF) { } //P2=0xFF; //P3=0xFF; return; } } } /***************************** **ucharchange(uchardat) **转换键码为二维数组下标 *****************************/ ucharchange(uchardat) { uchari; dat=~dat; for(i=0;i<5;i++) { if(dat==0x01< { returni; } } return9; } /*********************************** **Dispose(ucharx,uchary)处理函数 **将指定点的前后左右坐标翻转亮暗 ***********************************/ voidDispose(ucharx,uchary) { Light[x]^=0x01< if(x>0)//翻转指定点的上一点 { Light[x-1]^=0x01< } if(x<4)//翻转指定点的下一点 { Light[x+1]^=0x01< } if(y>0)//翻转指定点的左一点 { Light[x]^=0x01<<(y-1); } if(y<4)//翻转指定点的右一点 { Light[x]^=0x01<<(y+1); } } 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺: 所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。 尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。 对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名: 日 期: 指导教师签名: 日 期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即: 按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名: 日 期: 学位论文原创性声明 本人郑重声明: 所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。 除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。 本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年月日 导师签名: 日期: 年月日 指导教师评阅书 指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □优□良□中□及格□不及格 2、学生掌握专业知识、技能的扎实程度 □优□良□中□及格□不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □优□良□中□及格□不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 □优□良□中□及格□不及格 5、完成毕业论文(设计)期间的出勤情况 □优□良□中□及格□不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □优□良□中□及格□不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □优□良□中□及格□不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □优□良□中□及格□不及格 2、论文的观念是否有新意? 设计是否有创意? □优□良□中□及格□不及格 3、论文(设计说明书)所体现的整体水平 □优□良□中□及格□不及格 建议成绩: □优□良□中□及格□不及格 (在所选等级前的□内画“√”) 指导教师: (签名)单位: (盖章) 年月日 评阅教师评阅书 评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □优□良□中□及格□不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □优□良□中□及格□不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □优□良□中□及格□不及格 2、论文的观念是否有新意? 设计是否有创意? □优□良□中□及格□不及格 3、论文(设计说明书)所体现的整体水平 □优□良□中□及格□不及格 建议成绩: □优□良□中□及格□不及格 (在所选等级前的□内画“√”) 评阅教师: (签名)单位: (盖章) 年月日 教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □优□良□中□及格□不及格 2、对答辩问题的反应、理解、表达情况 □优□良□中□及格□不及格 3、学生答辩过程中的精神状态 □优□良□中□及格□不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □优□良□中□及格□不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □优□良□中□及格□不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □优□良□中□及格□不及格 2、论文的观念是否有新意? 设计是否有创意? □优□良□中□及格□不及格 3、论文(设计说明书)所体现的整体水平 □优□良□中□及格□不及格 评定成绩: □优□良□中□及格□不及格 (在所选等级前的□内画“√”) 教研室主任(或答辩小组组长): (签名) 年月日 教学系意见: 系主任: (签名) 年月日 学位论文原创性声明 本人郑重声明: 所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。 尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。 本人完全意识到本声明的法律结果由本人承担。 学位论文作者(本人签名): 年月日 学位论文出版授权书 本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。 论文密级: □公开□保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议) 作者签名: _______导师签名: _______ _______年_____月_____日_______年_____月_____日 独创声明 本人郑重声明: 所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。 尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。 作者签名: 二〇一〇年九月二十日 毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定) 作者签名: 二〇一〇年九月二十日 致谢 时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。 首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。 本次毕业设计大概持续了半年,现在终于到结尾了。 本次毕业设计是对我大学四年学习下来最好的检验。 经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。 这期间凝聚了很多人的心血,在此我表示由衷的感谢。 没有他们的帮助,我将无法顺利完成这次设计。 首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。 郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。 从他身上,我学到了许多能受益终生的东西。 再次对周巍老师表示衷心的感谢。 其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。 另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。 最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。 从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。 感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。 学友情深,情同兄妹。 四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。 是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。 老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。 他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。 在论文的撰写过程中老师们给予我很大的帮助,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC89C51 开灯 游戏 设计 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)