国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

51單片機(jī)中并行I/O口的使用

2013-08-06 02:14:46韓彩霞
電腦與電信 2013年4期
關(guān)鍵詞:上拉高電平C語(yǔ)言

韓彩霞

(江漢大學(xué)文理學(xué)院,湖北 武漢 430056)

1.8位并行I/O口P0口的使用

我們通過(guò)如下實(shí)例來(lái)說(shuō)明P0口使用中需要注意的問(wèn)題。

如:在51單片機(jī)的P 0.7上接開(kāi)關(guān),P2.3上接LED,開(kāi)關(guān)控制LED的點(diǎn)亮和熄滅(開(kāi)關(guān)閉合,LED點(diǎn)亮;開(kāi)關(guān)斷開(kāi),LED熄滅)。電路如圖1所示。主程序如下:

#include

sbit K1=P0^7;

sbit LED=P2^3;

voidmain(void)

{while(1)

{if(K1==0)

{LED=1; //燈亮

}

else{LED=0; //燈滅

}

}

}

圖1 開(kāi)關(guān)控制LED圖(不接上拉電阻)

把上述程序在KeilC軟件中進(jìn)行編譯沒(méi)有錯(cuò)誤后,生成HEX文件。然后進(jìn)行proteus軟件仿真。仿真結(jié)果如圖2所示。

圖2 開(kāi)關(guān)控制LED仿真圖(不接上拉電阻)

由圖2(a)可以看出,當(dāng)開(kāi)關(guān)斷開(kāi)時(shí)P0.7引腳電平為灰色顯示,表示是高阻抗?fàn)顟B(tài)(這里可以把它看作是低電平)。由圖2(b)可知:仿真開(kāi)始后(開(kāi)關(guān)從(a)圖變化到(b)圖的狀態(tài))無(wú)論開(kāi)關(guān)斷開(kāi)或閉合,LED的狀態(tài)都沒(méi)有變化,也就是說(shuō)開(kāi)關(guān)根本沒(méi)有控制LED的點(diǎn)亮或熄滅。

下面我們把圖1改成圖3的形式,即在P0.7引腳上外接一個(gè)上拉電阻R1,程序沒(méi)有變化,同樣進(jìn)行如上的proteus軟件仿真,仿真結(jié)果如圖3(a)、(b)所示。

圖3 開(kāi)關(guān)控制LED仿真圖(接上拉電阻)

由圖3(a)可以看出,當(dāng)開(kāi)關(guān)斷開(kāi)時(shí)P0.7引腳旁電平為紅色顯示,表示為高電平。由圖3(b)可知:仿真開(kāi)始后(開(kāi)關(guān)從(a)圖變化到(b)圖的狀態(tài))開(kāi)關(guān)斷開(kāi),LED熄滅;開(kāi)關(guān)閉合,LED點(diǎn)亮。實(shí)現(xiàn)了開(kāi)關(guān)閉合或斷開(kāi)控制LED點(diǎn)亮或熄滅。

出現(xiàn)上面的情況是由于51單片機(jī)P0口內(nèi)部結(jié)構(gòu)決定的。

因?yàn)?1單片機(jī)P0口內(nèi)部沒(méi)有上拉電阻,所以圖2(a)中P0.7為高阻抗?fàn)顟B(tài)(低電平),要使開(kāi)關(guān)斷開(kāi)P0.7呈現(xiàn)高電平,須外接上拉電阻,如圖3所示,這樣在P0口才能有真正的高電平輸出。

那么是不是使用P0口時(shí)都需要外接上拉電阻呢?通過(guò)以下分析來(lái)說(shuō)明這個(gè)問(wèn)題。

我們把圖3改成如圖4所示的形式。同樣進(jìn)行proteus軟件仿真,仿真結(jié)果如圖4所示。

圖4 開(kāi)關(guān)控制LED 仿真圖

由圖4(a)和(b)可以看出,無(wú)論開(kāi)關(guān)斷開(kāi)還是閉合,LED的狀態(tài)始終沒(méi)有。這是因?yàn)殚_(kāi)關(guān)斷開(kāi)或閉合引腳P0.7始終是高電平。我們把圖4中P0.7口上接的電阻去掉,得到圖5的形式。同樣進(jìn)行proteus軟件仿真,仿真結(jié)果如圖5所示。

圖5 開(kāi)關(guān)控制LED仿真圖

由圖5我們可以看出,開(kāi)關(guān)斷開(kāi)或閉合可以控制LED熄滅或點(diǎn)亮。

從以上分析可知:當(dāng)使用P0口時(shí),如需要在P0口上出現(xiàn)高電平時(shí)(如圖3所示),才需要在P0口上外接上拉電阻。

這一點(diǎn)在使用51單片機(jī)P0口時(shí)一定要注意的,否則就會(huì)出現(xiàn)問(wèn)題。

但是,對(duì)于51單片機(jī)的其它3個(gè)I/O口來(lái)說(shuō),因?yàn)樗鼈冏陨韮?nèi)部有上拉電阻,所以就不存在以上的情況。

2.并行I/O口P2口作為輸入/輸出口的使用

2.1 并行I/O口P2或作為輸入口使用或作為輸出口使用

我們通過(guò)以下實(shí)例來(lái)分析問(wèn)題。如圖6所示,在P2口的P2.0和2.1分別接有開(kāi)關(guān)K1和K2,在P3口的P3.0和P3.1分別接有LED1和LED2,實(shí)現(xiàn)把開(kāi)關(guān)K1、K2的四種狀態(tài)(K1、K2全閉合;K1閉合、K2斷開(kāi);K1斷開(kāi)、K2閉合;K1、K2全斷開(kāi))反應(yīng)到LED1和LED2上。(即開(kāi)關(guān)閉合對(duì)應(yīng)的LED點(diǎn)亮,開(kāi)關(guān)斷開(kāi)對(duì)應(yīng)的LED熄滅)程序如下所示。

