第4章并行口的輸入輸出操作_第1頁
第4章并行口的輸入輸出操作_第2頁
第4章并行口的輸入輸出操作_第3頁
第4章并行口的輸入輸出操作_第4頁
第4章并行口的輸入輸出操作_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第4 4章章 P0P0P3P3口應(yīng)用基礎(chǔ)口應(yīng)用基礎(chǔ) 片內(nèi)并行片內(nèi)并行I/OI/O口的應(yīng)用??诘膽?yīng)用。 4.1 4.1 認(rèn)識(shí)認(rèn)識(shí)5151單片機(jī)的單片機(jī)的P0P0P3P3口口 4.2 4.2 輸出操作輸出操作 4.3 4.3 輸入操作輸入操作 4.4 4.4 實(shí)驗(yàn)與設(shè)計(jì)實(shí)驗(yàn)與設(shè)計(jì)4.1 4.1 認(rèn)識(shí)認(rèn)識(shí)5151單片機(jī)的單片機(jī)的P0P0P3P3口口 讀引腳 寫鎖存器 內(nèi)部總線 讀鎖存器 2 1 D CP 鎖存器 Q Q VCC V1 內(nèi)部上拉電阻 P1.X 第二功能輸入 讀引腳 寫鎖存器 內(nèi)部總線 讀鎖存器 D CP 鎖存器 Q Q 1 4 2 3 & 第二功能輸出 VCC P3.X 內(nèi)部

2、上拉電阻 讀鎖存器 內(nèi)部總線 寫鎖存器 讀引腳 2 1 D CP 鎖存器 Q 1 & MUX V1 PO.X V2 VCC 控制 地址/數(shù)據(jù) Q 讀鎖存器 內(nèi)部總線 寫鎖存器 讀引腳 2 1 D CP 鎖存器 Q Q 1 V1 P2.X VCC 控制 地址 從輸出位置看:從輸出位置看: P0P0與與P1P1、P2P2、P3P3不同,不同, 因此:因此: P0P0稱為稱為“雙向口雙向口”, 其余的稱為其余的稱為“準(zhǔn)雙向口準(zhǔn)雙向口”。雙向口:雙向口:?jiǎn)纹瑱C(jī)的單片機(jī)的I/OI/O口為了提高接口口為了提高接口的驅(qū)動(dòng)能力,具有由場(chǎng)效應(yīng)管組成的輸?shù)尿?qū)動(dòng)能力,具有由場(chǎng)效應(yīng)管組成的輸出驅(qū)動(dòng)器。當(dāng)驅(qū)動(dòng)器

3、場(chǎng)效應(yīng)管的漏極具出驅(qū)動(dòng)器。當(dāng)驅(qū)動(dòng)器場(chǎng)效應(yīng)管的漏極具有開路狀態(tài)時(shí),該口就具有有開路狀態(tài)時(shí),該口就具有高電平、低高電平、低電平和高阻抗電平和高阻抗3 3種狀態(tài)種狀態(tài),稱為雙向口。,稱為雙向口。準(zhǔn)雙向口:準(zhǔn)雙向口:?jiǎn)纹瑱C(jī)單片機(jī)I/OI/O口的輸出場(chǎng)效應(yīng)口的輸出場(chǎng)效應(yīng)管的漏極接有上拉電阻,該口具有管的漏極接有上拉電阻,該口具有高電高電平、低電平兩種狀態(tài)平、低電平兩種狀態(tài),稱為準(zhǔn)雙向口。,稱為準(zhǔn)雙向口。4.2 4.2 輸出操作輸出操作 輸出高、低電平。輸出高、低電平。 4.2.1 4.2.1 基本輸出基本輸出-字節(jié)、位字節(jié)、位 4.2.2 4.2.2 擴(kuò)展輸出擴(kuò)展輸出-流水燈、霹靂燈流水燈、霹靂燈 4.

