項目單片機控制LED燈的設(shè)計_第1頁
項目單片機控制LED燈的設(shè)計_第2頁
項目單片機控制LED燈的設(shè)計_第3頁
項目單片機控制LED燈的設(shè)計_第4頁
項目單片機控制LED燈的設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

電子工業(yè)出版社單片機控制技術(shù)

項目式教程

(C語言版)電子工業(yè)出版社項目4單片機控制LED燈的設(shè)計

能了解51單片機I/O口的結(jié)構(gòu);能掌握51單片機I/O口的特點及應(yīng)用;能掌握51單片機控制LED燈的硬件設(shè)計方法;能熟練編寫單片機控制LED燈閃爍的程序。學習目標工作任務(wù)敘述51單片機I/O口的結(jié)構(gòu)和特點;設(shè)計單片機控制單個LED燈閃爍的電路和工作軟件;設(shè)計單片機控制多個循環(huán)LED燈的電路和工作軟件。任務(wù)4.1單片機控制單個LED燈任務(wù)4.2單片機控制多個循環(huán)LED燈項目小結(jié)項目4單片機控制LED燈的設(shè)計

任務(wù)4.1單片機控制單個LED燈4.1.1MCS-51單片機的I/O口介紹

MCS-51系列單片機有4個8位的并行I/O接口:P0、P1、P2和P3口。它們是特殊功能寄存器中的4個。這4個口,既可以作輸入,也可以作輸出,既可按8位處理,也可按位方式使用。輸出時具有鎖存能力,輸入時具有緩沖功能。

1.P0口P0口是一個三態(tài)雙向口,包括一個輸出鎖存器、兩個三態(tài)緩沖器、輸出驅(qū)動電路和輸出控制電路組成,它的一位結(jié)構(gòu)如圖:輸出驅(qū)動器控制電路P0口功能1、通用I/O接口:不需要外部擴展時,內(nèi)部控制信號將使MUX開關(guān)接通到鎖存器。此時,由于P0口沒有內(nèi)部上拉電阻,通常要在外部加一個上拉電阻來提高驅(qū)動能力。2、地址/數(shù)據(jù)分時復(fù)用:需要進行外部擴展時,內(nèi)部控制信號將使MUX開關(guān)接通到內(nèi)部地址/數(shù)據(jù)線。此時,P0口在ALE信號的控制下,分時輸出低8位地址和8位數(shù)據(jù)信號。P0口的工作原理(1)通用I/O口①用作輸入口(端口外數(shù)據(jù)內(nèi)部寄存器)方式1(讀鎖存器):Q緩沖器2D內(nèi)部總線,適于“讀—修改—寫”方式2(讀引腳):P0.x緩沖器1D內(nèi)部總線。

作為通用I/O使用,是一個準雙向口:“在輸入數(shù)據(jù)時應(yīng)先把口置1,使V1、V2都截止,引腳處于懸浮狀態(tài),可作高阻抗輸入”②用作輸出口(片內(nèi)數(shù)據(jù)端口)數(shù)據(jù)鎖存MUXP0.x(2)地址/數(shù)據(jù)總線口

①輸出:地址/數(shù)據(jù)為1,P0·x——高地址/數(shù)據(jù)為0,P0·x——低

②輸入:經(jīng)緩沖器1讀入

(1)P0口既可作地址/數(shù)據(jù)總線使用,也可作通用I/O口使用。當P0口作地址/數(shù)據(jù)總線使用時,就不能再作通用I/O口使用了。(2)P0口作輸出口使用時,輸出級屬漏極開路,必須外接上拉電阻,才有高電平輸出。(3)P0口作輸入口讀引腳時,應(yīng)先向鎖存器寫1,使V1、V2截止,不影響輸入電平。P0口特點2.P1口P1口是準雙向口,它只能作通用I/O接口使用。結(jié)構(gòu)與P0口不同,它的輸出只由一個場效應(yīng)管V1與內(nèi)部上拉電阻組成。(1)P1口是唯一的單功能口,僅能作為通用I/O口使用。因在其輸出端接有上拉電阻,可以直接輸出而無需外接上拉電阻。(2)同P0口一樣,當作輸入口時,必須先向鎖存器寫“1”,使場效應(yīng)管V1截止。P1口特點3.P2口P2口也是準雙向口,它有兩種用途:通用I/O接口和高8位地址線。

