《汽車單片機實訓(xùn)報告.doc》由會員分享,可在線閱讀,更多相關(guān)《汽車單片機實訓(xùn)報告.doc(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
河北科技大學(xué)唐山分院
《汽車單片機實訓(xùn)》
實訓(xùn)報告
班級 及 專業(yè):汽車檢測與維修11班
姓 名: 孫樹杰
學(xué) 號: 23
指 導(dǎo) 老 師: 高欣
報告完成時間: 2013年12月27日
汽車單片機實訓(xùn)報告
實訓(xùn)目的:通過近兩周的汽車單片機實訓(xùn),使我們充分掌握單片機編程的方法,了解單片機的原理和應(yīng)用,通過以兩輪智能移動機器人工程項目為主線,循序漸進的構(gòu)建智能機器人的智能控制器和傳感器電路,掌握單片機外圍接口特性、內(nèi)部結(jié)構(gòu)原理、應(yīng)用設(shè)計方法和 C 語言程序設(shè)計、匯編語言等知識。
實訓(xùn)要求:通過實訓(xùn)來熟練掌握汽車單片機的外圍接口特性;掌握單片機內(nèi)部結(jié)構(gòu)原理;了解C51 系列單片機的 C 語言編程環(huán)境和使用方法;了解單片機的輸入接口、使用方法和 C程序設(shè)計、單片機的輸出接口、使用方法和 C程序設(shè)計;掌握單片機與 LCD的連接與 C 編程;了解基礎(chǔ)傳感器原理和用 C51 編程實現(xiàn)機器人基本智能的實現(xiàn)方法等。
實訓(xùn)時間:2013年12月18日—2013年12月27日
實訓(xùn)地點:A區(qū)308
實訓(xùn)內(nèi)容:
一、 硬件連接及單片機的簡單實驗程序
正確連接汽車單片機串口、ISP下載線、電池等。
啟用Keil uvision IDE,編輯第一個程序:HelloRoBotYourTurn.c
#include
int main(void)
{
int i;
uart_Init();
i=7*11;
printf("Whats 7 X 11?\n");
printf("The answer is :%d\n",i);
while(1);
}
接下來下載HelloRoBotYourTurn.c這個程序到汽車單片機,打開串口調(diào)試工具,檢測程序是否運行正常,完成第一項任務(wù)。
二、 單燈閃爍控制
為了驗證 P1 口的輸出電平是不是編寫的程序輸出的電平,可以采用一個非常簡單有效的辦法,就是在P1的端口位接一個發(fā)光二極管。當(dāng)輸出高電平時,發(fā)光二級管滅;輸出低電平時,發(fā)光二極管亮。進而實現(xiàn)對單片機的單燈控制。
電路連接及程序如下:
#include
#include
int main(void)
{
uart_Init(); //初始化串口
printf("The LED connected to P1_0 is blinking!\n");
while(1)
{
P1_0=1; // P1_0 輸出高電平
delay_nms(500); //延時 500ms
P1_0=0; // P1_0 輸出低電平
delay_nms(500); //延時 500ms
}
}
將程序編制到單片機中,觀察發(fā)光二極管是否能閃爍。
三、 伺服電機控制信號
控制伺服電機轉(zhuǎn)動速度的信號是下圖所示的脈沖信號??刂齐姍C運動轉(zhuǎn)速的是高電平持續(xù)的時間,當(dāng)高電平持續(xù)時間為 1.3ms 時,電機順時針全速旋轉(zhuǎn),當(dāng)高電平持續(xù)時間1.7ms 時,電機逆時針全速旋轉(zhuǎn)。
1.7ms
1.3ms
1.3ms
為讓機器人的兩個輪子全速旋轉(zhuǎn),輸入如下程序控制伺服電機的旋轉(zhuǎn):
while(1)
{
P1_0=1; //P1_0 輸出高電平
delay_nus(1300); //延時 1.3ms
P1_0=0; //P1_0 輸出低電平
delay_nus(20000); //延時 20ms
}
觀察連接到 P1_0 腳的機器人輪子是不是順時針全速旋轉(zhuǎn)?同樣輸入下面的程序觀察連接到 P1_1腳的機器人輪子是不是順時針全速旋轉(zhuǎn)?
While(1)
{
P1_0=1; //P1_0 輸出高電平
delay_nus(1700); //延時 1.7ms
P1_0=0; //P1_0 輸出低電平
delay_nus(20000); //延時 20ms
}
四、 機器人的基本巡航控制---觸覺導(dǎo)航
給機器人加裝胡須,在機器人行走過程中,如果有胡須被觸動,那就意味著碰到了什么。導(dǎo)航程序需要接受這些輸入信息,判斷它的意義,調(diào)用一系列使機器人倒退、旋轉(zhuǎn)朝不同方向行走的動作子函數(shù)以避開障礙物。
下面的程序讓機器人向前走直到碰到障礙物。在這種情況下,機器人用它的一根或者兩根胡須探測障礙物。一旦胡須探測到障礙物,調(diào)用第三章中的導(dǎo)航程序和子程序使小車倒退或者旋轉(zhuǎn),然后再重新向前行走,直到遇到另一個障礙物。
#include
#include
int P1_4state(void)//獲取P1_4的狀態(tài),右胡須
{return (P1&0x10)?1:0;
}
int P2_3state(void)//獲取P2_3的狀態(tài),左胡須
{ return (P2&0x08)?1:0;
}
void Forward(void)
{ P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
void Left_Turn(void)
{
int i;
for(i=1;i<=26;i++)
{P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
void Right_Turn(void)
{ int i;
for(i=1;i<=26;i++)
{ P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
void Backward(void)
{ int i;
for(i=1;i<=65;i++)
{ P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
int main(void)
{ uart_Init();
printf("Program Running!\n");
while(1)
{ if((P1_4state()==0)&&(P2_3state()==0))
{ Backward(); //向后
Left_Turn();//向左
Left_Turn();//向左
}
else if(P1_4state()==0)
{ Backward();//向后
Left_Turn();//向左
}
else if(P2_3state()==0)
{ Backward();//向后
Right_Turn();//向右
}
else
Forward();//向前
}
}
觀察小車是否能碰到障礙物后后退并且轉(zhuǎn)向。
五、 實訓(xùn)總結(jié)
本次實訓(xùn)以兩輪智能移動機器人工程項目為主線,通過循序漸進的構(gòu)建智能機器人的智能控制器和傳感器電路,使我們了解到單片機外圍接口特性、內(nèi)部結(jié)構(gòu)原理、應(yīng)用設(shè)計方法和c語言程序等知識。使我們真正在快樂中學(xué)會了編程,學(xué)會了汽車單片機的編程,與智能機器人的控制。在學(xué)習(xí)過程中,我們通過結(jié)合教材程序,并且自己寫程序的方法,掌握了對汽車單片機原理,并且自己設(shè)計了自己的電路。
經(jīng)過這兩周的實訓(xùn)是我們對單片機產(chǎn)生了濃厚的興趣,同時這兩周的動手操作是我們親身體驗了單片機的神奇。借助這次試驗我們也更加清楚地了解了單片機的工作原理,同時對他的結(jié)構(gòu)和功能也有了初步了解。另外對程序的是我們更清晰的了解編程的流程,為我們以后獨立操作進行編程打下了一個基礎(chǔ)。這次實訓(xùn)也大大培養(yǎng)了我們的動手能力,為我們今后的工作給了一助力。
成績和評語:
成績
綜合評定
鏈接地址:http://www.hcyjhs8.com/p-9065997.html