|
敬請共同愛好者欣賞瀏覽提意見
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (67.69 KB, 下載次數: 116)
下載附件
2017-5-15 20:06 上傳
0.png (65.35 KB, 下載次數: 102)
下載附件
2017-5-15 20:07 上傳
0.png (60.93 KB, 下載次數: 112)
下載附件
2017-5-15 20:06 上傳
IMG_20121217_130539_0.jpg (591.14 KB, 下載次數: 116)
下載附件
2017-5-15 20:08 上傳
298.jpg (99.44 KB, 下載次數: 107)
下載附件
2017-5-15 20:08 上傳
dianchi.PNG (344.06 KB, 下載次數: 112)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_1818_0.jpg (935.09 KB, 下載次數: 166)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130502_0.jpg (480.8 KB, 下載次數: 127)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130605_0.jpg (457.93 KB, 下載次數: 116)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130625_0.jpg (372.33 KB, 下載次數: 126)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130704_0.jpg (561.95 KB, 下載次數: 115)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130809_0.jpg (469.88 KB, 下載次數: 107)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130841_0.jpg (504.9 KB, 下載次數: 102)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_130937_0.jpg (597.53 KB, 下載次數: 102)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_191603_0.jpg (456.71 KB, 下載次數: 120)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_191705_0.jpg (720.89 KB, 下載次數: 113)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_191717_0.jpg (673.14 KB, 下載次數: 99)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_191818_0.jpg (736.69 KB, 下載次數: 115)
下載附件
2017-5-15 20:08 上傳
IMG_20121217_191911_0.jpg (698.36 KB, 下載次數: 99)
下載附件
2017-5-15 20:08 上傳
底盤.jpg (37.91 KB, 下載次數: 98)
下載附件
2017-5-15 20:08 上傳
紅外碼值處理.PNG (21.2 KB, 下載次數: 118)
下載附件
2017-5-15 20:08 上傳
開發板.jpg (115.83 KB, 下載次數: 108)
下載附件
2017-5-15 20:08 上傳
驅動器.PNG (271.35 KB, 下載次數: 123)
下載附件
2017-5-15 20:08 上傳
主函數.PNG (33.71 KB, 下載次數: 113)
下載附件
2017-5-15 20:08 上傳
0.png (403.38 KB, 下載次數: 119)
下載附件
2017-5-15 20:10 上傳
單片機源程序如下:
- /*小車用遙控器控制程序
- L298N的IN1234對應單片機的P1.0123
- 直行P1=0xfa
- 左轉0xf9(小車兩輪胎正反轉 調向)或0xf8(往哪面轉 哪面的的輪胎不轉)
- 右轉0xf6或0xf2
- 后退0xf5
- 停車oxff
- */
- #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義h
- sbit IR=P3^2; //紅外接口標志 ,ir是紅外輻射 的意思
- #define DataPort P0 //定義數據端口 程序中遇到DataPort 則用P0 替換
- sbit dula=P2^6; //定義鎖存使能端口 段鎖存
- sbit wela=P2^7; // 位鎖存
- unsigned char code DuanMa[14]={0x3f,0x06,0x5b,0x4f,0x40,0x38,0x31};// 顯示段碼值0~9
- unsigned char irtime,gao_num,di_num,l,r,back,stop;//紅外、PWM用全局變量
- bit irpro_ok,irok; //標志位,處理完成irpro_ok=1,接收完成irok=1
- unsigned char IRcord[4]; //紅外碼值有4個(客戶碼1+客2+操作碼+操作反碼),4*8=32位
- unsigned char irdata[33]; //32位紅外碼值+1位引導碼,也就是接受一次需要存儲的字節數
- void Ir_work(void); //紅外散轉函數聲明
- void Ircordpro(void); //紅外碼值處理函數聲明
- void delay(int i) //延時i ms
- {
- int j,k;
- for(j=i;j>0;j--)
- for(k=110;k>0;k--);
- }
- void tim0_isr (void) interrupt 1 using 1
- {
- irtime++; //用于計數2個下降沿之間的時間
- }
- /*------------------------------------------------
- 外部中斷0中斷處理
- ------------------------------------------------*/
- void EX0_ISR (void) interrupt 0 //外部中斷0服務函數
- {
- static unsigned char i; //接收紅外信號處理
- static bit startflag; //是否開始處理標志位
- if(startflag)
- {
- if(irtime<63&&irtime>=33)//引導碼 TC9012的頭碼,9ms+4.5ms
- i=0;
- irdata[i]=irtime;//存儲每個電平的持續時間,用于以后判斷是0還是1
- irtime=0;
- i++;
- if(i==33)
- {
- irok=1;
- i=0;
- }
- }
- else
- {
- irtime=0;
- startflag=1;
- }
- }
- /*------------------------------------------------
- 定時器0初始化
- ------------------------------------------------*/
- void TIM0init(void)//定時器0初始化
- {
- TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
- TH0=0x00; //重載值
- TL0=0x00; //初始化值
- ET0=1; //開中斷
- TR0=1; //啟動定時器0
- }
- /*------------------------------------------------
- 外部中斷0初始化
- ------------------------------------------------*/
- void EX0init(void)
- {
- IT0 = 1; //指定外部中斷0下降沿觸發,INT0 (P3.2)
- EX0 = 1; //使能外部中斷
- EA = 1; //開總中斷
- }
- /*------------------------------------------------
- 解碼散轉處理
- ------------------------------------------------*/
- void Ir_work(void)//紅外散轉程序,解碼后用以選擇執行指令
- {
- switch(IRcord[2])//判斷第三個數碼值
- {
- case 0x0c:DataPort=DuanMa[1];gao_num=1;di_num=1;break;//1 速度,并顯示相應的按鍵值 0x3f,0x06,0x5b,0x4f,0x40,0x38,0x31
- case 0x18:DataPort=DuanMa[2];gao_num=2;di_num=1;break;//2
- case 0x5e:DataPort=DuanMa[3];gao_num=8;di_num=1;break;//3
- case 0x1C:DataPort=DuanMa[0];stop=1;break;//8 停車
-
- case 0x52:DataPort=DuanMa[4];back=1;break;//8 倒退
-
- case 0x08:DataPort=DuanMa[5];l=1;break;//轉彎控制 左轉
- case 0x5A:DataPort=DuanMa[6];r=1;break; //轉彎控制 右轉
- default:break;
- }
- irpro_ok=0;//處理完成標志
- }
- void qudong()
- {
- unsigned char i;
- if(di_num!=0) //前行時,PWM調速
- {
- for(i=0;i<di_num;i++)
- {
- P1=0xff;
- }
- for(i=0;i<gao_num;i++)
- {
- P1=0xfa;
- }
- }
- if(l==1) //左轉 動作:左轉延時300ms后直行
- { l=0;
- P1=0xf8;
- delay(300);
- P1=0xfa;
- }
- if(r==1) //右轉 動作:右轉延時300ms后直行
- { r=0;
- P1=0xf2;
- delay(300);
- P1=0xfa;
-
- }
- if(back==1) //后退 動作:停車,然后一直后退
- {
- back=0;
- P1=0; //停車
- P1=0xf5; //后退
- }
- if(stop==1) //后退 動作
- {
- stop=0;
- P1=0;
- }
- }
- /*------------------------------------------------
- 紅外碼值處理
- ------------------------------------------------*/
- void Ircordpro(void)//紅外碼值處理函數
- {
- unsigned char i, j, k;
- unsigned char cord,value;
- k=1;
- for(i=0;i<4;i++) //處理4個字節
- {
- for(j=1;j<=8;j++) //處理1個字節8位
- {
- cord=irdata[k];
- if(cord>7)//大于某值為1,這個和晶振有絕對關系,這里使用12M計算,此值可以有一定誤差
- value|=0x80;
- if(j<8)
- {
- value>>=1;
- }
- k++;
- }
- IRcord[i]=value;
- value=0;
- }
- irpro_ok=1;//處理完畢標志位置1
- }
- /*------------------------------------------------
- 主函數
- ------------------------------------------------*/
- void main(void)
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (71.11 KB, 下載次數: 108)
下載附件
2017-5-15 20:05 上傳
所有資料51hei提供下載:
遙控車(程序 電路圖 實物圖).7z
(11.29 MB, 下載次數: 76)
2024-4-9 04:03 上傳
點擊文件名下載附件
純干貨 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|