




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
安陽工學院
《單片機基礎》課程大作業
《簡易紅外遙控小車設計》
院系:計算機科學與信息工程學院
專業班級:
姓名:
學號:
成績(教師填寫)
20年月日
一、課題名稱:
《簡易紅外遙控小車設計》
二、方法步驟:
1.總體設計
主要設計思想:
本設計利用通用紅外遙控器控制小車后輪兩個電機的動作來
實現小車走、停、轉彎等功能。并通過軟件控制小車方向和PWM調速
小車的轉速。具體思想如下:通過外部中斷1接收紅外信息,并通過
軟件解碼,根據接收信息的不同通過PWM和控制函數做出響應,并且
在二極管上面反映出來,所以說二極管充當車燈和檔位指示燈的作
用,且每次接收信號,蜂鳴器鳴叫用來顯示有信號的傳入。
主要設計任務:
紅外遙控小車的設計主要分兩大步,第一是硬件實現的設計,
第二是單片機軟件實現的設計。
(1)其中硬件又分幾塊:51單片機最小系統板,小型直流電機
(3?9V)驅動電路模塊,紅外接收模塊(已集成在最小系統板),蜂
鳴器和二極管顯示模塊,車體。
(2)軟件比較簡單,但也分了幾塊:外部中斷紅外接收解碼模
塊,PWM電機調速模塊,主程序。
2.設計任務與要求
⑴主要完成的性能指標
本小車設計完成后能夠實現如下功能:前進、后退、左前傳(以
做輪胎為軸轉彎)、右前轉、左圓轉(以車體為軸進行轉彎)、右
圓轉、左倒轉、右倒轉、緊急暫停、123級加減速。
(2)器件選擇
本設計主要用到以下材料:51單片機一個、通用遙控器一
個、紅外接收頭一個、5號電池7節、車體(雙電機+萬向輪)一套、
蜂鳴器一個、杜邦線若干、二極管9個、L9110s電機驅動芯片2個、其
他電阻電容若干
(3)單片機選擇
本設計用到宏晶公司的STC——125A32Ad單片機
(4)說明總體框圖(可選)
(5)畫出總線路圖(硬件)
UI8051+"0'
P101
PIOwc
39P0
PllPOO
38Pi
P12P01
37P0
P13P02
36P0
P14PO3
FIF~535P0
P15PN
P16^734P0
P16P05
33P0
P17P06
RST932P0
RESET_P07
31
RXDP30EA-^P
RT1T30
IXDP31ALEP
P3212n929
INIDP32°Q28P2
P3313SPE27
--INR.T33
PS414p2627P2
TOP34
P3515p2526Pl
T1/P35
P為16p2425Pl
-7座P36
P3717p2324P2
C成37
X:1Sp2223P2
X>
XI19p2122P2
XIp
工o21P2
f——(W
*cn
2PF22PF
51單片機最小系統如右:
紅外電路圖如下:
3紅外(HS0038)
CON2
L9110s電機驅動電路如下:
vcc
正轉信號
直流電機
反轉信號
L9110s電氣特性如下:
單
符號參數范圍
位
最小典型最大IAIBOAOB
VCC電源電壓2.5612VHLHL
Idd靜態電流—02uALHLH
lin操作電流200350500uALLLL
IC持續輸出電流750800850mAHHLL
IMax電流峰值—15002000mA
實現后的實物圖如下:
(6)流程圖及程序清單
〃***************簡易紅外小車完全調試程序
〃***************版本V02
〃***************2。12年5月13日10,49:26
〃***************修改優化時間2012年5月14日0:02:21
〃***************再次修改時間2012年5月18日20:49:28
〃***************Madeby
#include<reg52.h>
#include,'intrins.h,,
#defineuintunsignedint
#defineucharunsignedchar
sbitMH=PlA0;//電機1接口
sbitM12=PlAl;
sbitM21=P1A2;//電機2接口
sbitM22=P1A3;
sbitLED0=P0A0;//左前燈
sbitLEDl=P0Al;〃檔1燈
sbitLED2=P0A2;//檔2燈
sbitLED3=P0八3;//檔3燈
sbitLED4=P0A4;〃緊急燈
sbitLED5=P0A5;〃右前燈
sbitLED6=P0A6;〃左后燈
sbitLED7=P0A7;〃右后燈
sbitF=PU4;〃蜂鳴器接口
ucharTEMPl=O;〃全局變量,用于存放紅外返回值-用于PWM占空比的控制
ucharTEMP2=10;//用于方向的控制
sbitIntO=P3A3;//紅外接收采用外部中斷1
uchardatabus[7];〃用于紅外接收存放數據
〃延時函數
voiddelayl(uintxms)//delay0.1ms
uinti,j;
for(i=xms;i>0;i—)
for(j=13;j>0;j-);
)
〃********************接受解碼函數
ucharRec()
uchartemp=0;〃函數內部臨時變量,用于返回函數值
uinti=0;//用于存放數據的臨時變量
uintj=0;
uintm=0;//局部計數臨時變量
uintn=0;//局部計數臨時變量
uintk=0;//局部計數臨時變量
EX1=O;//關外部中斷1,以防再次外部1中斷的介入
while(!IntO)//用于計時前9Ms低電平的引導碼
delayl(l);
m++;//計數引導碼的長度
)
if(m<=60)//50,可變,大概數,m應該在90左右,如果引導
碼時間太小(如<50),就表示
〃此次接收有誤,返回0
return0;//
while(IntO)〃用于計時4.5ms高電平的引導碼
(
delayl(l);
n++;〃計時高電平
if(n<=30)〃20大概值,應該在45左右,如果太小或太大,
都有問題
return0;
〃當上面的兩步都完成時,表示9ms低電平,4.5ms高電平的引導碼驗證
完畢
〃可進行下步接收數據工作。后面有32位高低電平組成的編碼分為:系統
碼1,系統碼2,數據碼和數據反碼
〃其中前16位,為用戶識別碼(系統碼1和2)用于區別不同的電器,因為
使用的通用遙控器和接收器所以
〃不用關心前16位。
Mll=M12=M21=M22=0;〃進入中斷,停止電機,防止電機顫抖
for(i=0;i<4;i++)//4組接收
for(j=0;j<8;j++)//每組8個高低信號
(
〃數據0由0.56ms低+0.56ms高組成即1:1
〃數據1由0.56ms低+1.655ms高組成1:3
while(!IntO)〃過濾數據的低位0.56ms低電平
(
delay1(1);
}
while(IntO)//進入高電平計時
(
delayl(l);
k++;//k計時每次的高電平
)
databus[i]=databus[i]?1;//數據接收數組首先默認接收
為0信號,即databus[i]第7位移入0
if(k>=10)//而后,判斷剛才接收到的數據是否
為1,因為1的高點平持續1.655ms
〃低電平持續0.56ms,所以只要k大于10,
就能確定為1
(
databus[i]=databus[i]10x80;//若為1,把第8位
置1
}
k=0;〃把k的值重新置零
);
if(databus[2]!=~databus[3])//2和3組數據為反碼關系。所以判斷
它們是否相反,來確定接收數據
〃是否正確
return0;
temp=databus[2];//返回賦值
returntemp;//
)
〃**********紅外接受中斷服務函數,+接受編碼TEMPI,TEMP2
voidintO()interrupt2
{
uchartemp;//臨時存放紅外接收函數返回值
uinti=0;//計數臨時變量
LED4=1;〃(因緊急燈是閃爍的每次中斷時結果不一樣,為保證效
果)先滅緊急指示燈
temp=Rec();//紅外函數返回賦值
switch(temp)//對返回的數據進行編碼,方便后面的操作
{
caseOxOd:
(
TEMP1=O;//TEMPI,編碼用作,PWM參數,全局變量,
LED1=LED2=LED3=1;〃對應的指示燈狀態
break;
)
case0x0c:
(
TEMP1=1;
LED1=0;
LED2=LED3=1;
break;
)
case0x18:
(
TEMP1=2;
LED1=LED3=1;〃2檔
LED2=0;
break;
)
case0x5e:
(
TEMP1=3;〃TEMP1用于控制PWM占空比
LED3=0;
LED1=LED2=1;
break;
)
case0x40:
TEMP2=0;〃緊急狀態(暫停)。TEMP2用于控制電機,暫停,前進,
左右轉,
break;
)
case0x46:
(
TEMP2=1;〃前進
LED0=LED5=0;〃指示燈設置
LED6=LED7=1;
break;
)
case0x44:
(
TEMP2=2;〃左前轉
LED0=0;
LED5=1;
LED6=LED7=1;
break;
)
case0x43:
(
TEMP2=3;〃右前轉
LED5=0;
LED0=l;
LED6=LED7=1;
break;
)
case0x15:
(
TEMP2=4;//倒車狀態
LED6=LED7=0;〃67為倒車指示燈
LED0=LED5=l;
break;
)
case0x07:
(
TEMP2=5;〃左后轉
LED6=0;
LED7=LED0=LED5=1;
break;
)
case0x09:
TEMP2=6;〃右后轉
LED7=0;
LED6=LED0=LED5=1;
break;
)
case0x45:
(
TEMP2=7;〃左園轉
LED0=LED7=0;
LED5=LED6=1;
break;
)
case0x47:
{
TEMP2=8;〃右園轉
LED5=LED6=0;
LED0=LED7=l;
break;
)
)
〃每次接受紅外,蜂鳴器蜂鳴一次
F=l;
delayl(300);
F=0;
EA=1;//開總中斷
EX1=1;//開外1中斷
rri=i;//下降沿觸發
)
〃**********電機驅動函數
voidPWM_RUN()
(
uintm=0;//臨時計數變量
ucharn=0;//
uinti=0;//
m=TEMPl*100;〃111有0,1,2,3狀態,PWM每小時間片為3*100,所以m*100
n=TEMP2;//TEMPI用于控制轉速,TEMP2用于控制前后左右
〃對n(TEMP2)進行解碼,設置不同的電機工作方式
〃注:暫定M*1=LM*2=0正傳,M*l=0,M*2=l倒轉,M*l=M*2=0,停止
if(n==0)//緊急狀態,
Mll=M12=M21=M22=0;
LED4=~LED4;〃設置緊急燈動作
delayl(lOOO);
)
if(n==l)//ml和m2都前轉,前進
Mll=l;
M12=0;
M21=l;
M22=0;
)
if(n==2)//ml停止,m2前轉,實現左前轉彎
(
Mll=0;
M12=0;
M21=l;
M22=0;
)
if(n==3)//ml前轉,m2停止,實現右前轉
(
Mll=l;
M12=0;
M21=0;
M22=0;
)
if(n==4)//mlm2倒轉,實現倒車
(
Mll=0;
M12=l;
M21=0;
M22=l;
)
if(n==5)//ml停止,m2倒轉,實現左后轉
(
Mll=0;
M12=0;
M21=0;
M22=l;
)
if(n==6)//ml倒轉,m2停止,實現右后轉
(
Mll=0;
M12=l;
M21=0;
M22=0;
}
if(n==7)//ml倒傳,m2前轉,實現左方向,原地打轉
(
Mll=0;
M12=l;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年職業規劃師資格考試試卷及答案
- 2025年行業發展趨勢與政策分析考試題及答案
- 2025年人口與發展研究生入學考試試卷及答案
- 2025年區域經濟與發展戰略分析試卷及答案
- 2025年企業稅務籌劃考試試卷及答案
- 2025年建筑安全與質量管理考試試題及答案
- 2025年廣告設計師職業資格考試卷及答案
- 2025年中國立式移動冰箱行業市場全景分析及前景機遇研判報告
- 2024年度浙江省護師類之主管護師通關考試題庫帶答案解析
- 中醫護理在疼痛中的應用
- 2024北京海淀區四年級(下)期末語文試題及答案
- 小學生作文指導智慧樹知到期末考試答案章節答案2024年溫州大學
- 卷煙工廠MES系統技術方案
- 輥壓機培訓ppt課件
- ghost制作 驅動自動安裝
- 譯林小學英語5B教材分析
- 江蘇省常州市2024屆高一數學下學期期末質量調研試題(含解析)
- 新標準大學英語(第二版)綜合教程2 Unit 1 A篇練習答案及課文翻譯
- 冀教版英語小升初模擬試卷
- 財政部金融企業不良資產批量轉讓管理辦法(財金[2012]6號)
- TPM活動推行工作計劃表
評論
0/150
提交評論