您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 基于STC89C52单片机贪吃蛇做法
#ifndef_glb_h_#define_glb_h_#defineucharunsignedchar#defineuintunsignedint#defineLOW0#defineHIGH1//初始化指令#defineCLEAR_SCREEN0x01//清屏指令:清屏且AC值为00H#defineAC_INIT0x02//将AC设置为00H。且游标移到原点位置#defineCURSE_ADD0x06//设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)#defineFUN_MODE0x30//工作模式:8位基本指令集#defineDISPLAY_ON0x0c//显示开,显示游标,且游标位置反白#defineDISPLAY_OFF0x08//显示关#defineCURSE_DIR0x14//游标向右移动:AC=AC+1#defineSET_CG_AC0x40//设置AC,范围为:00H~3FH#defineSET_DD_AC0x80#defineFUN_MODEK0x36//扩展指令集,8位指令#defineX1address0x80//上半屏X轴起始地址#defineX2address0x88//下半屏X轴起始地址#defineYaddress0x80//Y轴起始地址/*---------------------------------------------------------------------------------------------------液晶屏----------------------------------------------------------------------------------------------------*/#defineDataPortP0sbitRS=P3^5;sbitRW=P3^6;sbitE=P3^4;sbitPSB=P3^7;sbitWELA=P2^7;sbitDULA=P2^6;sbitspeed=P2^0;sbitbeep=P2^3;/*#defineDataPortP1sbitRS=P2^0;sbitRW=P2^1;sbitE=P2^3;sbitPSB=P2^4;//sbitWELA=P2^7;//sbitDULA=P2^6;*//*---------------------------------------------------------------------------------------------------贪吃蛇----------------------------------------------------------------------------------------------------*///定义复位不自动清零全局变量//#pragmaDATA_SEGNOINIT_RAMsbitLEFT=P2^4;//左sbitRIGHT=P2^1;//右sbitUP=P2^5;//上sbitDOWN=P2^2;//下//sbitLed1=P1^7;//sbitLed2=P1^6;/*sbitLEFT=P0^2;//左sbitRIGHT=P0^3;//右sbitUP=P0^0;//上sbitDOWN=P0^1;//下*/sbitLed7=P1^0;sbitLed6=P1^1;sbitLed5=P1^3;sbitLed4=P1^4;//sbitLed3=P3^3;//sbitLed2=P3^2;//sbitLed1=P3^1;//sbitLed0=P3^0;#endif#ifndef_Init_h_#define_Init_h_/*------------------------------------------------------------------------------------------------------------Init_12864-------------------------------------------------------------------------------------------------------------*/voidDelayus(unsignedchari);voidDelayms(unsignedinti);voidCheck_Busy();voidWrite_Cmd(unsignedcharCmd);voidWrite_Data(unsignedcharData);//ucharRead_Status();ucharRead_Data();voidInit_IO();voidInit_12864();//voiddisp();voidCGRAM();voidLCD_PutString(unsignedcharx,unsignedchary,unsignedcharcode*s);voidClrScreen();voidClr_GDRAM(void);voidLCD_PutGraphic(unsignedcharcode*img);voidSetGraphicMode();voidKeyscan();voidstatuschange();voidDraw_Point(ucharX,ucharY,ucharclour);voidDraw_zhi(ucharX1,ucharX2,ucharY);voidDraw_shu(ucharX,ucharY1,ucharY2);voidDraw_line(ucharx0,uchary0,ucharx1,uchary1);voidDraw_all_lines();voidStat_Point();voidLast_Point();voidAdd_Point();voidBump_Wall();voidSelf_Bump();/*------------------------------------------------------------------------------------------------------------Init_Time-------------------------------------------------------------------------------------------------------------*///voidInit_Time();//voidexter0()interrupt1#endif#includereg52.h#includeglb.huinttimestatus=0;voidInit_Time(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voidTimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;timestatus++;if(speed==0){if(timestatus2)timestatus=0;}if(timestatus10)timestatus=0;}#ifndef_Interrupt_h_#define_Interrupt_h_voidInit_Time();#endif#includereg52.h#includeglb.h/*游戏的初始化值*/uchargamestatus=0;ucharflag=1;//折点个数标志uchara[]={20,0,0,0,0,0,0,0};//其中(a[0],b[0])为初始蛇头坐标,(a[1],b[1])为初始蛇尾坐标,之后蛇尾坐标为(a[flag],b[flag])。ucharb[]={32,32,0,0,0,0,0,0};//后面(a[i],b[i])记录拐点坐标,其中(a[flag-1],b[flag-1])为第一个拐点的坐标ucharc[]={0,0,0,0,0,0,0,0};//c[i]记录方向,其中a[0]为当前方向ucharx=54,y=32,pointstatus,allpoints;/*---------------------------------------------------------------------------------延时函数---------------------------------------------------------------------------------*/voidDelayus(unsignedchari){intj;for(j=2;j0;j--)for(;i0;i--);}voidDelayms(unsignedinti){unsignedintj;for(;i0;i--)for(j=110;j0;j--);}/*---------------------------------------------------------------------------------检测忙位---------------------------------------------------------------------------------*/voidCheck_Busy(){E=0;RS=0;RW=1;E=1;DataPort=0xff;while((DataPort&0x80)==0x80);//忙则等待,忙标志检测BF,可以将BF读到DB7进行检测E=0;}/*---------------------------------------------------------------------------------写命令---------------------------------------------------------------------------------*/voidWrite_Cmd(unsignedcharCmd){Check_Busy();RS=0;RW=0;DataPort=Cmd;Delayus(2);E=1;Delayus(5);E=0;}/*---------------------------------------------------------------------------------写数据---------------------------------------------------------------------------------*/voidWrite_Data(unsignedcharData){Check_Busy();RS=1;RW=0;E=1;DataPort=Data;Delayus(2);E=0;Delayus(5);}/*---------------------------------------------------------------------------------读状态---------------------------------------------------------------------------------*//*ucharRead_Status(){uchari;DataPort=0xff;RW=1;RS=0;E=0;Delayus(2);E=1;Delayus(5);i=DataPort;Delayus(5);E=0;return(i);}*//*---------------------------------------------------------------------------------读数据-----------------------------------------------------
本文标题:基于STC89C52单片机贪吃蛇做法
链接地址:https://www.777doc.com/doc-2038131 .html