新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 電子電路設(shè)計(jì)之C51單片機(jī)常見問題

電子電路設(shè)計(jì)之C51單片機(jī)常見問題

作者: 時(shí)間:2011-11-24 來源:網(wǎng)絡(luò) 收藏

3:51單片機(jī)的P0口特殊之處

  許多新手都碰到這個(gè)問題,其實(shí)很簡單,這涉及到芯片的io腳是怎么做出來的。這對硬件工程師來說十分重要。TTL的io腳模型:

  

電子電路設(shè)計(jì)之C51單片機(jī)常見問題

  P1,P2,P3口都可以理解成左圖,注意vcc下面有個(gè)電阻,因此可以理解成:引腳輸出1的能力弱。地那邊沒有電阻,可以理解成引腳吸入電流能力強(qiáng)。而P0口,可以理解成右圖。這就是集電極開路輸出,也叫OC輸出??梢钥闯?,當(dāng)CTR=1時(shí),三極管導(dǎo)通,引腳被接地;當(dāng)ctr=0時(shí),三極管截止,引腳浮空,也叫三態(tài)。這個(gè)端口這么做的目的是考慮P0口肩負(fù)讀寫數(shù)據(jù)和地址復(fù)用,這個(gè)關(guān)系要仔細(xì)看懂cpu時(shí)序圖。因此,P0口要加合適的上拉電阻,絕不要加下拉電阻。上拉電阻的選擇要看外部負(fù)載情況。

  4:P1-3口如何輸入輸出

  從上節(jié)的左圖可以看出。做輸出時(shí),ctr=1則輸出強(qiáng)信號0,ctr=0則輸出弱信號1。當(dāng)io腳做輸入時(shí),應(yīng)使ctr=0,這樣三極管截止。外部信號如果是1,則上拉電阻加強(qiáng)了這個(gè)1,單片機(jī)就會(huì)讀到1。當(dāng)外部信號為0時(shí),注意,必須將上拉電阻的上拉作用全部抵消,才能在引腳上得到0。

  因此,對于程序來說,把io腳置1就處于接收狀態(tài),當(dāng)然也是輸出1狀態(tài)。程序置io口為1,讀取的信號是不是1就依靠外部電路了,如果外部電路沒有“吃掉”上拉電阻的電流,則讀取得到1,反之,雖然程序置io腳為1,但是讀取得到的就是0。

  因此,如果用io腳的高電平驅(qū)動(dòng)外部電路時(shí),要小心外部電路把這個(gè)1“吃掉”從而輸出不了1。而作為輸入時(shí),為0電平的外設(shè)必須足夠有能力將io腳拉低。所以,用io腳直接點(diǎn)亮led的時(shí)候,最好用反邏輯,就是輸出0,讓led亮。這樣能保證驅(qū)動(dòng)能力。就是io腳接led的負(fù)端,led的正端過電阻接vcc。

  因此,io腳輸出1時(shí),外部電路將它強(qiáng)行接地是沒有關(guān)系的,而io腳輸出0的時(shí)候,外部電路強(qiáng)行接電源就會(huì)把io腳損壞。所以,程序加電之后,一般把所有io口都寫成1:MOV P0,0FFH。

  P3口引腳復(fù)用,必須引腳都處于輸出1狀態(tài)。例如,把RXD腳輸出0,則它什么數(shù)據(jù)都讀不進(jìn)來了,筆者早期曾調(diào)試一整天才發(fā)現(xiàn)串口收不到數(shù)據(jù)是沒有把RXD置1的原因,把時(shí)間都浪費(fèi)在外圍了,當(dāng)時(shí)很是汗顏。

  5:有關(guān)晶振

  單片機(jī)的晶振在內(nèi)部可以簡化成一個(gè)反向器。當(dāng)晶振輸入腳XI剛過坎壓、被認(rèn)為是1的一瞬間,輸出腳XO就輸出0,這個(gè)0會(huì)帶動(dòng)晶振使XI電壓下降,當(dāng)降低到坎壓被認(rèn)為是0的一瞬間,輸出腳XO就輸出1。這樣周而復(fù)始。

  因此,用示波器觀察正常工作的晶振輸入腳XI時(shí),得到的是一個(gè)不高不低的近似水平線。而XO則是幅值很大的正弦波。測量晶振輸入腳XI時(shí),示波器表筆要打在X10檔上,否則,表筆就能把晶振弄停。

  因此布線時(shí),晶振輸入腳XI要盡量靠近晶振,而XO腳可稍遠(yuǎn)。同時(shí)XO具有一定的驅(qū)動(dòng)能力,某些芯片可以用它驅(qū)動(dòng)其它時(shí)序電路(不推薦這么做,因?yàn)橄到y(tǒng)可靠性下降)。

  寫到這里,才發(fā)覺51單片機(jī)的問題太多了,這篇文字簡直就是滄海一粟。以后再補(bǔ)充吧,另行成文。


上一頁 1 2 下一頁

關(guān)鍵詞: 電子電路 C51單片機(jī)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