资源简介
用51单片机做成的游戏-贪食蛇,可以用proteus运行操作。有源程序。
代码片段和文件信息
#include
#include “Model.H“
#include “T6963C.H“
#include “AT89X51.H“
//引脚定义
sbit _CD=P1^5;
sbit _RD=P1^6;
sbit _WR=P1^7;
#define Pin P2
//读状态函数
unsigned char Read_State()
{
Pin=0xff;//读状态之前先将数据线拉高
_CD=1;
_RD=0;
_RD=1;
return Pin;
}
//bit0指令写状态位bit1数据读/写状态位为1时候空闲
void Enable()
{
while(1)
if((Read_State()&3)==3)break;
}
//bit3数据自动写状态位为1时候空闲
void Aut_Write()
{
while(1)
if((Read_State()&8)==8)break;
}
//写单参数函数Data1为传入的参数,Com为传入的指令
//注意:写入顺序为先数据后写指令,不可颠倒
void Write_Data1(unsigned char Data1unsigned char Com)
{
Enable();
_CD=0;
Pin=Data1;
_WR=0;
_WR=1;
Enable();
_CD=1;
Pin=Com;
_WR=0;
_WR=1;
}
//写双参数函数Data1/Data2为传入的参数,Com为传入的指令
//注意:写入顺序为先数据Data1后写数据Data2最后写指令,不可颠倒
void Write_Data2(unsigned char Data1unsigned char Data2unsigned char Com)
{
Enable();
_CD=0;
Pin=Data1;
_WR=0;
_WR=1;
Enable();
_CD=0;
Pin=Data2;
_WR=0;
_WR=1;
Enable();
_CD=1;
Pin=Com;
_WR=0;
_WR=1;
}
//写指令函数
void Write_Com(unsigned char Com)
{
Enable();
_CD=1;
Pin=Com;
_WR=0;
_WR=1;
}
//写8字节数据函数Addr表示数据首地址,Way表示写的方式
void Write_8_Data(unsigned char Addrunsigned char Way)
{
Aut_Write();//判断是否能自动写
Write_Com(AUT_WR);//自动写开始
Write_Data1(AddrWay);
Write_Com(AUT_WO);//自动写结束
}
//设置数据显示在屏幕上的坐标(以字节为单位)
//x表示显示的行(0~15),y表示显示的列(0~19)
void Set_xy(unsigned char xunsigned char y)
{
unsigned int a;
a=x*20+y;
Write_Data2(a&0xffa>>8ADR_POS);
}
//设置数据存储起始地址
void Set_Addr(unsigned char Addr1unsigned char Addr2)
{
Write_Data2(Addr1Addr2ADR_POS);
}
/*CGRAM偏置地址设置函数*/
void Set_CGRAM()
{
Write_Data2(10CGR_POS);
}
//液晶初始化函数
//(文本区首地址D1文本区首地址D2 文本区宽度
//图形区首地址D1 图形区首地址D2 图形区宽度
//光标形状 显示方式 显示开关)
void LCD_Init( unsigned char Txt1 unsigned char Txt2 unsigned char Txt_Wide
unsigned char Map1 unsigned char Map2 unsigned char Map_Wide
unsigned char Guang_Biao unsigned char Disp_Modeunsigned char Kai_Guan)
{
Write_Data2(Txt1Txt2TXT_STP);
Write_Data2(Txt_Wide0TXT_WID);
Write_Data2(Map1Map2GRH_STP);
Write_Data2(Map_Wide0GRH_WID);
Write_Com(CUR_SHP|Guang_Biao);
Write_Com(Disp_Mode);
Write_Com(DIS_SW|Kai_Guan);
}
//显示一个汉字子程序
//x表示显示的行(0~15),y表示显示的列(0~19)n表示字在表格中的位置
void Han_Zi(unsigned char xunsigned char yunsigned char Addr)
{
Set_xy(xy);
Write_8_Data(AddrINC_WR);
Write_8_Data(Addr+2INC_WR);
Set_xy(x+1y);
Write_8_Data(Addr+1INC_WR);
Write_8_Data(Addr+3INC_WR);
}
//清屏程序
void Clear_LCD()
{
unsigned int a;
Set_xy(00);
for(a=0;a<320;a++)
Write_8_Data(0x83INC_WR);
}
/*自定义字符写入CGROM函数*/
void Write_CGORM()
{
unsigned int a;
Set_CGRAM();
Set_Addr(00x0c);
for(a=0;a<992;a++) Write_8_Data(Tab[a]INC_WR);
}
//设置点显示在屏幕上的坐标(以位为单位)
//x表示显示的行(0~127),y表示显示的列(0~159)n=1表示打个点n=0清除一个点
void Point(unsigned char xunsigned char ybit n)
{
unsigned char point;
unsigned int temp;
temp=x*20+y/8+320;
point=0xf7-y%8;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 451 2009-06-11 00:37 推箱子\Keil\Include\KeyMessage.h
文件 230 2009-05-31 11:53 推箱子\Keil\Include\Model.h
文件 2464 2009-06-11 00:37 推箱子\Keil\Include\PG160128A.h
文件 2306 2009-05-31 11:49 推箱子\Keil\Include\T6963C.h
文件 284 2009-05-31 11:53 推箱子\Keil\Include\VirtualTerminal.h
文件 3883 2009-07-02 19:13 推箱子\Keil\Keil.Opt
文件 2611 2009-06-22 17:32 推箱子\Keil\Keil.Uv2
文件 3883 2009-06-30 21:43 推箱子\Keil\Keil_Opt.Bak
文件 2612 2009-05-31 11:57 推箱子\Keil\Keil_Uv2.Bak
文件 13720 2009-06-29 16:47 推箱子\Keil\LST\160128驱动.lst
文件 11760 2009-06-29 16:47 推箱子\Keil\LST\STARTUP.lst
文件 9245 2009-06-29 16:47 推箱子\Keil\LST\主函数.lst
文件 15573 2009-06-29 16:47 推箱子\Keil\LST\字模.lst
文件 17695 2009-06-29 16:47 推箱子\Keil\LST\按键函数.lst
文件 45829 2009-06-29 16:47 推箱子\Keil\LST\推箱子.m51
文件 2643 2009-06-29 16:47 推箱子\Keil\LST\虚拟终端.lst
文件 6800 2009-06-29 17:47 推箱子\Keil\Source\160128驱动.c
文件 5115 2002-04-16 15:32 推箱子\Keil\Source\STARTUP.A51
文件 4278 2009-07-02 19:13 推箱子\Keil\Source\主函数.c
文件 9601 2009-05-31 11:57 推箱子\Keil\Source\字模.c
文件 10479 2009-06-30 08:53 推箱子\Keil\Source\按键函数.c
文件 967 2009-05-31 11:45 推箱子\Keil\Source\虚拟终端.c
文件 16816 2009-06-29 16:47 推箱子\Keil\Target\160128驱动.obj
文件 826 2009-06-29 16:47 推箱子\Keil\Target\STARTUP.obj
文件 15827 2009-06-29 16:47 推箱子\Keil\Target\主函数.obj
文件 2894 2009-06-29 16:47 推箱子\Keil\Target\字模.obj
文件 21195 2009-06-29 16:47 推箱子\Keil\Target\按键函数.obj
文件 52826 2009-06-29 16:47 推箱子\Keil\Target\推箱子
文件 17299 2009-06-29 16:47 推箱子\Keil\Target\推箱子.hex
文件 187 2009-07-02 19:11 推箱子\Keil\Target\推箱子.plg
............此处省略13个文件信息
- 上一篇:排序系统设计类似于出圈游戏
- 下一篇:空中充值电话机源代码 KIEL51
相关资源
- 排序系统设计类似于出圈游戏
- PIC单片机的EEPROM读写及说明
- 剑侠情缘3网络版全套源代码
- PIC单片机控制风扇马达
- 数据结构课程设计报告 迷宫游戏
- 基于51单片机的 4×4键盘及8位数码管显
- 基于51单片机的霹雳灯
- 简洁完整的flash拼图游戏AS3.0
- MC9s12单片机AD16库
- 8255控制数码管显示程序及图——单片
- 通信电路考试
- 51单片机贪吃蛇游戏程序
- 51单片机控制57步进电机启停,正反转
- NEC 78K0R单片机基本功能程序代码
- 光功率计 下位机
- 51单片机实现Modbus从机程序
- 编写推箱子游戏程序第三步——选择
- 一个flashas3.0的拼图游戏代码
- 基于AT89C52单片机的步进电机控制系统
- 嵌入式赛车小游戏 源代码
- 3D游戏与计算机图形学中的数学方法
- 8086汇编语言实现双人贪食蛇游戏
- 51单片机看门狗设计
- Proteus 实现的篮球计分器
- 51单片机开发的韦根接受的C程序;支
- STM32开发板设计贪吃蛇游戏
- checker 国际跳棋游戏
- 89c51+DS18B20 数码管
- 51单片机ADXL345三轴加速度传感器源代
- 组态王 单片机 通讯协议
评论
共有 条评论