单片机贪吃蛇程序Lcd12864显示

发布者:数据之翼最新更新时间:2020-01-09 来源: 51hei关键字:单片机  贪吃蛇程序  Lcd12864显示 手机看文章 扫描二维码
随时随地手机看文章

贪吃蛇的单片机源程序如下:

/***********************************************************

功能说明:贪吃蛇

编译环境:keil4

MCU     :STC89C52RC

时钟频率: 22.1184MHz


注意:该例程中“过关”不能在keil4编译环境中正常显示

************************************************************/

/*****************************************************************

                    /^/^

                  _|__|  O|

         /     /~     _/

          ____|__________/ 

                 _______     

                         `                      

                           |     |                 

                          /      /                   

                         /     /                       \

                       /      /                         

                      /     /                             

                    /     /             _----_               

                   /     /           _-~      ~-_         |   |

                 (      (        _-~    _--_    ~-_     _/   |

                         ~-____-~    _-~    ~-_    ~-_-~    /

                     ~-_           _-~          ~-_       _-~   

                        ~--______-~                ~-___-~  

*****************************************************************/

#include "stc.h"

#include "Lcd12864.h"

#include "Key.h"

#define uchar unsigned char

#define uint unsigned int


static unsigned long Seed = 1;

#define A 48271L

#define M 2147483647L

#define Q (M / A)

#define R (M % A)

/************************************

伪随机数发生器

*************************************/

double Random(void)

{

        long TmpSeed;

        TmpSeed=A*(Seed%Q)-R*(Seed/Q);

        if(TmpSeed>=0)

                Seed=TmpSeed;

        else

                Seed=TmpSeed+M;

        return (double)Seed/M;

}


/**************************************

为伪随机数发生器播种

***************************************/

void InitRandom(unsigned long InitVal)

{

        Seed=InitVal;

}


//延时子程序

void delay(unsigned int t)