#include

voidmain(void)

{char a;

a=P2; //把開(kāi)關(guān)狀態(tài)讀入,送給變量a(P2口作為輸入口使用)

a=a&03; //保留開(kāi)關(guān)狀態(tài)(P2.0和P2.1)

P3=~a;//開(kāi)關(guān)狀態(tài)取反后送給LED(P3口作為輸出口使用)}

圖6 兩個(gè)開(kāi)關(guān)控制兩個(gè)LED仿真圖

由圖6(在此只給出開(kāi)關(guān)K1、K2的兩種狀態(tài))可知:開(kāi)關(guān)K1、K2的閉合斷開(kāi)可以控制LED1、LED2的點(diǎn)亮和熄滅。

2.2 并行I/O口P2既作輸入口又作輸出口使用

把圖6改成圖7的形式,在P2口的P2.0和2.1分別接有開(kāi)關(guān)K1和K2,在P2口的P2.2和P2.3分別接有LED1和LED2,同樣完成上述的功能,即把開(kāi)關(guān)K1、K2的四種狀態(tài)反應(yīng)到LED1和LED2上。同時(shí),程序改成如下的形式。

#include

voidmain(void)

{char a;

a=P2; //把開(kāi)關(guān)狀態(tài)讀入,送給變量a(P2口作為輸入口使用)

a=a&03; //保留開(kāi)關(guān)狀態(tài)(P2.0和P2.1)

P2=~a<<2;//開(kāi)關(guān)狀態(tài)取反,左移兩位送給LED(P2口作為輸出口使用)

}

圖7 兩個(gè)開(kāi)關(guān)控制兩個(gè)LED仿真圖

由圖7(在此只給出開(kāi)關(guān)K1、K2的兩種狀態(tài))可知:開(kāi)關(guān)K1、K2的閉合斷開(kāi)不能控制LED1、LED2的點(diǎn)亮和熄滅。

出現(xiàn)以上情況是由于在圖7中P2口既作為輸入口使用又作為輸出口使用時(shí),由于P2口內(nèi)部結(jié)構(gòu)決定,需要先給P2口輸入“1”,然后才能正確讀入開(kāi)關(guān)的狀態(tài)。我們把上述程序修改成如下形式:

#include

voidmain(void)

{char a;

P2=0xff;//P2口作為輸入口使用時(shí),先寫(xiě)1

a=P2; //把開(kāi)關(guān)狀態(tài)讀入,送給變量a(P2口作為輸入口使用)

a=a&03;//保留開(kāi)關(guān)狀態(tài)(P2.0和P2.1)

P2=~a<<2;//開(kāi)關(guān)狀態(tài)取反,左移兩位送給LED(P2口作

為輸出口使用)

}

即在程序開(kāi)始增加語(yǔ)句:P2=0xff;(P2口作為輸入口使用時(shí),先輸入1),同樣進(jìn)行仿真后就可以完成上述的要求。

由以上分析可知:當(dāng)并行I/O口P2口同時(shí)作為輸入/輸出口使用時(shí),需要先給其寫(xiě)“1”,但是如只作為輸入或輸出口使用時(shí),不需要這樣的處理。

這里只分析了51單片機(jī)P2口的情況,對(duì)于51單片機(jī)其它的I/O口是同樣的,當(dāng)同時(shí)作為輸入/輸出口時(shí),需要先給其寫(xiě)“1”。

[1]彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)例100例[M].北京:電子工業(yè)出版社,2011.

[2]姜志海.單片機(jī)的C語(yǔ)言程序設(shè)計(jì)及應(yīng)用[M].北京:電子工業(yè)出版社,2011.

[3]梅麗鳳.單片機(jī)原理及接口技術(shù)(修訂本)[M].北京:清華大學(xué)出版社,2011.

[4]鄒益民.單片機(jī)C語(yǔ)言教程[M].北京:中國(guó)石化出版社,2011.

[5]張蕊.C語(yǔ)言程序設(shè)計(jì)教程.武漢:華中科技大學(xué)出版社,2009.

猜你喜歡
上拉高電平C語(yǔ)言
拄著一束光
一種基于FPGA的PWM防錯(cuò)輸出控制電路
高效PDT 終端定位數(shù)據(jù)上報(bào)方法
基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
某車(chē)型霧燈偶發(fā)點(diǎn)亮故障分析與設(shè)計(jì)優(yōu)化
TS-03C全固態(tài)PDM中波發(fā)射機(jī)開(kāi)關(guān)機(jī)控制電路原理及故障分析
科技傳播(2019年15期)2019-08-22 08:07:44
基于C語(yǔ)言的計(jì)算機(jī)軟件編程
電子制作(2018年16期)2018-09-26 03:27:08
在老師的葬禮上拉小提琴的男孩
北廣人物(2017年29期)2017-08-01 00:16:41
DM 50KW中波廣播發(fā)射機(jī)欠推動(dòng)故障分析
高職高專院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
昌平区| 温宿县| 睢宁县| 定远县| 景宁| 隆德县| 东兰县| 齐齐哈尔市| 峨山| 沧州市| 上思县| 丰镇市| 沭阳县| 东源县| 富民县| 白河县| 棋牌| 香港| 阜康市| 石棉县| 梁山县| 含山县| 靖宇县| 隆德县| 梁平县| 齐齐哈尔市| 麦盖提县| 惠来县| 抚远县| 肃宁县| 焉耆| 长顺县| 荥阳市| 铜川市| 莱阳市| 汽车| 宣恩县| 盐边县| 青铜峡市| 镇原县| 湟中县|