推箱子游戏--51单片机课设计(最全)
c课程设计推箱子
![c课程设计推箱子](https://img.taocdn.com/s3/m/e673533f793e0912a21614791711cc7931b778e7.png)
c 课程设计推箱子一、教学目标本课程的教学目标是使学生掌握推箱子游戏的算法和编程技巧,培养学生的逻辑思维能力和问题解决能力。
具体目标如下:知识目标:使学生了解推箱子游戏的基本概念和算法,理解游戏编程的基本原理。
技能目标:培养学生能够独立完成推箱子游戏的编程和调试,提高学生的编程实践能力。
情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括推箱子游戏的基本概念、算法和编程技巧。
具体安排如下:第一章:推箱子游戏概述,介绍推箱子游戏的基本概念和特点。
第二章:推箱子游戏的算法,讲解推箱子游戏的解决方法和算法实现。
第三章:推箱子游戏的编程,介绍推箱子游戏的编程语言和编程技巧。
第四章:推箱子游戏的调试和优化,讲解如何对推箱子游戏进行调试和优化。
三、教学方法本课程的教学方法主要包括讲授法、案例分析法和实验法。
具体使用如下:讲授法:用于讲解推箱子游戏的基本概念、算法和编程技巧。
案例分析法:通过分析具体的推箱子游戏案例,使学生更好地理解和掌握相关知识。
实验法:让学生通过实际编程和调试推箱子游戏,提高学生的实践能力。
四、教学资源本课程的教学资源主要包括教材、参考书、多媒体资料和实验设备。
具体使用如下:教材和参考书:为学生提供推箱子游戏的基本概念、算法和编程技巧的学习资料。
多媒体资料:通过视频、动画等形式,为学生提供更为直观的学习资源。
实验设备:为学生提供实际编程和调试推箱子游戏的硬件支持。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。
平时表现评估:通过观察学生在课堂上的参与程度、提问回答和小组讨论表现,评估学生的学习态度和理解能力。
作业评估:通过布置相关的编程练习和推箱子游戏设计任务,评估学生的实践能力和问题解决能力。
考试评估:通过期末考试,评估学生对推箱子游戏算法和编程技巧的掌握程度。
六、教学安排本课程的教学安排将按照推箱子游戏的基本概念、算法和编程技巧的顺序进行,确保学生在有限的时间内掌握课程内容。
推箱子游戏课程设计c
![推箱子游戏课程设计c](https://img.taocdn.com/s3/m/c2674317777f5acfa1c7aa00b52acfc789eb9f9a.png)
推箱子游戏课程设计c一、课程目标知识目标:1. 学生能够理解推箱子游戏中的程序设计基本概念,掌握游戏规则逻辑表达方法。
2. 学生能够运用所学编程知识,设计并实现具有基本功能的推箱子游戏。
3. 学生理解并掌握游戏中坐标系统、角色移动算法和碰撞检测的相关知识。
技能目标:1. 学生通过实践操作,提高逻辑思维和问题解决能力,能够将复杂问题分解为简单步骤。
2. 学生培养独立编程能力,学会使用合适的编程语句和结构来实现游戏逻辑。
3. 学生通过小组合作,锻炼团队协作和沟通技巧,共同完成游戏设计任务。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,激发创造力和探究精神,形成积极的学习态度。
2. 学生在游戏设计过程中,学会面对挑战,培养坚持不懈和解决问题的耐心。
3. 学生通过推箱子游戏,理解编程在生活中的应用,认识到科技与日常生活紧密相关,增强社会责任感。
课程性质:本课程为信息技术课程,以实践操作为主,理论讲解为辅,注重培养学生的动手能力和实际应用能力。
学生特点:考虑到学生所在年级,课程内容设计将结合学生好奇心强、动手欲望高、团队协作意识逐步形成等特点。
教学要求:课程要求学生在掌握编程基础知识上,通过实践加深理解,鼓励创新思维和团队合作,实现游戏设计的目标。
教学过程将目标分解,确保每个学生都能达到具体的学习成果,为后续学习奠定基础。
二、教学内容1. 理论知识:- 游戏设计基本概念:游戏规则、游戏流程、角色与道具。
- 编程语言基础:变量、数据类型、运算符、控制结构(条件语句、循环语句)。
- 坐标系统与图形用户界面:理解坐标系在游戏中的应用,掌握简单图形界面的构建。
2. 实践操作:- 推箱子游戏规则设计:学习如何将游戏规则转化为程序逻辑。
- 角色移动算法:掌握角色在不同方向上的移动算法实现。
- 碰撞检测:学习如何检测角色与箱子、墙壁之间的碰撞。
3. 教学大纲:- 第一阶段:游戏设计基本概念学习,介绍推箱子游戏,引导学生分析游戏规则。
推箱子游戏--51单片机课设计(最全)
![推箱子游戏--51单片机课设计(最全)](https://img.taocdn.com/s3/m/70f07b813186bceb19e8bb88.png)
.《51单片机》课程设计题目:基于51单片机的推箱子游戏设计目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、Proteus仿真原理图 (7)5、程序设计 (9)6、调试总结 (28)7、设计心得体会 (28)参考文献 (29)附录:程序代码------------------------------------------------------------------291、课程设计目的《MCS-51单片机》课程设计是与《MCS-51单片机》课程相配套的实践教学环节。
《MCS-51单片机》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。
培养大胆发明创造的设计理念,为今后就业打下良好的基础。
通过课程设计,掌握以下知识和技能:1.单片机应用系统的总体方案的设计;2.单片机应用系统的硬件设计;3.单片机应用系统的软件程序设计;4.单片机开发系统的应用和调试能力2、课程设计题目和实现目标2.1 课程设计题目:基于51单片机的推箱子游戏设计2.2实现目标设计一款在以51单片机为核心的硬件系统中运行的推箱子游戏。
游戏一共9关,功能包括:(1)显示游戏开机界面和游戏界面;(2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,通过小人推动箱子,把箱子推到指定的目的地为过关,箱子只能推不能拉;(3)用于可以任意选关,并能随时退出、进入游戏;(4)每一关都有时间计时,显示当前玩家的游戏耗时。
3、设计方案根据设计目标,整个系统框图如下:图1 系统框图3.1 控制模块选用ATMEL公司生产的AT89C52为主控芯片,它是是一个低电压,高性能CMOS 8位单片机,主要功能特性如下:1、兼容MCS51指令系统;2、8k可反复擦写(大于1000次)Flash7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;本次课设选用PDIP封装的 AT89C52芯片,其引脚功能如图2所示,图3为最小系统:图2 引脚功能图3 最小系统U1:AT89C52,DIPf封装;C1,C2:22pf瓷片电容C3:10uf电解电容;X1:12M晶振R1:10K金属膜电阻3.2 显示模块选用内置T6963C控制控制器的12864图形点阵液晶(以下简称Lcd12864)做为显示模块。
基于单片机设计推箱子游戏,protues仿真
![基于单片机设计推箱子游戏,protues仿真](https://img.taocdn.com/s3/m/32f174995acfa1c7ab00cca0.png)
南京邮电大学毕业论文题目:基于单片机设计推箱子游戏专业:学生姓名:班级学号:指导教师:指导单位:南京邮电大学通信与信息工程学院日期:年月日至年月日摘要本论文主要介绍了基于AT89C52单片机推箱子游戏设计的游戏规则、硬件结构、软件代码的编写及工作原理,基于T6963C内核的液晶模块PG160128A液晶模块的介绍,在仿真软件上模拟出推箱子游戏。
本系统是以单片机为其控制核心,以有源晶振构成的电路作为时钟信号,通过方向键的选择向单片机控制系统发出人物移动控制命令,控制系统接收命令后做出一系列必要的判断后,控制人物及箱子的移动。
论文分为两大块:一块为游戏的硬件电路组成部分,一块为软件程序设计部分。
在硬件电路里主要包括有源晶振部分、方向控制部分及液晶显示部分等与单片机的接线设计;软件编程方面主要是子程序和主程序的编写,包括:初始化代码、液晶驱动代码、方向键代码、过关判断代码等等。
关键词:单片机;推箱子;PG160128A;T6963C内核ABSTRACTThis paper mainly introduces the based on single chip microcomputer AT89C52 tuixiangzi game design rules of the game, hardware structure, software code compiling, and working principle of LCD module of T6963C kernel based PG160128A LCD module, simulate the tuixiangzi game on the simulation diagram.This system is based on single chip microcomputer as its control core, active crystals constitute the circuit as the clock signal, through the choice of the direction key issued a person move control command to the single-chip microcomputer control system, control system after the judgements made after a series of necessary receive commands, to control the movement of figures and boxes.Paper is divided into two areas: a piece of hardware circuit part of the game, a piece of software design part.In the hardware circuit mainly includes active crystals, direction control part and part, such as liquid crystal display (LCD) and the connection design of single chip microcomputer;Software programming are mainly subroutines and main program of the writing, including: the initialization code, LCD driver code, the direction key code, pass judgment and so on.Key words: single chip microcomputer; pushing; PG160128A;T6963C kernel目录第一章绪论 (1)1.1游戏总体功能的设计 (1)1.2系统框图 (1)1.3游戏设计的目的 (2)1.4游戏实现的目标 (2)1.5设计的基本要求 (2)第二章设计模块 (3)2.1控制模块 (3)2.2显示模块 (5)2.3T6963C指令集 (6)2.4Protues介绍 (8)2.5Keil uVision4编译环境介绍 (10)第三章游戏架构 (12)3.1游戏基本元素 (12)3.2推箱子方向控制键 (12)3.3游戏关卡设计 (13)第四章设计结果 (14)4.1编译 (14)4.2仿真图 (19)4.3开机画面 (20)4.4流程 (20)4.5游戏画面 (23)结束语 (26)致谢 (27)参考文献 (28)附录 (29)第一章绪论目前,在中国乃至世界,游戏产业已经逐渐成为微控制器领域的一个相当庞大以及重要的分支,而关于这方面的高级人才仍甚是缺乏,很多初学单片机的朋友都会对其庞大而复杂的机制感到困惑。
DIY-基于单片机的推箱子游戏
![DIY-基于单片机的推箱子游戏](https://img.taocdn.com/s3/m/bf543c569b6648d7c1c746b3.png)
2.单片机推箱子小游戏HXE文件见压缩包(点击压缩包下载):基于单
片机的推箱子游戏HEX文件.rar
3.TC89C54的数据手册见:datasheet5/search_STC89C54.ht下载):LCD12864数据手
LCD液晶显示:
sbit Mcs=P3;
sbit Scs=P3 ;
sbit Enable=P3;
sbit Di=P3 ;
sbit RW=P3;
sbit LcdRst=P3;
#define LcdBus P1 (数据总线)
仿真图
这个游戏一共有20关
有小手柄的哦
参考资料:
1.单片机推箱子小游戏仿真资料见压缩包(点击压缩包下载):基于
册.rar
DIY:基于单片机的推箱子游戏
本文是电子工程师DIY:基于单片机的推箱子游戏。主要是采用
STC89C54单片机,使用LCD12864 (0108)无字库液晶屏来完成的。
引脚说明:
按键部分
sbit Up=P2;
sbit Left=P2;
sbit Right=P2 ;
sbit Down=P2;
sbitEnter=P2;
c推箱子课程设计
![c推箱子课程设计](https://img.taocdn.com/s3/m/788cd103302b3169a45177232f60ddccda38e6e6.png)
c 推箱子课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程技巧,培养学生独立思考和解决问题的能力,提高学生的创新意识和团队协作能力。
具体分解为以下三个维度:1.知识目标:使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组和指针等基本概念,理解面向对象编程思想。
2.技能目标:培养学生具备编写C语言程序的能力,能运用C语言解决实际问题,熟练使用C语言编程工具和调试技巧。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生的自信心和自主学习能力,培养学生的团队协作意识和沟通能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、数组和指针等基本概念,以及面向对象编程思想。
具体安排如下:1.第1-2周:C语言概述、基本语法和数据类型。
2.第3-4周:运算符、控制结构和函数。
3.第5-6周:数组、指针和字符串。
4.第7-8周:面向对象编程(包括类与对象、继承与多态)。
5.第9-10周:综合案例分析和实战。
三、教学方法本课程采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本概念、原理和编程技巧。
2.案例分析法:分析实际案例,引导学生运用C语言解决实际问题。
3.实验法:上机编程实践,巩固所学知识。
4.小组讨论法:分组讨论,培养学生的团队协作能力和沟通能力。
四、教学资源本课程所需教学资源包括:1.教材:《C语言程序设计》。
2.参考书:《C Primer Plus》、《C和指针》。
3.多媒体资料:教学PPT、视频教程。
4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
5.在线资源:编程、论坛、开源项目等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。
具体评估方式如下:1.平时表现:包括课堂参与度、小组讨论、提问等,占总评的20%。
课程设计推箱子
![课程设计推箱子](https://img.taocdn.com/s3/m/025ae4b6e109581b6bd97f19227916888486b92b.png)
课程设计推箱子一、教学目标本课程的教学目标是使学生掌握推箱子游戏的规则和技巧,能够独立完成各种难度的推箱子游戏。
具体分解为以下三个目标:1.知识目标:使学生了解和掌握推箱子游戏的基本规则和技巧,包括如何推动箱子、如何越过障碍物、如何利用场景中的其他物品等。
2.技能目标:通过练习,使学生能够熟练掌握推箱子游戏的操作技巧,提高游戏速度和成功率。
3.情感态度价值观目标:培养学生面对挑战、克服困难的精神,增强学生的自信心和自我成就感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.推箱子游戏的基本规则和技巧:如何推动箱子、如何越过障碍物、如何利用场景中的其他物品等。
2.推箱子游戏的操作技巧:如何快速准确地操作游戏角色,提高游戏速度和成功率。
3.各种难度的推箱子游戏实例:通过练习,使学生能够熟练应对各种难度的游戏挑战。
三、教学方法本课程的教学方法主要包括以下几种:1.讲授法:教师讲解推箱子游戏的基本规则和技巧,学生听讲并理解。
2.案例分析法:教师展示各种难度的推箱子游戏实例,学生分析并掌握相应的操作技巧。
3.实验法:学生通过实际操作推箱子游戏,锻炼和提高自己的操作技巧。
四、教学资源本课程的教学资源主要包括以下几种:1.教材:推箱子游戏教程,内容包括游戏规则、技巧讲解和游戏实例。
2.多媒体资料:推箱子游戏视频教程,为学生提供直观的学习材料。
3.实验设备:计算机和推箱子游戏软件,为学生提供实际操作的平台。
五、教学评估本课程的评估方式主要包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问回答情况等,占总成绩的30%。
2.作业:评估学生完成作业的质量、速度和准确性,占总成绩的30%。
3.考试:期末进行一次推箱子游戏考试,评估学生的游戏操作技巧和掌握程度,占总成绩的40%。
评估方式应客观、公正,能够全面反映学生的学习成果。
教师应及时给予学生反馈,帮助学生提高。
六、教学安排本课程的教学安排如下:1.教学进度:共10节课,每节课45分钟。
推箱子--java课程设计
![推箱子--java课程设计](https://img.taocdn.com/s3/m/ff71227858eef8c75fbfc77da26925c52cc59127.png)
推箱子--java课程设计一、课程目标知识目标:1. 理解并掌握Java基本语法结构,包括变量声明、数据类型、运算符和流程控制语句;2. 学会使用二维数组表示游戏地图,掌握数组的基本操作;3. 掌握面向对象编程的基本概念,包括类与对象、方法定义与调用;4. 理解“推箱子”游戏的逻辑规则,并能用Java语言实现。
技能目标:1. 能够独立设计并编写简单的“推箱子”游戏程序,实现游戏的基本功能;2. 培养学生运用计算机编程解决问题的能力,提高逻辑思维和算法设计能力;3. 学会使用调试工具,能对程序进行调试和优化,提高程序的可读性和效率。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习计算机科学的热情;2. 培养学生良好的编程习惯,注重团队协作,学会分享与交流;3. 培养学生面对挑战的积极态度,敢于尝试,勇于克服困难。
分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握Java编程基础知识的基础上,通过设计“推箱子”游戏,提高编程实践能力,培养创新思维和团队协作精神。
课程目标具体、可衡量,便于后续教学设计和评估。
二、教学内容1. Java基本语法- 变量声明与数据类型- 运算符与表达式- 流程控制语句(条件语句、循环语句)2. 二维数组与数组操作- 二维数组的定义与初始化- 数组的基本操作(遍历、赋值、查找)3. 面向对象编程基础- 类与对象- 方法定义与调用- 封装、继承、多态4. “推箱子”游戏逻辑设计- 游戏规则与需求分析- 地图表示与用户交互- 算法设计与实现5. 编程实践- 设计“推箱子”游戏界面- 编写游戏逻辑代码- 调试与优化程序6. 教学进度安排- 第1-2课时:复习Java基本语法- 第3-4课时:学习二维数组与数组操作- 第5-6课时:面向对象编程基础- 第7-8课时:“推箱子”游戏逻辑设计- 第9-10课时:编程实践与调试优化教学内容依据课程目标,结合课本章节,确保科学性和系统性。
51单片机板子课程设计
![51单片机板子课程设计](https://img.taocdn.com/s3/m/a89bcd8948649b6648d7c1c708a1284ac8500526.png)
51单片机板子课程设计一、课程目标知识目标:1. 学生能理解51单片机的硬件结构和原理,掌握其基本编程方法。
2. 学生能运用51单片机的指令集,实现简单的控制程序。
3. 学生了解51单片机在嵌入式系统中的应用,掌握相关传感器和执行器的接入与控制。
技能目标:1. 学生具备独立搭建51单片机电路的能力,并能进行基本的调试。
2. 学生能够编写简单的51单片机程序,实现基础的控制功能。
3. 学生通过课程学习,培养解决问题的能力,提高创新思维和实践操作技能。
情感态度价值观目标:1. 学生在学习过程中,培养对电子技术的兴趣和热情,增强对科技发展的关注。
2. 学生通过课程学习,树立正确的价值观,认识到科技对生活的影响,增强社会责任感。
3. 学生在团队合作中,学会相互沟通、协作,培养团队精神和集体荣誉感。
课程性质:本课程为实践性较强的课程,结合理论知识,注重培养学生的动手能力和实际操作技能。
学生特点:学生为高年级学生,已具备一定的电子技术基础和编程能力。
教学要求:课程教学应结合实际案例,注重理论与实践相结合,引导学生主动参与,培养其独立思考和解决问题的能力。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效评估。
二、教学内容1. 理论知识:- 51单片机硬件结构:介绍51单片机的内部结构、工作原理、引脚功能等。
- 指令系统:讲解51单片机的指令集,包括数据传送、逻辑运算、算术运算等。
- 编程方法:学习51单片机的编程语言,如汇编语言和C语言。
2. 实践操作:- 电路搭建:学会使用面包板搭建51单片机电路,接入LED、按键、蜂鸣器等基础元件。
- 程序设计:编写程序实现LED灯闪烁、按键控制蜂鸣器、温度传感器数据读取等。
- 调试技巧:掌握51单片机程序下载、调试方法,解决常见问题。
3. 教学大纲:- 第一周:51单片机硬件结构、工作原理及引脚功能。
- 第二周:51单片机指令系统、编程语言及编程方法。
- 第三周:电路搭建,实现基础控制功能(如LED灯控制)。
C语言推箱子课程设计(附报告)
![C语言推箱子课程设计(附报告)](https://img.taocdn.com/s3/m/05473001b52acfc789ebc987.png)
(注:VC运行时,分别新建两个文件BotIt.cpp和Maps.h,再在同一目录下运行其中cpp)代码部分文件“BoxIt.cpp”如下:#include <stdio.h>#include <conio.h>#include <stdlib.h>#include "Maps.h"#define AISLE "" //走廊#define N_AISLE 0#define W ALL "■" //墙壁#define N_W ALL 1#define AIM "※" //未放箱子的目标#define N_AIM 2#define BOX "□" //未在目标位置的箱子#define N_BOX 3#define MAN "♀" //人#define N_MAN 4#define BOX_OK "▢" //■已经在目标位置的箱子[即已放箱子的目标]#define N_BOX_OK 5#define MAN_IN "* "#define N_MAN_IN 6#define ESC 0x1B#define UP 'w'#define DOWN 's'#define LEFT 'a'#define RIGHT 'd'#define RESTART 'r'#define SA VE 'x'#define PF(a) printf("%s",a)struct Point{int x;int y;}man_p;/*小人坐标*///struct Filename{int num;char name[20];}filename[10];//int N;/*存档总人数*/int M;/*关数*/int step;/*步数*/char x;void welcome();void ingame();void playgame(int map[14][16]);/*玩游戏*/void displaymap(int map[14][16]);/*展示当前游戏界面*/void findman(int &a,int &b,int map[14][16]);/*找到小人坐标位置*/unsigned char getKey();/*获得有效按键返回按键值*/int getmap(Point p,int map[14][16]);/*获得点p的地图值*/void moveman(Point man_p,Point manf_p,int X,int Y,int map[14][16]);/*人移动*/ void movebox(Point box_p,Point boxf_p,int map[14][16]);/*移箱子*/int win(int map[14][16]);/*判断当无※时赢*/void choosemap(int map[14][16],int i);/*选关*/void changemap(int map[14][16],int mapx[14][16]);/*换地图*/void save();/*保存当前*/int read();/*读取存档*/int a=0,b=0,c=0,d=0;//system("color a");int main(){x='0';while(x!='4'){welcome();if(x=='3'&&read()==0) continue;if(x!='4') ingame();}return 0;}void displaymap(int map[14][16]){int i,j;system("cls");printf("\t\t\tMisson %d\n\n",M);for(i=0;i<14;i++){for(j=0;j<16;j++){ switch(map[i][j]){case N_AISLE:PF(" ");break;case N_W ALL:PF(W ALL);break;case N_AIM:PF(AIM);break;case N_BOX:PF(BOX);break;case N_MAN:PF(MAN);break;case N_BOX_OK:PF(BOX_OK);break;case N_MAN_IN:PF(MAN_IN);default:;}}if(i==2) printf("Press the key:");if(i==3) printf("'w'、'a'、's'、'd' to control ♀");if(i==5) printf("'r' to replay");if(i==7) printf("'x' to save");if(i==9) printf("'ESC' back to the menu");if(i==12) printf("Step:%d",step);PF("\n");}}void playgame(int map[14][16]){ int X,Y;Point manf_p,manff_p;//findman(man_p.x,man_p.y,map);displaymap(map);step=0;while(win(map)==0){findman(man_p.x,man_p.y,map);//printf("输入:");switch(getKey()){case DOWN://printf("\n下\n");manf_p.x=man_p.x;manff_p.x=man_p.x;manf_p.y=man_p.y+1,manff_p.y=man_p.y+2;X=0,Y=1;break;case UP://printf("\n上\n");manf_p.x=man_p.x;manff_p.x=man_p.x;manf_p.y=man_p.y-1,manff_p.y=man_p.y-2;X=0,Y=-1;break;case LEFT://printf("\n左\n");manf_p.x=man_p.x-1;manff_p.x=man_p.x-2;manf_p.y=man_p.y;manff_p.y=man_p.y;X=-1,Y=0;break;case RIGHT://printf("\n右\n");manf_p.x=man_p.x+1;manff_p.x=man_p.x+2;manf_p.y=man_p.y;manff_p.y=man_p.y;X=1,Y=0;break;case SA VE:save();continue;case RESTART:changemap(map,map0);M--;continue;case ESC:system("cls");changemap(map,map0);M=44;continue;default:;}//printf("\n人位置[%d %d]\n",man_p.y,man_p.x);//printf("\n人前方[%d %d]人前前方[%d %d]\n",manf_p.y,manf_p.x,manff_p.y,manff_p.x);switch(getmap(manf_p,map)){case N_AISLE://0case N_AIM://2moveman(man_p,manf_p,X,Y,map);break;case N_BOX://3case N_BOX_OK://5if(getmap(manff_p,map)==N_AISLE||getmap(manff_p,map)==N_AIM){movebox(manf_p,manff_p,map);moveman(man_p,manf_p,X,Y,map);}break;default:;}displaymap(map);}if(M==42) printf("\n\tCongratulation! Pass All!!!\n\n\n\t");}void findman(int &a,int &b,int map[14][16]){int i,j;for(i=0;i<14;i++)for(j=0;j<16;j++)if(map[i][j]==N_MAN||map[i][j]==N_MAN_IN)a=j,b=i;}unsigned char getKey(){unsigned char key;do{key = getch();}while(key != RESTART && key != ESC && key != LEFT && key != RIGHT && key != UP && key != DOWN && key!='x'&& key!=0x1B &&key!='r');return key;}int getmap(Point p,int map[14][16]){//printf("\n前方值%d\n",map[p.y][p.x]);return map[p.y][p.x];}void moveman(Point man_p,Point manf_p,int X,int Y,int map[14][16]){map[manf_p.y][manf_p.x]=(map[manf_p.y][manf_p.x]==N_AIM||map[manf_p.y][manf_p.x]==N_BOX _OK)?N_MAN_IN:N_MAN;map[man_p.y][man_p.x]=map[man_p.y][man_p.x]==N_MAN_IN?N_AIM:N_AISLE; //printf("\n移动后—小人位置值%d\n",map[manf_p.y][manf_p.x]);//printf("\n移动后—原小人位置值%d\n",map[man_p.y][man_p.x]);man_p.x+=X,man_p.y+=Y;step++;}void movebox(Point box_p,Point boxf_p,int map[14][16]){map[boxf_p.y][boxf_p.x]=map[boxf_p.y][boxf_p.x]==N_AISLE?N_BOX:N_BOX_OK; map[box_p.y][box_p.x]=map[box_p.y][box_p.x]==N_BOX?N_AISLE:N_AIM;}int win(int map[14][16]){int i,j;for(i=0;i<14;i++)for(j=0;j<16;j++)if(map[i][j]==2||map[i][j]==6)return 0;return 1;}void choosemap(int map[14][16],int i){switch(i){case 1:changemap(map,map1);break;case 2:changemap(map,map2);break;case 3:changemap(map,map3);break;case 4:changemap(map,map4);break;case 5:changemap(map,map5);break;case 6:changemap(map,map6);break;case 7:changemap(map,map7);break;case 8:changemap(map,map8);break;case 9:changemap(map,map9);break;case 10:changemap(map,map10);break;case 11:changemap(map,map11);break;case 12:changemap(map,map12);break;case 13:changemap(map,map13);break;case 14:changemap(map,map14);break;case 15:changemap(map,map15);break;case 16:changemap(map,map16);break;case 17:changemap(map,map17);break;case 18:changemap(map,map18);break;case 19:changemap(map,map19);break;case 20:changemap(map,map20);break;case 21:changemap(map,map21);break;case 22:changemap(map,map22);break;case 23:changemap(map,map23);break;case 24:changemap(map,map24);break;case 25:changemap(map,map25);break;case 26:changemap(map,map26);break;case 27:changemap(map,map27);break;case 28:changemap(map,map28);break;case 29:changemap(map,map29);break;case 30:changemap(map,map30);break;case 31:changemap(map,map31);break;case 32:changemap(map,map32);break;case 33:changemap(map,map33);break;case 34:changemap(map,map34);break;case 35:changemap(map,map35);break;case 36:changemap(map,map36);break;case 37:changemap(map,map37);break;case 38:changemap(map,map38);break;case 39:changemap(map,map39);break;case 40:changemap(map,map40);break;case 41:changemap(map,map41);break;case 42:changemap(map,map42);break;default:;}}void changemap(int map[14][16],int mapx[14][16]) {int i,j;for(i=0;i<14;i++)for(j=0;j<16;j++)map[i][j]=mapx[i][j];}void save(){int i,j;FILE *in;/*char filename[10][20];printf("put in the filename:");scanf("%s",filename);*/if((in=fopen("save game","w"))==NULL){printf("cannot open this file\n");exit(0);}for(i=0;i<14;i++)for(j=0;j<16;j++)fwrite(&map[i][j],sizeof(int),1,in);fwrite(&M,sizeof(int),1,in);fwrite(&step,sizeof(int),1,in);printf("\nGame Misson %d saved!\n",M);system("pause");fclose(in);}int read(){int i,j;FILE *out;/*char filename[10][20];printf("put in the filename:");scanf("%s",filename);*/if((out=fopen("save game","r"))==NULL){printf("\ncannot open this file\n");return 0;}else{for(i=0;i<14;i++)for(j=0;j<16;j++)fread(&map[i][j],sizeof(int),1,out);fread(&M,sizeof(int),1,out);fread(&step,sizeof(int),1,out);printf("\nM=%d\n",M);printf("Game read!\n");fclose(out);return 1;}}void welcome(){printf("\t\t ♀Box It \n");printf("\t\t1:New Game.\n\t\t2:Select Misson.\n\t\t3:Read Record.\n\t\t4:Exit Game.\n Choose-- ");switch(x=getch()){case '1':printf("1:");M=1;choosemap(map,M);break;case '2':printf("2:");printf("1-42 Misson to Choose:");scanf("%d",&M);choosemap(map,M);break;case '3':printf("3:");if(read()==1) printf("\n%d misson opened\n",M);break;case '4':printf("4:Exit Game.\n\n"); break;default:printf("Not 1-4\n");}}void ingame(){while(M<43){playgame(map);step=0;M++;choosemap(map,M);}}文件“Maps.h”如下:int map[14][16];int map0[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map1[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,2,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0}, {0,0,0,1,1,1,3,0,3,2,1,0,0,0,0,0}, {0,0,0,1,2,0,3,4,1,1,1,0,0,0,0,0}, {0,0,0,1,1,1,1,3,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,2,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map2[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0}, {0,0,0,1,4,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,1,0,3,3,1,0,1,1,1,0,0,0,0}, {0,0,0,1,0,3,0,1,0,1,2,1,0,0,0,0}, {0,0,0,1,1,1,0,1,1,1,2,1,0,0,0,0}, {0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0}, {0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0}, {0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map3[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0}, {0,0,0,1,1,3,1,1,1,0,0,0,1,0,0,0},{0,0,0,1,0,2,2,1,0,3,0,1,1,0,0,0}, {0,0,0,1,1,2,2,1,0,0,0,1,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map4[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0}, {0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,1,4,3,0,1,0,0,0,0,0,0,0,0}, {0,0,0,1,1,3,0,1,1,0,0,0,0,0,0,0}, {0,0,0,1,1,0,3,0,1,0,0,0,0,0,0,0}, {0,0,0,1,2,3,0,0,1,0,0,0,0,0,0,0}, {0,0,0,1,2,2,5,2,1,0,0,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map5[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0}, {0,0,0,0,1,4,0,1,1,1,0,0,0,0,0,0}, {0,0,0,0,1,0,3,0,0,1,0,0,0,0,0,0}, {0,0,0,1,1,1,0,1,0,1,1,0,0,0,0,0}, {0,0,0,1,2,1,0,1,0,0,1,0,0,0,0,0}, {0,0,0,1,2,3,0,0,1,0,1,0,0,0,0,0}, {0,0,0,1,2,0,0,0,3,0,1,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map6[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0},{0,1,0,0,0,2,1,1,1,0,1,0,0,0,0,0}, {0,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0}, {0,1,0,1,0,3,0,3,1,2,0,1,0,0,0,0}, {0,1,0,1,0,0,5,0,0,1,0,1,0,0,0,0}, {0,1,0,2,1,3,0,3,0,1,0,1,0,0,0,0}, {0,1,1,0,0,0,0,1,0,1,0,1,1,1,0,0}, {0,0,1,0,1,1,1,2,0,0,0,0,4,1,0,0}, {0,0,1,0,0,0,0,0,1,1,0,0,0,1,0,0}, {0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map7[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0}, {0,0,0,0,0,0,1,1,0,0,1,0,4,1,0,0}, {0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0}, {0,0,0,0,0,0,1,3,0,3,0,3,0,1,0,0}, {0,0,0,0,0,0,1,0,3,1,1,0,0,1,0,0},{0,0,0,0,1,2,2,2,2,2,0,0,1,1,0,0}, {0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map8[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0}, {0,0,0,1,1,2,0,3,1,1,0,1,1,0,0,0}, {0,0,0,1,2,2,3,0,3,0,0,4,1,0,0,0}, {0,0,0,1,2,2,0,3,0,3,0,1,1,0,0,0}, {0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0}, {0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},};int map9[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0}, {0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0}, {0,0,0,1,3,0,1,1,1,0,3,1,0,0,0,0}, {0,0,0,1,0,1,2,2,2,1,0,1,0,0,0,0}, {0,0,1,1,0,1,2,2,2,1,0,1,1,0,0,0}, {0,0,1,0,3,0,0,3,0,0,3,0,1,0,0,0}, {0,0,1,0,0,0,0,0,1,0,4,0,1,0,0,0}, {0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map10[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,1,1,3,3,3,0,1,0,0,0,0}, {0,0,0,0,1,4,0,3,2,2,0,1,0,0,0,0}, {0,0,0,0,1,0,3,2,2,2,1,1,0,0,0,0}, {0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map11[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0}, {0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0}, {0,0,1,0,3,0,1,1,1,1,3,0,0,1,0,0}, {0,0,1,0,0,3,2,2,2,2,0,3,0,1,0,0}, {0,0,1,1,0,0,0,0,1,0,4,0,1,1,0,0}, {0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map12[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,1,1,1,0,0,4,1,0,0,0,0,0}, {0,0,0,0,1,0,0,3,2,0,1,1,0,0,0,0}, {0,0,0,0,1,0,0,2,3,2,0,1,0,0,0,0}, {0,0,0,0,1,1,1,0,5,3,0,1,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map13[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0}, {0,0,0,0,0,1,2,2,1,0,0,0,0,0,0,0}, {0,0,0,0,1,1,0,2,1,1,0,0,0,0,0,0}, {0,0,0,0,1,0,0,3,2,1,0,0,0,0,0,0}, {0,0,0,1,1,0,3,0,0,1,1,0,0,0,0,0}, {0,0,0,1,0,0,1,3,3,0,1,0,0,0,0,0}, {0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map14[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,1,0,3,2,2,3,0,1,0,0,0,0,0},{0,0,0,1,0,3,2,2,3,0,1,0,0,0,0,0}, {0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map15[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0}, {0,0,0,0,1,0,3,0,3,3,0,1,0,0,0,0}, {0,0,0,0,1,2,2,2,2,2,2,1,0,0,0,0}, {0,0,0,0,1,0,3,3,0,3,0,1,0,0,0,0}, {0,0,0,0,1,1,1,0,4,1,1,1,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map16[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0}, {0,0,0,0,0,0,1,0,3,0,0,0,0,1,0,0}, {0,0,0,0,1,1,1,0,3,0,1,1,0,1,0,0}, {0,0,0,0,1,2,2,2,0,3,0,0,0,1,0,0}, {0,0,0,0,1,2,2,2,3,1,3,0,1,1,0,0}, {0,0,0,0,1,1,1,1,0,1,0,3,0,1,0,0}, {0,0,0,0,0,0,0,1,0,0,4,0,0,1,0,0}, {0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map17[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0}, {0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,1,0,3,3,3,1,1,0,0,0,0,0}, {0,0,0,0,1,0,0,1,2,2,1,1,1,0,0,0}, {0,0,0,0,1,1,0,0,2,2,3,0,1,0,0,0}, {0,0,0,0,0,1,0,4,0,0,0,0,1,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map18[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0}, {0,0,0,0,0,1,0,0,0,1,2,0,1,0,0,0}, {0,0,0,0,1,1,0,0,3,2,2,2,1,0,0,0}, {0,0,0,0,1,0,0,3,0,1,5,2,1,0,0,0}, {0,0,0,1,1,0,1,1,3,1,0,1,1,0,0,0}, {0,0,0,1,0,0,0,3,0,0,3,0,1,0,0,0},{0,0,0,1,1,1,1,1,1,1,4,0,1,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map19[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,1,2,2,2,2,0,1,0,0,0,0,0}, {0,0,0,1,1,1,2,2,2,3,1,1,1,0,0,0}, {0,0,0,1,0,0,3,1,3,0,3,0,1,0,0,0}, {0,0,0,1,0,3,3,0,0,1,3,0,1,0,0,0}, {0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0}, {0,0,0,1,1,1,1,0,4,0,1,1,1,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},};int map20[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,1,2,2,3,2,2,1,0,0,0,0,0}, {0,0,0,0,1,2,2,1,2,2,1,0,0,0,0,0}, {0,0,0,0,1,0,3,3,3,0,1,0,0,0,0,0}, {0,0,0,0,1,0,0,3,0,0,1,0,0,0,0,0}, {0,0,0,0,1,0,3,3,3,0,1,0,0,0,0,0}, {0,0,0,0,1,0,0,1,4,0,1,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map21[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,1,0,2,2,2,1,0,0,0,0,0}, {0,0,1,1,1,1,2,2,2,2,1,0,0,0,0,0},{0,0,1,0,3,0,3,0,0,3,3,0,1,0,0,0}, {0,0,1,0,0,3,0,3,0,0,0,0,1,0,0,0}, {0,0,1,4,0,0,1,1,1,0,0,0,1,0,0,0}, {0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map22[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0}, {0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,1,0,1,3,3,0,0,1,0,0,0,0,0,0}, {0,0,1,0,2,2,2,1,0,1,0,0,0,0,0,0}, {0,0,1,1,2,2,2,3,0,1,1,0,0,0,0,0}, {0,0,0,1,0,1,1,0,3,0,1,0,0,0,0,0}, {0,0,0,1,3,0,0,3,0,0,1,0,0,0,0,0}, {0,0,0,1,0,0,1,4,0,0,1,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map23[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0}, {0,0,0,0,1,0,0,0,3,0,3,0,0,1,0,0}, {0,0,0,0,1,0,3,0,0,0,3,0,4,1,0,0}, {0,0,0,0,1,1,1,3,3,1,1,1,1,1,0,0}, {0,0,0,0,0,0,1,0,0,2,2,1,0,0,0,0}, {0,0,0,0,0,0,1,2,2,2,2,1,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map24[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0}, {1,0,0,0,0,1,1,1,0,1,0,0,2,1,0,0}, {1,0,0,3,0,3,0,1,0,1,2,2,2,1,0,0}, {1,0,1,0,0,3,0,1,1,1,0,0,2,1,0,0}, {1,0,0,3,3,3,0,0,0,3,0,4,2,1,0,0}, {1,1,1,0,0,3,0,0,3,1,0,0,2,1,0,0}, {0,0,1,0,0,3,1,3,0,1,2,2,2,1,0,0}, {0,0,1,1,0,0,0,0,0,1,0,0,2,1,0,0}, {0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map25[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0}, {0,0,0,1,1,1,1,1,2,0,0,0,1,0,0,0}, {0,0,0,1,0,0,1,2,2,1,1,0,1,0,0,0}, {0,0,0,1,0,0,3,2,2,0,0,0,1,0,0,0}, {0,0,0,1,0,0,1,0,2,1,0,1,1,0,0,0},{0,0,1,0,3,0,0,0,0,3,3,0,1,0,0,0}, {0,0,1,0,1,3,1,0,0,1,0,0,1,0,0,0}, {0,0,1,4,0,0,1,1,1,1,1,1,1,0,0,0}, {0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map26[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0}, {0,0,1,0,0,0,1,1,0,0,1,1,1,1,0,0}, {0,0,1,0,3,0,0,0,0,0,0,0,0,1,0,0}, {0,0,1,1,3,1,1,1,0,1,1,0,0,1,0,0}, {0,0,1,0,0,1,1,0,5,0,1,0,1,1,0,0}, {0,0,1,0,3,2,2,2,2,2,2,0,1,0,0,0}, {0,1,1,0,1,1,1,0,2,0,1,0,1,0,0,0}, {0,1,0,0,0,0,0,3,1,1,1,3,1,0,0,0}, {0,1,0,0,0,1,0,0,0,0,3,4,1,0,0,0}, {0,1,1,1,1,1,3,1,0,1,1,1,1,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map27[14][16]={{0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0}, {0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0}, {0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0}, {0,0,0,0,0,0,1,0,0,3,0,3,1,0,1,0}, {1,1,1,1,1,1,1,0,0,0,3,0,0,0,1,0}, {1,2,2,1,0,0,1,1,0,3,0,3,1,0,1,0}, {1,2,2,0,0,0,1,1,0,3,0,3,0,0,1,0}, {1,2,2,1,0,0,1,1,0,1,1,1,1,1,1,0}, {1,2,2,1,0,1,0,3,0,3,0,1,0,0,0,0}, {1,2,2,0,0,0,0,0,3,0,0,1,0,0,0,0}, {1,0,0,1,1,1,0,4,0,1,1,1,0,0,0,0}, {1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map28[14][16]={{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0}, {1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0},{1,0,0,0,3,0,0,1,0,1,5,2,5,2,5,1}, {1,1,0,3,0,3,0,1,1,1,2,5,2,5,2,1}, {1,1,3,0,3,0,0,1,0,0,5,2,5,2,5,1}, {1,1,4,3,0,3,0,0,0,0,2,5,2,5,1,1}, {1,1,3,0,3,0,0,1,0,0,5,2,5,2,5,1}, {1,1,0,3,0,3,0,1,1,1,2,5,2,5,2,1}, {1,0,0,0,3,0,0,1,0,1,5,2,5,2,5,1}, {1,0,0,3,0,3,0,1,0,1,1,1,1,1,1,1}, {1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map29[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,1,2,2,2,2,2,2,1,0,0,0,0}, {0,0,0,0,1,0,0,3,0,1,0,1,1,0,0,0}, {0,0,0,0,1,0,3,0,1,0,3,0,1,0,0,0},{0,0,0,0,1,1,3,0,3,0,3,0,1,0,0,0}, {0,0,0,0,0,1,0,0,4,0,0,0,1,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map30[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0}, {0,0,0,1,1,1,0,0,0,2,0,0,0,0,1,0}, {0,0,0,1,0,0,0,1,1,3,1,1,0,0,1,0}, {0,0,0,1,0,4,3,2,0,2,0,2,3,1,1,0}, {0,0,0,1,1,0,3,1,1,3,1,1,0,1,0,0}, {0,0,0,0,1,0,0,0,0,2,0,0,0,1,0,0}, {0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},};int map31[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0}, {0,0,0,0,1,1,1,1,2,0,0,4,1,0,0,0}, {0,0,0,0,1,0,0,3,3,3,0,0,1,0,0,0}, {0,0,0,0,1,2,1,1,2,1,1,2,1,0,0,0}, {0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,3,2,1,0,1,1,0,0,0}, {0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0}, {0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map32[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0},{0,0,0,0,0,1,2,0,3,2,1,0,0,0,0,0}, {0,0,0,0,1,1,1,0,0,3,1,1,0,0,0,0}, {0,0,0,0,1,0,3,0,0,3,0,1,0,0,0,0}, {0,0,0,0,1,0,1,3,1,1,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0,4,0,0,1,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map33[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0}, {0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0}, {0,0,1,0,0,0,1,3,0,0,0,1,1,1,0,0}, {0,0,1,0,0,0,3,0,0,0,3,3,0,1,0,0}, {0,0,1,0,3,3,0,1,3,0,0,0,0,1,0,0}, {0,0,1,1,0,0,0,3,0,0,0,3,0,1,0,0}, {1,1,1,1,1,1,0,1,3,1,1,1,1,1,0,0}, {1,2,2,4,0,1,3,0,0,1,0,0,0,0,0,0}, {1,2,1,2,2,0,0,3,1,1,0,0,0,0,0,0},{1,2,2,2,2,0,0,0,1,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map34[14][16]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0}, {1,0,3,0,1,3,0,1,0,3,1,1,3,0,1,0}, {1,0,1,0,0,3,0,1,0,0,0,0,0,0,1,0}, {1,0,0,0,1,1,3,1,3,1,1,3,3,0,1,0}, {1,0,1,0,1,0,2,2,2,0,1,0,0,0,1,0}, {1,0,3,0,0,2,0,1,0,2,3,0,1,0,1,0}, {1,0,3,1,4,3,2,2,2,1,0,1,0,0,1,0}, {1,0,0,0,0,2,0,1,0,2,0,0,3,0,1,0}, {1,0,1,1,2,3,1,1,1,3,2,0,1,0,1,0}, {1,0,1,0,3,2,2,2,2,2,0,1,1,0,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map35[14][16]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0}, {0,0,0,1,0,1,0,3,0,3,0,1,0,0,0,0}, {0,0,0,1,0,0,5,2,1,0,0,1,0,0,0,0}, {0,0,0,1,1,0,1,2,4,2,1,1,0,0,0,0}, {0,0,0,1,1,3,1,1,1,5,1,1,1,0,0,0}, {0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0}, {0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0}, {0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0}, {0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map36[14][16]={{1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, {1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0}, {1,0,3,3,0,0,0,1,1,1,0,0,0,0,0,0}, {1,0,0,3,0,3,3,3,0,1,1,1,1,1,0,0}, {1,1,0,1,1,0,2,2,2,0,0,0,0,1,1,0}, {0,1,0,1,4,1,2,2,2,1,1,1,3,0,1,0},{1,1,0,1,0,3,2,2,2,3,0,1,0,1,1,0}, {1,0,0,1,1,1,1,1,0,1,1,1,0,1,0,0}, {1,0,0,0,0,0,0,3,0,0,0,3,0,1,0,0}, {1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };int map37[14][16]={{0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0}, {0,1,2,2,1,0,0,0,0,0,0,1,2,2,1,0}, {0,1,2,2,1,1,1,1,1,1,1,1,2,2,1,0}, {0,1,0,3,0,2,2,2,2,2,2,3,2,3,1,0}, {0,1,3,0,3,0,3,0,3,0,3,0,3,0,1,0}, {0,1,0,3,0,3,0,3,4,3,0,3,0,3,1,0}, {0,1,3,0,3,0,3,0,3,0,3,0,3,0,1,0}, {0,1,0,3,0,3,0,3,0,3,0,3,0,3,1,0}, {0,1,3,2,3,2,2,2,2,2,2,0,3,0,1,0}, {0,1,2,2,1,1,1,1,1,1,1,1,2,2,1,0}, {0,1,2,2,1,0,0,0,0,0,0,1,2,2,1,0}, {0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0},。
51单片机相关课程设计
![51单片机相关课程设计](https://img.taocdn.com/s3/m/a9fc083559fafab069dc5022aaea998fcd22406c.png)
51单片机相关课程设计一、课程目标知识目标:1. 理解51单片机的硬件结构,掌握其工作原理;2. 学习并掌握51单片机的指令系统,能进行基本的编程操作;3. 了解并掌握51单片机在嵌入式系统中的应用。
技能目标:1. 能够运用C语言编写简单的51单片机程序,实现基础功能;2. 学会使用仿真软件对51单片机程序进行调试,解决常见问题;3. 能结合实际需求,设计并实现简单的51单片机控制系统。
情感态度价值观目标:1. 培养学生对电子技术及编程的兴趣,激发其创新意识;2. 培养学生团队协作精神,使其在项目实践中学会沟通与分享;3. 强化学生的工程意识,使其认识到技术对社会发展的作用。
课程性质:本课程为实践性较强的课程,旨在帮助学生将理论知识与实际应用相结合,培养其动手能力和创新能力。
学生特点:学生处于高年级阶段,已具备一定的电子技术和编程基础,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,通过项目驱动教学,使学生在实践中掌握知识,提高技能。
同时,关注学生的情感态度价值观培养,引导其形成积极的学习态度和正确的价值观。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 51单片机硬件结构及原理:介绍51单片机的内部结构,包括CPU、存储器、I/O口、定时器等模块,分析其工作原理及相互关系。
相关教材章节:第一章 51单片机概述与硬件结构2. 51单片机指令系统及编程:讲解51单片机的指令集,学习C语言编程基础,编写简单的程序实现基础功能。
相关教材章节:第二章 51单片机指令系统与编程3. 仿真软件使用与程序调试:学习使用Keil、Proteus等仿真软件,进行51单片机程序的编写、编译、调试及下载。
相关教材章节:第三章 51单片机程序开发与调试4. 51单片机应用实例:分析并实践51单片机在嵌入式系统中的应用,如温度控制、灯光调节等。
相关教材章节:第四章 51单片机应用实例5. 课程项目实践:分组进行项目实践,设计并实现一个简单的51单片机控制系统,如智能小车、智能家居等。
单片机推箱子课程设计
![单片机推箱子课程设计](https://img.taocdn.com/s3/m/d6fa696a11661ed9ad51f01dc281e53a59025161.png)
单片机推箱子课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其编程方法和操作流程。
2. 学生能了解推箱子游戏的规则,并将其与单片机技术相结合。
3. 学生能掌握单片机在游戏编程中的应用,如逻辑判断、输入输出控制等。
技能目标:1. 学生能运用C语言或汇编语言进行单片机编程,实现推箱子游戏的运行。
2. 学生能通过编程实践,培养解决问题的能力和团队协作能力。
3. 学生能运用所学知识,设计并制作具有实际应用价值的单片机游戏。
情感态度价值观目标:1. 学生培养对单片机技术及编程的兴趣,激发学习主动性和创新意识。
2. 学生通过团队合作,学会尊重他人意见,培养良好的沟通能力。
3. 学生认识到科技发展对生活的影响,增强社会责任感和使命感。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为实践性课程,旨在让学生通过动手操作,掌握单片机编程技术。
2. 学生特点:学生为初中生,对新鲜事物充满好奇,具备一定的逻辑思维能力,但需加强实践操作能力。
3. 教学要求:注重理论与实践相结合,以学生为主体,教师引导,培养学生自主探究和解决问题的能力。
课程目标分解:1. 知识目标:通过讲解、演示和实验,使学生掌握单片机基本原理、编程方法和操作流程。
2. 技能目标:通过分组合作、实践操作,使学生能独立完成推箱子游戏的编程和运行。
3. 情感态度价值观目标:通过课程学习,培养学生对单片机技术的兴趣,提高团队协作能力和创新意识。
二、教学内容1. 单片机基本原理:介绍单片机的组成、工作原理及性能特点,使学生了解单片机的基础知识。
- 教材章节:第一章 单片机概述- 内容列举:单片机的发展历程、内部结构、指令系统、I/O口控制。
2. 单片机编程语言:学习C语言或汇编语言在单片机编程中的应用,掌握编程基本语法和技巧。
- 教材章节:第二章 单片机编程语言- 内容列举:数据类型、运算符、控制语句、函数、寄存器操作。
3. 单片机操作流程:讲解如何使用开发环境、下载程序、调试运行等操作流程。
基于单片机的推箱子游戏设计
![基于单片机的推箱子游戏设计](https://img.taocdn.com/s3/m/cfe0a602fad6195f312ba630.png)
基于单片机的推箱子游戏设计摘要本论文主要介绍了基于单片机的推箱子游戏的规则、硬件结构、软件代码的编写及工作原理、基于T6963C内核的液晶模块PG160128A的详细介绍以及指令集。
模拟出Windows系统下的推箱子游戏,具有任意关数选择、难度依次加大、游戏步数记录、游戏时间记录、按键发声、系统低功耗、可实现在线调试等特点。
本系统是以单片机为其控制核心,以有源晶振构成的电路作为时钟信号,通过方向键的选择向单片机控制系统发出人物移动控制命令,控制系统接收命令后做出一系列必要的判断后,控制人物及箱子的移动。
本设计已通过了实验仿真,运行稳定,基本上没有规则方面的错误。
论文主要分为两大块:一块为游戏的硬件电路组成部分,一块为软件程序设计部分。
在硬件电路里主要包括有源晶振部分、方向控制部分及液晶显示部分等与单片机的接线设计;软件编程方面主要是子程序和主程序的编写,包括:初始化代码、液晶驱动代码、方向按键代码、过关判断代码、步数记录代码、时间记录代码、按键发声代码、关数选择代码及表格数据代码等等。
所有这些在文中都有详细说明。
关键词:单片机;推箱子;PG160128A;T6963C内核;指令集AbstractThis paper introduces the single-chip based on the rules of the game Sokoban, the structure of hardware, software code writing and working principle, based on the core T6963C LCD module PG160128A, as well as details of the instruction set. Simulate the system under Windows Sokoban game, an arbitrary number of related options, in turn increase the difficulty of the game a few step-by-step record time of the game record, sound button, low-power system can achieve on-line debugging and so on. The system is based on its single-chip control ofthe core, consisting of active crystal clock circuit clock signal sent through the arrow keys to select the single-chip control system to control mobile command characters, the control system after receiving an order to make a Series to determine the necessary, to control the movement of people and boxes. This design has been adopted by the simulation experiments, stable, rules virtually no mistakes.The main thesis is divided into two blocks: one for the game's hardware components of the circuit, as a part of the software programming. In the hardware circuitry, including the main active part of the crystal, the direction and control of some of the liquid crystal display and other parts of the single-chip wiring design; software programming side of the main subroutine is the main program and the preparation, including: initialization code, LCD Driver code, the direction of key code, customs code to determine, step-by-step record of the number of code, record time code, voice button code, customs code and select a number of forms of data code and so on. All of these are in the text in detail.Key words:MCU; Sokoban; PG160128A; T6963C core; instruction set目录摘要............................................................................................................. Abstract..................................................................................................1 前言.......................................................................................................1.1 课题的来源.....................................................................................................1.2 课题研究的意义..............................................................................................1.3 课题国内研究现状.........................................................................................1.4 课题研究的目的和主要内容...........................................................................2 推箱子游戏方案论证...........................................................................2.1 游戏能否在单片机上实现.........................................................................2.2 单片机、液晶屏的选择......................................................................................3 推箱子游戏的硬件部分设计..................................................................3.1 PG160128A液晶屏介绍....................................................................................3.2 T6963C及其指令集介绍...................................................................................3.3 晶振、复位电路.................................................................................................3.4 液晶显示屏与单片机接口电路.........................................................................3.5 控键、喇叭与单片机接口电路...........................................................................4 推箱子游戏的软件部分设计...............................................................4.1 游戏流程图.....................................................................................................4.2 液晶屏驱动代码设计................................................................................4.3 初始化代码设计..........................................................................................4.4 游戏时间代码设计..................................................................................4.5 游戏选关代码设计...................................................................................4.6 步数、关数更新代码设计..................................................................................4.7 游戏过关代码设计...................................................................................4.8 图形显示子程序.........................................................................................4.9 中断代码设计.................................................................................................4.10 方向控制代码设计.......................................................................................5 推箱子游戏的系统仿真..................................................................5.1 Keil2编译环境介绍...................................................................................5.2 Proteus在线仿真平台介绍............................................................5.3 建立工程项目...........................................................................................5.4 Proteus中原理图的绘制及文件的加载....................................................5.5 开机及游戏界面显示........................................................................................5.7 仿真结果分析及解决方法................................................................................6 总结..............................................................................................参考文献............................................................................................致谢....................................................................................................附件………………………………………………………………….1前言1.1课题的来源如今,游戏机风行的程度,是第一台电子游戏机的研制者诺兰?布什纳尔先生始料不及的。
c语言课程设计推箱子
![c语言课程设计推箱子](https://img.taocdn.com/s3/m/ce9be46c0a4c2e3f5727a5e9856a561252d3218f.png)
c语言课程设计 推箱子一、课程目标知识目标:1. 让学生掌握C语言的基本语法和编程结构,特别是数组、循环和条件语句的应用。
2. 使学生理解程序逻辑和算法设计的基本原理,并能将其应用于推箱子游戏的实现中。
3. 帮助学生理解坐标系统和二维数组在表示游戏地图中的应用。
技能目标:1. 培养学生运用C语言编写程序解决实际问题的能力,特别是在逻辑推理和算法实现方面。
2. 提高学生调试程序和解决问题的技巧,通过推箱子游戏的开发,学会逐步测试和优化代码。
3. 增进学生对编程工具的使用,如编译器和调试器,以及版本控制的基本操作。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,通过完成具有挑战性的推箱子游戏,增强学习C语言的信心和动力。
2. 培养学生的团队合作精神,分组合作完成项目,学会在团队中交流和协作。
3. 增强学生的创新意识和实践能力,鼓励学生尝试不同的解决方案,培养独立思考和问题解决的能力。
课程性质:本课程设计为实践性强的综合课题,结合了C语言编程和游戏设计,旨在通过解决实际问题,提高学生的编程能力和逻辑思维。
学生特点:考虑到学生处于高年级,具备一定的C语言基础,有较强的逻辑思维能力,对编程有较高的兴趣。
教学要求:课程设计需注重理论与实践相结合,强调学生的主动参与和动手实践,注重培养学生的自主学习和问题解决能力。
通过推箱子游戏的实现,将目标分解为具体的学习成果,为教学设计和评估提供明确的方向。
二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地掌握C语言编程及相关游戏设计知识。
1. C语言基础语法回顾:包括变量定义、数据类型、运算符、控制结构(如if 语句、循环等)。
- 相关教材章节:第1章至第3章2. 数组和字符串的使用:重点介绍二维数组在表示游戏地图中的应用。
- 相关教材章节:第4章3. 函数的定义与调用:强调模块化编程思想,介绍如何将游戏逻辑分解为多个函数。
- 相关教材章节:第5章4. 算法设计与逻辑推理:介绍推箱子游戏中的算法设计,如深度优先搜索、广度优先搜索等。
推箱子课程设计
![推箱子课程设计](https://img.taocdn.com/s3/m/9ee90d1d32687e21af45b307e87101f69f31fb50.png)
推箱子 课程设计一、课程目标知识目标:1. 学生能理解“推箱子”问题中的基本概念,如位置、路径、障碍物等;2. 学生掌握运用逻辑推理和问题分解的方法解决“推箱子”问题;3. 学生了解算法思维在解决实际问题中的应用。
技能目标:1. 学生能够运用所学知识设计出解决“推箱子”问题的具体步骤和策略;2. 学生通过实际操作,提高问题分析、解决和创新能力;3. 学生学会与他人合作,进行有效的沟通与协作。
情感态度价值观目标:1. 学生在解决“推箱子”问题的过程中,培养耐心、细心和坚持到底的精神;2. 学生体验成功解决问题的喜悦,增强自信心和自我成就感;3. 学生认识到团队合作的重要性,树立团队协作意识。
本课程针对五年级学生,结合他们好奇心强、动手能力逐渐提高的特点,以趣味性的“推箱子”问题为载体,引导学生学习逻辑推理和问题分解的方法。
课程注重培养学生的实际操作能力、创新思维和团队协作精神,使学生能够在轻松愉快的氛围中掌握知识,提高能力。
同时,课程目标具体、可衡量,便于教学设计和评估。
二、教学内容1. 引言:介绍“推箱子”问题的背景和意义,激发学生兴趣;关联教材章节:《信息技术》第五章“问题解决”节。
2. 基本概念:讲解位置、路径、障碍物等基本概念,帮助学生理解问题要素;关联教材章节:《信息技术》第五章“问题解决”节。
3. 算法思维:介绍算法思维在解决“推箱子”问题中的应用,引导学生运用逻辑推理;关联教材章节:《信息技术》第五章“算法与程序设计”节。
4. 问题分解:教授问题分解的方法,指导学生将复杂问题分解为简单问题;关联教材章节:《信息技术》第五章“问题解决”节。
5. 解决策略:讨论并制定解决“推箱子”问题的具体步骤和策略;关联教材章节:《信息技术》第五章“问题解决”节。
6. 实践操作:分组让学生动手操作,解决“推箱子”问题,巩固所学知识;关联教材章节:《信息技术》第五章“实践与探索”节。
7. 团队合作:组织学生进行团队协作,共同解决“推箱子”问题,培养团队精神;关联教材章节:《信息技术》第五章“问题解决”节。
c语言推箱子课程设计
![c语言推箱子课程设计](https://img.taocdn.com/s3/m/e598674953d380eb6294dd88d0d233d4b04e3f1c.png)
c语言推箱子课程设计一、课程目标知识目标:1. 让学生掌握C语言中数组、函数、循环和条件语句的基本使用方法。
2. 使学生了解并理解推箱子游戏的逻辑结构和实现原理。
3. 帮助学生运用C语言编写具有基本功能的推箱子游戏。
技能目标:1. 培养学生分析问题、设计算法和编写程序的能力。
2. 提高学生调试程序、解决问题的实践操作能力。
3. 培养学生团队协作、沟通交流的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养良好的编程习惯。
2. 培养学生面对问题勇于挑战、不断探索的精神。
3. 增强学生的自信心和成就感,培养积极向上的学习态度。
本课程针对初中年级学生,结合C语言推箱子游戏的教学内容,注重培养学生的编程能力和实践操作能力。
课程设计遵循由浅入深、循序渐进的原则,使学生能够在掌握基本知识的基础上,逐步提高编程技能。
同时,课程强调团队合作和沟通交流,培养学生良好的情感态度和价值观。
通过本课程的学习,期望学生能够独立完成推箱子游戏的编写,并在学习过程中形成积极向上的学习态度。
二、教学内容1. C语言基础知识回顾:数组、函数、循环和条件语句的基本概念和使用方法。
相关教材章节:第一章至第四章。
2. 游戏逻辑结构与实现原理:介绍推箱子游戏的规则、地图表示、角色移动及箱子推动等逻辑。
相关教材章节:第六章算法与程序设计。
3. 编程实践:a) 设计游戏地图:数组表示地图,定义障碍物、空地、目标点等。
b) 实现角色移动:编写函数处理角色上、下、左、右移动的逻辑。
c) 箱子推动:编写函数处理角色与箱子的互动,实现箱子推动。
d) 游戏胜利条件判断:编写函数判断游戏是否结束。
相关教材章节:第六章算法与程序设计,第七章函数。
4. 程序调试与优化:介绍调试技巧,指导学生优化程序性能。
相关教材章节:第八章程序调试。
5. 团队合作与展示:学生分组合作完成推箱子游戏,并进行成果展示。
相关教材章节:第九章团队合作与沟通。
教学内容安排和进度:第一周:C语言基础知识回顾,游戏逻辑结构与实现原理介绍。
c推箱子课程设计
![c推箱子课程设计](https://img.taocdn.com/s3/m/135bdf950408763231126edb6f1aff00bfd57016.png)
c 推箱子课程设计一、课程目标知识目标:1. 学生能理解“推箱子”问题在计算机科学中的基本概念,掌握问题分析与解决的基本方法。
2. 学生能掌握运用算法解决问题的步骤,并运用所学编程知识实现推箱子游戏的简单逻辑。
3. 学生了解并掌握顺序结构、循环结构以及条件判断语句在推箱子问题中的应用。
技能目标:1. 学生通过推箱子问题,培养逻辑思维能力和问题解决能力。
2. 学生能够运用所学编程知识,设计并实现推箱子游戏的解决方案。
3. 学生能够通过团队合作,共同分析问题、讨论解决方案,提高沟通与协作能力。
情感态度价值观目标:1. 学生在解决推箱子问题的过程中,培养对计算机科学的兴趣和热情。
2. 学生通过克服困难、解决问题,增强自信心和自主学习能力。
3. 学生在团队合作中,学会尊重他人、倾听他人意见,培养团队精神。
课程性质:本课程为信息技术课程,以实践操作为主,注重培养学生的动手能力和问题解决能力。
学生特点:五年级学生,具备一定的计算机操作能力和编程基础,好奇心强,喜欢探索和挑战。
教学要求:教师需引导学生通过实践探索,掌握解决问题的方法和技巧,关注学生的个体差异,提供个性化指导。
在教学过程中,注重培养学生的团队合作能力和创新精神。
通过本课程的学习,使学生能够将所学知识应用于实际问题的解决中。
二、教学内容1. 引入推箱子游戏,介绍游戏规则和目标,让学生了解问题的基本背景。
- 教材章节:第五章“解决问题的策略”2. 分析推箱子问题的解决策略,引导学生运用顺序结构、循环结构和条件判断语句。
- 教材章节:第三章“程序的控制结构”3. 讲解编程实现推箱子游戏的基本步骤,包括地图表示、角色移动、碰撞检测等。
- 教材章节:第四章“算法与程序设计”4. 分组讨论,让学生在小组内共同设计推箱子游戏的解决方案。
- 教材章节:第六章“计算机科学与团队合作”5. 学生上机实践,根据设计方案编写程序,实现推箱子游戏的简单逻辑。
- 教材章节:实验指导手册“项目实践”6. 课堂展示与评价,让学生展示自己的作品,分享编程经验,互相学习。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《51单片机》课程设计题目:基于51单片机的推箱子游戏设计目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、Proteus仿真原理图 (7)5、程序设计 (9)6、调试总结 (28)7、设计心得体会 (28)参考文献 (29)附录:程序代码------------------------------------------------------------------291、课程设计目的《MCS-51单片机》课程设计是与《MCS-51单片机》课程相配套的实践教学环节。
《MCS-51单片机》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。
培养大胆发明创造的设计理念,为今后就业打下良好的基础。
通过课程设计,掌握以下知识和技能:1.单片机应用系统的总体方案的设计;2.单片机应用系统的硬件设计;3.单片机应用系统的软件程序设计;4.单片机开发系统的应用和调试能力2、课程设计题目和实现目标2.1 课程设计题目:基于51单片机的推箱子游戏设计2.2实现目标设计一款在以51单片机为核心的硬件系统中运行的推箱子游戏。
游戏一共9关,功能包括:(1)显示游戏开机界面和游戏界面;(2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,通过小人推动箱子,把箱子推到指定的目的地为过关,箱子只能推不能拉;(3)用于可以任意选关,并能随时退出、进入游戏;(4)每一关都有时间计时,显示当前玩家的游戏耗时。
3、设计方案根据设计目标,整个系统框图如下:图1 系统框图3.1 控制模块选用ATMEL公司生产的AT89C52为主控芯片,它是是一个低电压,高性能CMOS 8位单片机,主要功能特性如下:1、兼容MCS51指令系统;2、8k可反复擦写(大于1000次)Flash7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;本次课设选用PDIP封装的 AT89C52芯片,其引脚功能如图2所示,图3为最小系统:图2 引脚功能图3 最小系统U1:AT89C52,DIPf封装;C1,C2:22pf瓷片电容C3:10uf电解电容;X1:12M晶振R1:10K金属膜电阻3.2 显示模块选用内置T6963C控制控制器的12864图形点阵液晶(以下简称Lcd12864)做为显示模块。
T6963C控制器的最大特点具是有硬件初始值设置功能,显示驱动所需的参数,例如:占空比系数、每行驱动传输的字节数、字符的字体选择等均由引脚电平设置。
所以,液晶显示模块在上电时T6963C控制器就进行初始化设置,软件操作的主要精力就可以全部用于显示界面的设计上。
市场上出售此控制器的液晶很多,本次课设选用深圳市晶日达科技有限公司生产KXM12864F.LCD12864和单片机以模拟方式连接,即通过模拟操作时序的方法控制液晶显示。
具体的接线图如图4所示图4 显示模块RP1:1k排阻,用于做P0口的上拉电阻;LCD1:KXM12864F3.3按键模块16个轻触按键连接成4*4矩阵键盘,做为按键模块,如图5所示图5 4*4矩阵键盘最终系统的硬件系统如下:图6 硬件系统4、Proteus仿真原理图在proteus搭建的仿真原理图如下:图7 硬件系统图8 开机画面图9 游戏画面图10 游戏画面5.程序设计5.1 Lcd12864显示驱动程序图11 读写指令/数据时序图准备向Lcd12864进行操作时,首先要读取lcd12864的当前的状态,只有lcd12864不忙的时候才能读写操作和数据。
相关程序如下:/**************************************************函数名:status_bit_01()功能:状态位sta1(读/写指令),sta0(读/写数据)判断入口参数:返回值:状态值i***************************************************/unsigned char status_bit_01(){unsigned char i;P0=0xff;cd=1;rd=0;for(i=10;i>0;i--){if((P1&0x03)==0x03)break;}rd=1;return i;}/*********************************************函数名:write_data(unsigned char dat)功能:写数据入口参数:8位数据dat返回值:*********************************************/void write_data(unsigned char dat){while(status_bit_01()==0);rd=1;cd=0;wr=0;P0=dat;wr=1;cd=1;}/*********************************************函数名:write_cmd1(unsigned char cmd)功能:写命令,无参数入口参数:8位命令cmd返回值:*********************************************/void write_cmd1(unsigned char cmd){while(status_bit_01()==0);rd=1;cd=1;wr=0;P0=cmd;wr=1;cd=0;}/*********************************************函数名:write_cmd2(unsigned char cmd)功能:写单参数命令入口参数:8位数据dat,8位命令cmd返回值:*********************************************/void write_cmd2(unsigned char dat,unsigned char cmd){write_data(dat);write_cmd1(cmd);}/************************************************函数名:write_cmd2(unsigned char cmd)功能:写双参数命令入口参数:8位数据data1,8位数据data2,8位命令cmd返回值:*************************************************/void write_cmd3(unsigned char data1,unsigned char data2,unsigned char cmd) {write_data(data1);write_data(data2);write_cmd1(cmd);}图12 为Lcd12864的指令集,向Lcd12864写入相关的指令,即可控制其显示。
图12 Lcd12864的指令集使用液晶前必须对其进行初始化操作,初始化的内容包括光标指针设置,图形区首地址,图形区宽度,显示方式设置,图形方式显示,标形状设置。
相关程序如下:/************************************************函数名:init_12864()功能:初始化lcd12864入口参数:返回值:*************************************************/void init_12864(){wr=1;rd=1;cd=1;rst=1;//初始化write_cmd3(0x01,0x00,0x21);//光标指针设置write_cmd3(0x00,0x00,0x42);//图形区首地址write_cmd3(16,0x00,0x43);//图形区宽度write_cmd1(0x88);//显示方式设置,正常显示write_cmd1(0x98);//图形方式显示,不显示字母,只打点write_cmd1(0xa0);//光标形状设置1 0 1 0 0 N2 N1 N0}5.2 按键扫描程序初始P1的电平为0x0f,当有按键下时,电平发生变化,开始程序开始扫描判断哪个按键被按下,并返回按键号,相关程序如下:/********************************函数名:keys_scan()功能:按键扫描入口参数:返回值:按键号keyno*********************************/unsigned char keys_scan(){unsigned char tmp;unsigned char keyno;if(P1 != 0x0f){P1 = 0x0f;delayms(1);tmp = P1 ^ 0x0f;switch(tmp){case 1: keyno = 0;break;case 2: keyno = 1;break;case 4: keyno = 2;break;case 8: keyno = 3;break;default:keyno = 16;}P1 = 0xf0;delayms(1);tmp = (P1 >> 4)^ 0x0f;switch(tmp){case 1:keyno += 0;break;case 2:keyno += 4;break;case 4:keyno += 8;break;case 8:keyno += 12;break;}P1=0x0f;return keyno;}}5.3 游戏元素设计出现在显示画面中的游戏元素总共有6种:墙壁,箱子,小人,目的地,空白,箱子在目的地。
每个元素在液晶上以一个字符显示,即8×8的点阵。
在字模提取软件设计各个元素,并获得元素的显示码。
显示码的每8位构成字符的一行,8就行有8个字节。
其中1表示该点显示,0表示该点不显示。
图13-是在字模提取软件设计的各个元素,图13 小人图14 墙壁图15 箱子图16 目的地图17 箱子在目的地图18空白定义一个二维数组elements[][8],存储这些点阵信息。
其中第一个地址为元素代号unsigned char code elements[][8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //0空白0x3C,0x7E,0x66,0x3C,0x7E,0x99,0x3C,0x66, //1人物0x7F,0x7F,0x7F,0x00,0xEF,0xEF,0xEF,0x00, //2砖头0xFF,0xC3,0xA5,0x99,0x99,0xA5,0xC3,0xFF, //3箱子0x00,0x18,0x24,0x4A,0x52,0x24,0x18,0x00, //4目标0xFF,0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF, //5箱子到达目标};5.4元素的显示由于T6963c液晶是按以列1字符(8点),行1点来定位的,所以显示时,要先定位显示字符位的列字符和行字符首地址,即行*0x80+列;再定义一个循环变量i,从0,到7,定位该字符位的8个点行,即行*0x80+列+i*0x10,定位到每个点行后,写入对应的元素字节,即elements[元素代号][i],就可以在液晶的指定字符位置上显示该元素了。