1. IO介紹
51單片機總的管腳有40個,但是其中能夠作為IO使用的只有32個,每8個分為一組,共4組。單片機要想實現(xiàn)預定功能必然要使用到各種IO口,來完成各項功能,包括點亮LED,連接按鍵、鍵盤,各種I2C、SPI設備等。51單片機,4組IO的結構略有不同,使用時應當注意。
P0屬于雙向IO,內部沒有上拉電阻,作為輸出時,最好外加上拉電阻。
P1、P2、P3屬于準雙向IO?!皽省斌w現(xiàn)在輸入時,必須先輸出“1”,才能正確讀到IO的輸入情況。
P3口的各個IO均有復用功能:
2. IO編程
對于IO的操作無非是讀輸入和寫輸出,通過讀寫相應的寄存器(P0、P1、P2、P3)就可以實現(xiàn)。
2.1 字節(jié)尋址
字節(jié)尋址可以一次把8個IO全部訪問了,使用時把Px(x=0、1、2或3)當作無符號字符變量(unsigned char)即可。
2.2 位尋址
51單片機有一類特殊的變量——位變量(bit),可以用來保存“0”或者“1”。
為了讀寫某個IO,可以定義特殊位變量(sbit)指定某一個IO,再進行讀寫
#include "reg52.h"
sbit LED=P1^0;
bit temp;
void main()
{
temp=LED;//確保temp為位變量(bit)
LED=1;
LED=0;
LED=temp;
}
3.常用器件的驅動電路
3.1 LED
單片機能夠提供的電流有限,一般采用這種方式驅動LED:
當P2^0=1是,LED兩端電壓差位0V,LED不發(fā)光。 當P2^0=1是,LED兩端存在電壓差,LED發(fā)光,串聯(lián)電阻的作用在于限流,阻值根據(jù)電源電壓和LED工作電流決定
3.2 數(shù)碼管。
數(shù)碼管本質是發(fā)光二極管按照一定位置排列的顯示數(shù)字的器件,可分為共陰極和共陽極兩類。按照數(shù)量可分為一位,兩位,四位甚至八位。
一位七段共陽極數(shù)碼管:
有的數(shù)碼管有八段,右下角會增加一個小數(shù)點。
當驅動兩位8段數(shù)碼管時,按上面的方式會占用16個IO,這種方式成為靜態(tài)顯示。靜態(tài)顯示可以控制每一個數(shù)碼管,但是會極大的占用IO資源,當數(shù)碼管數(shù)量較多時,這種方式明顯不適合。
與靜態(tài)相對應的是動態(tài)顯示。每一個數(shù)碼管顯示一段時間,然后在切換到下一個。根據(jù)人眼的視覺暫留效應,只要刷新的頻率超過24Hz,在人眼中就是連續(xù)的。把每一位數(shù)碼管的a,b,c,d,e,f,g,dp接在同一組IO上,再用另一組IO來控制具體顯示哪一個數(shù)碼管(公共端)。
下面四位共陰極數(shù)碼管示例,公共端用三極管做開關:
數(shù)碼管顯示段碼如下
unsigned char code DUMA[]={ //共陰極顯示段碼,共陽極取反即可
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //0-9
0x77,0x7c,0x39,0x5e,0x79,0x71 //a-f
};
3.3 按鍵
可以用這種最簡單的方式連接在IO上,為了保證能正確讀到輸入,先輸出“1”。如下圖,當按鍵按下,P1^0=0, 當按鍵松開,P1^0=1。
但實際上,由于開關接觸瞬間,電壓會產(chǎn)生不穩(wěn)定的跳變,稱為抖動,如下圖:
抖動的時間小于10ms,因此當我們檢測到電平變化是,延時10ms即可。
3.4 鍵盤
通過把按鍵組成4x4矩陣,可以使用8個IO連接16個按鍵。當按鍵數(shù)量較多時,采用這種方式可以大大節(jié)約IO資源。
下面代碼是這種矩陣鍵盤的驅動,delay10ms()根據(jù)具體的情況定義。
#define key_port P2
//檢測按鍵的返回值,可以檢測多個按鍵,返回一個16位的unsigned int型變量,某一個按鍵按下,相應位置“1”
unsigned int KeyBoard_scan(void)
{
unsigned int ms=0,value=0;
key_port=0x0f;
while(key_port!=0x0f)
{
delay10ms();
if(key_port!=0x0f)
{
key_port=0x7f;
value |= (key_port^0x7f);
key_port=0xbf;
value |= (key_port^0xbf)<<4;
key_port=0xdf;
value |= (key_port^0xdf)<<8;
key_port=0xef;
value |= (key_port^0xef)<<12;
}
key_port=0x0f;
}
return value;
}
//檢測單個按鍵,value參數(shù)會寫回相應鍵值0-15,返回值表示按鍵按下的時間,ms計
unsigned int KeyBoard(unsigned char *value)
{
unsigned int ms=0;
key_port=0x0f;
if(key_port!=0x0f)
{
delay10ms();
if(key_port!=0x0f)
{
ms=10;
key_port=0X0f;
switch(key_port)
{
case(0X07): *value=0;break;
case(0X0b): *value=1;break;
case(0X0d): *value=2;break;
case(0X0e): *value=3;break;
default: *value=0xff;
}
key_port=0Xf0;
switch(key_port)
{
case(0X70): *value=*value;break;
case(0Xb0): *value=*value+4;break;
case(0Xd0): *value=*value+8;break;
case(0Xe0): *value=*value+12;break;
default: *value=0xff;
}
while((key_port!=0xf0))
{
delay_ms_keyboard(1);
ms++;
}
return ms;
}
else *value=0xff;
}
else *value=0xff;
return 0;
}
3.5 蜂鳴器
有源蜂鳴器用低電平就可以觸發(fā),發(fā)出的聲音頻率不會發(fā)生變化。
無源蜂鳴器需要用脈沖觸發(fā),脈沖的頻率決定了聲音的頻率。
無源蜂鳴器的驅動電路如下:
上一篇:51單片機之最簡系統(tǒng)
下一篇:簡單計時器的51單片機實現(xiàn)
推薦閱讀
史海拾趣
在電子行業(yè)中,F(xiàn)INDER公司(即Finder芬德)的發(fā)展歷程充滿了創(chuàng)新與進取的故事。以下是五個關于FINDER公司發(fā)展起來的相關故事,每個故事均基于事實進行描述:
1. 創(chuàng)立與初步發(fā)展
故事背景:FINDER公司由Piero Giordanino于1954年創(chuàng)立,當時他憑借對電子技術的深刻理解和遠見卓識,決定投身于繼電器制造領域。在成立初期,F(xiàn)INDER專注于研發(fā)和生產(chǎn)高質量的繼電器產(chǎn)品,以滿足當時市場對電子元器件日益增長的需求。
關鍵事實:Giordanino在1949年就已經(jīng)獲得了第一步繼電器的專利,這為他后來創(chuàng)立FINDER公司奠定了堅實的基礎。隨著技術的不斷積累和市場的逐步開拓,F(xiàn)INDER逐漸在繼電器領域嶄露頭角。
2. 產(chǎn)品多樣化與技術創(chuàng)新
故事背景:在成立后的幾十年里,F(xiàn)INDER公司不斷推出新產(chǎn)品,實現(xiàn)了產(chǎn)品線的多樣化。從最初的單一繼電器產(chǎn)品,逐步擴展到包括步進繼電器、光敏繼電器、工業(yè)繼電器、微型和超薄繼電器、功率繼電器、定時器繼電器插座和配件等多個領域。
關鍵事實:截至當前,F(xiàn)INDER已生產(chǎn)超過14,500種不同類型的機電和電子設備,產(chǎn)品廣泛應用于工業(yè)自動化、建筑、家庭和辦公室等多個領域。同時,F(xiàn)INDER還致力于技術創(chuàng)新,不斷研發(fā)出具有更高性能、更可靠性的新產(chǎn)品。
3. 全球化布局與市場拓展
故事背景:隨著公司規(guī)模的擴大和產(chǎn)品線的豐富,F(xiàn)INDER開始將目光投向全球市場。通過設立分支機構、建立銷售網(wǎng)絡以及與國際知名企業(yè)的合作,F(xiàn)INDER逐步實現(xiàn)了全球化布局。
關鍵事實:目前,F(xiàn)INDER已經(jīng)在全球范圍內設立了多個分支機構和銷售網(wǎng)絡,覆蓋歐洲、美洲、亞洲和非洲等地區(qū)。同時,F(xiàn)INDER還與德國SIEMENS、日本OMRON等世界知名電子企業(yè)并列為全球三大繼電器制造商之一,在歐洲市場享有極高的盛譽。
4. 質量控制與環(huán)保生產(chǎn)
故事背景:在快速發(fā)展的同時,F(xiàn)INDER始終將產(chǎn)品質量放在首位。通過嚴格的質量控制體系和環(huán)保生產(chǎn)標準,F(xiàn)INDER確保了產(chǎn)品的卓越品質和可持續(xù)發(fā)展。
關鍵事實:FINDER的每個產(chǎn)品在出廠前都經(jīng)過兩個徹底的測試周期以確保最高水平的質量。此外,F(xiàn)INDER還尊重國家和歐盟的環(huán)保規(guī)范,確保其產(chǎn)品符合現(xiàn)行立法要求。在生產(chǎn)過程中采用環(huán)保材料和技術減少對環(huán)境的影響。
5. 行業(yè)認可與榮譽
故事背景:由于卓越的產(chǎn)品質量和持續(xù)的技術創(chuàng)新,F(xiàn)INDER在電子行業(yè)中獲得了廣泛的認可和贊譽。公司不僅贏得了眾多客戶的信賴和支持還獲得了多項行業(yè)榮譽和認證。
關鍵事實:FINDER的產(chǎn)品已經(jīng)通過了三十多個國家四十多個產(chǎn)品安全認證這充分證明了其在產(chǎn)品質量和安全方面的卓越表現(xiàn)。同時FINDER還被評為全球擁有最多質量認證的繼電器制造商之一這進一步鞏固了其在行業(yè)中的領先地位。
這些故事共同展現(xiàn)了FINDER公司在電子行業(yè)中的發(fā)展歷程和成就。從創(chuàng)立初期的艱難起步到如今的全球知名企業(yè)FINDER憑借其卓越的產(chǎn)品質量、持續(xù)的技術創(chuàng)新以及全球化布局贏得了廣泛的認可和贊譽。
隨著市場競爭的加劇,Brilliance公司意識到只有不斷創(chuàng)新才能在行業(yè)中立足。于是,公司加大了對研發(fā)的投入,引進了一批高端人才和先進設備。經(jīng)過無數(shù)次的試驗和改進,Brilliance成功研發(fā)出了一項具有顛覆性的技術,并將其應用于新產(chǎn)品中。這款新產(chǎn)品不僅性能卓越,而且具有極高的性價比,迅速占領了市場份額。
Digitron公司始終將創(chuàng)新作為企業(yè)發(fā)展的核心驅動力。公司投入大量資金用于研發(fā)新技術和新產(chǎn)品,不斷提升產(chǎn)品的性能和功能。XXXX年,Digitron公司成功研發(fā)出一款具有無線傳輸功能的數(shù)據(jù)記錄器,用戶可以通過手機或電腦實時查看和監(jiān)控數(shù)據(jù)。這一創(chuàng)新產(chǎn)品受到了市場的熱烈歡迎,為Digitron公司帶來了顯著的增長。
Digitron公司成立于XXXX年,由一群熱衷于電子技術的工程師和科學家創(chuàng)立。在成立初期,公司專注于開發(fā)高精度、高可靠性的溫度數(shù)據(jù)記錄器。這些設備在醫(yī)藥、冷鏈物流等領域得到了廣泛應用,為Digitron公司贏得了良好的聲譽。隨著技術的不斷進步,Digitron公司逐漸擴大了產(chǎn)品線,推出了更多適用于不同行業(yè)的數(shù)據(jù)記錄器和傳感器。
為了進一步擴大市場份額,Digitron公司積極尋求與行業(yè)內外的企業(yè)建立戰(zhàn)略合作關系。XXXX年,Digitron公司與一家全球知名的物流公司達成合作協(xié)議,為其提供定制化的溫度監(jiān)控解決方案。這一合作不僅為Digitron公司帶來了可觀的收入,還提高了其在物流行業(yè)的知名度。此外,Digitron公司還積極參加國際展會和論壇,與全球客戶建立聯(lián)系,拓展國際市場。
Delta公司始終將技術創(chuàng)新作為推動企業(yè)發(fā)展的核心動力。公司不斷投入巨資進行技術研發(fā)和創(chuàng)新,積極引進先進技術和設備,培養(yǎng)高素質的研發(fā)人才。這些努力使Delta在電源管理、能源管理、智能綠生活等領域取得了多項技術突破和專利成果,不僅提升了公司的核心競爭力,還引領了整個行業(yè)的發(fā)展方向。
初學AVR,請教AVR studio gcc 優(yōu)化問題 我使用-Os優(yōu)化選項,發(fā)現(xiàn)編譯后程序沒法用。查看匯編代碼,發(fā)現(xiàn)delay函數(shù)被優(yōu)化沒了。生成的匯編代碼看起來很奇怪 如果不優(yōu)化程序是沒問題的。 請教是怎么回事?我該怎么辦? 下面是我的代碼: #include #define uchar unsigned char #defin ...… 查看全部問答∨ |
|
Wince開發(fā)的應用程序的運行會死掉?先不管是什么原因引起的.死掉提示了線程 進程ID等信息,有沒有辦法確定錯誤的原因在哪里?高手指點下,學習下子?!? 查看全部問答∨ |
在pc中可以用RegisterHotKey,這個函數(shù)在ppc中也有,但是效果和pc中的好像不一樣。 不能實現(xiàn)在其他軟件中也能偵聽到這個熱鍵。 在pc中任何界面下都可以偵聽到用RegisterHotKey注冊的熱鍵。 但是在ppc中用RegisterHotKey注冊的熱鍵,比如點一下音 ...… 查看全部問答∨ |
2410的板子320X240的分辨率,是16bpp的,現(xiàn)在板子顯示顏色有問題,背景色是橘紅色,打開東西之后是黑色,請問是什么問題?改如何修改??… 查看全部問答∨ |
windows的或者linux上做過開發(fā)的都行 我們想買一套來開發(fā)BLDC電機控制程序。但是不清楚具體是否好使,現(xiàn)在評估軟件很不好使,編譯也因為license通不過 據(jù)說這家公司只有十幾個人,寫信去問想買軟件也沒人理我 昏倒啊… 查看全部問答∨ |
你想搜索那些Google搜不到的東西嗎?比如社交網(wǎng)站,以及那些存在云端、有密碼保護的個人信息。一名19歲的以色列高中生畢業(yè)生放棄了兵役,在 Y Combinator里呆了三個月,嘗試了幾個項目,并在最后的48小時內做出一個產(chǎn)品,最后受到了投資者的青睞。1 ...… 查看全部問答∨ |
|
測控系統(tǒng)常常需要處理所采集到的各種數(shù)字量信號。通常測控系統(tǒng)采用通用MCU完成系統(tǒng)任務。但當系統(tǒng)中采集信號量較多時,僅依靠MCU則難以完成系統(tǒng)任務。針對這一問題,提出一種基于FPGA技術的多路數(shù)字量采集模塊。利用FPGA的I/O端口數(shù)多且可編程設置 ...… 查看全部問答∨ |
話說我也是一個電子專業(yè)的學生,從動手焊接、調試板子到現(xiàn)在也有好幾年了,從最初的51單片機,下載器,avr單片機,到后來的ARM7,ARM,cortex M0,cortexM都有涉及。幾年過后養(yǎng)成了一個習慣,上網(wǎng)就會逛逛電子論壇,常常 ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 生成式 AI 重塑自動駕駛仿真:4D 場景生成技術的突破與實踐
- 51Sim 3D 高斯混合仿真引擎 | 申報2025第七屆金輯獎最佳技術實踐應用獎
- 智協(xié)慧同VDM(Vehicle Diagnosis Management System)車輛智能診斷系統(tǒng) | 申報2025第七屆金輯獎最佳技術實踐應用獎
- 麻省理工學院發(fā)明新型光子AI芯片 將使電動汽車的續(xù)航里程增加50英里
- 受肌肉啟發(fā) 浦項科技大學發(fā)明片狀機器人以在最狹窄的空間中導航
- 我們?yōu)槭裁聪矚g看機器人互毆?
- 浩亭與阿爾斯通通力合作,共筑綠色鐵路交通的未來
- 智能樓宇邊緣設備的平臺集成發(fā)展方向——更智能、更快速、更互聯(lián)
- 全新MG4,真能改寫10萬級純電市場競爭格局?
- 固態(tài)電池或成主流,2028年成關鍵成敗之年