本人之前是一個人單片機小白,之前在貼吧上看見大神們做遙控小車,覺得好厲害,自己也在網上買了元件來制作。今天就來給大家分享我的小車制作過程。 一、材料準備 一塊木板,大小按自己想做的小車的底盤 大小來。 四個電機、小車輪。 藍牙模塊HC-05一塊 L298N電機驅動模塊一塊 單片機最小系統 STC89C52單片機一塊 杜邦線 公對公 公對母若干 導線若干 二、組裝過程 將之前準備好的木板用小鋸片鋸好, 然后將單片機最小系統。電機驅動模塊,還有藍牙模塊組裝好,
請忽略焊接點的,隨手的 注意藍牙模塊的接收端與發射端不能接反,之前我接反了找了半天才找出問題來 有些電機驅動模塊當輸入電機電壓高于8伏的的時候,模塊自身就會有5伏的電壓產生,此電壓可輸出給單片機及藍牙模塊用,我用的電池是拆充電寶的,一節3.7伏,兩節電池串聯起來, 請看視頻
單片機源程序:
- #include <REGX52.H>
- sbit mal=P1^7; //第一電機左拐
- sbit mar=P1^6; //第一電機右拐
- sbit mbl=P1^5; //第二電機左拐
- sbit mbr=P1^4; //第二電機右拐
- sbit mc=P1^3; //第三個動力
- sbit md=P1^2; //第四個動力
- sbit d1=P3^5;
- sbit d2=P3^4;
- sbit led=P3^7;
- unsigned char numz=0;
- //舵機正脈寬500us~2500us,負脈寬為(20000us-正脈寬)
- //對應到定時器值461-2=459,到2713-2=2711 ,變化范圍2252,如果每檔變化125,可以有18檔
- unsigned char d11=0,d10=0,d21=0,d20=0,da=0,db=0;
- void delayms(unsigned char ms)
- {
- unsigned char i;
- while(ms--)
- {
- for(i = 0; i < 120; i++);
- }
- }
- void main()
- {unsigned char i;
- for (i=0;i<=10;i++) //閃爍,以示主板工作正常
- {
- led=~led; delayms(2000);
- }
- TMOD=0x21; //使用定時器1和0
- SCON=0x50; //串口使用工作方式1
- TH1=0xfd; //串口的波特率,9600
- TL1=0xfd;
- //定時器0初始化
- TH0=0xff;
- TL0=0x82; //初始值125,cpu工作頻率為11.0592M
- ET0=1; //允許定時中斷
- TR0=1; //啟動定時器0
- TR1=1; //打開定時器1
- EA=1; //打開中斷總開關
- ES=1; //打開串口中斷開關
- while(1){ }
- }
- void ck() interrupt 4
- {
- unsigned char a=0;
- EA=0;
- if(RI)
- { a=SBUF;
- switch(a)
- {
- case 'Z':numz++;break;
- case 'A':{if(numz==6){mal=1;mar=0;mbl=0;mbr=1;numz=0;led=~led;}}break; //前進
- case 'B':{if(numz==6){mal=1;mar=0;mbl=1;mbr=0;numz=0;led=~led;}}break; //左拐
- case 'C':{if(numz==6){mal=1;mar=1;mbl=1;mbr=1;numz=0;led=~led;}}break;//停
- case 'D':{if(numz==6){mal=0;mar=1;mbl=0;mbr=1;numz=0;led=~led;}}break;//右拐
- case 'E':{if(numz==6){mal=0;mar=1;mbl=1;mbr=0;numz=0;led=~led;}}break;//后退
- case 'F':{if(numz==6){md=~md; led=~led;}}break;
- case 'G':{if(numz==6){mc=~mc;led=~led;}}break;
- case 'H':{if(numz==6){ led=~led;}}break;
- case 'I':{if(numz==6){ numz=0;led=~led;}}break;
- case 'J':{if(numz==6){ numz=0;led=~led;}}break;
- case 'K':{if(numz==6){ numz=0;led=~led;}}break;
- case 'Y':numz=0;break;
- default:numz=0;
- }
- }
- RI=0; EA=1;
- }
- void time0(void) interrupt 1//定時器中斷函數
- {
- TH0=0xff; //定時值125
- TL0=0x82;
- }
復制代碼
所有資料51hei提供下載:
自制小車.zip
(26.93 KB, 下載次數: 58)
2018-5-1 10:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
制作過程.docx
(3.01 MB, 下載次數: 58)
2018-5-1 10:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|