單片機(jī)控制系統(tǒng)開(kāi)發(fā)訓(xùn)練授課對(duì)象電氣自動(dòng)化技術(shù)劉_第1頁(yè)
單片機(jī)控制系統(tǒng)開(kāi)發(fā)訓(xùn)練授課對(duì)象電氣自動(dòng)化技術(shù)劉_第2頁(yè)
單片機(jī)控制系統(tǒng)開(kāi)發(fā)訓(xùn)練授課對(duì)象電氣自動(dòng)化技術(shù)劉_第3頁(yè)
單片機(jī)控制系統(tǒng)開(kāi)發(fā)訓(xùn)練授課對(duì)象電氣自動(dòng)化技術(shù)劉_第4頁(yè)
單片機(jī)控制系統(tǒng)開(kāi)發(fā)訓(xùn)練授課對(duì)象電氣自動(dòng)化技術(shù)劉_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《單片機(jī)控制系統(tǒng)開(kāi)發(fā)訓(xùn)練》授課對(duì)象:電氣自動(dòng)化技術(shù)1801/02主講教師:劉旭東電氣工程系第5章單片機(jī)的開(kāi)關(guān)檢測(cè)、鍵盤(pán)輸入

與顯示的接口設(shè)計(jì)

5.1單片機(jī)控制發(fā)光二極管顯示發(fā)光二極管常用來(lái)指示系統(tǒng)工作狀態(tài),制作節(jié)日彩燈、廣告牌匾等。大部分發(fā)光二極管工作電流1~5mA之間,其內(nèi)阻為20~100Ω。電流越大,亮度也越高。為保證發(fā)光二極管正常工作,同時(shí)減少功耗,限流電阻選擇十分重要,若供電電壓為+5V,則限流電阻可選1~3kΩ。5.1.1單片機(jī)與發(fā)光二極管的連接第2章已介紹,P0口作通用I/O用,由于漏極開(kāi)路,需外接上拉電阻。而P1~P3口內(nèi)部有30kΩ左右上拉電阻。下面討論P(yáng)1~P3口如何與LED發(fā)光二極管驅(qū)動(dòng)連接問(wèn)題。單片機(jī)并行端口P1~P3直接驅(qū)動(dòng)發(fā)光二極管,電路見(jiàn)圖5-1。與P1、P2、P3口相比,P0口每位可驅(qū)動(dòng)8個(gè)LSTTL輸入,而P1~P3口每一位驅(qū)動(dòng)能力,只有P0口一半。圖5-1發(fā)光二極管與單片機(jī)并行口的連接當(dāng)P0口某位為高電平時(shí),可提供400μA的拉電流;當(dāng)P0口某位為低電平(0.45V)時(shí),可提供3.2mA的灌電流,而P1~P3口內(nèi)有30kΩ左右上拉電阻,如高電平輸出,則從P1、P2和P3口輸出的拉電流Id僅幾百μA,驅(qū)動(dòng)能力較弱,亮度較差,見(jiàn)圖5-1(a)。如端口引腳為低電平,能使灌電流Id從單片機(jī)外部流入內(nèi)部,則將大大增加流過(guò)的灌電流值,見(jiàn)圖5-1(b)AT89S51任一端口要想獲得較大的驅(qū)動(dòng)能力,要用低電平輸出。如一定要高電平驅(qū)動(dòng),可在單片機(jī)與發(fā)光二極管間加驅(qū)動(dòng)電路,如74LS04、74LS244等。5.1.2I/O端口的編程舉例對(duì)I/O端口編程控制時(shí),要對(duì)I/O端口特殊功能寄存器聲明,在C51的編譯器中,這項(xiàng)聲明包含在頭文件reg51.h中,編程時(shí),可通過(guò)預(yù)處理命令#include<reg51.h>,把這個(gè)頭文件包含進(jìn)去。下面通過(guò)案例介紹如何編程對(duì)發(fā)光二極管輸出控制。

圖5-2單片機(jī)控制的流水燈

【例5-1】制作流水燈,原理電路見(jiàn)圖5-2,8個(gè)發(fā)光二極管LED0~LED7經(jīng)限流電阻分別接至P1口的P1.0~P1.7引腳上,陽(yáng)極共同接高電平。編寫(xiě)程序來(lái)控制發(fā)光二極管由上至下的反復(fù)循環(huán)流水點(diǎn)亮,每次點(diǎn)亮一個(gè)發(fā)光二極管。參考程序:#include<reg51.h>#include<intrins.h>//包含移位函數(shù)_crol_()的頭文件#defineucharunsignedchar #defineuintunsignedint voiddelay(uinti) //延時(shí)函數(shù){ uchart; while(i--)

{ for(t=0;t<120;t++); }}voidmain() //主程序{ P1=0xfe; //向P1口送出點(diǎn)亮數(shù)據(jù)