4、2.3 4.2.3 擴(kuò)展輸出擴(kuò)展輸出88段段LEDLED顯示顯示4.2.1 4.2.1 基本輸出基本輸出-字節(jié)、位字節(jié)、位【例例4-14-1】字節(jié)輸出。字節(jié)輸出。8 8燈亮、滅閃爍燈亮、滅閃爍 #include #include void delay( unsigned int d )void delay( unsigned int d ) while(-d0); while(-d0); void main( ) void main( ) while(1) while(1) P1P1=0 xff;=0 xff;delay(50000);delay(50000); P1P1=0X00; dela

5、y(50000);=0X00; delay(50000); 【例【例4-24-2】位操作。編程實(shí)現(xiàn)位操作。編程實(shí)現(xiàn)P1.3P1.3所接的所接的發(fā)光二極管亮、滅閃爍發(fā)光二極管亮、滅閃爍 #include #include sbit LED3=P13; sbit LED3=P13; void delay(unsigned int d)void delay(unsigned int d) while(-d0); while(-d0); void main( ) void main( ) while(1) while(1) LED3=0;LED3=0; delay(50000); delay(5000

6、0); LED3=1;LED3=1; delay(50000); delay(50000); 請(qǐng)修改:請(qǐng)修改: (1 1)P1.7P1.7對(duì)應(yīng)的燈亮、滅閃爍對(duì)應(yīng)的燈亮、滅閃爍 (2 2)P1.1P1.1、P1.3P1.3、P1.5P1.5對(duì)應(yīng)的燈亮、對(duì)應(yīng)的燈亮、滅閃爍滅閃爍 (3 3)P1.0P1.0對(duì)應(yīng)的燈亮?xí)r,對(duì)應(yīng)的燈亮?xí)r,P1.7P1.7對(duì)應(yīng)的對(duì)應(yīng)的燈滅;燈滅; P1.0 P1.0對(duì)應(yīng)的燈滅時(shí),對(duì)應(yīng)的燈滅時(shí),P1.7P1.7對(duì)應(yīng)對(duì)應(yīng)的燈亮。的燈亮。 (4 4)將)將P1P1口改為口改為P3P3口。口。4.2.2 4.2.2 擴(kuò)展輸出擴(kuò)展輸出-流水燈、霹靂燈流水燈、霹靂燈 【例例4-34-

7、3】流水燈流水燈。編程實(shí)現(xiàn)。編程實(shí)現(xiàn)8 8個(gè)燈從低個(gè)燈從低到高流水燈的顯示閃爍。到高流水燈的顯示閃爍。 流水燈閃爍規(guī)律:流水燈閃爍規(guī)律: 11111110B11111101B11111011B-11111110B11111101B11111011B-01111111B-01111111B。 從初值從初值11111110B 11111110B 循環(huán)循環(huán)左移一位左移一位就就可以??梢浴?#include #include #include#include void delay( unsigned int d )void delay( unsigned int d ) while(-d0); whi

8、le(-d0); void main( ) void main( ) unsigned char sel; unsigned char sel; sel=0 xfe; sel=0 xfe; while(1) while(1) P1=sel; delay(50000); P1=sel; delay(50000); sel sel=_crol_(sel,1); =_crol_(sel,1); 也可以這樣也可以這樣: : #include #include void delay(unsigned int d) void delay(unsigned int d) while(-d0); while(

9、-d0); void main( )void main( ) unsigned char i, sel, a; unsigned char i, sel, a; while(1) while(1) sel=0 xfe; sel=0 xfe; for(i=0;i8;i+) for(i=0;i8;i+) P1=sel; delay(50000); P1=sel; delay(50000); a=sel1; sel=a|0 x01; a=sel1; sel=a|0 x01; 修改:修改: (1 1)兩個(gè)燈左循環(huán)。)兩個(gè)燈左循環(huán)。 (2 2)右循環(huán)。)右循環(huán)。 (3 3)從左到右,一個(gè)一個(gè)亮保持到全)