P2口作I/O端口使用時:內(nèi)部控制信號使MUX開關(guān)接通到鎖存器,此時P2口的用法與P1口相同。P2口作外部地址總線使用時:內(nèi)部控制信號使MUX開關(guān)接通到內(nèi)部地址線,此時P2口的引腳狀態(tài)由所輸出的地址決定。需要特別指出的是,由于對片外地址的操作是連續(xù)不斷的,只要進行了外部系統(tǒng)擴展,此時P0口和P2口就不能再用作I/O端口了。4.P3口

P3口用作通用I/O口時,其工作原理同P1口類似。此外,它的每一根線還具有第二種功能?!?/p>

在真正的應(yīng)用電路中,P3口的第二功能顯得更為重要。4.1.2單片機控制單個LED燈閃爍的設(shè)計1.任務(wù)要求設(shè)計一個電路,AT89C52單片機的P1.7引腳連接一個LED燈,控制LED閃爍。2.任務(wù)分析

以單片機為核心的電子設(shè)計硬件設(shè)計軟件設(shè)計單片機最小系統(tǒng)加上最簡單的輸出電路來驅(qū)動LED編程控制P1.7引腳的電平狀態(tài),使其持續(xù)一段時間的高電平,再持續(xù)一段時間的低電平3.任務(wù)設(shè)計(1)器件的選擇①發(fā)光二極管發(fā)光二極管:單向?qū)щ娦?,通過5mA左右電流即可發(fā)光,電流越大,亮度越強,但若電流過大會燒毀二極管,一般控制在3~20mA。工作電壓:紅色發(fā)光二極管1.7-2.5V

綠色發(fā)光二極管2.0-2.4V

黃色發(fā)光二極管1.9-2.4V

藍/白色發(fā)光二極管3.0-3.8V②限流電阻二極管串聯(lián)電阻的目的是為了防止發(fā)光二極管和P1.7引腳流過的電流過大,燒毀二極管或單片機,所以該電阻也稱為“限流電阻”。限流電阻的選擇:假設(shè)電源電壓為VCC,發(fā)光二極管的導(dǎo)通壓降為VDD,導(dǎo)通時流過二極管的電流為I,則限流電阻R為:

R=(VCC-VDD)/I例如,若二極管的導(dǎo)通壓降為2.2V,導(dǎo)通時流過的電流為5mA,則限流電阻為560Ω。③器件清單器件名稱數(shù)量(只)AT89C52112MHz晶體122pF瓷片電容222uF電解電容110kΩ電阻1560Ω電阻1發(fā)光二極管LED1(2)硬件原理圖設(shè)計再次強調(diào):圖中的單片機元件沒有“VCC”和“GND”引腳,這是因為Proteus軟件中,元件模型中的“電源”和“地”已經(jīng)進行了連接,“VCC”接到了“+5V”電源,“GND”接到了“地”,所以隱藏了這兩個引腳。(3)軟件程序設(shè)計#include<reg52.h>//宏定義sbitled=P1^7;//用sbit

關(guān)鍵字定義P1.7引腳

//延時子函數(shù)voidDelay(unsigned

intt){while(--t);}

//主函數(shù),控制P1.7引腳的LED燈閃爍voidmain(void){while(1)//主循環(huán)