while(1){ delay(500);//500為延時(shí)參數(shù),可根據(jù)實(shí)際需要調(diào)整

P1=_crol_(P1,1);//函數(shù)_crol_(P1,1)把P1中的數(shù)據(jù)循環(huán)左移1位

}}程序說(shuō)明:(1)while(1)兩種用法:“while(1);”:while(1)后有分號(hào),是使程序停留在這指令上;“while(1){……;}”:反復(fù)循環(huán)執(zhí)行大括號(hào)內(nèi)程序段,本例用法,即控制流水燈反復(fù)循環(huán)顯示。(2)C51函數(shù)庫(kù)中的循環(huán)移位函數(shù):循環(huán)移位函數(shù)包括:循環(huán)左移函數(shù)“_crol_”循環(huán)右移函數(shù)“_cror_”。本例用循環(huán)左移“_crol_(P1,1)”,函數(shù)。括號(hào)第1個(gè)參數(shù)為循環(huán)左移對(duì)象,即對(duì)P1中的內(nèi)容循環(huán)左移;第2個(gè)參數(shù)為左移位數(shù),即左移1位。編程中一定要把含有移位函數(shù)的頭文件intrins.h包含在內(nèi),例如第2行“#include<intrins.h>”。在【例5-1】基礎(chǔ)上,編寫(xiě)控制發(fā)光二極管反復(fù)循環(huán)點(diǎn)亮的流水燈。

【例5-2】電路見(jiàn)圖5-2,制作由上至下再由下至上反復(fù)循環(huán)點(diǎn)亮顯示的流水燈,3種方法實(shí)現(xiàn)。(1)數(shù)組的字節(jié)操作實(shí)現(xiàn)建立1個(gè)字符型數(shù)組,將控制8個(gè)LED顯示的8位數(shù)據(jù)作為數(shù)組元素,依次送P1口。參考程序:#include<reg51.h>#defineucharunsignedchar uchartab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; /*前8個(gè)數(shù)據(jù)為左移點(diǎn)亮數(shù)據(jù),后8個(gè)為右移點(diǎn)亮數(shù)據(jù)*/voiddelay(){ uchari,j; for(i=0;i<255;i++) for(j=0;j<255;j++);}voidmain() //主函數(shù){ uchari; while(1) { for(i=0;i<16;i++) { P1=tab[i]; //向P1口送出點(diǎn)亮數(shù)據(jù)

delay(); //延時(shí),即點(diǎn)亮一段時(shí)間

} }}(2)移位運(yùn)算符實(shí)現(xiàn)使用移位運(yùn)算符“>>”、“<<”,把送P1口顯示控制數(shù)據(jù)進(jìn)行移位,從而實(shí)現(xiàn)發(fā)光二極管依次點(diǎn)亮。參考程序:#include<reg51.h>#defineucharunsignedchar voiddelay(){ uchari,j; for(i=0;i<255;i++) for(j=0;j<255;j++);}voidmain() //主函數(shù){ uchari,temp;while(1){ temp=0x01; //左移初值賦給tempfor(i=0;i<8;i++) { P1=~temp; //temp中的數(shù)據(jù)取反后送P1口

delay(); //延時(shí)

temp=temp<<1; //temp中數(shù)據(jù)左移一位

}

temp=0x80; //賦右移初值給tempfor(i=0;i<8;i++){ P1=~temp;//temp中的數(shù)據(jù)取反后送P1口delay(); //延時(shí)temp=temp>>1;//temp中數(shù)據(jù)右移一位}}}程序說(shuō)明:

注意使用移位運(yùn)算符“>>”、“<<”與使用循環(huán)左移函數(shù)“_crol_”和循環(huán)右移函數(shù)“_cror_”區(qū)別。左移移位運(yùn)算“<<”是將高位丟棄,低位補(bǔ)0;右移移位運(yùn)算、“>>”是將低位丟棄,高位補(bǔ)0。而循環(huán)左移函數(shù)“_crol_”是將移出的高位再補(bǔ)到低位,即循環(huán)移位;同理循環(huán)右移函數(shù)“_cror_”是將移出的低位再補(bǔ)到高位。(3)用循環(huán)左、右移位函數(shù)實(shí)現(xiàn)使用C51提供的庫(kù)函數(shù),即循環(huán)左移n位函數(shù)和循環(huán)右移n位函數(shù),控制發(fā)光二極管點(diǎn)亮。參考程序:#include<reg51.h>#include<intrins.h> //包含循環(huán)左、右移位函數(shù)的頭文件#defineucharunsignedchar voiddelay(){ uchari,j; for(i=0;i<255;i++) for(j=0;j<255;j++);}voidmain() //主函數(shù){ uchari,temp; while(1) {

temp=0xfe;

//初值為11111110

for(i=0;i<7;i++)

{ P1=temp;//temp中的點(diǎn)亮數(shù)據(jù)送P1口,控制點(diǎn)亮顯示

delay(); //延時(shí)

temp=_crol_(temp,1); //

temp數(shù)據(jù)循環(huán)左移1位

}for(i=0;i<7;i++) { P1=temp; //temp中的數(shù)據(jù)送P1口輸出

delay(); //延時(shí)

temp=_cror_(temp,1)

;//temp中數(shù)據(jù)循環(huán)右移1位

}}}作業(yè)1:調(diào)試?yán)?-1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論