10、從左到右,一個(gè)一個(gè)亮保持到全亮,然后再重復(fù)。亮,然后再重復(fù)。【4-44-4】霹靂燈。】霹靂燈。由由P1P1口驅(qū)動(dòng)口驅(qū)動(dòng)8 8個(gè)個(gè)LEDLED燈,燈,編程實(shí)現(xiàn)霹靂燈閃爍。編程實(shí)現(xiàn)霹靂燈閃爍。 分析:分析: 所謂的霹靂燈是指一排所謂的霹靂燈是指一排LEDLED里,任何一里,任何一個(gè)時(shí)間只有一個(gè)個(gè)時(shí)間只有一個(gè)LEDLED亮,而亮燈的順序亮,而亮燈的順序?yàn)橛勺蠖以儆捎业阶?,感覺就像一個(gè)為由左而右再由右到左,感覺就像一個(gè)LEDLED由左跑到右再由右跑到左。霹靂燈由左跑到右再由右跑到左。霹靂燈規(guī)律:規(guī)律: 11111110B11111110B11111101B-11111101B-01111111B01

11、111111B10111111B10111111B11011111-11011111-11111110-11111110-。 修改:修改: 實(shí)現(xiàn)雙燈的實(shí)現(xiàn)雙燈的 霹靂燈功能。霹靂燈功能。4.2.3 4.2.3 擴(kuò)展輸出擴(kuò)展輸出88段段LEDLED顯示顯示 1 1、認(rèn)識(shí)、認(rèn)識(shí)8 8段段LED LED 結(jié)構(gòu)、驅(qū)動(dòng)結(jié)構(gòu)、驅(qū)動(dòng)2 2、顯示函數(shù)的編寫、顯示函數(shù)的編寫 (1 1)根據(jù)硬件電路的結(jié)構(gòu)建立一個(gè)顯根據(jù)硬件電路的結(jié)構(gòu)建立一個(gè)顯示的代碼表示的代碼表完成顯示內(nèi)容與顯示代碼完成顯示內(nèi)容與顯示代碼的轉(zhuǎn)換。(的轉(zhuǎn)換。(P202)P202) unsigned char code table18=unsigne

12、d char code table18= 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x70 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;d,0 x07,0 x7f,0 x6f;/顯示的代碼表顯示的代碼表 (2 2)開辟顯示緩沖區(qū))開辟顯示緩沖區(qū) unsigned char data dis_buf6;unsigned char data dis_buf6;/顯示緩沖區(qū)顯示緩沖區(qū) (3 3)查表并操作相應(yīng)的顯示器)查表并操作相應(yīng)的顯示器 (4 4)顯示函數(shù)的調(diào)用)顯示函數(shù)的調(diào)用3.8段段LE

13、D靜態(tài)顯示技術(shù)靜態(tài)顯示技術(shù) 【例例4-54-5】編程顯示:編程顯示:ABAB #include#include #define uchar unsigned char#define uchar unsigned char #define uint unsigned int#define uint unsigned int uchar data dis_buf2;/uchar data dis_buf2;/顯示緩沖區(qū)顯示緩沖區(qū) uchar code table = 0 x77,0 x7c;uchar code table = 0 x77,0 x7c; void display(void)void

14、 display(void)/顯示函數(shù)顯示函數(shù) uchar segcode;uchar segcode;segcode=dis_buf0;/P1segcode=dis_buf0;/P1口顯示口顯示 segcode=tablesegcode; segcode=tablesegcode; P1=segcode; P1=segcode; segcode=dis_buf1;/P3 segcode=dis_buf1;/P3口顯示口顯示 segcode=tablesegcode; segcode=tablesegcode; P3=segcode; P3=segcode; void main(void)vo

15、id main(void)/主函數(shù)主函數(shù) dis_buf0=0;dis_buf0=0; dis_buf1=1; dis_buf1=1;display( );display( ); / /調(diào)用顯示函數(shù)調(diào)用顯示函數(shù)while(1);while(1); 示例中的顯示函數(shù)示例中的顯示函數(shù)display( )display( )可以再簡(jiǎn)可以再簡(jiǎn)單一些,如下面程序段:?jiǎn)我恍缦旅娉绦蚨危?void display(void)void display(void) P1=tabledis_buf0;P1=tabledis_buf0; /P0 /P0口顯示口顯示 P3=tabledis_buf1; P3=ta