{  

        unsigned int i,j;

        for(i=0;i                for(j=0;j<10;j++);    

}


/*********************************

初始化MPU

**********************************/

void InitCpu(void)

{

        TMOD=0x01;

        TH0=0;

        TL0=0;

        TR0=1;

        ET0=1;

        EA=1;

}


#define N 25

struct Food

{

        unsigned char x;

        unsigned char y;

        unsigned char yes;

}food;//食物结构体

struct Snake

{

        unsigned char x[N];

        unsigned char y[N];

        unsigned char node;

        unsigned char direction;

        unsigned char life;

}snake;//蛇结构体


unsigned char Flag=0;

unsigned char Score=0;

unsigned char Speed=5;                   //speed越大,速度越慢

unsigned char KeyBuffer=0;

#define FUNC 1                                   //(P3^1)表示级别

#define UP 2                                   //(P3^3)表示左

#define DOWN 3                                   //(P3^5)表示右

#define LEFT 4                                   //(P3^4)表示下

#define RIGHT 5                                   //(P3^2)表示上

#define PASSSCORE 20                   //预定义过关成绩

void Timer0Int(void) interrupt 1

{

        switch(OSReadKey())

        {

                case 5:

                                KeyBuffer=FUNC;                                                  //表示级别

                                /*if(++Speed>=10)

                                        Speed=1;

                                   Flag|=1<<1;//速度变化标志置1*/

                                break;

                case 21:

                                KeyBuffer=DOWN;                                                 //表示右

                                /*if(snake.direction!=2)

                                        snake.direction=1;*/

                                break;

                case 13:

                                KeyBuffer=UP;                                                 //表示左

                                /*if(snake.direction!=1)

                                        snake.direction=2;*/

                                break;

                case 9:

                                KeyBuffer=RIGHT;                                         //表示上

                                /*if(snake.direction!=4)

                                        snake.direction=3;*/

                                break;

                   case 17:

                                KeyBuffer=LEFT;                                                 //表示下

                                /*if(snake.direction!=3)

                                        snake.direction=4;*/

                                break;

[1] [2] [3]
关键字:单片机  贪吃蛇程序  Lcd12864显示 引用地址:单片机贪吃蛇程序Lcd12864显示

上一篇:51单片机+ULN2003驱动5V减速步进电机程序
下一篇:基于单片机的DHT11温度湿度采集系统

推荐阅读最新更新时间:2024-11-10 20:47

51单片机学习笔记———14.LCD1602工业显示
LCD1602工业显示屏 LCD工业显示屏解读: 共有16个引脚,其中D0~D7为收发数据引脚,为双向并行数据接口。 16代表每一行能够显示16个空格 2代表总共两行 因为每一个字节能够显示0和1,有两种可能,所以要将32位全部显示完全的话,至少需要2^5,也就是5位,所以我们可以设置8位,也就是一个字节来发送数据,这样比较方便 其中第四脚比较特殊,用来决定是用来确定位置还是发送我们想要显示的数据 RS=0确定位置 RS=1确认数据 显示数据的步骤: 初始化LCD1602 发送指令(RS=0) ----确定位置 发送数据(RS=1)-----确认数据 `RS`为低电平时为发送指令 指令:决定
[单片机]
51<font color='red'>单片机</font>学习笔记———14.LCD1602工业<font color='red'>显示</font>屏
实时操作系统μC/OS-II在51单片机上的移植
μC/OS-II是一种公开源代码、结构小巧、具有可剥夺实时内核的嵌入式开发系统,代码简短、条理清晰、实时性及安全性能很高,绝大部分代码用C编写,现已被移植到多种处理器的构架中。随着51单片机片内资源的日益丰富,在51单片机上移植μC/OS-II已成为可能,植入系统后,由系统来管理软件与硬件资源,简化应用程序的设计,并且使应用系统功能更加完善。因此在51单片机上移植μC/OS-II具有十分重要的意义。 1 μC/OS实时操作系统概述 μC/OS-II实时操作系统是一种可移植、可固化、可裁剪即可剥夺型的多任务实时内核,适用于各种 微处理器 和微控制器。μC/OS-II主要包括任务调度、时间管理、内存管理、事件管理(信号量、邮箱
[单片机]
实时操作系统μC/OS-II在51<font color='red'>单片机</font>上的移植
AVR单片机按键处理与按键防抖动程序
AVR单片机按键处理与按键防抖动程序 #include mega48.h #include delay.h #include nokia3310.h unsigned char A,B; unsigned char n; bit step1, step2, step3,step4; //使用几个位变量记忆按键状态 / #include mega48.h #include delay.h #include nokia3310.h unsigned char A,B; unsigned char n; bit step1, step2, ste
[单片机]
PIC单片机(PIC16F15323)的环境搭建
一共需要安装两个软件, MPLAB X IDE v5.50和 xc8-v2.32-full-install-windows-x64-installer 为了仿真,也可以安装proteus软件 1 MPLAB X IDE v5.50的安装 软件下载链接: https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide#tabs 下载好软件后,一直next即可。 2 xc8-v2.32-full-install-windows-x64-installer的安装 因为单片机型号是PIC16F15323,所以选择XC8 软件下
[单片机]
PIC<font color='red'>单片机</font>(PIC16F15323)的环境搭建
基于飞思卡尔MCU的气囊(Airbag)方案
方案描述: 控制单元是安全气囊系统的核心组件,由16或32位MCU与一组局部加速度传感器组成。根据系统复杂程度可增加卫星传感器,通过外围设备接口5 (PSI5)和分布系统接口 (DSI) 等标准传感器总线提供辅助碰撞信息。经过处理的传感器数据可利用专用多通道点火驱动电路引爆前部、侧部和帘式气囊。 作为附加安全要素,高能效开关式电源组件可在发生事故电源连接中断的情况下,使系统保持工作几百毫秒。 飞思卡尔气囊系统产品符合汽车安全控制(AEC) AEC-Q100技术规范及其他关键汽车标准,提供世界一流的高质量汽车安全解决方案。 方案关键器件表: 方案设计图:
[嵌入式]
基于飞思卡尔<font color='red'>MCU</font>的气囊(Airbag)方案
浅析PIC单片机定时器
什么是定时器? 定时器顾名思义就是用来定时的。在单片机应用中常常用于各种各样的定时。比如让LED灯每隔 1S 亮一次。 这个1S 就是由定时器做到的。 指令周期 指令周期就是单片机执行一个指令所花费的时间。这也是定时器定时的最小时间单位。时钟频率/4=指令频率。1/指令频率=指令周期。 假设现在的时钟是4MHZ ,4MHz的时钟经过4分频后变成了 1MHz 其周期为0.0000001s也就是1us,这个1us就是指令周期,这1us也就是定时器定时的最小单位。 定时器与预分频器 假设在没有预分频器情况下。开启定时器 每隔一个指令周期定时器就加一。假设时钟是4MHz 也就是每隔 1us 定时器加一。 如果有了预分频器假设
[单片机]
浅析PIC<font color='red'>单片机</font>定时器
PIC单片机的USB接口的应用 一个简单的USB CDC 测试程序
单片机的USB接口,通常用法, 1)HID 是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。(参考百度 https://baike.baidu.com/item/USB-HID ) 2)CDC 虚拟串口,可与PC机直接联机通讯,如同RS232。 3)USB MSC (Mass Storageclass) MSC是一种计算机和 移动设备 之间的传输协议,它允许一个通用串行总线(USB)设备来访问主机的计算设备,使两者之间进行文件传输。设备包括: 移动硬盘 ,移动光驱,U盘,S
[单片机]
PIC<font color='red'>单片机</font>的USB接口的应用 一个简单的USB CDC 测试<font color='red'>程序</font>
51单片机中断应用与编程方法
中断的概念 中断示意图见图1,以下做3点说明。 1、CPU 在处理某一事件A 时,发生了另一事件B 请求CPU 迅速去处理(中断发生); 2、CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 3、待 CPU 将事件B 处理完毕后,再回到原来事件A 被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 图1 中断示意图 引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构),51单片机中断结构见图2。 图2 中断结构
[单片机]
51<font color='red'>单片机</font>中断应用与编程方法
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved