51单片机红外遥控点阵贪食蛇程序 时间:2024-05-20 11:37:10 完整的源码和制作资料下载:http://www.ruidan.com/bbs/dpj-20623-1.html /****************工程包含的头文件*************************/ #include #include #include"define.h" #include"delay.h" #include"zm.h" #include"32x12matrix.h" #include"menu.h" #include"MySnake.h" #include"ds1302.h" #include"ds18b20.h" #include"i2c.h" #include"radio.h" #include"ir.h" /*--------------------------------------------------------- 函数功能:Timer0初始化 调用形式:Timer0_Init(); 参数:无 备注:用于产生具有随机性质的贪食蛇游戏食物的坐标位置 ---------------------------------------------------------*/ void Timer0_Init() { TMOD|=0x02;//重装初值计数模式,TL0:0->255 IE|=0X82; TH0=0; TL0=0; TR0=1;//开启内部Timer0 } /*--------------------------------------------------------- 函数功能:ExtInt1初始化 调用形式:ExtInt1_Init(); 参数:无 返回值:无 备注:下降沿 ---------------------------------------------------------*/ void ExtInt1_Init(void) { IT1=1; EA=1; EX1=1; } /*--------------------------------------------------------- 函数功能:主函数 调用形式:无 参数:无 返回值:无 修改时间:13.4.17 备注:无 ---------------------------------------------------------*/ void main() { uint8 i; Radio_Init();//待机 Timer0_Init(); Matrix_Boot(); Timer1_Init(); ExtInt0_Init(); ExtInt1_Init(); Menu_Init();//菜单初始化 DS1302_Init(); DS18b20_Init(); snake_status=0; while(1) { if(matrix.S==F)//工作在首屏显示 { ClearBuf(); if(matrix.N==SNAKE)//菜单编号等于snake游戏,显示snake游戏logo Display_32x16(1); else if(matrix.N==JINIANRI) Display_32x16(2); else if(matrix.N==ME) Display_32x16(3);//时钟LOGO else if(matrix.N==SET) { Display_32x16(4); } else if(matrix.N==MPERATURE) { Display_32x16(5); for(i=0;i<60;i++) Display(); Display_32x16(6); for(i=0;i<64;i++) temp1[i]=temp[i]; Display_32x16(5); UpDown_Move(UP,SET__EED); for(i=0;i<60;i++) Display(); Display_32x16(5); for(i=0;i<64;i++) temp1[i]=temp[i]; Display_32x16(6); UpDown_Move(N,SET_NEXT_SPEED); for(i=0;i<60;i++) Display(); } else if(matrix.N==RADIO) Display_32x16(7); Display(); } else//进入了程序执行状态 { if(matrix.N==SNAKE)//执行贪食蛇游戏 { //if(snake_status==0)//游戏状态为0,表示一次执行或者游戏结束 需初始化 //Snake_Init();//游戏初始化 //else Snake_Ing();//游戏进行时 } else if(matrix.N==JINIANRI) Display_LeftMove(img_16x16III,25); else if(matrix.N==TIME) Time_Ing(); else if(matrix.N==SET) TimeSet_Ing(); else if(matrix.N==TEMPERATURE) Temperature_Ing(); else if(matrix.N==RADIO) Radio_Ing(); } } } /*--------------------------------------------------------- 函数功能:Timer0中断服务 调用形式: 参数: 返回值: 修改时间:13.4.16 备注: ---------------------------------------------------------*/ void Timer0_IRQ() interrupt 1 { seed++; } /*--------------------------------------------------------- 函数功能:外中断1服务函数 调用形式:无 参数:无 返回值: 修改时间:13.4.17 备注:根据点阵的工作状态进行扫描,便于按键复用 ---------------------------------------------------------*/ void ExtInt1_IRQ() interrupt 2 { if(matrix.S==FIRST) Menu_Key();//点阵状态工作在首屏,执行首屏按键扫描 else //执行程序时的按键扫描 { if(matrix.N==SNAKE) Snake_Key();//贪吃蛇游戏的按键扫描 else if(matrix.N==JINIANRI) LeftMove_Key(); else if(matrix.N==TIME) Time_Key(); else if(matrix.N==SET) Time_Set_Key(); else if(matrix.N==TEMPERATURE) Temperature_Key(); else if(matrix.N==RADIO) Radio_Key(); } } -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。 锐单商城拥有海量元器件数据手册、IC替代型号,打造电子元器件IC百科大全!