16、bledis_buf1; /P3 /P3口顯示口顯示 修改:修改: (1 1)顯示)顯示“1212”。 (2 2)輪流顯示)輪流顯示 “1212”、“- - -”和和“ABAB”。 延時(shí)時(shí)間采用軟件延時(shí)。延時(shí)時(shí)間采用軟件延時(shí)。 (3 3)計(jì)數(shù)器:)計(jì)數(shù)器:1s1s顯示器加顯示器加1 1。4.84.8段段LEDLED動(dòng)態(tài)顯示技術(shù)動(dòng)態(tài)顯示技術(shù) 段口、位口段口、位口 (余輝、視覺暫留)(余輝、視覺暫留)【例【例4-64-6】利用利用5151單片機(jī)的并行口作為動(dòng)單片機(jī)的并行口作為動(dòng)態(tài)顯示的段口與位口的示例。態(tài)顯示的段口與位口的示例。4.3 4.3 輸入操作輸入操作 作為作為5151單片機(jī)片內(nèi)并行單片機(jī)

17、片內(nèi)并行I/OI/O口輸入信號(hào)口輸入信號(hào),是屬于數(shù)字信號(hào)的,是屬于數(shù)字信號(hào)的“高、低電平高、低電平”或或脈沖信號(hào)的脈沖信號(hào)的“上升沿、下降沿上升沿、下降沿”兩大類兩大類,這兩類信號(hào)可以通過,這兩類信號(hào)可以通過: “閘刀閘刀型型開關(guān)開關(guān)”、“按鈕按鈕型型開關(guān)開關(guān)”兩類兩類開關(guān)來模擬。開關(guān)來模擬。 4.3.1 4.3.1 閘刀型輸入信號(hào)閘刀型輸入信號(hào) 4.3.2 4.3.2 單個(gè)按鈕型開關(guān)輸入信號(hào)單個(gè)按鈕型開關(guān)輸入信號(hào) 4.3.3 4.3.3 多個(gè)按鈕型開關(guān)多個(gè)按鈕型開關(guān)鍵盤鍵盤 4.3.1 4.3.1 閘刀型輸入信號(hào)閘刀型輸入信號(hào)【例【例4-74-7】 閘刀型開關(guān)輸入信號(hào)例子。編閘刀型開關(guān)輸入信

18、號(hào)例子。編程實(shí)現(xiàn)相應(yīng)的開關(guān)閉合時(shí),相應(yīng)的燈亮程實(shí)現(xiàn)相應(yīng)的開關(guān)閉合時(shí),相應(yīng)的燈亮 #include sbit LED0=P10; sbit LED1=P11; sbit LED2=P12; sbit LED3=P13; sbit K0=P14; sbit K1=P15; sbit K2=P16; sbit K3=P17; void main( ) while(1) K0=1;K1=1;K2=1;K3=1; LED0=K0; LED1=K1; LED2=K2; LED3=K3; 思考:思考: 為什么在讀鍵狀態(tài)之前要先置為什么在讀鍵狀態(tài)之前要先置1 1? 修改:修改: (1 1)開關(guān)閉合時(shí)燈滅。)開

19、關(guān)閉合時(shí)燈滅。 (2 2)K0K0控制控制LED3LED3,K1K1控制控制LED2LED2,K2K2控控制制LED1LED1,K3K3控制控制LED0LED0。4.3.2 4.3.2 單個(gè)單個(gè)按鈕開關(guān)型按鈕開關(guān)型 輸入信號(hào)輸入信號(hào)【例【例4-84-8】按鈕開關(guān)。編程實(shí)現(xiàn)按鈕開關(guān)。編程實(shí)現(xiàn)S1S1按鈕按按鈕按一下,一下,4 4個(gè)燈一組亮、滅交替。個(gè)燈一組亮、滅交替?!纠纠?-94-9】開始是所有的燈都亮,按一下開始是所有的燈都亮,按一下S1S1,燈變?yōu)?,燈變?yōu)?00ms500ms閃爍,再按一下,變?yōu)殚W爍,再按一下,變?yōu)槿痢H?。分析:分析?相當(dāng)于相當(dāng)于S1S1為一個(gè)控制開關(guān),控制著等的為

