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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機循跡小車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:601581 發表于 2020-11-4 15:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
# define uchar unsigned char
# define uint unsigned int
//定義單片機不同的I/O口來進行信號的輸入與輸出
sbit  in1=P3^7;
sbit  in2=P3^6;
sbit  in3=P3^5;
sbit  in4=P3^4;

sbit  c1=P2^7;
sbit  c2=P2^6;
sbit  c3=P2^5;
sbit  c4=P2^4;
sbit  c5=P2^3;
sbit  c6=P2^2;
sbit  c7=P2^1;
sbit  c8=P2^0;
sbit  c9=P1^6;
sbit  c10=P1^5;         //循跡10個燈

sbit D = P3^3;      

uchar  stop=0;
uchar  count=0;     
uchar  temp = 0;   
uchar  SE = 0;   
uchar speed_left = 0;     
uchar speed_right = 0;  

void time0_init(void)   
{
        TMOD=0x01;   //對定時器0的模式進行選擇0001 即gate為0即T0只受TR0控制 C/T為0即為定時器  01對應16位的定時器
        TH0=0xFF;    //寄存器的高8位 1111 1111
        TL0=0xea;   //寄存器的低8位  1110 1010
        TR0=1;      //啟動定時器0
        ET0=1;      //打開T0的中斷
        EA=1;       //打開全局中斷
}
uchar judge(void)    //檢測情況判斷
{
          if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==1)&&(c6==1)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 1;
    else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==1)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 2;
         else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==1)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 3;
         else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==1)&&(c5==1)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 4;
         else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==1)&&(c7==1)&&(c8==0)&&(c9==0)&&(c10==0))
                return 5;
        else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==1)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 6;
        else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==1)&&(c8==0)&&(c9==0)&&(c10==0))
                return 7;
        else        if((c1==0)&&(c2==0)&&(c3==1)&&(c4==1)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 8;
        else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==1)&&(c8==1)&&(c9==0)&&(c10==0))
                return 9;
        else        if((c1==0)&&(c2==0)&&(c3==1)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 10;
        else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==1)&&(c9==0)&&(c10==0))
                return 11;
        else        if((c1==0)&&(c2==1)&&(c3==1)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 12;
else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==1)&&(c9==1)&&(c10==0))
                return 13;
        else        if((c1==0)&&(c2==1)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 14;
        else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==1)&&(c10==0))
                return 15;
        else        if((c1==1)&&(c2==1)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 16;
else if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==1)&&(c10==1))
                return 17;
else if((c1==1)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==0))
                return 18;
        else        if((c1==0)&&(c2==0)&&(c3==0)&&(c4==0)&&(c5==0)&&(c6==0)&&(c7==0)&&(c8==0)&&(c9==0)&&(c10==1))
                return 19;
        else        if((c1==1)&&(c2==1)&&(c3==1)&&(c4==1)&&(c5==1)&&(c6==1)&&(c7==1)&&(c8==1)&&(c9==1)&&(c10==1))
                return 20;
        else
                 return 0;
}

uchar dadt,dadt_1;
void main(void)
{
               
                uchar wark = 0;
                time0_init();
                speed_left = 50;
                speed_right = 50;
                SE =15;
        
                while(1)
                {
      dadt=judge();
                        if(dadt == 0)
                        dadt=dadt_1;
                        dadt_1=dadt;
                        switch(dadt)
                        {
                        case 1:SE =15;speed_left =85;speed_right =85; break;
                        case 2:SE =15;speed_left =80;speed_right =85; break;         
                        case 3:SE =15;speed_left =85;speed_right =80; break;
                        case 4:SE =14;speed_left =70;speed_right =85; break;
            case 5:SE =16;speed_left =85;speed_right =70; break;         
                                
                        case 6:SE =14;speed_left =60;speed_right =75; break;
                        case 7:SE =16;speed_left =75;speed_right =60; break;
                        case 8:SE =13;speed_left =57;speed_right =75; break;
                        case 9:SE =17;speed_left =75;speed_right =57; break;
                                
                        case 10:SE =12;speed_left =45;speed_right =75; break;
                        case 11:SE =18;speed_left =75;speed_right =55; break;
                        case 12:SE =12;speed_left =55;speed_right =80; break;
                        case 13:SE =18;speed_left =75;speed_right =63; break;
                                
                    case 14:SE =11;speed_left =53;speed_right =80;  break;         
                    case 15:SE =19;speed_left =75;speed_right =58; break;         
                        case 16:SE =11;speed_left =55;speed_right =80; break;         
                        case 17:SE =19;speed_left =80;speed_right =55; break;
                                
                        case 18:SE = 11;speed_left =55;speed_right =80; break;
                        case 19:SE = 19;speed_left =80;speed_right =55; break;
            case 20:SE = 15;speed_left =85;speed_right =85;stop++;break;
                        default:
        break;
                        }                 
                }        
}

void T0_time() interrupt 1   //中斷函數
{
        TR0=0;
        TH0=0xff;      //255
        TL0=0Xea;      //234
        temp++;
        if(temp>=833)                        //202           //1000
   {
         temp=0;
   }
  if(temp<=SE)
   {
    D=1;
   }
   else
   {
     D=0;
   }
         count++;
        if(count>100)
        count=0;
        if(count<speed_left)
        {
                in1=1;
                in2=0;
        }
        else
        {
                in1=0;
                in2=0;
        }
        if(count<speed_right)
        {
                in3=1;
                in4=0;
        }
    else
        {
                in3=0;
                in4=0;
        }
        TR0=1;        
}

程序.zip

102.48 KB, 下載次數: 15, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2020-11-11 18:02 | 只看該作者
這個能發一下原理圖嗎?不知道電路連接啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久色一区 | 麻豆一区 | 久久精品国产一区二区 | 资源首页二三区 | 亚洲免费在线 | 天堂久久av | 亚洲美女一区二区三区 | 欧美精品一区二区在线观看 | 日韩午夜在线观看 | 中文字幕视频在线免费 | 国产日韩一区二区 | 午夜性色a√在线视频观看9 | 国产一区二区三区在线 | 久久精品综合网 | 日韩欧美二区 | 欧美精品在线免费观看 | 亚洲精品久久久一区二区三区 | 成人激情视频免费观看 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 在线免费观看黄色av | 7777久久| 免费同性女女aaa免费网站 | 日本不卡一区二区三区在线观看 | 国产一区二区毛片 | 成人久久网| 欧美aⅴ在线观看 | 在线观看国产视频 | xxx国产精品视频 | 波多野结衣中文字幕一区二区三区 | 久久免费国产 | 99久热 | 日韩成人性视频 | 亚洲欧美成人在线 | 日韩三级在线 | 久久偷人 | 成人伊人| 国产乱码精品一品二品 | 欧美在线亚洲 | 欧美一级视频在线观看 | 日韩中文欧美 | 91免费入口 |