單片機系統(tǒng)的基本應用_第1頁
單片機系統(tǒng)的基本應用_第2頁
單片機系統(tǒng)的基本應用_第3頁
單片機系統(tǒng)的基本應用_第4頁
單片機系統(tǒng)的基本應用_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

任務1跑馬燈任務2

花樣燈

任務3

鍵控彩燈

任務4數(shù)顯搶答器任務5簡易數(shù)字秒表任務1跑馬燈

1.了解跑馬燈的工作過程及控制原理。2.掌握單片機I/O口控制外部負載的合理設計方法。3.掌握移位和延時程序的設計方法。4.能夠設計并制作跑馬燈控制系統(tǒng)。本任務選用單片機P0口控制8只發(fā)光二極管(D1~D8),使D1~D8由低位到高位依次點亮,時間間隔為1s,如此往復循環(huán),完成跑馬燈控制系統(tǒng)的設計與制作。一、函數(shù)1.標準庫函數(shù)即由C編譯系統(tǒng)提供的庫函數(shù),在C編譯系統(tǒng)中將一些獨立的功能模塊編寫成公用函數(shù),并將它們集中存放在系統(tǒng)的函數(shù)庫中,供程序設計時使用。豐富的可直接調用的庫函數(shù)是C51功能強大及其高效率的重要體現(xiàn)之一,多使用庫函數(shù)可使程序代碼簡化,結構清晰,易于調試和維護。2.用戶自定義函數(shù)即用戶根據(jù)自己的需要而編寫的函數(shù)。從函數(shù)定義的形式上可以劃分為無參數(shù)函數(shù)、有參數(shù)函數(shù)和空函數(shù)。無參函數(shù)的一般形式為:函數(shù)類型函數(shù)名(void)

//用“void”聲明該函數(shù)為//無參函數(shù)

{局部變量定義;函數(shù)體語句;}其中:函數(shù)類型定義了該函數(shù)返回值的類型。函數(shù)名后括號中的“void”,聲明了該函數(shù)為無參函數(shù),可以省略不寫,但括號不能少。局部變量的定義就是對在本函數(shù)內部使用的變量進行定義,只在本函數(shù)內部有效。它與全局變量相對,全局變量則是定義在函數(shù)的外部,一般位于程序的頂部,它的有效范圍為從定義開始的位置到源文件結束。二、移位運算符C51中移位運算符主要包括左移(“<<”)和右移(“>>”)兩種?!?lt;<”運算符的功能是:將一個二進制數(shù)的各位全部左移若干位,移動過程中,高位舍棄,低位補0。“>>”運算符的功能是:將一個二進制數(shù)的各位全部右移若干位,移動過程中,低位舍棄,高位補0。[例]將無符號字符型變量m中的數(shù)據(jù)左環(huán)移n(n<8)位。解:a=m<<n;

//將變量m左移n位后并賦給中間變量a

b=m>>(8-n);/*將變量m右移(8-n)位后并賦給中間變量b

m=a|b;

/*將兩個中間變量中的數(shù)據(jù)進行按位“或”運算再返還給變量m,則此時m中的數(shù)據(jù)即為左環(huán)移n位后的結果*/在C51中若要實現(xiàn)匯編移位指令中的環(huán)移功能,可以借助C編譯系統(tǒng)中的“INTRINS.H”庫函數(shù),其中包含了字符循環(huán)左移(_crol_)和字符循環(huán)右移(_cror_)指令。三、延時程序采用for三重循環(huán)語句結構完成1s延時的函數(shù):voiddelay1s(void)

//定義一個延時為1s的無參函數(shù)供主函數(shù)調用{unsignedchari,j,k;

//局部變量定義/*最外層循環(huán)共要循環(huán)10次,共計延時約為10×0.1s=1s*/

for(k=10;m>0;m--)

/*次外層循環(huán)共要循環(huán)200次,共計延時約為200×0.5ms=100ms=0.1s*/

for(j=200;j>0;j--)

/*內循環(huán)共要循環(huán)250次,共計延時約為250×2μs=500μs=0.5ms*/

for(i=250;i>0;i--);