{led=0;//將P1.7引腳置0,對外輸出低電平

Delay(20000);//調(diào)用延時程序

led=1;//將P1.7引腳置

1,對外輸出高電平

Delay(20000);//調(diào)用延時程序

}}在軟件編程中,通常使用空循環(huán)來達到延時的效果。延時時間的長短可以在KeilC51的調(diào)試狀態(tài)下分析。(4)軟硬件聯(lián)合調(diào)試1.任務(wù)要求設(shè)計一個電路,AT89C52單片機的P1口連接8只LED燈,首先控制P1.0到P1.7連接的8只LED燈逐個點亮,接下來再從P1.0到P1.7連接的8只LED依次全部點亮,然后控制從P1.7到P1.0連接的8只LED燈逐個點亮,最后再從P1.7到P1.0連接的8只LED依次全部點亮,形成流水燈的效果。任務(wù)4.2單片機控制多個LED燈2.任務(wù)分析任務(wù)要求單片機控制8個LED燈,當需要對某個I/O口的八位一起操作時,一般采用整體操作的方式,即總線的方式。在軟件設(shè)計時可以定義一個變量來給P1口賦值,賦的值不同點亮的LED燈不同。由于8只LED燈要按一定規(guī)律點亮,這就要求對給P1口賦的變量進行移位,移位操作既可以用標準C中的左移、右移運算符來實現(xiàn),也可以用C51庫自帶的函數(shù)來實現(xiàn)。

移位運算符

循環(huán)移位函數(shù)

注意:循環(huán)移位函數(shù)_crol_()和_cror_()包含在intrins.h頭文件中,因此如果在程序中要用到這類函數(shù),就必須在程序的開頭處包含intrins.h這個頭文件。由于用到的發(fā)光二極管較多,每個發(fā)光二極管都需要限流電阻,硬件電路會顯得比較復(fù)雜,所以這里使用了排阻。排阻,就是若干個參數(shù)完全相同的電阻,它們的一個引腳都連到一起,作為公共引腳,其余引腳正常引出。如果一個排阻是由n個電阻構(gòu)成的,那么它就有n+1個引腳,一般來說最左邊的那個是公共引腳。它在排阻上一般用一個色點標出來。

直插式排阻貼片式排阻☆排阻一般用在數(shù)字電路上,比如作為某個并行口的上拉或者下拉電阻用。使用排阻比用若干只固定電阻更方便。3.任務(wù)設(shè)計(1)器件的選擇器件清單器件名稱數(shù)量(只)AT89C52112MHz晶體122pF瓷片電容222uF電解電容110kΩ電阻1560Ω×8排阻1發(fā)光二極管LED8(2)硬件原理圖設(shè)計(3)軟件程序設(shè)計#include<reg52.h>//宏定義,52單片機頭文件#include<intrins.h>//包含_crol_、_cror_函數(shù)所在的頭文件#defineuintunsignedint

#defineucharunsignedchar

//延時子函數(shù)voidDelay(unsigned

intt){while(--t);}//主函數(shù),循環(huán)點亮LED燈voidmain(){uchar

k,recy;while(1)//大循環(huán){recy=0xfe;

for(k=1;k<=8;k++)//8只LED燈從P1.0到P1.7逐個點亮

{P1=recy;//先點亮P1.0的LED燈

Delay(50000);//延時一段時間

recy=_crol_(recy,1);//將recy循環(huán)左移1位后再賦給recy}

recy=0xfe;

for(k=1;k<=8;k++)//8只LED燈從P1.0到P1.7依次全部點亮

{P1=recy;Delay(50000);

recy=recy<<1;//將recy左移1位后再賦給recy}P1=0xff;//全部熄滅

Delay(50000);

recy=0x7f;

for(k=1;k<=8;k++)//8只LED燈從P1.7到P1.0逐個點亮

{P1=recy;//先點亮P1.7的LED燈

Delay(50000);

recy=_cror_(recy,1);//將recy循環(huán)右移1位后再賦給recy}

recy=0x7f;

for(k=1;k<=8;k++)//8只LED燈從P1.7到P1.0依次全部點亮

{P1=recy;Delay(50000);

recy=recy>>1;

溫馨提示

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

最新文檔

評論

0/150

提交評論