|
51單片機智能小車紅外避障程序以及文檔- #include"car_psb.h"
- #define smg P2
- sbit b = P0^4;//蜂鳴器驅動三極管B管腳
- sbit u3_en = P4^4;//u3的使能管腳
- sbit u4_en = P4^5;//u4芯片的使能管腳
- sbit u5_en = P4^6;//u5芯片的使能管腳
- sbit key1 = P0^6;//s1按鈕
- sbit key2 = P3^5;//s2按鈕
- sbit key3 = P3^6;//s3按鈕
- sbit key4 = P3^7;//s4按鈕
- sbit DQ = P0^5;//ds18b20數據線
- sbit DATA=P4^7; //雙向數據線
- sbit RST=P1^7; //使能線
- sbit SCLK=P0^7; //時鐘線
- sbit A1 = P0^3;
- sbit A2 = P0^2;//A1為L293芯片2腳(IN1),A2為L293芯片7腳(IN2),控制右電機
- sbit B1 = P0^1;
- sbit B2 = P0^0;//B1為L293芯片10腳(IN3),B2為L293芯片15腳(IN4),控制左電機
- //注意芯片使能管腳1腳(E1)和9腳(E2)已接vcc高電平,
- //所以不需要單片機控制輸出高電平使能
- sbit u5_out2 = P1^6;//右光敏電阻
- sbit u5_out1 = P1^4;//左光敏電阻
- sbit u4_out3 = P1^2;//左紅外避障
- sbit u4_out4 = P1^3;//右紅外避障
- sbit u4_out1 = P1^0;//右紅外循跡
- sbit u4_out2 = P1^1;//左紅外循跡
- sbit Echo = P3^3;//超聲波信號反饋端
- sbit Tring = P3^4;//超聲波信號發送端
- sbit Rt = P3^2;//紅外接收管腳,單片機中斷0管腳
- unsigned char a[4];//保存紅外遙控器的四位數據
- unsigned char code tab1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//數碼管位選
- unsigned char code ds1302_w[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//ds1302芯片寫字節
- unsigned char code ds1302_r[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//ds1302芯片寫字節
- /*************************************************************/
- //函數名稱:void delayms(unsigned int xms)
- //函數功能:延時xms毫秒
- //xms取值為0-65535
- //調用:為內部調用函數
- /************************************************************/
- void delayms(unsigned int xms)
- {
- unsigned int x,y;
- for(x=xms;x>0;x--)
- for(y=1100;y>0;y--);
- }
- /*************************************************************/
- //函數名稱:void c_stop(void)
- //函數功能:小車停止
- //調用:為內部調用函數
- /************************************************************/
- void c_stop(void)
- {A1=0;A2=0;B1=0;B2=0;}//小車停止
- /*************************************************************/
- //函數名稱:void c_go(void)
- //函數功能:小車向前
- //調用:為內部調用函數
- /************************************************************/
- void c_go(void)
- {A1=1;A2=0;B1=1;B2=0;}//小車向前
- /*************************************************************/
- //函數名稱:void c_bask(void)
- //函數功能:小車后退
- //調用:為內部調用函數
- /************************************************************/
- void c_bask(void)
- {A1=0;A2=1;B1=0;B2=1;}//小車后退
- /*************************************************************/
- //函數名稱:void c_left(void)
- //函數功能:小車向左
- //調用:為內部調用函數
- /************************************************************/
- void c_left(void)
- {A1=1;A2=0;B1=0;B2=1;}//小車向左
- /*************************************************************/
- //函數名稱:void c_right(void)
- //函數功能:小車向右
- //調用:為內部調用函數
- /************************************************************/
- void c_right(void)
- {A1=0;A2=1;B1=1;B2=0;}//小車向右
- /*************************************************************/
- //函數名稱:void bell(unsigned int x,unsigned int time)
- //函數功能:蜂鳴器驅動函數,讓蜂鳴器循環響停X次
- // (蜂鳴器響time毫秒,停time毫秒為一次)
- //x取值為0-65535,time取值為0-65535
- //調用:為外部調用函數
- /************************************************************/
- void bell(unsigned int x,unsigned int time)
- {
- unsigned int i;
- for(i=x;i>0;i--)
- {
- b = ~b;
- delayms(time);
- }
- b = 1;
- }
- /*********************數碼管****************************************/
- /*************************************************************/
- //函數名稱:void display_init()
- //函數功能:0-7位的數碼管顯示,初始化程序
- //調用:為外部調用函數
- /************************************************************/
- void display_init(void)
- {
- P4SW = 0x70;
- smg = 0xff;
- }
- /*************************************************************/
- //函數名稱:void display_07(unsigned char x,unsigned char dat)
- //函數功能:0-7位的數碼管顯示
- //x取值為0-7,dat取值為0-0xff
- //調用:為外部調用函數
- //調用時如:display_07(0,0xc0);則讓0位數碼管顯示0,(0xc0是共陽數碼管“0”的編碼)
- /************************************************************/
- void display_07(unsigned char cmd,unsigned dat)
- {
- u5_en = 0;
- u3_en = 0;
- u4_en = 0;//先將兩個芯片不使能,數據不能改變
- smg = dat;//將段選的數據賦予P2
- u3_en = 1;//u3使能,數據輸入
- u3_en = 0;//稍作延時后將u3不使能
- smg = tab1[cmd];//將需要點亮的數碼管數據賦予P2
- u4_en = 1;//u4使能,P2數據進入u4
- delayms(2);//u4使能后稍作延時
- smg = 0x00;
- u3_en = 0;
- u4_en = 0;//將兩個芯片不使能,數據不能改變結束一輪數據的輸入
- u5_en = 0;
- }
- /*********************led驅動****************************************/
- /*************************************************************/
- //函數名稱:void display_led(unsigned char dat)
- //函數功能:8位led的顯示
- //dat取值為0-0xff
- //調用:為外部調用函數
- /************************************************************/
- void display_led(unsigned char dat)
- {
- u5_en = 0;
- u3_en = 0;
- u4_en = 0;//先將兩個芯片不使能,數據不能改變
- smg = dat;//將段選的數據賦予P2
- u5_en = 1;//u5使能,數據輸入
- u5_en = 0;//稍作延時后將u5不使能
- }
- /*********************按鈕驅動****************************************/
- /*************************************************************/
- //函數名稱:bit k1()
- //函數功能:返回一位數據,當按鈕按下時返回1,沒有按下時返回0
- //調用:為外部調用函數
- /************************************************************/
- bit k1(void)
- {
- bit dat;
- if(key1==0)
- {
- delayms(2);
- if(key1==0)
- {
- dat = 1;
- }
- }
- else if(key1==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*************************************************************/
- //函數名稱:bit k2()
- //函數功能:返回一位數據,當按鈕按下時返回1,沒有按下時返回0
- //調用:為外部調用函數
- /************************************************************/
- bit k2(void)
- {
- bit dat;
- if(key2==0)
- {
- delayms(2);
- if(key2==0)
- {
- dat = 1;
- }
- }
- else if(key2==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*************************************************************/
- //函數名稱:bit k3()
- //函數功能:返回一位數據,當按鈕按下時返回1,沒有按下時返回0
- //調用:為外部調用函數
- /************************************************************/
- bit k3(void)
- {
- bit dat;
- if(key3==0)
- {
- delayms(2);
- if(key3==0)
- {
- dat = 1;
- }
- }
- else if(key3==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*************************************************************/
- //函數名稱:bit k4()
- //函數功能:返回一位數據,當按鈕按下時返回1,沒有按下時返回0
- //調用:為外部調用函數
- /************************************************************/
- bit k4(void)
- {
- bit dat;
- if(key4==0)
- {
- delayms(2);
- if(key4==0)
- {
- dat = 1;
- }
- }
- else if(key4==1)
- {
- dat = 0;
- }
-
- return dat;
- }
- /*********************DS18B20溫度傳感器驅動****************************************/
- /***************************************************/
- //函數名稱:void delay750us(void);
- //函數功能:延時7500us;
- /***************************************************/
- void delay750us(void)
- {
- unsigned char a,b;
- for(b=112;b>0;b--)
- for(a=17;a>0;a--);
- }
- /***************************************************/
- //函數名稱:void delay70us(void);
- //函數功能:延時70us;
- /***************************************************/
- void delay70us(void)
- {
- unsigned char a;
- for(a=192;a>0;a--);
- }
- /***************************************************/
- //函數名稱:void delay15us(void);
- //函數功能:延時15us;
- /***************************************************/
- void delay15us(void)
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=38;a>0;a--);
- _nop_();
- }
- /***************************************************/
- //函數名稱:void delay45us(void);
- //函數功能:延時45us;
- /***************************************************/
- void delay45us(void)
- {
- unsigned char a,b;
- for(b=49;b>0;b--)
- for(a=1;a>0;a--);
- _nop_();
- }
- /***************************************************/
- //函數名稱:void delay2us(void);
- //函數功能:延時2us;
- /***************************************************/
- void delay2us(void)
- {
- unsigned char a;
- for(a=4;a>0;a--);
- }
- /***************************************************/
- //函數名稱:void delay4us(void);
- //函數功能:延時4us;
- /***************************************************/
- void delay4us(void)
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=8;a>0;a--);
- }
- /***************************************************/
- //函數名稱:void delay6us(void);
- //函數功能:延時6us;
- /***************************************************/
- void delay6us(void)
- {
- unsigned char a;
- for(a=15;a>0;a--);
- }
- /***************************************************/
- //函數名稱:void delay30us(void);
- //函數功能:延時30us;
- /***************************************************/
- void delay30us(void)
- {
- unsigned char a;
- for(a=81;a>0;a--);
- _nop_();
- }
- /***************************************************/
- //函數名稱:bit ack_ds18b20(void);
- //函數功能: ds18b20復位答應函數
- /***************************************************/
- bit ack_ds18b20(void)
- {
- bit flag;//返回標志位定義
-
- DQ = 1;//先將數據總線置高電平1
- delayms(2);//延時(延時時間沒有太大要求,但盡可能短比較好)
- DQ = 0;//將數據總線拉低
- delay750us();//延時480-960us之內的時間
- DQ = 1;//將總是拉高釋放數據線
- delay70us();//將總線拉高后需要等待15-60us后ds18b20會釋放一個60-240us的低電平
- if(DQ==0)
- flag = 1;//檢測到總是拉低則輸出1
- else
- flag = 0;//檢測總線是高電平則輸出0
- delay750us();//從單片機拉高釋放數據線后需要延時大于480us才能結束
- DQ = 1;//將數據線釋放
-
- return flag;//返回數據
- }
- /***************************************************/
- //函數名稱:write_ds18b20(uchar dat)
- //函數功能: 向ds18b20發送一個字節的數據
- /***************************************************/
- void write_ds18b20(unsigned char dat)
- {
- unsigned char i;
- DQ = 1;//先將總線拉高
- delayms(1);//稍作延時,時間不定
- for(i=0;i<8;i++)
- {
- DQ = 0;//先拉低總線
- delay15us();//延時15us
- DQ = dat&0x01;//按從低位到高位的順序發送數據,一次發送一位數據
- delay45us();//保存數據狀態,延時45us
- DQ = 1;//將總線釋放
- dat>>=1;//將數據右移一位,為下一次數據發送做準備
- }
- DQ = 1;//8位數據發送完后釋放總線
- }
- /***************************************************/
- //函數名稱:read_ds18b20(uchar dat)
- //函數功能: 讀取一個字節的數據
- /***************************************************/
- unsigned char read_ds18b20(void)
- {
- unsigned char dat;
- unsigned char i;
- for(i=0;i<8;i++)
- {
- dat >>= 1;//右移一位
- DQ = 1;//總線先拉高
- delay2us();//延時2us
- DQ = 0;//將總線拉低
- delay6us();//延時6us
- DQ = 1;//將總線拉高
- delay4us();//延時4us
- if(DQ == 1)//讀取總線的狀態,如果是1的,就寫進數據里,如果是0就不作處理
- dat |= 0x80;
- delay30us();//延時30us
- }
-
- return dat;//返回讀取到的數據
- }
- /*************************************************************/
- //函數名稱:unsigned int Rtemp_ds18b20()
- //函數功能:向ds18b20讀取溫度值,如實際溫度為36.5,返回的數據為365
- //調用:為外部調用函數
- /************************************************************/
- unsigned int Rtemp_ds18b20()
- {
- bit k;
- unsigned char temph,templ;//讀取的溫度高低數據保存
- unsigned int temp;//計算后的溫度
- k = ack_ds18b20();//先發送復位信號
- if(k==1)//ds18b20如果有答應,則讀取溫度
- {
- write_ds18b20(0xcc);//跳過ROM匹配命令
- write_ds18b20(0xbe);//發送讀取溫度命令
- templ = read_ds18b20();//讀取溫度低8位
- temph = read_ds18b20();//讀取溫度高8位
- temp = (temph*256+templ)*0.0625*10;//將讀取的溫度數據進行計算轉換為溫度值,
- } //并擴大10倍,將小數點后一位往前移動一位,方便顯示
- k = ack_ds18b20();//先發送復位信號
- if(k==1)//ds18b20如果有答應,則發送溫度轉換命令
- {
- write_ds18b20(0xcc);//跳過ROM匹配命令
- write_ds18b20(0x44);//發送溫度轉換命令
- }
- return temp;
- }
- /*********************DS1302驅動****************************************/
- void delaynus(unsigned char n)
- {
- unsigned char i;
- for(i=0;i<(n*10);i++);
- }
- /*************************************************************/
- //函數名稱:void Write1302(unsigned char dat)
- //函數功能:向ds1302芯片發送一個字節的數據
- //調用:為內部調用函數
- /************************************************************/
- void Write1302(unsigned char dat)//發送一個字節的數據
- {
- unsigned char i;
- SCLK=0; //先將時鐘線置位
- delaynus(2);
- for(i=0;i<8;i++)
- {
- DATA=dat&0x01; //先發送低電平
- delaynus(2);
- SCLK=1; //拉高時鐘線,時鐘芯片在這時候讀取數據線上的電平
- delaynus(2);
- SCLK=0; //時鐘線復位
- dat>>=1; //數據右移
- }
- }
- /*************************************************************/
- //函數名稱:unsigned char Read1302(void)
- //函數功能:向ds1302芯片讀取一個字節的數據
- //調用:為內部調用函數
- /************************************************************/
- unsigned char Read1302(void)
- {
- unsigned char i,dat;
- delaynus(2);
- for(i=0;i<8;i++)
- {
- dat>>=1;
- if(DATA==1)
- dat|=0x80;
- SCLK=1;
- delaynus(2);
- SCLK=0;
- delaynus(2);
- }
- return dat;
- }
- /*************************************************************/
- //函數名稱:void WriteSet1302(unsigned char Cmd,unsigned char dat)
- //函數功能:向ds1302芯片內部某個字節(Cmd)寫入一個數據(dat)
- //參數說明:Cmd為0-6,分別代表"秒,分,時,日,月,周,年"
- //調用:為外部調用函數
- /************************************************************/
- void WriteSet1302(unsigned char Cmd,unsigned char dat)//向時鐘寫入一個字節的數據
- {
- WriteSet1302(0x8E,0x00); //關閉寫保護
- RST=0;
- SCLK=0;
- RST=1;
- delaynus(2);
- Write1302(ds1302_w[Cmd]);
- Write1302(((dat/10)<<4)|(dat%10));
- SCLK=1;
- RST=0;
- }
- /*************************************************************/
- //函數名稱:unsigned char ReadSet1302(unsigned char Cmd)
- //函數功能:向ds1302芯片內部某個字節(Cmd)讀出一個數據,并將數據返回
- //調用:為外部調用函數
- /************************************************************/
- unsigned char ReadSet1302(unsigned char Cmd)
- {
- unsigned char dat;
- RST=0;
- SCLK=0;
- RST=1;
- Write1302(ds1302_r[Cmd]);
- dat=Read1302();
- SCLK=1;
- RST=0;
-
- return dat;
- }
- /******************************尋光模塊*******************************/
- /*************************************************************/
- //函數名稱:bit gm_left(void)
- //函數功能:左尋光光敏電阻,當亮度大時返回1,亮度比較小時返回0
- //調用:為外部調用函數
- /************************************************************/
- bit gm_left(void)
- {
- bit dat;
- dat = u5_out1;
- return dat;
- }
- /*************************************************************/
- //函數名稱:bit gm_left(void)
- //函數功能:右尋光光敏電阻,當亮度大時返回1,亮度比較小時返回0
- //調用:為外部調用函數
- /************************************************************/
- bit gm_right(void)
- {
- bit dat;
- dat = u5_out2;
- return dat;
- }
- /******************************紅外避障模塊*******************************/
- /*************************************************************/
- //函數名稱:bit hbz_left(void)
- //函數功能:左紅外避障,接收到反射回來的信號返回0,沒有收到信號返回1
- //調用:為外部調用函數
- /************************************************************/
- bit hbz_left(void)
- {
- bit dat;
- dat = u4_out3;
- return dat;
- }
- /*************************************************************/
- //函數名稱:bit hbz_right(void)
- //函數功能:右紅外避障,接收到反射回來的信號返回0,沒有收到信號返回1
- //調用:為外部調用函數
- /************************************************************/
- bit hbz_right(void)
- {
- bit dat;
- dat = u4_out4;
- return dat;
- }
- /******************************紅外循跡模塊*******************************/
- /*************************************************************/
- //函數名稱:bit hxj_left(void)
- //函數功能:左紅外循跡,接收到反射回來的信號返回0,沒有收到信號返回1
- //調用:為外部調用函數
- /************************************************************/
- bit hxj_left(void)
- {
- bit dat;
- dat = u4_out2;
- return dat;
- }
- /*************************************************************/
- //函數名稱:bit hxj_right(void)
- //函數功能:右紅外循跡,接收到反射回來的信號返回0,沒有收到信號返回1
- //調用:為外部調用函數
- /************************************************************/
- bit hxj_right(void)
- {
- bit dat;
- dat = u4_out1;
- return dat;
- }
- /******************************超聲波模塊*******************************/
- /***************************************************/
- //函數名稱:void delay20us();
- //函數功能:延時20us;
- /***************************************************/
- void delay20us() //@11.0592MHz
- {
- unsigned char i;
- _nop_();
- _nop_();
- _nop_();
- i = 24;
- while (--i);
- }
- /***************************************************/
- //函數名稱:void csb_init(void);
- //函數功能: 超聲波模塊初始化程序
- //使用定時器1計算時間,
- /***************************************************/
- void csb_init(void)
- {
- EA = 1; //打開中斷總開關
- AUXR &= 0xBF; //定時器時鐘12T模式
- TMOD &= 0x0F;
- TMOD |= 0x10; //定時器1工作方式1,16位計時模式
- TF1 = 0; //將定時器溢出標志復位
- }
- /***************************************************/
- //函數名稱:unsigned int get_distance(void);
- //函數功能: 獲取超聲波返回的時間,并計算距離,返回計算好的距離
- //使用定時器1計算時間,
- /***************************************************/
- unsigned int get_distance(void)
- {
- unsigned int Distance; //測量到的距離
- unsigned char flag_i=0; //距離測量成果標志位
- TR1 = 0; //先將定時器1關閉
- TH1 = 0;
- TL1 = 0; //將定時器1的計數清零
- Tring = 0; //信號端先置零
- delayms(2); //稍微延時一下
- Tring = 1;
- delay20us();
- Tring = 0; //信號端置位保存大約10us的時間,產生開始信號
-
- while(Echo==0); //等待返回高電平
- TR1 = 1; //啟動定時器1開始計數
- while(Echo==1) //當為1時計時
- {
- Distance = TH1*256+TL1;
- if(Distance>27110) //大約4000時間已超出出量距離,返回888
- {
- TR1 = 0;
- flag_i = 2;
- Distance = 888;
- break;
- }
- else
- flag_i = 1;
- }
- if(flag_i==1)
- {
- TR1 = 0; //關閉定時器3;
- Distance = TH1*256+TL1; //讀取定時器里的時間
- Distance *= 0.01844; //距離=(時間*速度)/2,時間單位秒,速度單位m/s,距離單位米
- if(Distance>500) //定時器一個計時時間:12/11.0592=1.085
- Distance=888; //時間=(TH1*256+TL1)*1.085,單位微秒,轉換為秒需除1000000
- } //距離=(340*(TH1*256+TL1)*1.085)/2/1000000=(TH1*256+TL1)*0.0001844,單位米
- //轉化為厘米顯示:0.0001844*100=0.01844,單位厘米
- TR1 = 0;//關閉定時器1中斷
- return Distance;//將計算出的距離返回
- }
- /******************************紅外遙控模塊*******************************/
- /***************************************************/
- //函數名稱:void hwyk_init(void);
- //函數功能: 超聲波模塊初始化程序
- //使用定時器1計算時間,
- /***************************************************/
- void hwyk_init(void)
- {
- EA = 1;//打開中斷總開關
- ET1 = 1;//允許定時器0中斷
- EX0 = 1;//允許外部中斷0中斷
- IT0 = 1;//下降沿觸發外部中斷0
- AUXR &= 0xBF; //定時器工作在12T模式
- TMOD &= 0x0f; //將定時器工作模式設置先復位
- TMOD |= 0x10; //設置定時工作在方式1中,16位計時模式
- TH1 = 0;
- TL1 = 0;//將定時器計時溢出清零
- }
- /***************************************************/
- //函數名稱:unsigned char get_hwyk(void);
- //函數功能: 返回接收到的紅外按鍵碼
- //使用定時器1計算時間,
- /***************************************************/
- unsigned char get_hwyk(void)
- {
- unsigned char i,x;//i為計算接上多少字節的數據,x為計算每一個字節數據的第幾位
- unsigned char temp;//臨時接到字節數據存儲
- unsigned int Ltime,Htime;//波形的高低電平時間存儲
- EX0 = 0;//先將中斷允許關閉,放在其他的電平造成干擾
- TH1 = 0;
- TL1 = 0;//將定時器的計算寄存器清零
- TR1 = 1;//定時器開始運行計時
- while(Rt==0)//計算低電平時間
- {
- if((TH1*256+TL1)>16000)//如果低電平時間超過16000,則實際時間是16000*1.085=17360us,是引導碼9000us的兩倍
- {
- Rt = 1;//將管腳釋放
- IE0 = 0;//將中斷標記位清零
- TR1 = 0;//定時器關閉
- TF1 = 0;
- EX0 = 1;//重新開啟外中斷
- break;//直接退出中斷
- }
- }
- TR1 = 0;
- Ltime = TH1*256+TL1;//記錄低電平時間
- TH1 = 0;
- TL1 = 0;//將定時器的計算寄存器清零
- TR1 = 1;//定時器開始運行計時
- while(Rt==1)//計算高電平時間
- {
- if((TH1*256+TL1)>9000)//如果高電平時間超過9000,則實際時間是9000*1.085=9765us,是引導碼4500us的兩倍
- {
- Rt = 1;//將管腳釋放
- IE0 = 0;//將中斷標記位清零
- TR1 = 0;//定時器關閉
- TF1 = 0;
- EX0 = 1;//重新開啟外中斷
- break;//直接退出中斷
- }
- }
- TR1 = 0;
- Htime = TH1*256+TL1;//記錄高電平時間
-
- if((Ltime>7800)&&(Ltime<8800)&&(Htime>3800)&&(Htime<4500))//如果引導碼低電平在9000us左右,高電平在4500us左右,則符合
- {
- for(i=0;i<4;i++)//一共有4個字節數據
- {
- for(x=0;x<8;x++)//每個字節有8位數據
- {
- temp >>= 1;//先接上低位,在接高位,所以需要先左移一位
- while(Rt==0);//跳過低電平
-
- TH1 = 0;
- TL1 = 0;
- TR1 = 1;
- while(Rt==1);
- TR1 = 0;
- Htime = TH1*256+TL1;//測量高電平時間
-
- if((Htime>300)&&(Htime<720))//高電平符合則為0
- temp &= 0x7f;
- if((Htime>1300)&&(Htime<1800))//高電平符合則為1
- temp |= 0x80;
- }
- a[i] = temp;//將每個字節都存儲到數組中
- }
- }
- Rt = 1;
- IE0 = 0;
- TR1 = 0;
- TF1 = 0;
- EX0 = 1;//重新啟動外部中斷
-
- return a[2];//讀取遙控編碼的第三位,第三位為按鍵碼
- }
- /******************************紅外遙控模塊*******************************/
- /***************************************************/
- //函數名稱:void c_init(void);
- //函數功能: 小車初始化,每個程序都需要保護這個
- /***************************************************/
- void c_init(void)
- {
- unsigned char i=0;
- unsigned char dddd;
- unsigned int vvvv;
- if(i==1)
- {
- c_stop();
- c_go();
- c_bask();
- c_left();
- c_right();
- bell(1,200);
- display_init();
- display_07(0,0);
- display_led(0xaa);
- k1();
- k2();
- k3();
- k4();
- vvvv = Rtemp_ds18b20();
- WriteSet1302(0x80,0x00);
- dddd = ReadSet1302(0x81);
- gm_left();
- gm_right();
- hbz_left();
- hbz_right();
- hxj_left();
- hxj_right();
- csb_init();
- vvvv = get_distance();
- hwyk_init();
- dddd = get_hwyk();
- }
- }
復制代碼
|
-
-
新建文件夾.zip
2020-7-10 22:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
621.56 KB, 下載次數: 39, 下載積分: 黑幣 -5
|