/*最內層的循環(huán)體為空,循環(huán)每次延時2μs*/}此延時函數(shù)的時間延時只是近似1s,而并非標準的1s時間,因此只能用于對延時時間要求不是很準確的場合,若要實現(xiàn)標準的1s延時,可利用以后學習的定時器功能來完成。一、設計并繪制電路原理圖單片機對LED控制的連接電路有兩種方式,如下圖所示。相應地,硬件上的不同連接方式也決定了軟件上的不同控制邏輯,見下表:端口控制邏輯電平端口LED狀態(tài)邏輯電平P0.0亮0滅1P2.0亮1滅0在Proteus中根據(jù)上述分析繪制跑馬燈電路原理圖:AT89S51的I/O口在外接負載時,要注意其負載能力。P0每位可驅動8個TTL負載,每一位最大的吸收電流為26mA,P1~P3口每位可驅動4個TTL負載,每一位最大的吸收電流為15mA。輸出端口說明P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0D8D7D6D5D4D3D2D111111110D1亮11111101D2亮11111011D3亮11110111D4亮11101111D5亮11011111D6亮10111111D7亮01111111D8亮二、程序設計跑馬燈的程序設計流程圖如下圖所示:根據(jù)上述設計思路編寫完整的程序:三、程序輸入及仿真運行四、制作硬件電路并調試步驟說明示范圖片1.材料準備參照元器件清單表步驟說明示范圖片2.硬件焊接電路板元件布局圖電路板背面步驟說明示范圖片3.程序燒入、運行并調試跑馬燈運行圖單擊此處返回目錄任務2花樣燈

1.了解花樣燈的工作過程。2.掌握查表程序的設計方法。3.掌握有參函數(shù)的調用及聲明。4.能夠設計并制作花樣燈控制系統(tǒng)?;訜羰前磿r間依次讓燈呈現(xiàn)出規(guī)定的花樣,相對跑馬燈來說,控制的顯示數(shù)據(jù)之間沒有規(guī)律,顯示上具有多變性和復雜性,如下圖所示。本任務使用單片機的P2口控制8只LED,循環(huán)實現(xiàn)如下圖所示四種花樣的顯示,完成花樣燈控制系統(tǒng)的設計與制作?;覦8D7D6D5D4D3D2D1數(shù)據(jù)編碼一☆☆☆☆☆☆☆☆0xff★☆☆☆☆☆☆★0x7e★★☆☆☆☆★★0x3c★★★☆☆★★★0x18★★★★★★★★0x00★★★☆☆★★★0x18★★☆☆☆☆★★0x3c★☆☆☆☆☆☆★0x7e注:★燈亮☆燈滅花樣D8D7D6D5D4D3D2D1數(shù)據(jù)編碼二☆☆☆☆☆☆☆☆0xff★☆☆☆☆☆☆☆0x7f★★☆☆☆☆☆☆0x3f★★★☆☆☆☆☆0x1f★★★★☆☆☆☆0x0f★★★★★☆☆☆0x07★★★★★★☆☆0x03★★★★★★★☆0x01★★★★★★★★0x00花樣D8D7D6D5D4D3D2D1數(shù)據(jù)編碼三☆☆☆☆☆☆☆☆0xff☆★☆★☆★☆★0xaa★☆★☆★☆★☆0x55☆★☆★☆★☆★0xaa★☆★☆★☆★☆0x55四☆☆☆☆☆☆☆☆0xff☆☆☆☆★★★★0xf0★★★★☆☆☆☆0x0f☆☆☆☆★★★★0xf0★★★★☆☆☆☆0x0f☆☆☆☆☆☆☆☆0xff一、有參函數(shù)定義的一般形式

函數(shù)類型函數(shù)名(形式參數(shù)表)

//表明該函數(shù)帶有參數(shù)傳遞{局部變量定義;函數(shù)體語句;}2.形參與實參形參:在定義函數(shù)時,函數(shù)名后面括號中的變量稱為“形參”,定義時不賦值,由調用函數(shù)將值傳遞過來。實參:主調用函數(shù)后面括號中的表達式為“實參”,實參必須有確定的值。該值在調用時按對應關系傳遞給形參。注意:在C語言中參數(shù)的傳遞是單向的。函數(shù)返回值通過“return(x)”返回,返回值是通過函數(shù)名帶回的,所以一個函數(shù)只能有一個返回值。1.函數(shù)返回值[例]定義一個返回兩個整數(shù)的最大值的函數(shù)max()。

intmax(intx,inty){intz;z=x>y?X:y;return(z);}二、有參函數(shù)調用的一般形式函數(shù)名(實參列表);有參函數(shù)在被調用時,調用函數(shù)將要運算的對象以實參的形式傳遞給有參函數(shù),有參函數(shù)再將運算對象帶入自身函數(shù)體內執(zhí)行,并在函數(shù)結束時返回結果供調用它的函數(shù)使用。三、自定義函數(shù)的聲明

[extern]函數(shù)類型函數(shù)名(形式參數(shù)表);函數(shù)的聲明是把函數(shù)名字、函數(shù)類型以及形參的類型、個數(shù)和順序通知編譯系統(tǒng),以便調用函數(shù)時系統(tǒng)進行對照檢查。函數(shù)的聲明后面要加分號。如果聲明的函數(shù)在文件內部,則聲明時不用加“extern”,如果聲明的函數(shù)不在文件內部,而在另一個文件中,聲明時須帶“extern”,指明使用的函數(shù)在另一個文件中。[例]有參函數(shù)的調用及聲明。

