历史上的今天
今天是:2024年11月27日(星期三)
2019年11月27日 | 51单片机点阵8X8贪吃蛇设计(仿真 + 程序)
2019-11-27 来源:51hei
51单片机点阵8X8贪吃蛇设计(仿真 + 程序)闲来无聊制作的贪吃蛇8X8程序和仿真下面压缩包里都有,元器件都是平时最常用的,很好制作。


单片机程序源码:
#include #define uchar unsigned char #define SNAKE 20 //最大长度 #define TIME 50 //显示延时时间 #define SPEED 71 //速度控制 //define keyenable 1 sbit keyenable=P0^0; //方向使能 sbit keyx=P0^1; //左右 sbit keyy=P0^2; //上下 */ //sbit up=P0^0; sbit up=P3^1; //down sbit down=P3^2; sbit right=P3^3; sbit left=P3^4; uchar x[SNAKE+1]; uchar y[SNAKE+1]; uchar time,n,i,e; //延时时间,当前蛇长,通用循环变量,当前速度 char addx,addy; //位移偏移量 /******************** 延时程序 *********************/ void delay(char MS) { char us,usn; while(MS!=0) { usn = 0; while(usn!=0) { us=0xff; while (us!=0){us--;}; usn--; } MS--; } } /******************************************* 判断碰撞 *******************************************/ bit knock() {bit k; k=0; if(x[1]>7||y[1]>7)k=1; //撞墙 for(i=2;i } /***************** 上下左右键位处理 *****************/ void turnkey()// interrupt 0 using 2 {//up=1; if(keyenable) { if(left){addy=0;if(addx!=1)addx=-1; else addx=1;} if(right){addy=0;if(addx!=-1)addx=1; else addx=-1;} if(up){addx=0;if(addy!=-1)addy=1; else addy=-1;} if(down){addx=0;if(addy!=1)addy=-1; else addy=1;} /*if(keyy) {addy=0; //左右 if(keyx)if(addx==-1)addx=-1; else addx=1; //左 else if(addx==1)addx=1; else addx=-1; //右 } else {addx=0; //上下 if(keyx)if(addy==1)addy=1; else addy=-1; //下 else if(addy==-1)addy=-1; else addy=1; //上 } */ } } /***************** 乘方程序 *****************/ uchar mux(uchar temp) { if(temp==7)return 128; if(temp==6)return 64; if(temp==5)return 32; if(temp==4)return 16; if(temp==3)return 8; if(temp==2)return 4; if(temp==1)return 2; if(temp==0)return 1; return 0; } /***************** 显示时钟 显示程序 *****************/ void timer0(uchar k) {while(k--) {for(i=0;i turnkey(); //上下左右键位处理 delay(TIME); //显示延迟 P2=0x00;P1=0xff; }} } /***************** 主程序 *****************/ void main(void) {e=SPEED; P0=0x00; P1=0xff; P2=0x00; P3=0x00; while(1) {//if(keyenable==1){P1=0x00;P2=0xff;}else{P1=0xff;P2=0x00;} for(i=3;i n=3; //蛇长 n=-1 x[1]=1;y[1]=0; //蛇头 x[2]=0;y[2]=0; //蛇尾1 addx=0;addy=0; //位移偏移 //k=1; ………… …………
史海拾趣
|
我想在wince下实现AD数据采集,思路是通过调用ceddk.dll中的函数读写ADC寄存器实现ADC。我简单地做了个试验,第一步,我把ADCDAT0寄存器的物理的物理地址0x5800000C通过MmMapIoSpace转变成虚拟地址0x00160000;第二步,我通过read_re ...… 查看全部问答> |
|
大家好,我是一名大三的学生,学的是嵌入式方向的,但我们现在才学嵌入式操作系统,都TMD还是理论,学了等于没学,就上学期还学了个汇编,现在一学期都快过完了,感觉什么关于嵌入式方面的都没学到,如果靠下学期再来学点东西,以后出去就别想混了 ...… 查看全部问答> |
|
功能是读取edit控件中显示的内容,将内容存储到txt文件中 现在文件可以创建,也可以写入,就是打开txt文件显示乱码。 请教明白人 谢谢 void CDATASTOREDlg::OnSave() { UpdateData(TRUE); SYSTEMTIME Time;  ...… 查看全部问答> |
|
哪位大侠帮我解答下,不胜感激,小弟刚开始在STM32上折腾uCOS II.Micrium的代码已经跑上了,但中断还迷糊..............1)stm32 ucos ii 如何使用串口(如uart2)中断在接收数据?2)串口中断在哪开?然后用void US ...… 查看全部问答> |
|
从网上找到一个例子,但不能进入中断,请老师们帮助分析. #include "msp430x21x2.h" unsigned int start,end,width; unsigned int start2,end2,width2; unsigned char overflow; float number; float number2; float fre; fl ...… 查看全部问答> |
|
麻烦大家帮我看下, 我的DS18B20初始化失败。 我用protues仿真,用一盏小灯做指示, 程序读不出数据,逐步检测发现程序卡在DS18B20初始化的初始化部分。 可是我去查看了datasheet也没能查出原因来··。 麻烦 ...… 查看全部问答> |
|
如题,求购求购EXP430G2 launchpad口袋实验平台扩展板,即带有128段LCD的那块 或者还有什么其他方法可以获得,知道的请说下,谢谢! 东西如下图: … 查看全部问答> |
|
【Nucleo心得】+(九)BlueNRG的应用程序命令接口ACI解读 BlueNRG的应用程序命令接口ACI解读 1、应用程序命令接口概述BlueNRG定位于BLE网络协处理器(BLE Network Co-Processor),也就是为系统的应用程序(Application)增加BLE通讯功能。BlueNRG通过SPI接口与Application通讯,其中Application通过SPI ...… 查看全部问答> |