20、一個(gè)控制開關(guān),控制著等的亮、滅閃爍亮、滅閃爍 注意和例題注意和例題4-84-8的不同。定義一個(gè)位單的不同。定義一個(gè)位單元,按鍵每動(dòng)作一次,該位單元取反:元,按鍵每動(dòng)作一次,該位單元取反:該單元為該單元為0 0時(shí),燈全亮,該單元為時(shí),燈全亮,該單元為1 1時(shí),時(shí),燈閃爍。燈閃爍。4.3.3 4.3.3 多個(gè)按鈕型開關(guān)輸入信號(hào)多個(gè)按鈕型開關(guān)輸入信號(hào)鍵盤鍵盤(獨(dú)立、矩陣)(獨(dú)立、矩陣) 1.1.鍵號(hào)、鍵值、鍵值表鍵號(hào)、鍵值、鍵值表 2.2.獨(dú)立式鍵盤接口技術(shù)獨(dú)立式鍵盤接口技術(shù)【例【例4-104-10】P1P1口作為獨(dú)立式按鍵接口示例口作為獨(dú)立式按鍵接口示例。編程顯示按鍵的鍵號(hào)編程顯示按鍵的鍵號(hào)0 0

21、7 7。 擴(kuò)展與修改:擴(kuò)展與修改: 兩個(gè)輸入按鍵(如兩個(gè)輸入按鍵(如P1.6P1.6、P1.7P1.7)一個(gè)為)一個(gè)為“+1+1”鍵,一個(gè)為鍵,一個(gè)為“-1-1”鍵,開始顯示鍵,開始顯示器顯示器顯示“5 5”,然后根據(jù)按鍵顯示后面,然后根據(jù)按鍵顯示后面的內(nèi)容。的內(nèi)容。2.2.矩陣鍵盤接口矩陣鍵盤接口 (1 1)硬件:)硬件: 行輸出口、行輸出口、 列輸入口列輸入口(2 2)軟件:)軟件: 判斷整個(gè)鍵盤是否有鍵按下判斷整個(gè)鍵盤是否有鍵按下 判斷被按鍵的具體位置判斷被按鍵的具體位置 計(jì)算被按鍵的鍵值,以確定要完成的功計(jì)算被按鍵的鍵值,以確定要完成的功能能?!纠纠?-114-11】P1P1口作為口作為4 44 4矩陣鍵盤接口示矩陣鍵盤接口示例例。編程顯示按鍵的號(hào)碼編程顯示按鍵的號(hào)碼0 0F。 當(dāng)按鍵的數(shù)量比較多時(shí),一種通用當(dāng)按鍵的數(shù)量比較多時(shí),一種通用的算法是:將行的信息轉(zhuǎn)變?yōu)樾刑?hào)(在的算法是:將行的信息轉(zhuǎn)變?yōu)樾刑?hào)(在0000000011111111之間),將列的信息轉(zhuǎn)變?yōu)橹g),將列的信息轉(zhuǎn)變?yōu)榱刑?hào)(在列號(hào)(在0000000011111111之間),這樣就可之間),這樣就可以將行號(hào)作為高以將行號(hào)作為高4 4位(或低位(或低4 4位),列號(hào)位),列號(hào)作為低作為低4 4位(或高位(或高4 4位),二者組成一個(gè)位),二者組成一個(gè)字節(jié)。字節(jié)。4.4 4.4 實(shí)驗(yàn)與設(shè)計(jì)實(shí)驗(yàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論