首页资源分类嵌入式处理器51内核 > 贪吃蛇设计

贪吃蛇设计

已有 445491个资源

下载专区

上传者其他资源

文档信息举报收藏

标    签:贪吃蛇

分    享:

文档简介

51单片机12864贪吃蛇

文档预览

吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 吴鉴鹰12864系列(连载)之基于12864的贪吃蛇游戏的设计详精讲 这一连的几讲内容,鹰哥会向大家介绍贪吃蛇的设计思路,设计方法以及程 序的编写,向大家详细介绍贪吃蛇的设计思路,让大家对如此神秘的贪吃蛇有深 入的认识! 这是鹰哥大学的时候做的贪吃蛇游戏(图片1) QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 贪吃蛇介绍: 鹰哥首先来给大家介绍一下贪吃蛇,贪吃蛇是世界知名的益智类 小游戏,鹰哥选择这个项目的原因是为了将我们自己的所学知识加以运用;另一 方面,虽然我们很小就接触这个游戏,那时候用设计玩,觉得很有意思,但是它 的制作方法对我们而言还是很神秘的。鹰哥希望通过自己的所学知识把它剖析开 来,通过自己的动手实践,真正的了解它的本质和精髓。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 这是鹰哥大学的时候做的贪吃蛇游戏(图片2) 希望通过这次实践,大家能从中提高自己的编程能力。并从中学会从零开始分析 设计程序。 在以下一些列的章节中,会详细介绍贪吃蛇设计的每一个环节,对于大家如果有 更好的方法或者建议,吴鉴鹰欢迎大家提供! QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 游戏整体流程:这个游戏流程图描述了整个游戏的总体运行过程。在开始游戏后 对蛇与食物重绘,以及屏幕上的相关信息绘制。当蛇碰到石头或是咬到自己,就 捕捉异常,游戏就结束。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 游戏规则:游戏中玩家可以通过键盘控制游戏中的贪吃蛇的运动,当蛇头碰到系 统产生的食物时加长蛇身。当蛇碰到石头或者自己的身体时,游戏结束。游戏玩 家还可以通过鼠标来控制蛇的移动。 游戏规则: 1、 玩家通过键盘控制蛇在游戏区中运动; 2、 当蛇头碰到食物时,得分增加,蛇身增长一个单位; 3、 当蛇头碰到蛇身或者石头,游戏结束; 要求实现以下功能: 玩家可以通过按键来控制贪吃蛇吃食物,游戏过程中还配有音效渲染气氛。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 游戏设计思路:贪吃蛇游戏是一款非常经典的游戏,已经有很多版本的贪吃蛇游 戏,游戏的玩法各版本大体相同。以下是本课题的贪吃蛇游戏设计的一些简单的 说明: 1、 先设置一个主控面板; 2、 依次向面板中添加蛇,食物,石头; 3、 设法引导贪吃蛇吞掉食物以使它变得更长; 4、 添加监听程序,通过方向键来改变蛇的运动方向; 5、 添加监听程序,通过按键来改变蛇的运动方向; 6、 蛇不能吃到石头或是自己的身体,如果吃到石头或者自己的身体,游戏结束; 7、 蛇吃食物或者死掉的时候都有特定的音效产生,我们这里由于没有蜂鸣器, 所以这个程序没加,感兴趣的读者可以自己加上去试试! QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 算法中的基本概念: 节:一条蛇可以看成由许多圆拼凑成,把它称作节。节是贪吃蛇身上最小的单位。 坐标系:坐标以左上角那点为(0,0),向右则 x 递增,向下则 y 递增。 链表:用来保存每一节的状态,链表的第一个元素表示蛇的头部结点。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 蛇、石头、食物的表示: 我们可以把显示区域想象成一个大大的表格,里面的格子就是组成蛇的基本单 位,一个格子可以代表一个食物,也可以代表一个石头,几块连在一起的石头就 可以代表一条蛇。使用坐标来区分这些格子。 这里我们用一个集合来存储这些坐标,并且要求能够区分出蛇头和蛇尾。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 蛇的移动: 蛇向前移动一步,可以看作是蛇头前面增加了一个节点,蛇的尾巴上少了一个节 点(即去尾,加头) 存储蛇身的数据结构 由于要区分蛇头和蛇尾,我们必须用一个有顺序的数组表示,另一方面,我们需 要经常的访问第一个和最后一个节点。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 蛇的移动方向 这里讨论蛇的移动方向控制。 蛇下一步移动到哪里,是由方向来控制的。 这里我们用 int 型常量来表示蛇的移动方向。 因为我们是根据原蛇头的坐标和方向来确定新蛇头的坐标。在原坐标的基础上, 根据蛇头的运动方向来确定新蛇头的坐标,比如向上移动就是 y-1. 如何显示蛇身 显示蛇身,其实就是填充用颜色填充格子。 需要4个参数,像素坐标 x,像素坐标 y,格子宽度,格子高度。 像素坐标就是矩形左上角的坐标 蛇身的移动方向 1 相反方向 和上一次移动的方向相反的方向称为相反方向,这种输入应该忽略。这样可以防 止蛇从自己的身体中穿过。 2 无效方向 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个非相反方 向,只有最后一个是有效方向,其他的都是无效方向。 蛇的最终运动方向以有效方向为准。 吃到食物判定 这里通过判定坐标是否重合来判断,只需要判断蛇头是否和食物重合就可以了, 因为蛇的身体都是走蛇头走过的地方。 这是程序的设计思路: (1) 初始化蛇的相关信息; (2) 初始化食物的相关信息; (3)输出初始化分数; (4)当玩家没有按“ESC”键时,一直重复以下各步; (5) 当玩家不按任何键时,一直重复 6—13 各步骤; (6) 在屏幕画出食物; (7) 计算出蛇的每一节在屏幕中的位置; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: (8) 根据蛇的移动方向,计算出下一步蛇头的坐标位置; (9) 判断蛇头是不是撞上了自己的身体的任何一节,如果是,游戏结束; (10) 判断蛇头是不是撞到饿了任何一面的墙壁了,如果是,游戏结束; (11) 若(9)(10)都未发生,说明蛇活着,判断蛇是否吃到了食物,如果吃 到了食物,则要先清除食物,并设置下一个食物的出现;同时,还要将蛇的身体 增长一节;屏幕显示的分数还要增加。 (12) 将蛇在屏幕显示,然后游戏延迟一会儿,给玩家一点反应时间; (13) 蛇在移动的过程中,蛇头不断前进,末尾一节不断清除,这样才能保证 蛇在移动的过程中的正确性; (14)当玩家按下一个键时,接收该按键,并判断是不是“ESC”;如果是,则 退出游戏,如果不是则进行(15)步的判断;(15) 判断当前按键的方向是否 与蛇头的方向相反,如果相反,则不做处理,因为蛇是不会退的,只要不是相反 的,则就改变蛇的移动方向。回到(14)步去执行,一直循环往复,直到游戏结 束。 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /****************************************************** **作品:LCD12864 贪吃蛇设计 ** ** 这一讲的主要内容: LCD12664 液晶显示原理 ** 功能描述: 对吴鉴鹰贪吃蛇设计的显示 ** 输 入: ** 液晶:Proteus 元件库—AMPIRE128X64(无字库) ** 内容:LCD12864 俄罗斯方块设计 ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.9 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: **作者所属单位:鉴鹰电子工作室 **交流 QQ 群: 第一群: 332164870 第二群:194314772 联系 QQ:1123942529 **申明:转载请标明作品来源 知识产权归作者吴鉴鹰所有! 备注:有什么错误的地方,欢迎各大烧友指正 O(∩_∩)O~ *******************************************************/ #include #include #include #include #define uchar unsigned char #define uint unsigned int //宏定义 */ #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; /************************************* ** 模块名称:LCD12864 端口定义 ** 作用:定义液晶屏 IO 口的定义 ** LCD_RS_OUT 为 0---命令;1----数据 ** LCD_RW_OUT 为 1---写;0---读 ** LCD_E_OUT 使能端 ** LCD_CS1_OUT 片选 1 低电平有效,控制左半屏 ** LCD_CS2_OUT 片选 1 低电平有效,控制右半屏 *************************************/ sbit LCD_E_OUT = P2^0; sbit LCD_RW_OUT = P2^1; sbit LCD_RS_OUT = P2^2; sbit LCD_CS2_OUT = P2^3; sbit LCD_CS1_OUT = P2^4; #define LCD_12864_DATA P0 uchar code NUM0[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 00};/*"0",0*/ uchar code NUM1[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x 00};/*"1",0*/ uchar code NUM2[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x 00};/*"2",0*/ uchar code NUM3[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x 00};/*"3",0*/ uchar code NUM4[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x 00};/*"4",0*/ uchar code NUM5[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x 00};/*"5",0*/ uchar code NUM6[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x 00};/*"6",0*/ uchar code NUM7[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x 00};/*"7",0*/ uchar code NUM8[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0 x00};/*"8",0*/ uchar code NUM9[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x 00};/*"9",0*/ uchar code GAME_OVER[]= { 0x00,0x20,0x44,0x08,0x20,0xE0,0x92,0x94,0x10,0x28,0xAE,0x68,0x24,0x04,0x00,0x00, 0x00,0x0C,0x03,0x04,0x02,0x19,0x0C,0x03,0x02,0x12,0x22,0x1F,0x01,0x01,0x01,0x00,/*" 游 ",0*/ 0x00,0x20,0xA0,0x90,0x10,0xF0,0x00,0x40,0x7F,0xC0,0x20,0x24,0x88,0x00,0x00,0x00, 0x10,0x08,0x04,0x02,0x01,0x02,0x14,0x10,0x08,0x05,0x06,0x09,0x10,0x20,0x38,0x00,/*" 戏 ",1*/ 0x00,0x60,0x50,0xCC,0x40,0x30,0x40,0x40,0x40,0xFE,0x20,0x20,0x20,0x20,0x00,0x00, QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 0x00,0x12,0x13,0x0A,0x09,0x05,0x00,0x3A,0x2A,0x25,0x25,0x15,0x1D,0x00,0x00,0x00,/*" 结 ",2*/ 0x00,0x00,0x00,0x60,0xA8,0xA8,0xA8,0xFF,0x94,0x54,0x70,0x00,0x00,0x00,0x00,0x00, 0x10,0x10,0x08,0x08,0x04,0x02,0x01,0x7F,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x00 /*" 束 ",3*/ }; uchar code TCS_TAN[]= { 0x20,0x20,0x10,0x90,0xA8,0xA4,0xAA,0xB1,0xA2,0xE4,0xA8,0x88,0x10,0x30,0x10,0x00, 0x00,0x00,0x80,0x9F,0x40,0x20,0x10,0x0E,0x10,0x20,0x60,0xDF,0x00,0x00,0x00,0x00,/*" 贪 ",0*/ }; uchar code TCS_CHI[]= { 0x00,0xFC,0x04,0x04,0xFC,0x20,0x58,0x4F,0x4A,0x48,0x48,0xC8,0x08,0x08,0x08,0x00, 0x00,0x0F,0x02,0x02,0x07,0x00,0x30,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0x70,0x00/*" 吃 ",1*/ }; uchar code TCS_SHE[]= { 0x00,0xF0,0x10,0xFF,0x10,0xF0,0x20,0x18,0xE8,0x09,0x0E,0x0A,0xA8,0x18,0x08,0x00, 0x20,0x23,0x21,0x1F,0x11,0x3B,0x10,0x00,0x3F,0x42,0x41,0x41,0x40,0x38,0x00,0x00/*" 蛇 ",2*/ }; uchar code WJYZZ[]= { /*-- 文字: 吴 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0x80,0x9E,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x9E,0x80,0x00,0x00,0x00, 0x84,0x84,0x44,0x44,0x24,0x14,0x0C,0x07,0x0C,0x14,0x24,0x44,0x44,0x84,0x84,0x00, /*-- 文字: 鉴 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0x3E,0x00,0x80,0xBF,0x40,0x20,0x58,0x87,0x84,0x0C,0x34,0x04,0x00,0x00, 0x02,0x42,0x49,0x49,0x5A,0x6A,0x4A,0x7E,0x4A,0x6A,0x5A,0x49,0x49,0x42,0x02,0x00, /*-- 文字: 鹰 --*/ QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0xFE,0x22,0x12,0xFA,0x26,0x12,0xFB,0xAE,0xAA,0xFE,0xAA,0xAA,0x02,0x00, 0x40,0x30,0x0F,0x40,0x40,0x5E,0x52,0x53,0x56,0x52,0x1A,0x56,0x90,0x70,0x00,0x00, /*-- 文字: 制 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00, 0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00, /*-- 文字: 作 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00, 0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00, }; uchar code wnl[]= {0x00,0x02,0x02,0x02,0x02,0x82,0x7E,0x22,0x22,0x22,0x22,0xF2,0x22,0x02,0x02,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x20,0x60,0x20,0x1F,0x00,0x00,0x00,0x00,/*" 万 ",0*/ 0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00, 0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,/*" 年 ",1*/ 0x00,0x00,0xFE,0x02,0x22,0x22,0x22,0x22,0xFA,0x22,0x22,0x22,0xE2,0x02,0x02,0x00, 0x40,0x30,0x0F,0x00,0x40,0x20,0x18,0x06,0x01,0x00,0x20,0x60,0x3F,0x00,0x00,0x00};/*" 历 ",2*/ uchar code moxing[]= {0x10,0x21,0x20,0x11,0x10,0x21,0x20,0x11,0x10,0x21,0x20,0x11,0x10,0x21,0x20,0x11, 0x11,0x12,0x10,0x13,0x01,0x31,0x11,0x21,0x11,0x12,0x10,0x13,0x01,0x31,0x11,0x21, 0x01,0x21,0x10,0x11,0x11,0x21,0x10,0x12,0x00,0x20,0x10,0x11,0x01,0x11,0x10,0x12, 0x10,0x21,0x20,0x22,0x01,0x21,0x20,0x11,0x11,0x22,0x10,0x12,0x10,0x30,0x20,0x11, 0x11,0x20,0x10,0x12,0x00,0x20,0x10,0x21,0x12,0x21,0x20,0x22,0x11,0x31,0x10,0x21, 0x11,0x21,0x10,0x22,0x01,0x20,0x10,0x11,0x11,0x21,0x10,0x22,0x01,0x20,0x10,0x11, 0x11,0x21,0x20,0x12,0x10,0x31,0x20,0x21,0x11,0x21,0x20,0x12,0x10,0x31,0x20,0x21 }; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: uchar code WJYW[]= { /*-- 文字: 吴 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0x80,0x9E,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x9E,0x80,0x00,0x00,0x00, 0x84,0x84,0x44,0x44,0x24,0x14,0x0C,0x07,0x0C,0x14,0x24,0x44,0x44,0x84,0x84,0x00, }; uchar code WJYJ[]= { /*-- 文字: 鉴 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0x3E,0x00,0x80,0xBF,0x40,0x20,0x58,0x87,0x84,0x0C,0x34,0x04,0x00,0x00, 0x02,0x42,0x49,0x49,0x5A,0x6A,0x4A,0x7E,0x4A,0x6A,0x5A,0x49,0x49,0x42,0x02,0x00, }; uchar code WJYY[]= { /*-- 文字: 鹰 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0xFE,0x22,0x12,0xFA,0x26,0x12,0xFB,0xAE,0xAA,0xFE,0xAA,0xAA,0x02,0x00, 0x40,0x30,0x0F,0x40,0x40,0x5E,0x52,0x53,0x56,0x52,0x1A,0x56,0x90,0x70,0x00,0x00, }; uchar code WJYZH[]= { /*-- 文字: 制 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00, 0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00, }; /*uchar code WJYZZ[]= { /*-- 文字: 作 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /*0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00, 0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00, }; */ uchar code WWJJYYJ[]= { /*-- 文字: 鉴 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0x3E,0x00,0x80,0xBF,0x40,0x20,0x58,0x87,0x84,0x0C,0x34,0x04,0x00,0x00, 0x02,0x42,0x49,0x49,0x5A,0x6A,0x4A,0x7E,0x4A,0x6A,0x5A,0x49,0x49,0x42,0x02,0x00, }; uchar code WWJJYYY[]= { /*-- 文字: 鹰 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0xFE,0x22,0x12,0xFA,0x26,0x12,0xFB,0xAE,0xAA,0xFE,0xAA,0xAA,0x02,0x00, 0x40,0x30,0x0F,0x40,0x40,0x5E,0x52,0x53,0x56,0x52,0x1A,0x56,0x90,0x70,0x00,0x00, }; uchar code WWJJYYD[]= { /*-- 文字: 电 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00, 0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00, }; uchar code WWJJYYZ[]= { /*-- 文字: 子 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: uchar code WWJJYYG[]= { /*-- 文字: 工 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, }; uchar code WWJJYYZ1[]= { /*-- 文字: 作 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00, 0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00, }; uchar code WWJJYYS[]= { /*-- 文字: 室 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x10,0x0C,0x24,0x24,0xA4,0x64,0x25,0x26,0x24,0x24,0xA4,0x24,0x24,0x14,0x0C,0x00, 0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4B,0x48,0x40,0x40,0x00, }; uchar code WWJJYYW[]= { /*-- 调入了一幅图像:C:\Users\Administrator\Desktop\624814_225502035_2.bmp --*/ /*-- 宽度 x 高度=16x16 --*/ 0xE0,0x18,0x0C,0x06,0x53,0xE9,0x49,0x01,0x01,0x49,0xE9,0x53,0x06,0x0C,0x38,0xF0, 0x0F,0x18,0x30,0x60,0x46,0xCC,0x98,0x98,0x98,0x98,0xCC,0xC6,0x60,0x30,0x18,0x0F, }; uchar code WWJJYYWXTP[]= { /*-- 调入了一幅图像:C:\Users\Administrator\Desktop\624814_225502035_2.bmp --*/ /*-- 宽度 x 高度=16x16 --*/ 0xF0,0x18,0x0E,0x06,0x43,0xE9,0x49,0x01,0x01,0x49,0xE9,0x43,0x06,0x0C,0x38,0xF0, 0x0F,0x18,0x37,0x6F,0x5E,0xDC,0xB8,0xB8,0xB8,0xB8,0xDC,0xDE,0x6F,0x37,0x18,0x0F, QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: }; /****************************************************************** ** 标题:鉴鹰电子欢乐多啊 ** 功能:数组 *****************************************************************/ uchar code WWJJYYHH[] = { /*-- 文字: 欢 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x04,0x24,0x44,0x84,0x64,0x9C,0x40,0x30,0x0F,0xC8,0x08,0x08,0x28,0x18,0x00,0x00, 0x10,0x08,0x06,0x01,0x82,0x4C,0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x40,0x80,0x00, }; uchar code WWJJYYLE[]= { /*-- 文字: 乐 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0x80,0x00,0x00, 0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00, }; uchar code WWJJYYDUO[]= { /*-- 文字: 多 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0x00,0x10,0x10,0x98,0xA4,0x47,0x44,0xA4,0x54,0x0C,0x04,0x00,0x00,0x00,0x00, 0x00,0x81,0x89,0x89,0x44,0x44,0x4A,0x31,0x21,0x11,0x09,0x05,0x03,0x00,0x00,0x00, }; uchar code WWJJYYAA[]= { /*-- 文字: 啊 --*/ /*-- 楷体_GB231212; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0xFC,0x04,0xFC,0x00,0xFE,0x42,0xBE,0x00,0xF2,0x12,0xF2,0x02,0xFE,0x02,0x00,0x00, 0x0F,0x04,0x0F,0x00,0xFF,0x10,0x0F,0x00,0x0F,0x04,0x4F,0x80,0x7F,0x00,0x00,0x00, }; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: uchar code table[]={/*-- 调入了一幅图像: C:\Users\Administrator\Desktop\7308055_142022128173_2.bmp --*/ /*-- 宽度 x 高度=128x64 --*/ 0xFF,0x7F,0x7F,0xFF,0xF7,0xC3,0x87,0x07,0x0F,0x1F,0x1F,0x3F,0x7F,0x7F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF, 0xFF,0x7F,0x7F,0x3F,0x1F,0x1F,0x0F,0x87,0x87,0xC3,0xE1,0x7F,0x7F,0x7F,0xBF,0xFF, 0xFF,0xFF,0xF6,0xF6,0xA4,0xA4,0xA5,0xA1,0x81,0x80,0x80,0x00,0x00,0x00,0x00,0x00, 0x01,0x01,0x03,0x03,0x00,0x03,0x07,0x07,0x0F,0x1F,0x0F,0x0F,0x1F,0x1F,0x3F,0x3F, 0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F, 0x3F,0x1F,0x1F,0x0F,0x0F,0x07,0x0F,0x0F,0x07,0x03,0x01,0x00,0x02,0x01,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x81,0x81,0xC0,0xD0,0xD4,0xD2,0xD2,0xFB,0xFB,0xFB,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xF8,0xF0, 0xF0,0xE0,0xC0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x03,0x07,0x07,0x0F,0x0F,0x1F,0x1F,0x3F, 0x7F,0x7F,0xFF,0xFF,0xFF,0xCF,0xEF,0xEF,0xC7,0x47,0x07,0x07,0x17,0x07,0x07,0x07, 0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x3F,0x1F,0x0F, 0x07,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,0xF0,0xF0, 0xF0,0xF8,0xFC,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFC,0xFC,0xF8,0xF0,0xF0, 0xF0,0xE0,0xE0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0x80,0xA0,0xE0,0xE0,0xE0,0xE0,0xF0, 0xF0,0xF8,0xF8,0xFC,0xFC,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD, 0xFE,0xFE,0xFE,0xDC,0xDE,0xEC,0x8C,0xEC,0xE6,0x80,0xF0,0xF0,0xF0,0xE0,0xE0,0xE0, 0xE0,0xE0,0xE0,0xB0,0xD8,0xE0,0x80,0x8E,0xEC,0xDC,0xFE,0xFC,0xFE,0xFE,0xFE,0xFE, 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0x3F,0x3F,0xFF,0x3F, 0x3F,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, 0xBF,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F, 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F, 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F, 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F,0xBF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x7F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x98,0xD8,0x9F,0x88,0xA0,0x31,0x24, 0xAE,0x88,0xD2,0x96,0x9E,0xBE,0xFF,0xFF,0xFF,0xFF,0x00,0xFB,0xE1,0x20,0x39,0x20, 0x40,0x02,0xA0,0x20,0x22,0xA2,0xEE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x76,0x76,0x00, 0x00,0x76,0x76,0x76,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xEF,0xEF,0xEF,0xEF, 0xEF,0x03,0x01,0xEC,0xEE,0xEE,0xEF,0xEF,0xEF,0xFF,0xFF,0xFF,0xFE,0xF2,0x26,0x06, 0x00,0x76,0xF1,0x70,0x06,0x06,0x36,0xF0,0xF8,0xFE,0xFF,0xFF,0xFF,0xFF,0xE3,0x60, 0x28,0x2F,0xAF,0x00,0x00,0xEF,0xAF,0x2F,0x6F,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF,0xCD, 0x4C,0x6E,0x2C,0x81,0x53,0x03,0x41,0xCC,0x5E,0x1F,0x9F,0xDF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFB,0xFA,0xF8,0xF8,0xFA,0xF8,0xF8, 0xFA,0xF8,0xF8,0xFA,0xFB,0xFB,0xFF,0xFF,0xFF,0xF8,0xF8,0xFB,0xFB,0xFA,0xFA,0xFA, 0xFA,0xFA,0xFA,0xFA,0xF6,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xF8, 0xF8,0xFB,0xFB,0xFB,0xFB,0xFB,0xF9,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB, 0xFB,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFC,0xFE,0xFF, 0xFB,0xFA,0xF9,0xFC,0xFE,0xFF,0xFE,0xFC,0xF9,0xFB,0xFF,0xFF,0xFF,0xFD,0xFC,0xFC, 0xFE,0xFB,0xF3,0xF8,0xF8,0xFF,0xFF,0xFF,0xFE,0xFC,0xFD,0xFF,0xFF,0xFF,0xFF,0xF3, 0xF3,0xFB,0xFB,0xFB,0xF9,0xF8,0xFC,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; uchar k,DIR_NUM_FLAG; bit KEY_FLAG; bit KEY_FLAG5=0; 步进标志 //KEY_FLAG5 是外部中断 1 的标志位 KEY_FLAG1 是 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: uchar p,SNAKE_GRADE_NUM; bit KEY_FLAG1=0; //systemtime realtime; bit first=1; //中断次数控制 //定时次数 /**************************************************************************** ** 函数名称: void delay1ms(uint k) ** 功能描述: 1ms 延时程序 ** 输 入: uint k(需要延时的数量) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void delay1ms(uint k) { k=k*125; while(k--); } /****************************************************************************** ************* ** 函数名称: void Delay_S(void) //延时 1s 误差 0us ** 功能描述: 精确延时函数,延时 1 秒,软件算得 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void Delay_S(void) //延时 1s 误差 0us { unsigned char a,b,c; for(c=167;c>0;c--) for(b=171;b>0;b--) for(a=16;a>0;a--); _nop_(); //if Keil,require use intrins.h } /**************************************************************************** ** 函数名称: void chekbusy12864(void) ** 功能描述: 12864 判忙函数 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void chekbusy12864(void) { uchar dat; EX0=0; LCD_RS_OUT=0; LCD_RW_OUT=1; do{ P0=0x00; // //指令模式 //读数据 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: LCD_E_OUT=1; dat=P0&0x80; LCD_E_OUT=0; }while(dat!=0x00); EX0=1; } /**************************************************************************** ** 函数名称: void CHOOSE_12864_SCREEN(uchar i) ** 功能描述: 选屏函数 ** 输 入: uchar i(i 是要写的屏.0 是左屏,1 是右屏,2 是双屏) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void CHOOSE_12864_SCREEN(uchar i) /*i 是要写的屏.0 是左屏,1 是右屏,2 是双屏;*/ { /*此处在硬件上运行时 i 的电平全部与程序相反;*/ switch (i) /*此版本为仿真版;*/ { case 0: LCD_CS1_OUT=0;LCD_CS2_OUT=1;break; //比如此处如果要在电路上运行则 应该改为 CS=1;LCD_CS2_OUT=0; case 1: LCD_CS1_OUT=1;LCD_CS2_OUT=0;break; case 2: LCD_CS1_OUT=0;LCD_CS2_OUT=0;break; default: break; } } /**************************************************************************** ** 函数名称: void LCD_12864_CMD(uchar cmd) //写命令 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** 功能描述: lcd12864 写命令的函数 ** 输 入: uchar cmd(写入的命令) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void LCD_12864_CMD(uchar cmd) //写命令 { chekbusy12864(); EX0=0; LCD_RS_OUT=0; //指令模式 LCD_RW_OUT=0; //写模式 LCD_E_OUT=1; P0=cmd; LCD_E_OUT=0; EX0=1; } /**************************************************************************** ** 函数名称: void LCD_12864_DAT(uchar dat) //写命令 ** 功能描述: lcd12864 写数据的函数 ** 输 入: uchar dat(写入的数据) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void LCD_12864_DAT(uchar dat) { chekbusy12864(); EX0=0; LCD_RS_OUT=1; LCD_RW_OUT=0; LCD_E_OUT=1; P0=dat; LCD_E_OUT=0; EX0=1; } /**************************************************************************** ** 函数名称: void CLEAR_12864_SCREEN(void) //清屏函数 ** 功能描述: lcd12864 清屏函数 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void CLEAR_12864_SCREEN(void) { uchar page,row; for(page=0xb8;page<0xc0;page++) { LCD_12864_CMD(page); LCD_12864_CMD(0x40); for(row=0;row<64;row++) QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: { LCD_12864_DAT(0x00); } } } //对 12864 所有地址全部写零 /**************************************************************************** ** 函数名称: void Init_12864_HS(void) //清屏函数 ** 功能描述: lcd12864 初始化函数 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void Init_12864_HS(void) { chekbusy12864(); LCD_12864_CMD(0xc0); //从第零行开始显示 LCD_12864_CMD(0x3f); //LCD 显示 RAM 中的内容 } /**************************************************************************** ** 函数名称: void Display_8_point(uchar ch,uchar row,uchar page,uchar *adr) ** 功能描述: lcd12864 的 8X16 字符的显示 ** 输 入: uchar ch,uchar row,uchar page,uchar *p(屏数,列数,页数,还有显示的数组 首地址) ** ** ** 输 出: QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void Display_8_point(uchar ch,uchar row,uchar page,uchar *adr) { uchar i; CHOOSE_12864_SCREEN(ch); page=page<<1; //程序中采用的位移运算代替乘法运算,这样可以大大降低处 理器的负担 row=row<<3; LCD_12864_CMD(row+0x40); LCD_12864_CMD(page+0xb8); for(i=0;i<8;i++) { LCD_12864_DAT(*(adr+i)); } LCD_12864_CMD(row+0x40); LCD_12864_CMD(page+0xb9); for(i=8;i<16;i++) { LCD_12864_DAT(*(adr+i)); } } /**************************************************************************** ** 函数名称: void Display_8_point(uchar ch,uchar row,uchar page,uchar *adr) ** 功能描述: lcd12864 的 16X16 显示字符的显示 ** 输 入: uchar ch,uchar row,uchar page,uchar *p(屏数,列数,页数,还有显示的数组 首地址) ** ** ** 输 出: QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void Display_16_point(uchar ch,uchar row,uchar page,uchar *adr) { uchar i; CHOOSE_12864_SCREEN(ch); page=page<<1; row=row<<3; LCD_12864_CMD(row+0x40); LCD_12864_CMD(page+0xb8); for(i=0;i<16;i++) { LCD_12864_DAT(*(adr+i)); } LCD_12864_CMD(row+0x40); LCD_12864_CMD(page+0xb9); for(i=16;i<32;i++) { LCD_12864_DAT(*(adr+i)); } } /**************************************************************************** ** 函数名称: uchar DAT_READ_12864(uchar page,uchar arrange) //page 页地址.arrange 列 地址) ** 功能描述: lcd12864 的数据的读取 ** 输 入: uchar page,uchar arrange (page 页地址.arrange 列地址) ** ** ** 输 出: ** QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ uchar DAT_READ_12864(uchar page,uchar arrange) //page 页地址.arrange 列地址) { uchar dat; chekbusy12864(); EA=0; LCD_12864_CMD(page+0xb8); LCD_12864_CMD(arrange+0x40); EX0=0; P0=0xff; LCD_RW_OUT=1; LCD_RS_OUT=1; LCD_E_OUT=1; LCD_E_OUT=0; //12864 读数据时第二次读才有效,第一次读取的值不 采集 LCD_E_OUT=1; dat=P0; LCD_E_OUT=0; EA=1; return(dat); //EX0=1; } /**************************************************************************** ** 函数名称: uchar DAT_READ_12864(uchar page,uchar arrange) //page 页地址.arrange 列 地址) ** 功能描述: lcd12864 的反白显示 ** 输 入: uchar ch,uchar arrange,uchar page (屏数,列数,页数) ** ** QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void Display_16_point_fb(uchar ch,uchar arrange,uchar page) { uchar i; uchar xdata dat_fb[32]; CHOOSE_12864_SCREEN(ch); for(i=0;i<16;i++) { dat_fb[i]=~(DAT_READ_12864((page<<1),((arrange<<3)+i))); dat_fb[i+16]=~(DAT_READ_12864((page<<1)+1,((arrange<<3)+i))); } Display_16_point(ch,arrange,page,dat_fb); } /**************************************************************************** ** 函数名称: void DRAW_TRANSVERSE_Line(uchar y1,uchar y2,uchar x)//y1 表示起点,y2 表示终点 ** 功能描述: lcd12864 的画竖线的函数 ** 输 入: uchar y1,uchar y2,uchar x(y1 表示起点,y2 表示终点) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** 日 期: 14.04.9 ****************************************************************************/ void DRAW_TRANSVERSE_Line(uchar y1,uchar y2,uchar x)//y1 表示起点,y2 表示终点 { uchar i,sum=0; if(x>63) { CHOOSE_12864_SCREEN(1); //y1 比 y2 小,这里给出画竖线的函 数而不用画点的方法 x=x-64; //是为了减少单片机的处理负担。 } else { CHOOSE_12864_SCREEN(0); } if((y1/8)!=(y2/8)) { for(i=0;i<(8-y1%8);i++) { sum=sum|((2<<((y1%8)+i))); } LCD_12864_CMD(x+0x40); LCD_12864_CMD(y1/8+0xb8); LCD_12864_DAT(sum); sum=0; for(i=0;i<(y2/8-y1/8-1);i++) { LCD_12864_CMD(x+0x40); LCD_12864_CMD((y1/8)+0xb9+i); LCD_12864_DAT(0xff); } for(i=0;i<=(y2%8);i++) { sum=sum|(2<63) { CHOOSE_12864_SCREEN(1); x=x-64; } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: else { CHOOSE_12864_SCREEN(0); } dat=DAT_READ_12864(y/8,x); LCD_12864_CMD(0x40|x); LCD_12864_CMD(0xb8|y/8); LCD_12864_DAT((1<<(y%8))|dat); } /**************************************************************************** ** 函数名称: void CHANGE_HS(uchar *x,uchar *y) ** 功能描述: lcd12864 中将 4X4 个点合为一个 ** 输 入: uchar *x,uchar *y(*x 表示横坐标,*y 表示纵坐标) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void CHANGE_HS(uchar *x,uchar *y) //x<24 y<15 { uchar i,m,n; //24 和 15 分别表示游戏的范围 if(*x<24&&*y<15) //这里的点是个有花色的点而不是一个实心的点 { m=(*x)<<2; n=((*y)<<2)+2; for(i=0;i<4;i++) { DRAW_DOT_HS(31+m,n+i); DRAW_DOT_HS(34+m,n+i); QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: } DRAW_DOT_HS(32+m,n); DRAW_DOT_HS(32+m,n+1); DRAW_DOT_HS(32+m,n+3); DRAW_DOT_HS(33+m,n); DRAW_DOT_HS(33+m,n+2); DRAW_DOT_HS(33+m,n+3); } } /**************************************************************************** ** 函数名称: void CLEAR_Dot_HS(uchar x,uchar y) ** 功能描述: lcd12864 的清点的函数 ** 输 入: uchar x,uchar y(x 表示横坐标,y 表示纵坐标) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void CLEAR_Dot_HS(uchar x,uchar y) { uchar dat,j; if(x>63) { CHOOSE_12864_SCREEN(1); x=x-64; } else { CHOOSE_12864_SCREEN(0); } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: dat=DAT_READ_12864(y/8,x); LCD_12864_CMD(0x40|x); LCD_12864_CMD(0xb8|(y/8)); j=~(1<<(y%8)); LCD_12864_DAT(dat&j); } /**************************************************************************** ** 函数名称: void clear(uchar *x,uchar *y) ** 功能描述: lcd12864 的清除一个 4X4 的点函数 ** 输 入: uchar *x,uchar *y(*x 表示横坐标,*y 表示纵坐标) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void CLEAR_4DOT_HS(uchar *x,uchar *y) { uchar i,m,n; m=((*x)<<2)+31; n=((*y)<<2)+2; for(i=0;i<4;i++) { CLEAR_Dot_HS(m,n+i); CLEAR_Dot_HS(m+1,n+i); CLEAR_Dot_HS(m+2,n+i); CLEAR_Dot_HS(m+3,n+i); } } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /**************************************************************************** ** 函数名称: void CLEAR_4DOT_HS1(uchar *x,uchar *y) ** 功能描述: lcd12864 的清除一个 4X4 的点函数 ** 输 入: uchar *x,uchar *y(*x 表示横坐标,*y 表示纵坐标) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void CLEAR_4DOT_HS1(uchar x,uchar y) { uchar i,m,n; if(x>=0&&x<24&&y>=0&&y<15) { m=((x)<<2)+31; n=((y)<<2)+2; for(i=0;i<4;i++) { CLEAR_Dot_HS(m,n+i); CLEAR_Dot_HS(m+1,n+i); CLEAR_Dot_HS(m+2,n+i); CLEAR_Dot_HS(m+3,n+i); } } } /**************************************************************************** ** 函数名称: bit readfk(char x,char y) ** 功能描述: lcd12864 的清除一个点函数 ** 输 入: char x,char y(x 表示横坐标,y 表示纵坐标) ** QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ bit readfk(char x,char y) { bit KEY_FLAGfk=0; uchar m,n; if(y>=0) { m=(x<<2)+31; n=(y<<2)+2; CHOOSE_12864_SCREEN(0); if(m>63) { m=m-64; CHOOSE_12864_SCREEN(1); } m = DAT_READ_12864(n>>3,m); if((n%8)==2) { if((m&0x3c)==0x3c) { KEY_FLAGfk=1; } else { KEY_FLAGfk=0; } } if((n%8)==6) QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: { if((m&0xc0)==0xc0) { KEY_FLAGfk=1; } else { KEY_FLAGfk=0; } } } return(KEY_FLAGfk); } /**************************************************************************** ** 函数名称: void dingshi() interrupt 1 using 1 ** 功能描述: 定时程序.产生步进时间 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void dingshi() interrupt 1 using 1 //定时程序.产生步进时间 { if(p--) { TL0=0; TH0=0xa0; KEY_FLAG1=0; } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: else { KEY_FLAG1=1; TL0=0; TH0=0x00; p=20-(SNAKE_GRADE_NUM>>1); } } /**************************************************************************** ** 函数名称: void zhongduan1() interrupt 2 using 2 ** 功能描述: 开始确认暂停键的判断 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void zhongduan1() interrupt 2 using 2 { if(!KEY_FLAG5) { KEY_FLAG5=1; } else { KEY_FLAG5=0; } } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /**************************************************************************** ** 函数名称: void INTERRUPT_NUM0() interrupt 0 using 0 ** 功能描述: 方向键的判断 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void INTERRUPT_NUM0() interrupt 0 using 0 { uchar i=0; if(first) //FIRST=1;打开方向按键判断标志 { first=0; k=(P2>>6); k=k&0x03; if(KEY_FLAG) { if(k==1) DIR_NUM_FLAG=3;//左 if(k==2) DIR_NUM_FLAG=1;//右 } else { if(k==0) DIR_NUM_FLAG=4;//上 if(k==3) DIR_NUM_FLAG=2;//下 } } } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /**************************************************************************** ** 函数名称: void Gluttonous_Snake(void) ** 功能描述: 贪吃蛇子程序 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void Gluttonous_Snake(void) { uchar xdata SNK_BODY_Length[102]={0,8,1,8}; //存放蛇身的数组; uchar SNK_Food_Date[2]={12,8}; uchar i,x,y; bit KEY_FLAG2,KEY_FLAG3,KEY_FLAG4; TMOD=1; //定时器工作方式 IT0=1; //边延有效 IT1=1; EA=1; //开 CPU 中断 ET0=1; //开定时器中断 EX0=1; //开外部中断 EX1=1; TL0=0x00; TH0=0x00; //定时器初值 TR0=1; //启动定时器 SNAKE_GRADE_NUM=2; p=20; DIR_NUM_FLAG=1; KEY_FLAG5=0; CHOOSE_12864_SCREEN(2); QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: CLEAR_12864_SCREEN(); DRAW_TRANSVERSE_Line(1,61,30); DRAW_TRANSVERSE_Line(1,61,127); for(i=0;i<98;i++) { DRAW_DOT_HS(30+i,1); DRAW_DOT_HS(30+i,62); } Display_16_point(0,0,0,TCS_TAN); Display_16_point(0,0,1,TCS_CHI); Display_16_point(0,0,2,TCS_SHE); CHANGE_HS(SNK_BODY_Length,(SNK_BODY_Length+1)); CHANGE_HS((SNK_BODY_Length+2),(SNK_BODY_Length+3)); CHANGE_HS(SNK_Food_Date,SNK_Food_Date+1); for(;;) { do { first=1; while(KEY_FLAG5|!KEY_FLAG1); x=*(SNK_BODY_Length); y=*(SNK_BODY_Length+1); switch(DIR_NUM_FLAG) //右 { case 1: { for(i=0;i0;i--) { QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: *(SNK_BODY_Length+(i<<1))=*(SNK_BODY_Length+(i<<1)-2); *(SNK_BODY_Length+(i<<1)+1)=*(SNK_BODY_Length+(i<<1)-1); } *SNK_BODY_Length=x; *(SNK_BODY_Length+1)=y; SNAKE_GRADE_NUM++; do { KEY_FLAG3=0; SNK_Food_Date[0]=TL0%24; SNK_Food_Date[1]=TL0%15; for(i=0;i=0& QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: &*(SNK_BODY_Length+(SNAKE_GRADE_NUM<<1)-2)<24;//蛇头是否出边界 KEY_FLAG2=KEY_FLAG2&&*(SNK_BODY_Length+(SNAKE_GRADE_NUM<<1)-1)>=0& &*(SNK_BODY_Length+(SNAKE_GRADE_NUM<<1)-1)<15; if(KEY_FLAG2) { CLEAR_4DOT_HS(&x,&y); { CHANGE_HS(SNK_BODY_Length+(SNAKE_GRADE_NUM<<1)-2,SNK_BODY_Length+(S NAKE_GRADE_NUM<<1)-1); } if(KEY_FLAG4) { CHANGE_HS(&x,&y); } KEY_FLAG1=0; Display_8_point(0,0,3,NUM0+((SNAKE_GRADE_NUM/10)<<4)); Display_8_point(0,1,3,NUM0+(((SNAKE_GRADE_NUM)%10)<<4)); } } while(KEY_FLAG2); delay1ms(450); delay1ms(450); CHOOSE_12864_SCREEN(2); CLEAR_12864_SCREEN(); Display_16_point(0,4,1,GAME_OVER); Display_16_point(0,6,1,GAME_OVER+32); Display_16_point(1,0,1,GAME_OVER+64); Display_16_point(1,2,1,GAME_OVER+96); delay1ms(450); delay1ms(450); break; } } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: /****************************************************************************** ************* ** 函数名称: void CHECK_busy() ** 功能描述: 读“忙”函数,判断液晶当前是否忙碌 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void CHECK_busy()//读“忙”函数-----数据线的最高位 DB71 则 busy { P0=0x00; LCD_RS_OUT=0; LCD_RW_OUT=1; LCD_E_OUT=1; while(P0 & 0x80); LCD_E_OUT=0; } /****************************************************************************** ************* ** 函数名称: void LCD_COM_WRI(uchar value) ** 功能描述: LCD 液晶写命令函数 ** 输 入: uchar value(向 LCD 写入的命令) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void LCD_COM_WRI(uchar value) //写命令函数 { CHECK_busy(); //对 LCD 的每次读写都要读忙 LCD_RS_OUT=0; //选择命令 LCD_RW_OUT=0; //读操作 LCD_12864_DATA = value; LCD_E_OUT=1; //LCD_EN_OUT 由 1----0 锁存有效数据 _nop_(); _nop_(); LCD_E_OUT=0; } /****************************************************************************** ************* ** 函数名称: void LCD_DATA_WRI(uchar value) ** 功能描述: LCD 液晶写数据的函数 ** 输 入: uchar value(向 LCD 写入的数据) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void LCD_DATA_WRI(uchar value)//写数据函数 { CHECK_busy(); LCD_RS_OUT=1; //选择数据 LCD_RW_OUT=0; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: LCD_12864_DATA = value; LCD_E_OUT=1; _nop_(); _nop_(); LCD_E_OUT=0; } //LCD_EN_OUT 由 1----0 锁存有效数据 /****************************************************************************** ************* ** 函数名称: void CHOOSE_COLUMN(uchar column) ** 功能描述: 设置显示的列 ** 输 入: uchar column(设置显示的列) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void CHOOSE_COLUMN(uchar column) //设置显示的列 { column=column &0x3f; //列的最大值为 64 column= 0x40|column; //列的首地址为 0x40 LCD_COM_WRI(column); //规定显示的列的位置 } /****************************************************************************** ************* ** 函数名称: void CHOOSE_PG(uchar page) ** 功能描述: 设置“页”LCD12864 共 8 页,一页是 8 行点阵点 ** 输 入: uchar page(送入设置的页数) ** ** ** 输 出: QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void CHOOSE_PG(uchar page) //设置“页”LCD12864 共 8 页,一页是 8 行点阵点 { page=0xb8|page; LCD_COM_WRI(page); } //页的首地址为 0xB8 /****************************************************************************** ************* ** 函数名称: void SEL_SCREN(uchar screen) ** 功能描述: LCD 选择屏幕 ** 输 入: uchar screen(选择屏幕 0:全屏 1:左半屏 2:右半屏) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.03.26 ******************************************************************************* *************/ void SEL_SCREN(uchar screen) //选择屏幕 { switch(screen) { case 0: LCD_CS1_OUT=0;LCD_CS2_OUT=0;break; //全屏 case 1: LCD_CS1_OUT=0;LCD_CS2_OUT=1;break;//左半屏 case 2: LCD_CS1_OUT=1;LCD_CS2_OUT=0;break;//右半屏 QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: default:break; } } /****************************************************************************** ************* ** 函数名称: void Display_picture(uchar a[][64]) ** 功能描述: 显示图片的函数 ** 输 入: uchar a[][64](存放图片的数组) ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 日 期: 14.04.09 ******************************************************************************* *************/ void GUI_CLEAR(uchar a[][64])//显示图形—128*64 大小 { uchar i,j; for(j=0;j<8;j++) { SEL_SCREN(1); CHOOSE_PG(j); CHOOSE_COLUMN(0); for(i=0;i<64;i++) { LCD_DATA_WRI(a[2*j][i]);//每隔一行取一次数组中的数据 } SEL_SCREN(2); CHOOSE_PG(j); CHOOSE_COLUMN(0); for(i=0;i<64;i++) { QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: LCD_DATA_WRI(a[2*j+1][i]);//每隔一行取一次数组中的数据 } } } /**************************************************************************** ** 函数名称: void main(void) ** 功能描述: 贪吃蛇主函数 ** 输 入: ** ** ** 输 出: ** ** 全局变量: ** 调用模块: ** ** 作 者: 吴鉴鹰 ** 作者所在单位:鉴鹰电子工作室 ** 日 期: 14.04.9 ****************************************************************************/ void main() { uchar i; uchar count=0; P2=0xff; EA=1; //开 CPU 中断 //ET0=1; //开定时器中断 EX0=1; //开外部中断 EX1=1; CHOOSE_12864_SCREEN(2); Init_12864_HS(); CLEAR_12864_SCREEN(); //////////////////// Display_16_point(0,4,0,TCS_TAN); QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: Display_16_point(0,6,0,TCS_CHI); Display_16_point(1,0,0,TCS_SHE); /////////////////// Display_16_point(0,2,1,WJYZZ); Display_16_point(0,4,1,WJYZZ+32); Display_16_point(0,6,1,WJYZZ+64); for(i=0;i<2;i++) { Display_16_point(1,i<<1,1,(WJYZZ+96+(i<<5))); } Display_16_point(0,0,0,WWJJYYWXTP); Display_16_point(0,2,0,WWJJYYWXTP); Display_16_point(1,2,0,WWJJYYWXTP); Display_16_point(1,4,0,WWJJYYWXTP); Display_16_point(1,6,0,WWJJYYWXTP); Display_16_point(0,0,1,WWJJYYWXTP); Display_16_point(1,4,1,WWJJYYWXTP); Display_16_point(1,6,1,WWJJYYWXTP); ////////////////// for(i=0;i<4;i++) { Display_16_point(0,i<<1,2,(WWJJYYJ+(i<<5))) ; } for(i=0;i<4;i++) { Display_16_point(1,i<<1,2,(WWJJYYG+(i<<5))) ; } for(i=0;i<4;i++) { Display_16_point(0,i<<1,3,(WWJJYYJ+(i<<5))) ; } for(i=0;i<4;i++) QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: { Display_16_point(1,i<<1,3,(WWJJYYHH+(i<<5))) ; } Delay_S(); Delay_S();Delay_S(); GUI_CLEAR(table); // while(1); Delay_S(); Delay_S();Delay_S(); Delay_S(); Delay_S();Delay_S(); //Display_16_point(0,4,2,wnl); //Display_16_point(0,6,2,wnl+32); //Display_16_point(1,0,2,wnl+64); ////////////////// for(;;) { if((k==0x03)&&((P3&0x04)==0x04)) { count++; k=0; if(count==4) count=1; switch(count) { case 1: { /*Display_16_point(0,4,2,wnl); Display_16_point(0,6,2,wnl+32); Display_16_point(1,0,2,wnl+64); Display_16_point_fb(0,4,0); Display_16_point_fb(0,6,0); Display_16_point_fb(1,0,0); */ for(i=0;i<4;i++) { Display_16_point(0,i<<1,2,(WWJJYYJ+(i<<5))) ; } for(i=0;i<4;i++) { Display_16_point(1,i<<1,2,(WWJJYYG+(i<<5))) ; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: } };break; case 2: { Display_16_point(0,4,0,TCS_TAN); Display_16_point(0,6,0,TCS_CHI); Display_16_point(1,0,0,TCS_SHE); Display_16_point_fb(0,4,1); Display_16_point_fb(0,6,1); for(i=0;i<3;i++) { Display_16_point_fb(1,i<<1,1); } };break; case 3: { Display_16_point(0,2,1,WJYZZ); Display_16_point(0,4,1,WJYZZ+32); Display_16_point(0,6,1,WJYZZ+64); for(i=0;i<2;i++) { Display_16_point(1,i<<1,1,(WJYZZ+96+(i<<5))); } Display_16_point_fb(0,4,2); Display_16_point_fb(0,6,2); Display_16_point_fb(1,0,2); };break; default:break; } } if(P3&0x04) first=1; if(KEY_FLAG5) { KEY_FLAG5=0;Gluttonous_Snake();count=0;KEY_FLAG5=0;k=0; switch(count) { case 0:count=0;k=3;KEY_FLAG5=0;break; QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载: 吴鉴鹰 12864 系列(连载)之基于 12864 的贪吃蛇游戏的设计详精讲 更多资料请点击下载: case 1:KEY_FLAG5=0;Gluttonous_Snake();count=0;KEY_FLAG5=0;k=0;break; //case 2:KEY_FLAG5=0;fangkuai();count=0;KEY_FLAG5=0; k=0;break; //case 3:KEY_FLAG5=0;wannianli();count=0;KEY_FLAG5=0;k=0;break; default:count=0;k=3;KEY_FLAG5=0;break; } CHOOSE_12864_SCREEN(2); Init_12864_HS(); CLEAR_12864_SCREEN(); ///////////////////////////////////// Display_16_point(0,4,0,TCS_TAN); Display_16_point(0,6,0,TCS_CHI); Display_16_point(1,0,0,TCS_SHE); //////////////////////////////////// Display_16_point(0,2,1,WJYZZ); Display_16_point(0,4,1,WJYZZ+32); Display_16_point(0,6,1,WJYZZ+64); for(i=0;i<2;i++) { Display_16_point(1,i<<1,1,(WJYZZ+96+(i<<5))); } /*Display_16_point(0,4,1,WJYZZ); Display_16_point(0,6,1,WJYZZ+32); for(i=0;i<3;i++) { Display_16_point(1,i<<1,1,(WJYZZ+64+(i<<5))); } */ ////////////////// //Display_16_point(0,4,2,wnl); // Display_16_point(0,6,2,wnl+32); //Display_16_point(1,0,2,wnl+64); ////////////////// } } } QQ1群:332164870(已满) QQ2群:194314772 更多资料请点击下载:

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。