#include<AT89X51.H>//包含AT89單片機寄存器的頭文件#include<stdio.h>/*包含I/O庫函數(shù)文件(它當中定義了C51中的輸入和輸出函數(shù))*/

intmax(intx,inty);//對max函數(shù)進行聲明main()//主函數(shù){inta,b;SCON=0x50;//串口工作于方式1,10位異步收發(fā)

TMOD=0x20;//定時器T1工作于方式2自動裝入模式

TH1=0xFD;//晶振11.0592MHz,波特率:9600TI=1;//串行發(fā)送中斷標志位置"1"TR1=1;//啟動定時器T1while(1){printf(“pleaseinputa,b:\n”);//輸入要比較的兩個整數(shù)

scanf("%d,%d",&a,&b);printf(“maxis:%d\n”,max(a,b)

);//調用有參函數(shù)并輸出最大值

}

}intmax(intx,inty){intz;z=(x>=y?x:y);//通過表達式求出最大值

return(z);//返回最大值}在C51程序設計中,一般將被調用函數(shù)放置于主調用函數(shù)之前,這樣可以在程序頭省去對被調用函數(shù)的聲明。一、設計并繪制花樣燈電路原理圖

注意:在實際應用電路中,若接節(jié)日彩燈或廣告霓虹燈,一般還需外加隔離電路(光電耦合器)和驅動電路(如晶閘管或繼電器等)。二、程序設計根據(jù)上述設計思路編寫完整的程序:三、程序輸入與仿真調試四、制作硬件電路并調試步驟說明示范圖片1.焊接前材料準備參照元器件清單表步驟說明示范圖片2.硬件焊接電路板元件布局圖電路板背面步驟說明示范圖片3.程序燒入、運行并調試彩燈運行圖單擊此處返回目錄任務3鍵控彩燈

1.了解按鍵的特性及其與單片機端口的連接方法。2.掌握獨立式按鍵掃描及軟件消抖的編程原理。3.能夠設計并制作鍵控彩燈控制系統(tǒng)。本任務使用單片機P0口連接8只彩色LED,按照綠、黃、紅順序依次排開。使用兩個獨立按鍵,分別連接在單片機的P2.0和P2.1口,實現(xiàn)下表中所述的控制要求,完成鍵控彩燈控制系統(tǒng)的設計與制作。按鍵編號連接端口按鍵功能說明K1P2.0右移按鍵,彩燈右移一位點亮K2P2.1左移按鍵,彩燈左移一位點亮一、鍵盤及其接口矩陣鍵盤獨立鍵盤獨立式鍵盤的各個按鍵之間相互獨立,每個按鍵獨立地與一根數(shù)據(jù)輸入線(單片機并行I/O口或其他接口芯片的并行接口)相連。常見的接口電路如下圖所示。獨立式鍵盤配置靈活,軟件結構簡單,但每個按鍵必須占用一根接口線,在按鍵數(shù)量較多時,將占用較多接口線,因此,獨立式按鍵常用于按鍵數(shù)量不多的場合。二、按鍵的機械特性為了保證每按下一次按鍵,單片機僅作一次鍵輸入處理,就需要消除因按鍵抖動現(xiàn)象而引起的錯誤動作,常用的去除抖動的方法有硬件消抖和軟件消抖兩種。在實際應用中,當所接按鍵較多時,為了減少外圍電路,通常利用軟件延時的方法來消除抖動。三、硬件消抖電路一、設計并繪制鍵控彩燈電路原理圖二、程序設計軟件消抖流程圖鍵控彩燈程序設計流程圖根據(jù)上述設計思路編寫完整的程序:三、程序輸入與仿真運行四、制作硬件電路并調試步驟說明示范圖片1.焊接前材料準備參照元器件清單表步驟說明示范圖片2.硬件焊接電路板元件布局圖電路板背面步驟說明示范圖片3.程序燒入、運行并調試彩燈左移運行圖單擊此處返回目錄任務4數(shù)顯搶答器1.了解數(shù)碼管的結構及顯示原理。2.掌握對獨立式鍵盤掃描、處理的編程方法。3.掌握單片機控制LED數(shù)碼管靜態(tài)顯示方法。4.能夠設計并制作數(shù)顯搶答器控制系統(tǒng)。搶答器是一種廣泛應用于各種競賽活動、搶答現(xiàn)場中的重要設備,如下圖所示,它能迅速、準確、公正、客觀地分辨出最先獲得發(fā)言權的選手,保證比賽的順利有效進行,同時增加比賽的刺激性和娛樂性。

1.每個參賽選手控制一個按鈕,按動按鍵發(fā)出搶答信號。2.競賽主持人控制兩個功能按鈕,一個為搶答開始按鈕,另一個為搶答結束后的復位按鈕。3.競賽開始后,先由主持人按下?lián)尨痖_始按鈕,8位參賽選手通過按下各自的搶答按鈕進行搶答。哪位選手最先按下?lián)尨鸢粹o,數(shù)碼管就顯示其對應的號碼,表示該名選手搶答成功并且鎖定,其他參賽選手再搶答無效。4.競賽結束時,再由主持人按下復位按鈕,本輪搶答結束,為下一輪搶答做準備。本任務主要是設計并制作一個簡易的8路搶答器,不考慮音響、燈光等輔助設施。通過獨立鍵盤輸入搶答信號,一位數(shù)碼管顯示出搶答者的號碼,具體控制要求如下:一、LED數(shù)碼管的結構

