久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2439|回復: 4
打印 上一主題 下一主題
收起左側

貪吃蛇有人有做成功后的原理圖和程序嗎?求分享

[復制鏈接]
跳轉到指定樓層
樓主
(本人新手)查了好多資料,自己也做了板子發現程序沒有用
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:303383 發表于 2018-7-19 22:26 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

板凳
ID:164602 發表于 2018-7-20 08:38 | 只看該作者
有有有,我有啊。
不過,這個程序就是在本站獲得的,原理圖就是我買的板子的那么幾個部分,可以再分享給你。
程序是這樣的:
#include <STC89C5xRC.H>
#include<intrins.h>

#define uchar unsigned char
#define lmax 15  //最大長度15
#define smin 50  //速度

sbit SER=P3^4;
sbit SRLCK=P3^6;
sbit RLCK=P3^5;
sbit up=P3^0;  //上
sbit down=P3^1; //下
sbit left=P3^2; //左
sbit right=P3^3;//右
uchar lie[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};       
uchar x[lmax+1],y[lmax+1];
uchar time,n,o;
uchar si=0;
char addx,addy;

void time0()
{
        TMOD=0x01;
        TH0=0xfc;
        TL0=0x18;
        ET0=1;
        EA=1;
        TR0=1;
}

void send(uchar a)
{
        int i;
        SRLCK=0;
        RLCK=0;
        for(i=0;i<8;i++)
        {
                SER=a<<7;     
                SRLCK=1;         
                a=a>>1;
                SRLCK=0;
        }
        RLCK=1;
}

void delay(unsigned int i)
{
        while (i--);
}

int die()
{
        int i,j=0;
        if(x[1]>7||y[1]>7)j=1;        //碰壁死亡
        for(i=2;i<=n;i++)                //自撞死亡
        {
                if(x==x[1]&&y==y[1])
                {
                        j=1;
                }
        }
        return j;
}

void anjian()
{
        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(!right){addy=0;if(addx!=-1)addx=1;else addx=-1;}
        if(!left){addy=0;if(addx!=1)addx=-1;else addx=-1;}
}

uchar mux(uchar a)
{
        if(a==7)return 0x01;
        if(a==6)return 0x02;
        if(a==5)return 0x04;
        if(a==4)return 0x08;
        if(a==3)return 0x10;
        if(a==2)return 0x20;
        if(a==1)return 0x40;
        if(a==0)return 0x80;
        return 0;
}

void magic1()
{
        int i;
        for(i=0;i<7;i++)
        {
                send(lie);
                P0=0x00;
                delay(20000);
                send(0x00);
                P0=0xff;
        }
        for(i;i>=0;i--)
        {
                send(lie);
                P0=0x00;
                delay(20000);
                send(0x00);
                P0=0xff;
        }      
}

void xianshi(int k)
{
        int i;
        while(k--)
        {
                for(i=0;i<=lmax;i++)
                {
                        send(mux(y));
                        P0=0xff-mux(x);
                        anjian();
                        delay(100);
                        send(0x00);         //消隱
                        P0=0xff;
                }   
        }
}

void main()
{
        int i;
        o=smin;
        time0();
        while(1)
        {
                P3=0xff;
                x[0]=5;y[0]=4;//食物
                x[1]=0;y[1]=1;//蛇頭
                x[2]=0;y[2]=0;//蛇尾
                n=2;          //初始長度
                addx=0;addy=0;
                for(i=3;i<=lmax;i++){x=10;y=10;} //初始化賦值
                while(1)                                                         //初始化顯示
                {
                        if(!up||!down||!left||!right)break;
                        xianshi(1);
                }
                while(1)
                {
                        xianshi(o);
                        if(die()){o=smin;magic1();break;}//死亡判斷
                        if(x[1]==x[0]&&y[1]==y[0])           //是否吃到食物
                        {
                                n++;
                                if(n==lmax)
                                {
                                        n=2;o=o-10;
                                        for(i=3;i<lmax+1;i++)
                                        {
                                                x=100;
                                                y=100;
                                        }
                                }
                                x[0]=si%8;                  //隨機數0~8
                                y[0]=si%8;           
                        }
                        for(i=n;i>1;i--){x=x[i-1];y=y[i-1];}  //移動      
                        x[1]=x[2]+addx;y[1]=y[2]-addy;  
                }
        }
}

void Time00() interrupt 1          //中斷1
{
        TH0=0xfc;
        TL0=0x18;
        si++;
        if(si==100)
        {
                si=0;
        }   
}


相關的電路原理圖是這樣的:







程序、硬件是經過運行檢驗過的。
回復

使用道具 舉報

地板
ID:345750 發表于 2018-7-20 08:40 | 只看該作者
小貓貓愛吃魚 發表于 2018-7-19 22:26
你好!
1、用的什么單片機?
2、顯示用的什么?

51單片機,用8x8點陣的,打算做個實物玩玩
回復

使用道具 舉報

5#
ID:345750 發表于 2018-7-20 10:31 | 只看該作者
HC6800-ES-V2.0 發表于 2018-7-20 08:38
有有有,我有啊。
不過,這個程序就是在本站獲得的,原理圖就是我買的板子的那么幾個部分,可以再分享給你 ...

沒有完整的原理圖嗎?那個JOE和JP 是什么啊?還有就是點陣你使用的是共陽還是共陰啊?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久婷婷色| 少妇午夜一级艳片欧美精品 | 亚洲精品美女 | h视频在线免费观看 | 久久久精品综合 | 精品一区二区久久久久久久网站 | 在线视频三区 | 91电影院| 精品欧美色视频网站在线观看 | 午夜亚洲| 男人的天堂视频网站 | 亚洲精品一区二区久 | 91精品综合久久久久久五月天 | 国产精品久久777777 | 99精品久久久久久中文字幕 | 草草精品 | 一区二区三区国产视频 | 国产精品成人久久久久 | 亚洲天堂av在线 | 人人操日日干 | 给我免费的视频在线观看 | 国产黄色网 | 久久神马 | 国产在线一区二区三区 | 最新国产福利在线 | 亚洲精品一区在线观看 | 日韩第一夜 | 久久精品亚洲欧美日韩精品中文字幕 | 中文在线а√在线8 | 久久久免费在线观看 | 九一精品| 国产精品一区网站 | 久久国色 | 国产亚洲精品精品国产亚洲综合 | 亚洲日本欧美日韩高观看 | 欧美一级久久 | 一片毛片 | 日韩成人在线观看 | 欧美一区不卡 | 国产精品视频区 | 蜜桃特黄a∨片免费观看 |