歡迎您光臨本站 登入註冊首頁

概述

C51單片機是我們生活中最常用的系列,MCS-51系列單片機有4個并行口(P0,P1,P2,P3口),但對一個稍微複雜的應用系統來說,真正可供用戶使用的并行口,只有P1口可用,況且常常因擴展I2C和S……

C51單片機是我們生活中最常用的系列,MCS-51系列單片機有4個并行口(P0,P1,P2,P3口),但對一個稍微複雜的應用系統來說,真正可供用戶使用的并行口,只有P1口可用,況且常常因擴展I2C和SPI的器件需佔用某些P1口,迫使用戶不得不擴展并行口以滿足實際的需要。習慣上,常用的并行口介面晶元有8255、8155,這兩種晶元功能比較齊全,可以使用在相對比較複雜的系統中,但如是對一般的系統而言,這些功能往往閑置不用。那麼就可以選用一些本來閑置不用的口線作為選通信號來進行并行口的擴展,這樣就能充分利用單片機有限的I/O資源,在本設計中是將P1口擴展成一個或幾個8位并行口,在每一個八位口上接入8個發光二極體做為輸出,二極體是做開關量來使用的,在這裡設計了跑馬燈和流水燈程序,做到對開關量的開斷控制;配合開關量的控制筆者設計了一個共陽LED數碼管,用來顯示當前發光二極體發亮的序號,做到更加直觀的雙重控制效果,然後再將P0口通過D/A轉換器和一放大器輸出一個模擬信號,其結果可以通過示波器看出。這樣整個系統即有了數字信號輸出和模擬信號輸出,也有數碼管顯示功能,實用性能大提高了。
2 基於89C51的系統硬體設計
2.1 并行口的擴展的電路設計
眾所周知,C51系列的單片機都有四個I/O口(P0、P1、P2、P3),那麼AT89C51也不例外,但我們通常僅僅使用P1口作為并行口,而令其餘口(P2、P3)處於閑置狀態,所以這次設計,我們就是使用閑置不用的P3口做為選能信號線來將P1口進行并行口擴展。
(1) 種方式的并行口擴展優點
連線簡單;
不佔用存儲器空間;
(2) 編程也方便靈活。但也有很大的缺點
并行口擴展能力有限,(如使用74LS573(74LS373)且不進行驅動處理,則最多可擴展4個同樣類型的并行輸出埠,當然還需要與之對應的四個選通信號。)
如擴展較多,選通信號佔用并行口位數太多,例如欲擴展8個并行輸出埠,則需要8個選能信號,此時,僅選能信號就佔用了一個8位并行口,這對在I/O埠線有限的單片機系統中,如此浪費資源的現象是不能容忍的。在本次的設計中,採用晶元74HC573(帶三態輸出的八進位透明D型鎖存器)對P1口進行了一個8位并行口的擴展,選通信號選用P3口的P3.3引腳。原理圖如圖1所示:

圖1 PI口擴展電路
2.2 擬信號輸出的電路設計
模擬信號的輸出需要用到D/A轉換器,這裡我使用最常用的8位的D/A轉換器DAC0832來轉換數字電壓信號。因DAC0832是并行D/A轉換集成電路,其輸出為電流型,在使用時,必須額外增加一個運算放大器,才能得到電壓信號,在本次電路中使用了1個LM741放大器來放大信號輸出,LM741是一個普通的單操作的放大器,具有輸入電壓範圍大,短路電壓保護,高增益和不需頻率補償等優點。DAC0832的片選埠與單片機的P2.2相連,XFER和WR2接地,使之一直處於使能狀態,即輸入數據寄存器中的數字信號可直接轉換為模擬信號。D/A轉換電路的輸出是一個周期的正弦波,通過外接示波器可以清淅的看到。另外模擬信號的輸出引在一個外接端子上,可以與其它系統相連接,做到通用性的效果。D/A轉換原理圖如圖2所示:

圖2 D/A轉換
2.3 靜態數碼管顯示的電路設計
數碼管顯示器是各種儀器設備所不可缺少的重要組成部分,是儀器設備與人對話的一種重要形式,它告訴人們機器的運行狀態、數據處理結果、提示操作人員下一步要進行的操作等。按照顯示方法的不同,可分為靜態顯示和動態顯示兩種,這裡我們所設計的電路顯示是屬於靜態顯示那種,是兩位靜態數碼管顯示,其主要的功能是顯示當前發光LED的序號,比如如果當前是L1燈在亮的話,數碼管將顯示11,是L2燈亮,數碼管顯示22字樣等。電路的設計使用2個8位的移位寄存器(74HC164),和兩個八段的LED數碼管(共陽的)加上2個8×330Ω的排阻構成。靜態數碼管顯示的優點在於,編寫程序相對比較簡單,一旦將欲顯示的數據發送出去,只要當前顯示的數據沒有變化,就無須理睬它。不足之處在於,如果顯示的位數太多,硬體的開銷和電源的功耗問題將會很嚴重(比如這裡,只需顯示兩位,就需要用到兩塊74HC164和2個排阻)。電路原理圖如圖3所示:

圖3 顯示電路
2.4 電源部分電路的設計
整個電路系統使用9V~12V的直流電源供電,故使用一個拔碼開關和一個二極體,以起保護作用,這裡拔碼開關只起到電源開關的作用。由於CPU電源為5V,所以使用L7805三端穩壓來供CPU電源,電源指示燈一個。電源部分電路圖如圖4所示:

圖4 電源電路
2.5 複位部分電路設計
本電路的複位電路是用一個複位晶元MAX706P來設計的,並帶有複位按鈕一個。這裡複位是低電平有效的,有手動複位按鈕,當程序跑飛或無響應時可以選用手動複位。複位信號來自於CPU的P22口。複位電路原理圖如圖5所示。

圖5 複位電路
3 系統軟體部分設計與應用
程序已經調試通過,整個程序實現的功能如下:
P1口的八位擴展,控制8個開關LED指示燈,程序實驗了對這8個指示燈的開關跑馬控制,實驗程序可以編寫從L1至L8的循環發亮,在每個發光二極體發光的同時,數碼管顯示當前發亮LED的序號,比如11、22、33等等。也可讓每個二極體閃爍,可以規疾閃爍時間為半秒鐘或更長,然後再在每一個LED指示燈閃爍的同時,讓LED數碼管顯示當前閃爍的指示燈的序號,比如,L1燈閃爍時,數碼管顯示11字樣,L2燈閃爍時,數碼管顯示22字樣等等。在數模轉換這一子函數的編寫上,是使用指針數組來寫的,DAC0832實現DA的轉換的晶元,實現的功能是輸出一正弦波模擬信號,當在端子口接一示波器時,示波器將輸出一正弦波圖形。主程序流程圖如(圖6)所示。以上所述是整個系統的功能,所有的程序都已經通過調試試驗,實驗證明是可行的。
4 結束語
整個系統的軟體已經完全通過調試,證明是切實可行的,整個系統的硬體設計是本著單片機系統設計的簡單化原則來設計,顯的簡煉有序,軟體編寫也非常簡單易懂。本系統設計比較適合於在小型系統中應用。

[admin via 研發互助社區 ] 一種C51單片機并行口擴展設計及應用已經有2684次圍觀

http://cocdig.com/docs/show-post-513.html