1、基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计/说明:该程序是基于freescale MCU、三轴加速度传感器、ili9320 LCD所写的贪食蛇游/戏,上传代码拥有全部的设计思路以及大部分函数主体/=/ 宏定义按键/=For personal use only in study and research; not for commercial use#define Key_Up 1#define Key_Down 4#define Key_Left 2For personal use only in study and research; not for commercial
2、use#define Key_Right 3#define uchar unsigned char/=/ 使用结构体定义变量 使程序的名称更加的清楚/=struct uchar X; uchar Y; uchar Yes;Food; /食物结构体#define SNAKE_Max_Long 20 /最大长度struct uchar XSNAKE_Max_Long; uchar YSNAKE_Max_Long; uchar Long; uchar Life; uchar Score; /蛇的分数 uchar Level; /蛇的等级 Snake; /蛇结构体uchar Key_V_temp=0;
3、 /取出上次按键值uchar Key_Value=0;static int l=0;static uint16 KEY_Init3=0,0,0;static uint16 KEY_BASE3=0,0,0;score20=0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190;int level20=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;static const byte Channels = 13,14,15; /* Contents for the
4、 device control register */static word MMA_7260_OutV3; static byte SumChan; static byte OutFlg; void MMA_7260_Init_3(void) OutFlg = FALSE; /* No measured value */ /* ATD0CTL4: SMP2=0,SMP1=0,SMP0=0,PRS4=0,PRS3=0,PRS2=1,PRS1=0,PRS0=1 */ ATD0CTL4 = 5; /* Set sample time and prescaler */ /* ATD0CTL3: DJ
5、M=0,S8C=0,S4C=0,S2C=0,S1C=1,FIFO=0,FRZ1=0,FRZ0=0 */ ATD0CTL3 = 8; /* Set ATD control register 3 */ /* ATD0CTL0: ?=0,?=0,?=0,?=0,WRAP3=1,WRAP2=1,WRAP1=1,WRAP0=1 */ ATD0CTL0 = 15; /* Set wrap around */ /* ATD0CTL1: ETRIGSEL=0,SRES1=1,SRES0=0,SMP_DIS=1,ETRIGCH3=1,ETRIGCH2=1,ETRIGCH1=1,ETRIGCH0=1 */ ATD
6、0CTL1 = 95; /* Set resolution and discharge */ /* ATD0CTL2: ?=0,AFFC=1,ICLKSTP=0,ETRIGLE=0,ETRIGP=0,ETRIGE=0,ASCIE=0,ACMPIE=0 */ ATD0CTL2 = 64; /* Set ATD control register 2 */-static void MMA_7260_Measure_3(void) for (SumChan=0; SumChan3; SumChan+) ATD0CTL5 = ChannelsSumChan; /* Start measurement o
7、f next channel */ while (!ATD0STAT0_SCF) /* Wait for AD conversion complete */ MMA_7260_OutVSumChan = ATD0DR0; /* Save measured value */ OutFlg = TRUE; /* Measured values are available */-byte MMA_7260_GetValue16_3(word *Values) if (!OutFlg) /* Is measured value(s) available? */ return 0; /* If no t
8、hen error */ /* Note: Next 4 lines are speed optimized */ *Values+ = MMA_7260_OutV0; /* Save measured values to the output buffer */ *Values+ = MMA_7260_OutV1; /* Save measured values to the output buffer */ *Values+ = MMA_7260_OutV2; /* Save measured values to the output buffer */ OutFlg = FALSE; r
9、eturn 1; /* OK */=/贪食蛇游戏/=/函数名称:Trun_On_Point Trun_Off_Point (uchar x,uchar y)/函数功能:点亮或者熄灭 一个点。用于显示蛇身体/入口参数:无/出口参数:无/特别说明:此 Trun_On,函数换成其他的就可以兼容其他的液晶/ 入8*8 点阵 12864 等/=void Trun_On_Point (uchar x,uchar y,uchar color) ili9320_Rectangle(4*(x+2),(4*(y+2),(4*(x+3),(4*(y+3),color,color); /Bar(4*(x+2),(4*
10、(y+2),(4*(x+3),(4*(y+3),color);void Trun_Off_Point (uchar x,uchar y) ili9320_Rectangle(4*(x+2),(4*(y+2),(4*(x+3),(4*(y+3),0xFFFF,0xFFFF);/=/函数名称:void Init_SNAKE(void) /函数功能:绘制游戏界面,初始化游戏等级等参数/入口参数:无/出口参数:无/=void Init_SNAKE(void) uchar i; /*获取方向基准*/ MMA_7260_Init_3(); MMA_7260_Measure_3(); MMA_7260_Ge
11、tValue16_3(&KEY_BASE); /以下语句可以通过串口检验三轴加速度数据/* if(Flag) printp( Get X Channel: %10D,KEY_BASE0); printp( Get Y Channel: %10D,KEY_BASE1); printp( Get Z Channel: %10D,KEY_BASE2); */ /*绘制游戏界面*/ ili9320_Rectangle(4, 4, 166, 206,0,0); ili9320_Rectangle(5, 5, 167, 207,0,0); ili9320_Rectangle(6, 6, 168, 208,
12、0,0); ili9320_Rectangle(5, 5, 169, 209,0,0); ili9320_Rectangle(7, 7, 167, 207,0xFFFF,0xFFFF);/绘制一个矩形框,160*240 ili9320_Write_multi_HZ_ASCII(167+10,32,32,32,少女32.FON,少符32.FON,07电信一,0xF800); ili9320_Write_multi_HZ_ASCII(167+10,66,32,32,少女32.FON,少符32.FON,郑友金,0xF800); ili9320_Write_multi_HZ_ASCII(167+10,100,32,32,少女32.FON,少符32.FON,贪食蛇,0xF800); /*初始化蛇参数*/ Snake.Long=2; /定义初始化蛇的长度
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1