版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
任務四
模擬汽車轉向燈復習回顧單個LED閃爍的電路制作單個LED閃爍的程序編寫任務1中的LED閃爍是不受控制的,實際生活中我們一般需要根據某些條件來決定LED是否閃爍。機電一體化教研室機電一體化教研室駕駛員操作命令無操作右轉向操作左轉向操作故障緊急操作轉向燈狀態(tài)左轉燈滅滅閃爍閃爍右轉燈滅閃爍滅閃爍機電一體化教研室工作任務采用單片機制作一個模擬汽車左右轉向燈的控制任務!機電一體化教研室工作任務根據電路原理圖,正確完成電路制作;輸入模擬汽車轉向燈程序并完成調試;根據要求修改程序,并觀察運行結果;完成實訓報告機電一體化教研室C語言的基本語句C語言程序的執(zhí)行部分由語句組成。C語言提供了豐富的程序控制語句,按照結構化程序設計的基本結構:順序結構、選擇結構和循環(huán)結構,組成各種復雜程序。這些語句主要包括表達式語句、復合語句、選擇語句和循環(huán)語句等。相關知識點機電一體化教研室C語言程序的構成(P47)
C語言的程序是由一個或多個函數構成的,最簡單的程序只有一個main函數。一個函數由兩部份組成函數的首部、即函數的第一行;包括函數名、函數類型、函數屬性、函數參數(形參)名、參數類型。
函數體,即函數首部下面的大括號“{}”內的部份。函數體一般包括:
聲明部份:定義所用到的變量,如voidDelay()中的unsignedchari,j;。執(zhí)行部份:由若干個語句組成。
機電一體化教研室標識符
C語言規(guī)定標識符只能由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。變量名、常數名、數組名、函數名、文件名與類型名等統(tǒng)稱為標識符。標識符分為預定義標識符和用戶標識符。說明:C語言中大寫字母與小寫字母被認為是兩個不同的字符。標識符在命名時應當簡單,含義清晰,這樣有助于閱讀理解程序。機電一體化教研室關鍵字
關鍵字則是編程語言保留的特殊標識符,它們具有固定名稱和含義,在程序編寫中不允許標識符與關鍵字相同。在KeilC中的關鍵字除了有ANSIC標準的32個關鍵字外,還根據51單片機的特點擴展了相關的關鍵字。在KeilC的文本編輯器中編寫C程序,系統(tǒng)把保留字以不同顏色顯示,缺省顏色為天藍色。機電一體化教研室C語言基本語句(P52)
C語言的程序是由一個或多個函數組成的,而函數又是由若干個語句組成的。語句是由一些基本字符和定義符按照C語言的語法規(guī)定組成的,每個語句以分號結束,分號是C語句的必要組成部份。C語言的語句可分為以下5種類型:表達式語句函數調用語句控制語句復合語句空語句機電一體化教研室表達式語句表達式語句是由一個表達式加一個分號構成一個語句,其作用是計算表達式的值或改變變量的值。它的一般形式是:表達式;即在表達式末尾加上分號,就變成了表達式語句。最典型的表達式語句是:在賦值表達式后加一個分號構成賦值語句。例如:a=3是一個賦值表達式a=3;是一個賦值語句機電一體化教研室函數調用語句由一個函數調用加一個分號構成函數調用語句,其作用是完成特定的功能。它的一般形式是:函數名(參數列表);例如mDelay(100);//調用延時函數,參數是100
機電一體化教研室控制語句控制語句用于完成一定的控制功能,以實現(xiàn)程序的各種結構方式。C語言有9種控制語句,可分為以下三類。條件判斷語句:if語句、switch語句。循環(huán)語句:for語句、while語句、do-while語句。轉向語句:break語句、continue語句、goto語句、return語句。機電一體化教研室復合語句復合語句是用一對大括號將若干條語句括起來的,也稱為分程序,在語法上相當于一條語句。例如main(){……{t=x;x=y;y=t;}//復合語句}機電一體化教研室空語句只有一個分號的語句稱為空語句。它的一般形式是:;空語句是什么操作也不執(zhí)行,常用于作為循環(huán)語句中的循環(huán)體,表示循環(huán)體什么也不做。
機電一體化教研室注釋
注釋內容可以單獨寫在一行上,也可以寫在一個語句之后;可以用/*…..*/的形式為C程序的任何一部份作注釋;KeilC也支持C++風格的注釋,就是用“//”引導的后面的語句是注釋,例:
P1_0=!P1_0;//取反P1.0這種風格的注釋,只對本行有效,書寫比較方便,所以在只需要一行注釋的時候,我們往往采用這種格式。機電一體化教研室圖8-1順序結構機電一體化教研室圖8-2選擇結構機電一體化教研室?if語句結構
C語言的if語句有3種形式:基本if形式、if-else形式、if-else-if形式。
基本if形式語法結構如下:
if(表達式)
處理程序;
處理機理是:如果表達式的值為“真”,則執(zhí)行“處理程序”的語句內容,否則不執(zhí)行該語句內容。例如:機電一體化教研室
voidmain()
{
ucharsp0=0,buffer0[2]={0,0};
if(sp0==0)
buffer0[sp0]=RXBUF0;//接收串口數據
}
if-else形式語法結構如下:
if(表達式)
處理程序1;
else
處理程序2;機電一體化教研室
處理機理是:如果if表達式的值為“真”,則執(zhí)行“處理程序1”的語句內容,否則執(zhí)行“處理程序2”語句內容。例如:
voidmain()
{
uchar
end,rev_flag;
if(end==1)
rev_flag0=1;
else
rev_flag0=0;
}機電一體化教研室
if-else-if形式語法結構如下:
if(表達式1)
處理程序1;
elseif(表達式2)
處理程序2;
…
else(表達式n)
處理程序n;機電一體化教研室
處理機理是:如果表達式1的值為“真”,則執(zhí)行與之相對應的“處理程序1”的語句內容;如果表達式2的值為“真”,則執(zhí)行與之相對應的“處理程序2”的語句內容,依次判斷表達式“x”是否為“真”,如果為“真”則執(zhí)行與之相對應的“處理程序x”語句內容。例如:機電一體化教研室
voidmain()
{
ucharsp0=0,rev_byte0,buffer0[2]={0,0},
receive_frame[10];
if(sp0==0)
{
buffer0[sp0]=RXBUF0;//接收串口數據
if(buffer0[0]==0xEB)sp0++;
}
機電一體化教研室
/*判斷第二個字節(jié)*/
elseif(sp0==1)
{
buffer0[sp0]=RXBUF0;
if((buffer0[0]==0xEB)&&(buffer0[1]==0x90))
sp0++;//數據為EB90
elsesp0=0;
}
elseif(sp0>=2)
{
機電一體化教研室
receive_frame[rev_byte0]=RXBUF0;
rev_byte0++;
}機電一體化教研室
2)?switch語句結構
C語言的switch語句又稱開關語句,它可以從多種情況中選擇滿足條件的一種情況,是多分支選擇結構語句。
switch形式語法結構如下:機電一體化教研室switchswitch(表達式)
{
case<常量表達式1>:[處理序列1;[break]]
case<常量表達式2>:[處理序列2;[break]]
…
case<常量表達式n>:[處理序列n;[break]]
[default:處理序列n+1;]
}機電一體化教研室
處理機理是:計算表達式的值,并逐個與其后的常量表達式的值相比較,當表達式的值與某個常量表達式的值相等,即執(zhí)行其后的處理序列語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的處理序列語句。如表達式的值與所有case后的常量表達式都不相同時,則執(zhí)行default后的處理序列語句。C語言還提供了一種break語句,專用于跳出switch語句。例如:機電一體化教研室voidmain()
{
ucharflag=0,up=0,down=0,left=0,right=0;
switch(flag)
{
case1:up=1;break;//置標志
case2:down=1;break;
case3:left=1;break;
case4:right=1;break;
default:error=1;break;
}
}機電一體化教研室
本例中輸入一個整數,經switch判斷后,選擇輸出是一周中的星期幾,整數不在1~7的范圍內時就輸出“Error”??梢姶祟惗喾种С绦蛴胹witch語句可以很容易實現(xiàn)。機電一體化教研室3.循環(huán)結構
計算機的基本特征之一就是具有重復執(zhí)行一組語句的能力——循環(huán)能力。循環(huán)結構是程序中一種很重要的結構。其特點是:在給定條件成立時,反復執(zhí)行某程序段,直到條件不成立時為止。
循環(huán)結構有兩種形式:當型循環(huán)和直到型循環(huán)。機電一體化教研室
1)當型循環(huán)
判斷條件P是否成立,若成立,則重復執(zhí)行A操作,直至某次判斷條件P不再成立,就不再執(zhí)行A操作而退出循環(huán)結構,見圖8-3(a)。
2)直到型循環(huán)
重復執(zhí)行A操作,然后判斷條件P是否成立,如果不成立再執(zhí)行A操作,直到條件P成立,不再執(zhí)行A操作,退出循環(huán),見圖8-3(b)。機電一體化教研室圖8-3循環(huán)結構機電一體化教研室
無論是順序結構、選擇結構,還是循環(huán)結構,它們有一個共同點,即只有一個入口且只有一個出口。從示意圖中可以看到,如果把基本結構看做是一個整體(用虛線框表示),執(zhí)行流程從a點進入基本結構,而從b點脫離基本結構。整個程序由若干個這樣的基本結構組合而成,必然有良好的可讀性和可維護性。它包括for語句結構和while語句結構兩種。機電一體化教研室
(1)?for語句結構。C語言中,for語句是一種使用最為方便靈活的循環(huán)控制語句結構,它提供了一個應用非常靈活的控制部分,既可以實現(xiàn)計數循環(huán)程序設計,又可以實現(xiàn)條件控制循環(huán)程序設計。
for形式語法結構如下:
for(表達式1;表達式2;表達式3)
處理程序;機電一體化教研室
處理機理是:首先計算“表達式1”的值;再計算“表達式2”的值,若值為“真”則執(zhí)行循環(huán)體一次,否則跳出循環(huán);然后再計算“表達式3”的值,轉回第2步重復執(zhí)行。在整個for循環(huán)過程中,“表達式1”只計算一次,作為for的入口語句條件,“表達式2”和“表達式3”則可能計算多次。循環(huán)體也可能多次執(zhí)行,也可能一次都不執(zhí)行。例如:機電一體化教研室
voidmain()
{
intn,sum=0;
for(n=0;n<=50;n++)
sum+=n;
}
在使用for語句中有幾點要特別注意:①循環(huán)體內的處理程序可以為空操作;②for語句的各表達式都可以省,而分號不能省,在省略各表達式時要特別小心分析,防止造成無限死循環(huán)。機電一體化教研室
(2)?while語句結構。while形式語法結構有當while形式和直到while形式兩種。
當while形式如下:
while(表達式)
處理程序;
處理機理是:計算“表達式”的值,若為“真”則執(zhí)行循環(huán)體的處理程序一次,然后再對表達式進行計算執(zhí)行,直到表達式的值為“假”時停止循環(huán)。循環(huán)體也可能多次執(zhí)行,也可能一次都不執(zhí)行。例如:機電一體化教研室
voidmain()
{
intn=0,sum=0;
while(n<50)
{
n+=1;
sum+=n;
}
}
機電一體化教研室
直到循環(huán)do-while形式如下:
do
處理程序;
while(表達式);
處理機理是:先執(zhí)行處理程序,到while時計算“表達式”的值,若為“真”則再次執(zhí)行循環(huán)體的處理程序一次,直到表達式的值為“假”時停止循環(huán)。循環(huán)體至少會執(zhí)行一次。例如:機電一體化教研室
voidmain()
{
intn=0,sum=0;
do
{
n+=1;
sum+=n;
}
while(n<=50);
}機電一體化教研室表達式語句和復合語句
表達式語句是最基本的C語言語句。表達式語句由表達式加上分號“;”組成,其一般形式如下:
表達式;執(zhí)行表達式語句就是計算表達式的值。在C語言中有一個特殊的表達式語句,稱為空語句??照Z句中只有一個分號“;”,程序執(zhí)行空語句時需要占用一條指令的執(zhí)行時間,但是什么也不做。在C51程序中常常把空語句作為循環(huán)體,用于消耗CPU時間等待事件發(fā)生的場合。機電一體化教研室表達式語句和復合語句
把多個語句用大括號{}括起來,組合在一起形成具有一定功能的模塊,這種由若干條語句組合而成的語句塊稱為復合語句。在程序中應把復合語句看成是單條語句,而不是多條語句。復合語句在程序運行時,{}中的各行單語句是依次順序執(zhí)行的。在C語言的函數中,函數體就是一個復合語句。機電一體化教研室選擇語句
基本if語句的格式如下:if(表達式){
語句組;
}if語句執(zhí)行過程:當“表達式”的結果為“真”時,執(zhí)行其后的“語句組”,否則跳過該語句組,繼續(xù)執(zhí)行下面的語句。
機電一體化教研室選擇語句
if語句中的“表達式”通常為邏輯表達式或關系表達式,也可以是任何其他的表達式或類型數據,只要表達式的值非0即為“真”。以下語句都是合法的:
if(3){……}
if(x=8){……}if(P3_0){……}在if語句中,“表達式”必須用括號括起來。在if語句中,花括號“{}”里面的語句組如果只有一條語句,可以省略花括號。如“if(P3_0==0)P1_0=0;”語句,但是為了提高程序的可讀性和防止程序書寫錯誤,建議讀者在任何情況下,都加上花括號。機電一體化教研室選擇語句
if-else語句的一般格式如下:if(表達式) {
語句組1;
} else{
語句組2;
}if-else語句執(zhí)行過程:當“表達式”的結果為“真”時,執(zhí)行其后的“語句組1”,否則執(zhí)行“語句組2”機電一體化教研室選擇語句
if-else-if語句是由ifelse語句組成的嵌套,用來實現(xiàn)多個條件分支的選擇,其一般格式如下:if(表達式1) {
語句組1;
} elseif(表達式2){
語句組2;
} …elseif(表達式n){
語句組n;
}else{
語句組n+1;
}機電一體化教研室選擇語句
機電一體化教研室選擇語句
多分支選擇的switch語句,其一般形式如下:
switch(表達式){ case常量表達式1:語句組1;break; case常量表達式2:語句組2;break; …… case常量表達式n:語句組n;break; default:語句組n+1;}該語句的執(zhí)行過程是:首先計算表達式的值,并逐個與case后的常量表達式的值相比較,當表達式的值與某個常量表達式的值相等時,則執(zhí)行對應該常量表達式后的語句組,再執(zhí)行break語句,跳出switch語句的執(zhí)行,繼續(xù)執(zhí)行下一條語句。如果表達式的值與所有case后的常量表達式均不相同,則執(zhí)行default后的語句組。機電一體化教研室while語句用來實現(xiàn)“當型”循環(huán),執(zhí)行過程:首先判斷表達式,當表達式的值為真(非0)時,反復執(zhí)行循環(huán)體。為假(0)時執(zhí)行循環(huán)體外面的語句。循環(huán)體循環(huán)繼續(xù)的條件表達式下一條語句非0(真)0(假)循環(huán)體語句組while執(zhí)行過程格式:while(循環(huán)繼續(xù)的條件表達式)
{語句組;}花括號不能丟掉!請問:下述程序實現(xiàn)了什么功能?main(){int
i,sum=0;
while(i<=10){sum=sum+i;i++;}}循環(huán)語句
機電一體化教研室do-while語句用來實現(xiàn)“直到型”循環(huán)執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體,然后判斷條件表達式,當表達式的值為真(非0)時,返回執(zhí)行循環(huán)體直到條件表達式為假(0)為止。絕對不能少分號!循環(huán)體格式:do{
循環(huán)體語句組;
}while(循環(huán)繼續(xù)條件);花括號不能丟掉!循環(huán)繼續(xù)的條件表達式下一條語句非0(真)0(假)循環(huán)體語句組請問:下述程序實現(xiàn)了什么功能?main(){int
i,sum=0;do{sum=sum+i;i++;}while(i<=100);}循環(huán)語句
機電一體化教研室總循環(huán)次數已確定的情況下,可采用for語句形式為:for語句的一般形式:
for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)
{
循環(huán)體語句組;
} 分隔符為分號請問:下述程序實現(xiàn)了什么功能?main(){int
i,y=0;
for(i=1;i<=10;i++){y=y+i;}}循環(huán)語句
機電一體化教研室循環(huán)繼續(xù)條件for的下一條語句非0(真)0(假)循環(huán)體語句組循環(huán)變量賦初值循環(huán)變量增值for語句循環(huán)執(zhí)行過程只求解一次要執(zhí)行若干次,具體次數由“循環(huán)繼續(xù)條件”決定for語句不僅可用于循環(huán)次數已經確定的情況,也可用于循環(huán)次數雖不確定,但給出了循環(huán)繼續(xù)條件的情況,它完全可以代替while語句和do-while語句。for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)
{循環(huán)體語句組;} 機電一體化教研室任務導入汽車在不同位置都安裝有信號燈,它們是汽車駕駛員之間及駕駛員向行人傳遞汽車行駛狀況的表達工具,一般包括轉向燈、剎車燈、倒車燈、霧燈等,其中轉向燈包括左轉燈和右轉燈。本次任務是利用單片機設計一個模擬汽車左右轉向燈的控制系統(tǒng)。任務二
汽車轉向燈控制表2-10汽車轉向燈顯示狀態(tài)
駕駛員命令轉向燈顯示狀態(tài)左轉向燈右轉向燈駕駛員未發(fā)出命令滅滅駕駛員發(fā)出左轉顯示命令閃爍滅駕駛員發(fā)出右轉顯示命令滅閃爍駕駛員發(fā)出汽車故障顯示命令閃爍閃爍機電一體化教研室任務分析駕駛員操作命令無操作右轉向操作左轉向操作故障緊急操作轉向燈狀態(tài)左轉燈滅滅閃爍閃爍右轉燈滅閃爍滅閃爍機電一體化教研室任務分析:控制電路機電一體化教研室任務分析任務二
汽車轉向燈控制表2-11用開關模擬汽車運行狀態(tài)或顯示命令駕駛員命令開關狀態(tài)S0(P3.0)S1(P3.1)駕駛員未發(fā)出命令00駕駛員發(fā)出左轉顯示命令10駕駛員發(fā)出右轉顯示命令01駕駛員發(fā)出汽車故障顯示命令11控制要求:開關P3.0接+5V電壓時,左轉向燈點亮,開關P3.1接+5V電壓時,右轉向燈點亮,P3.0、P3.1同時接+5V電壓時,左、右轉向燈同時點亮,P3.0、P3.1同時接地時,左、右轉向燈同時熄滅。
機電一體化教研室P1.0控制左轉向燈P1.1控制右轉向燈任務二
汽車轉向燈控制表2-12顯示狀態(tài)P1.0P1.1顯示方式00全亮(故障)01左轉向燈亮右轉向燈滅10左轉向燈亮右轉向燈滅11左右轉向燈滅機電一體化教研室任務分析:程序流程機電一體化教研室模擬汽車轉向控制程序#include<reg51.h>sbitP1_0=P1^0;//定義P1.0引腳位名稱為P1_0sbitP1_1=P1^1;//定義P1.1引腳位名稱為P1_1sbitP3_0=P3^0;//定義P3.0引腳位名稱為P3_0sbitP3_1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度餐飲行業(yè)冷鏈配送與質量追溯體系合同3篇
- 鄭州科技學院《風景人像基礎教程》2023-2024學年第一學期期末試卷
- 2025版互聯(lián)網金融服務委托理財合同范本庫3篇
- 2025年行政合同簽訂及管理中行政優(yōu)先權的法律風險防范指南2篇
- 美容院股份轉讓服務協(xié)議(2025版)2篇
- 二零二五版美容美發(fā)行業(yè)美容院品牌推廣服務合同4篇
- 2025年度個人反擔保協(xié)議樣本:教育機構貸款融資專用4篇
- 2025版全面升級危險品物流運輸合同范本3篇
- 西安市2025年度汽車租賃企業(yè)服務質量評價體系3篇
- 2025年度菜鳥驛站綠色物流體系建設與推廣合同3篇
- 圓周率的認識
- 基于SMT求解器的分支條件覆蓋測試
- 反騷擾政策程序
- 運動技能學習與控制課件第十一章運動技能的練習
- 射頻在疼痛治療中的應用
- 四年級數學豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項痹病辨證施護
- 懷化市數字經濟產業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設備安裝
- 教師高中化學大單元教學培訓心得體會
評論
0/150
提交評論