《C51程序设计》期末项目考核项目设计报告题目:点阵贪吃蛇设计学院:专业:班级:学号:姓名:目录1项目要求及功能 (2)1.1电路要求 (2)1.2 程序要求 (2)2项目设计 (2)2.1整体设计思路及原理 (2)2.1.1蛇的运动处理 (3)2.1.2点阵屏的原理图 (4)2.2贪吃蛇的设计的基本思路 (4)2.3硬件电路设计 (4)2.4单片机最小系统图模块 (5)2.5点阵屏显示模块 (5)2.6按键控制电路模块 (5)2.7贪吃蛇程序流程图 (5)3项目仿真 (6)3.1仿真效果图及电路图 (6)3.11仿真效果图 (6)3.2测试结果分析 (6)4贪吃蛇设计总结 (7)5 参考文献 (8)附录 (8)附录Ⅰ整体电路图 (8)1.1按键控制电路 (8)1.2单片机最小系统图及点阵屏显示电路仿真图 (9)附录Ⅱ源程序清单 (9)1项目要求及功能项目要求:通过使用C51单片机和点阵显示屏,制作贪吃蛇并通过KEI软件写出程序,运用PROTUES仿真软件测试其功能1.1电路要求通过使用单片机和点阵屏完成电路的各部分并实现贪吃蛇所需的全部功能。
通过仿真软件实现对电路和软件设计的检查和验收。
1.2 程序要求通过使用KEIL软件,使用C语言并结合硬件电路,实现硬件所需要的功能,要求程序简单易懂,代码效率高,无错误,生成HEX,文件并将文件烧入仿真软件中。
2项目设计2.1 整体设计思路及原理随着科技的发展,现代生活节奏越来越快,人们的工作生活压力也随之加大。
设计一款操作简单,生动新颖,娱乐性强,便于携带的小游戏,在繁忙的工作生活之余玩玩这款小游戏,不仅可以调节人们的情绪,使人心情舒畅,还能健脑益智,为更好地投入工作学习做好准备。
随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界。
人们不再拘泥于,加班,出差成了现代人不可避免的公务。
而此时一款可以随时随地娱乐的游戏成了必需品。
贪吃蛇这一游戏简单易行,操作方便,娱乐性较强,吸引了不少人。
这一款游戏紧紧地抓住了人们的心理,虽然简单,却其乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具。
当前科学技术飞速发展,特别是微电子技术,计算机软件与应用技术的发展,使得人们的日常生活丰富多彩。
单片微型计算机(简称单片机)作为微型计算机家族的一员,以其独特的结构,良好的稳定性,便宜的价格在嵌入式领域广泛应用。
与传统的PC上设计的贪吃蛇游戏不同,本次作者利用Proteus 硬件仿真软件,采用单片机、液晶显示屏、扬声器、按键等搭建硬件平台,C语言编程,实现便携地贪吃蛇游戏。
本文基于单片机设计的贪吃蛇游戏,具有传统意义上的贪吃蛇游戏的特点:通过使用左右上下按键,改变蛇的运动方向来吃到食物,可以说程序简洁,游戏很容易上手,让游戏者体会到即使是使用点阵屏但游戏的趣味性仍不减。
运用单片机技术和C程序设计及其模拟电子技术,通过点阵显示屏显示。
需要使用的电路分为以下模块,单片机最小系统图、点阵显示屏电路、方向控制电路,三个部分组成。
使用单片机作为控制核心,可以简化硬件电路,采用软件编程控制单片机实现硬件电路的功能,降低能耗,降低成本。
软件采用C语言编程,方便灵活,大大加快了软件开发速度,缩短了开发周期,并且便于移植。
为提高开发效率和硬件稳定性,采用了功能强大的硬件仿真软件Proteus,依托该软件提供的仿真环境搭配Keil作为软件开发调试环境进行仿真调试成功。
贪吃蛇的制作思路及原理。
通过点阵屏点亮一个点,然后再点亮旁边的另一个点,形成“蛇”,然后,再在点阵屏上面选一个点为蛇的食物,通过手动按键使蛇移动,并判断是否撞墙。
并找到食物,并吞下食物,然后蛇长大,变长,直到蛇咬住尾巴死亡,重新开始。
2.1.1蛇的运动处理(1)运动处理。
根据用户按键的键值蛇身进行柔体传动。
所谓柔体传动,指贪吃蛇运动的时候并不是整条蛇向一个方向运动的,而是在每个时钟到来时,由蛇头带动每个点阵的方向都向下一个点阵传播,然后自己向新的方向运动一步。
运动后,下一个点阵由于得到了上一个点阵的方向,就按照此方向同样地运动一步。
所以,它会马上填补上一个点阵的位置,如此类推。
实际上在设计贪吃蛇的时候,只需要把蛇尾的那个点阵去掉,然后在蛇头的新方向上放一个点阵就可以了。
因此定义一个函数用于更新点的坐标,只要知道蛇头或蛇尾的坐标和运动方向,就可以调用该函数更新蛇头或蛇尾的坐标,同时调用相关显示函数,实现蛇运动处理。
蛇头的方向可以通过按键捕获实时获得。
而蛇尾的方向获得要困难得多。
为节省空间,定义一个无符号char 型一维数组按位存储蛇头方向信息。
蛇身运动期间需要在该数组中记录下每次蛇身移动一步,蛇头的运动方向。
定义两个变量分别代表蛇头和蛇尾,每次存储蛇头运动方向后,代表蛇头的变量加一,以便在下一位置继续存储蛇头运动方向;代表蛇尾的变量则指向数组的开始位置,通过该变量读取数组中蛇尾的运动方向(因为存在该数组中蛇头的运动方向,随着蛇头坐标的移动,存在数组开始位置的运动方向即是蛇尾的运动方向),通过读取的蛇尾运动方向便可以更新蛇尾坐标。
(2)吃到豆子的处理。
蛇头坐标与豆子坐标相等,则吃到豆子。
如果吃到豆子,在蛇头位置增加一个单位点阵,并更新豆子的坐标。
2.1.2点阵屏的原理图由上面的点阵屏原理,图可知,要点亮一个发光二极管,需要在正极的那一个引脚上接入高电平,在负极接入低电平。
点阵屏的二极管的排列为横线为接正极,列线接入负极,点亮一个发光二极管,则正极即横线这一端一个为高电平其余为低电平,列线这一端即负极这一端有一个低电平,其余为高电平。
这样便实现了点亮一个指定的发光二极管。
在贪吃蛇里面,必须同时点亮多个点。
则需要用到延时在贪吃蛇中使用的延时为 255us*50=12.75ms。
2.2贪吃蛇的设计的基本思路蛇运动控制模块详细设计与实现:本模块主要进行蛇运动的控制,触发各种事件的响应。
主要开发内容包括蛇的方向、蛇的速度、蛇的位置的控制,吃食物、撞边界、撞自己判断并调用其它模块进行相应操作。
根据不同的等级,使贪吃蛇以不同的速度前进。
具体功能如下:(1)贪吃蛇按一定方向移动(2)贪吃蛇根据按键改变方向(3)贪吃蛇判断吃食物(4)贪吃蛇判断撞边界(5)贪吃蛇判断撞自己(6)修改游戏地图标记表2.3 硬件电路设计硬件电路设计包括三个部分分别为:单片机最小系统图、点阵屏显示电路模块、按键控制电路模块。
2.4单片机最小系统图模块单片机最小系统图就是单片机工作的必须最小电路。
虽然在仿真中没有连接仍能实际,但是在实际中,单片机最小系统图必不可少,单片机最小系统图包括以下元件,AT89C51单片机、12兆赫晶振,33PF 电容两个,10UF 电解电容一个,10K 欧姆电阻一个。
复位按键一个。
18、19脚接晶振后并联两个33PF 瓷片电容。
后接负极。
9脚接电解电容后接电源正极。
9脚并一个电阻10K 再接一个复位按键到电源正极。
再并联一个10K 电阻到电源负极。
31脚接到电源正极。
2.5点阵屏显示模块点阵屏为左右各为八个引脚,总共有十六个引脚。
将引脚接入到单片机中。
把行线接口接入到单片机的 P1口,将列线接入到P2口中。
点阵屏的点亮,通过给行线和列线的引脚接入高低电平实现。
2.6按键控制电路模块按键控制电路模块有四个按键和电源正、负极和IN4003二级管和一个接地电阻组成。
将一个电源正极接到每一个接键的右侧。
左侧接到单片机的P3.1、P3.2、P3.3、P3.4。
再将一个P3.6脚接入到每个按键。
将按键的左端接一个二级管并接入到电源负极。
2.7贪吃蛇程序流程图否否是3项目仿真3.1 仿真效果图及电路图3.11仿真效果图3.2 测试结果分析在仿真电路中,烧片后,运行仿真文件。
使用上下左右任意键能够使贪吃蛇开始移动,由于程序最开始时候蛇位于最左边的第一列上,所以当我按下左键时,游戏结束又重新开始。
使用方向键上或右,贪吃蛇开始移动,并通过自己的操作使蛇找到食物,并吞下食物,最后当蛇的长度达到十几节时候,由于按键不方便,而且蛇容易撞墙。
游戏就结束。
通过对测试结果的分析我认为贪吃蛇测试结果成功,但仍有一些不足那就是当蛇长达到一定的长度时候蛇比较容易撞墙因为是8*8的点阵屏,显示空间有限,按键在仿真时候是通过鼠标完成方向操作指令也有些不便,如果做出实际项目后,这按键方面问题比较容易解决,但是由于8*8的点阵空间方便还是无法解决那么就需要改换成16*16的点阵可以得到解决。
4贪吃蛇设计总结通过本次的贪吃蛇设计,使我对单片机的功能和作用有了更进一步的了解。
尤其是点阵屏显示,虽然点阵显示的功能并不是很强,但是很多类似的产品都是同一个或多个点阵屏组成的原理都一样。
贪吃蛇有点像小时候玩过的游戏机。
不过游戏机里面的贪吃蛇使用的是LCD屏幕,但是点阵屏是这一类显示屏的基础,那些其他屏幕都是由点阵屏幕发展而来的。
点阵屏还可以用来做广告屏,显示文字,也可以做成流水灯类似的跑马灯。
虽然在制作贪吃蛇的电路和程序中遇到很多问题但是通过与同学们交流和改进中还是克服了不少难题。
同时有网上找一些关于点阵屏的资料,在使用KEIL编写贪吃蛇程序时,才感觉到自己所学的单片机C语言没有学好,通过网上找来一些关于贪吃蛇的程序进行仔细分析,终于将贪吃蛇的程序的思路理清了,并且通过自己对程序的理解和修改使程序得到了不少改进。
这些使我对单片机C语言编写中的一些薄弱环节得到了及时的查漏补。
并通过对程序的理解写出了流程图。
再通过调试程序,使程序更加精简。
经过烧片后,程序能够实现所有预先所需的功能。
虽然由于使用的是8*8点阵并且在仿真中按键模拟并非十分方便,但如果做出实物之后按键方面可以得到改善。
通过贪吃蛇设计使用学会了如何使用单片机做出自己想要做的产品,同时也提高了我使用单片机方面的能力和经验。
同时使我能够更加熟练的使用proteus 电路仿真软件和keill程序编写软件。
基于51单片机设计的贪吃蛇游戏,可以充分发挥单片机的性能,体现嵌入式系统功耗低,节能,便携性好的特点,给人们的日常生活带来轻松快乐。
本次按照要求完成了以下工作:1)根据实际要求进行了系统硬件电路的设计。
以AT89C51单片机为核心,扩展了外围电路,按键等构成了贪吃蛇游戏的硬件系统。
2)软件方面整个游戏采用C语言编写,大大加快了软件开发速度,缩短了开发周期,而且C语言编程可以方便地在各种型号的单片机上移植。
3)游戏设计上考虑到嵌入式系统存储容量有限的特点,利用一个一维数组存储蛇头的运动轨迹,大大节省了存储器空间的使用。
代码编写上参考了许多良好的编程规范,代码可读性增强。
4)游戏除了拥有传统贪吃蛇游戏的功能外,又加入了地图选择的功能,给用户带来更多的挑战。