數(shù)碼管是由幾個發(fā)光二極管組合在一起而形成的顯示裝置,組成數(shù)碼管的每一個發(fā)光二極管稱為數(shù)碼管的“段”。以一位8段LED數(shù)碼管為例,共有7段組成一個“日”字形,分別定義為數(shù)碼管的a、b、c、d、e、f、g段,另外再加上一個用于小數(shù)顯示的小數(shù)點dp(或h)段。數(shù)碼管根據(jù)不同碼段之間的組合,來顯示數(shù)字0~9或簡單的字符信息。由于組成數(shù)碼管的發(fā)光二極管自身具有極性,所以組成的數(shù)碼管也有共陰極和共陽極之分。共陽極共陰極二、單片機與數(shù)碼管之間的連接共陽數(shù)碼管共陰數(shù)碼管當使用單片機的I/O口控制一位顯示輸出時,最好選擇共陽極數(shù)碼管,這樣電路采用灌電流方式,數(shù)碼管直接受控于I/O端口,否則,當連接的是共陰極數(shù)碼管時,需在I/O口上添加上拉電阻來驅動數(shù)碼管。三、數(shù)碼管字符顯示原理a)共陰數(shù)碼管顯示以單片機I/O口輸出顯示“5”的字形數(shù)據(jù)為例:b)共陽數(shù)碼管顯示四、數(shù)碼管靜態(tài)顯示方式靜態(tài)顯示即當數(shù)碼管顯示某一字符時,相應碼段的發(fā)光二極管恒定的導通或截止,只要通過改變數(shù)碼管各碼段引腳的高低電平,就能達到顯示不同字符的目的。優(yōu)點:數(shù)碼管顯示穩(wěn)定無閃爍,亮度高,軟件控制比較容易;缺點:占用單片機較多的I/O口資源,且硬件接線復雜。五、一位數(shù)碼管循環(huán)顯示“0~9”1.電路原理圖2.“0~9循環(huán)顯示”程序一、設計并繪制8路數(shù)顯搶答器電路原理圖二、程序設計本任務的程序設計主要包括數(shù)碼管顯示程序和按鍵處理程序兩部分。根據(jù)設計思路編寫的8路數(shù)顯搶答器程序為:8路數(shù)顯搶答器程序設計流程圖如右圖所示。三、程序輸入與仿真運行四、制作硬件電路并調試步驟說明示范圖片1.焊接前材料準備參照元器件清單表步驟說明示范圖片2.硬件焊接電路板元件布局圖電路板背面DIP底座步驟說明示范圖片3.程序燒入、運行并調試2號搶答成功運行圖單擊此處返回目錄任務5簡易數(shù)字秒表1.了解秒表的工作過程。2.掌握單片機控制LED數(shù)碼管動態(tài)顯示字符方法。3.能夠設計并制作簡易數(shù)字秒表。本任務利用軟件延時計數(shù)法,通過四位一體數(shù)碼管輸出顯示,實現(xiàn)簡易秒表的計時功能,具體控制要求如下:1.單片機的P0口控制四位一體LED共陰數(shù)碼管的各碼段端;2.單片機的P2.0~P2.3引腳外接驅動電路控制數(shù)碼管的四個位選端;3.四位數(shù)碼管分別用來顯示一位分計時和兩位秒計時,中間用“—”隔開。動態(tài)顯示是將所有數(shù)碼管的8個段碼端的同名端并聯(lián)在一起,由一個8位的輸出口控制,每位數(shù)碼管的公共端(稱位線)由各自獨立的輸出口線控制,如圖所示。它解決了數(shù)碼管靜態(tài)顯示時占用較多的I/O口資源的問題。

在輪流顯示過程中,每位數(shù)碼管的點亮時間一般要控制在1~2ms,這樣由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論