ARM课程设计报告 - 图文 联系客服

发布时间 : 星期一 文章ARM课程设计报告 - 图文更新完毕开始阅读ba3af20dbfd5b9f3f90f76c66137ee06eff94e7c

ARM系统设计实践课程报告

while(1) //正在向下转弯 {

if(sl!=0) {

Set_Display(--SX,SY,1);

Set_Display(sx,sy-(sl-1),0);

if((foodsignal==1)&&(sl==2)) //目的是在在转弯过程中,吃到食物,蛇长变长

{

SL=SL+1; sl=sl-2; } else sl--; } else break; } }

while(1) //转向完毕后直线行进 {

Set_Display(--SX,SY,1); //蛇头向前一点

Judge_Food(); //直线运动,判断食物 Set_Display(SX-SL,SY,0); //蛇尾灭一个点

switch( Key_Num ) //检测是否向左或者向右的按键 {

case KEY3: //键3表示向左 Key_Num = 0; LeftMove(); break;

case KEY4: //键4表示向右 Key_Num = 0; RightMove(); break; default:

Key_Num = 0; break; } } }

/////////判断贪吃蛇行进方向函数////////////////

16

ARM系统设计实践课程报告

void Judge_Direction() //运动方向判断,JD=1是向上,2是向下,3是向左,4是向右 {

uint8 Test_Light();

if(chDispRam2[SX+1][SY]==0) JD=1;

if(chDispRam2[SX-1][SY]==0) JD=2;

if(chDispRam2[SX][SY-1]==0) JD=3;

if(chDispRam2[SX][SY+1]==0) JD=4; }

///////////食物生成函数/////////////

void Food() //生成食物 {

foodx=rand(); //控制食物在一定范围内 foodx=foodx5; foody=rand(); foody=foody5;

Set_Display(foodx,foody,1); //显示随机的到的食物 }

////////////游戏结束显示/////////////

void GameOver() //游戏结束显示 {

LCD_clr(); w_cd(0x38,0);

display(2,2,5,\ DELAY(3000000); }

////////////判断贪吃蛇是否撞墙///////////////

17

ARM系统设计实践课程报告

void Judge_Wall() //判断蛇是否 撞墙 {

if(SX==62||SX==1||SY==1||SY==127) {

// LCD_clr(); while(1) {

GameOver(); } } }

/////////直线行进时,判断是否有食物//////////

void Judge_Food() //直线运动,判断食物 {

foodsignal=0;

if((SX==foodx)&&(SY==foody)) {

Food(); ++SL; } }

//////////转向过程中,判断是否有食物/////////////

void Judge_Food_Turn() //转弯过程中,判断食物 {

foodsignal=0;

if((SX==foodx)&&(SY==foody)) {

Food();

foodsignal=1; } }

///////////////主函数//////////////////

void main () {

18

ARM系统设计实践课程报告

uint8 hanzi[64] = \贪吃蛇\

uint8 hanzi2[64] = \课程设计\ uint8 hanzi3[64] = \张广申\ uint16 i = 0; sint8 j=0;

uint16 ADCBuff, ADCTemp;

SYS_Init();

////////////////////////////////////// initial(); w_cd(0x38,0);

Write_CH452_comd( CH452_SYSON2W );//

Write_CH452_comd(CH452_NO_BCD); // 不译码,8个数码管

for( i = 0; i < 3; i++) {

display(2, 3, 3, hanzi); DELAY(4000000);

GPBitOut( 4, 2, 1 ); /* set P4.2 LCD_clr();

GPBitOut( 4, 2, 0 ); /* set P4.2 }

for( i = 0; i < 3; i++) {

display(1, 2, 6, hanzi2); display(3, 4, 2, hanzi3);

display(4, 2, 6, \ DELAY(5000000);

GPBitOut( 4, 2, 1 ); /* set P4.2 LCD_clr();

GPBitOut( 4, 2, 0 ); /* set P4.2 }

////////////////////////////////////// init_dds(); output(100);

ADCBuff = ADConvert( 1 );

IRQEN = XIRQ0_BIT;

19

*/ */

*/ */

ARM系统设计实践课程报告

//////////////////////////////////////// LCD_clr();

/////////////初始化游戏界面/////////////////

for(i=0;i<64;i++) //显示边框

{ chDispRam[i][0] = 0xC0;

chDispRam[i][15] = 0x03; }

for(i=0;i<16;i++) {

chDispRam[0][i] = 0xff; chDispRam[63][i] = 0xff; chDispRam[1][i] = 0xff; chDispRam[62][i] = 0xff; }

SX=32; //蛇头横坐标 SY=32; //蛇头纵坐标 SL=3; //蛇长

foodx=32; foody=45;

Set_Display(foodx,foody,1); //食物

Set_Display(SX,SY,1); //蛇的初显示 Set_Display(SX,--SY,1); Set_Display(SX,--SY,1);

disp_bmp(); //将初始化中的点全部显示 Move(); //初始行进

20