單片機系統(tǒng)擴展及應用_第1頁
單片機系統(tǒng)擴展及應用_第2頁
單片機系統(tǒng)擴展及應用_第3頁
單片機系統(tǒng)擴展及應用_第4頁
單片機系統(tǒng)擴展及應用_第5頁
已閱讀5頁,還剩225頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第四章 單片機系統(tǒng)擴展及應用本章內容:1.系統(tǒng)擴展的三種方式:最小系統(tǒng);總線擴展系統(tǒng);串行口擴展系統(tǒng)。2.總線擴展系統(tǒng)中的 MOVX 指令分析;3.常用的外圍模塊與單片機的接口及編程。2本 章 目 錄4.1 單片機的系統(tǒng)擴展4.1.1 外部程序存儲器ROM的擴展4.1.2 數(shù)據(jù)存儲器RAM的擴展4.1.3 使用串行口擴展I/O端口4.2 專用并行輸入、輸出接口芯片的擴展電路4.3 MCS-51與A/D轉換器的接口4.4 MCS-51與A/D轉換器的接口4.5 動態(tài)數(shù)碼顯示及鍵盤掃描電路4.6 單片機的監(jiān)控電路 - 看門狗電路34.1 單片機的系統(tǒng)擴展單片機與外圍器件進行連接以實現(xiàn)特定的功能,我

2、們將此稱之為系統(tǒng)擴展;從硬件的角度可將擴展分為:1.最小擴展系統(tǒng);2.三總線結構的總線擴展系統(tǒng);3.串行口擴展系統(tǒng)。不同的擴展方式具有不同的特點和適用場合。4(一)最小擴展系統(tǒng)外圍器件直接與單片機的I/O端口連接,實現(xiàn)數(shù)據(jù)交換。特點:1.硬件連接簡單。適用于外部器件較少的場合。2.軟件編程時,數(shù)據(jù)信息使用與端口相關的MOV指令即可實現(xiàn)交換;控制信號可使用相關的“位操作”指令實現(xiàn)。5由8個按鍵、8個LED燈構成的最小I/O系統(tǒng)MCS-51 P0.7P0.0P1.7P1.0K0K7LED0LED7LED6 系統(tǒng)功能:將P1口的8個按鍵值輸入,取反后經P0口輸出; 指令如下:MOV P1,#0FFH

3、MOV A ,P1 CPL A MOV P0 ,A 【分析】第1、3條指令的作用。6思考題:設計一個4路搶答器并編程MCS-51 P0.3。P0.0P1.4 P1.3P1.2P1.3/INT0 P1.0K0K2K1K3LED0 LED3與門K4參考電路7設 計 要 求1.原始狀態(tài)LED0LED3熄滅;2.當K0K3有按鍵操作時,對應位置的LED點亮并延時一段時間;3.當K4按下時LED熄滅,程序回到原始狀態(tài);4.采用中斷方式編程。8(二)總線結構的擴展系統(tǒng)當系統(tǒng)采用外部 RAM、ROM 或:ADC、DAC器件時,采用總線結構是一種減少引線、控制方便的擴展方法;特點:1.硬件,P0口作“數(shù)據(jù)/低

4、8位地址”復用總線; P2口作“高8位地址”總線; P3.7 作 /RD、P3.6 作 /WR “控制” 線;n軟件,使用專用的MOVX(或MOVC)指令實現(xiàn)數(shù)據(jù)交換,利用該指令自動產生的/RD、/WR(/psen)等信號對外圍器件進行讀寫控制。1.本章著重介紹、分析總線結構的系統(tǒng)應用與編程。9外8K RAM擴展系統(tǒng)P2.5 P2.4: : P2.0P0.7: : : P0.0ALE/RD/WRCEA12 : :A8A7 O7 : : : : : : A0 O0/OE /WED7 Q7 D0 Q0CPCP 6264 8K RAMMCS-51/CE = P2.5(A12)三態(tài)輸出的數(shù)據(jù)口由/OE

5、控制10兩種方法的特點和應用場合 最小系統(tǒng)常用于功能比較簡單的“專用系統(tǒng)”的設計。如電子搶答器、循環(huán)彩燈顯示器等。電路結構簡單; 總線擴展系統(tǒng)常用于系統(tǒng)使用外部存儲器、A/D轉換器等外部器件。這些器件的特點是:所使用引腳較多(數(shù)據(jù)線、地址線和讀寫及片選控制線等),如果直接采用普通的連接方式會出現(xiàn)單片機的引腳不夠用的情況。 在實驗室所使用的單片機實驗系統(tǒng)就是采用總線擴展的方式結構設計:不但外部RAM、ROM具有其地址,其它的外接的ADC、DAC等專用芯片都以存儲單元的形式分配器物理地址。這種結構設計是使系統(tǒng)具有很好的擴展能力。11(三)串行口擴展系統(tǒng) 采用同步串口接口進行系統(tǒng)擴展具有結構簡單、可

6、靠性高的特點,因此是現(xiàn)代嵌入式系統(tǒng)設計的方向和發(fā)展的主流; 采用具有串行接口的專用外圍芯片與單片機進行連接。此類芯片具有引腳少、封裝簡單、成本低廉等突出的優(yōu)點,已成為接口器件的主流產品。 采用串行接口的芯片有:RAM、E2PROM、ADC、DAC、LCD驅動器、溫度傳感器、日歷芯片等等;12目前流行的串行接口標準1.USART同步串行接口;2.SPI同步串行接口;3.I2C總線接口;4.CAN總線接口;5.1-Wire總線接口;6.USB串行接口等。13 MCS-51單片機雖然只有USART同步串行接口,但也可以采用軟件模擬的方法模仿SPI等串行接口進行編程; 現(xiàn)在許多新型號的單片機(包括與5

7、1兼容的芯片)都具有對應多種串行接口,使單片機的性能得以提高,系統(tǒng)設計更為靈活。 串行接口作系統(tǒng)內部的擴展,已經成為當前系統(tǒng)硬件設計的主流。 本節(jié)只著重介紹USART同步串行接口作系統(tǒng)擴展的方法,其它接口只作簡單描述。返回本章目錄144.1.1 外部程序存儲器ROM的擴展采用“總線方式”的系統(tǒng)擴展1.單片機的P0、P2口作為外電路的數(shù)據(jù)、地址總線:P0口做為低8位地址和數(shù)據(jù)復用總線; P2口做為高8位地址總線。2.單片機的/Psen 作為數(shù)據(jù)選通信號與外ROM的數(shù)據(jù)輸 出三態(tài)控制/OE端連接(參照訪問外存儲器的時序);3.使用一個8位的數(shù)據(jù)鎖存器來鎖定P0口的低八位地址信號,使用單片機的ALE

8、信號作鎖存器的鎖存控制。4.將單片機的引腳/EA接低電平(選擇外部ROM)。15具有三態(tài)功能的具有三態(tài)功能的8D鎖存器鎖存器/L:三態(tài)控制。 低電平:允許數(shù)據(jù)輸出,三態(tài)門通; 高電平:三態(tài)門關閉,輸出高阻。G:數(shù)據(jù)鎖存控制。 高電平時,輸出隨輸入變化; 低電平時,Q端將被所存(低電平鎖存)。 D7 Q7 ? ? ? ?D0 Q0 G /L數(shù)據(jù) 輸入端數(shù)據(jù) 輸出端74LS37316 MCS-51與1片32K ROM的連接(地址線全譯碼)CEA14 : :A8A7 O7 : : : : : : A0 O0OE 27256 32K ROMMCS-51/CE = P2.7(A15)返回前一次完整的地址

9、信號三態(tài)輸出的數(shù)據(jù)口由/OE控制D7 Q7 74LS373D0 Q0 G /L G /L P2.7: : : P2.0P0.7: : : P0.0ALE/EA Psen17訪問外部程序存儲器ROM的時序: A15-A8(PC)A7-A0OPA7-A0常數(shù)ROM輸出控制 /Psen地址總線(高八位)P2口地址/數(shù)據(jù)(低8位)P0 口S1S2S6S5S4S374LS373的鎖存信號 ALE A15-A8 (DPTR+A)MOVC A,A+DPTRA B轉電路圖返回前一次(參考講義76頁)18片外存儲器訪問時序說明 P0、P2口作地址和數(shù)據(jù)總線。其中P0口作為地址和數(shù)據(jù)復用總線,前半部(A段)作地址

10、總線,后半部(B段)作為數(shù)據(jù)總線。 外部程序存儲器ROM的操作步驟如下: 1,必須為ROM其提供完整的(15位)地址信息; 2,ROM芯片的/CE 端=0,選中該芯片; 3,在滿足上述條件的基礎上,當ROM的/OE=0時(B時間段),存儲器輸出數(shù)據(jù)的三態(tài)門打開,并將與輸入地址相對應的存儲單元中的指令(數(shù)據(jù))向外輸出,單片機通過P0口將指令送至CPU 內部。 74LS373鎖存器:將A時間段P0口輸出的低位地址進行保存,使ROM在B時間段仍然可以得到完整的地址信號。轉電路圖轉時序圖19外部ROM的狀態(tài)與地址線A15的關系表ROM引腳/CEA14A8A7A0地址范圍ROM工作狀態(tài)單片機引腳A15P

11、2口A14-8P0口A7-0000000000111111100000000111111110000H7FFFH選中110000000111111100000000111111118000HFFFFH未選中注意:1,ROM地址線與存儲器的容量之間的關系; 2,ROM的/OE 與單片機的/psen 連接; 3,ROM的/CE信號是存儲器的片選; 4,由于采用地址線全譯碼,所以每一個地址對應唯 一的存儲單元20 MCS-51與2片32K ROM的連接(地址線全譯碼)A15P2口口MCS - 51 P0口口ALE/EA Psen/CE2A14A8A7A0/OE2O0O7/CE1A14A8A7A0/O

12、E1O0O774LS37321由兩片32K的ROM構成64K存儲陣列與A15的關系表A15/CEA14A8P2口A7A0P0口地址范圍ROM1工作狀態(tài)ROM2工作狀態(tài)000000000111111100000000111111110000H7FFFH選中/CE=A15未選中110000000111111100000000111111118000H FFFFH未選中選中/CE=/A1522 MCS-51與多個 ROM的連接(地址線全譯碼) 若需要對2片以上的芯片擴展,可以通過譯碼電路實現(xiàn)。P2.7P2.6P2.5P2.4P2.0P0口口ALEPsen/CE0A12A8A7 8K8A0/OE1O0

13、O774LS373C y7BA y 0 /CE1A12A8A78K8A0/OE1O0O7/CE7A12A8A78K8A0/OE1O0O7MCS5174LS1382374LS138 3-8線譯碼器 A、B、C:選擇輸入。作為與輸出對應的二進制編碼輸入; G1、/G2A、G2B:使能輸入,作為片選控制輸入; y7y0:譯碼器輸出,低電平有效。74LS138G1/G2A/G2BCBAy0y1y2y3y4y5y6y7C B Ay7 y6 y5 y4 y3 y2 y1 y00 0 01 1 1 1 1 1 1 00 0 11 1 1 1 1 1 0 10 1 01 1 1 1 1 0 1 10 1 11

14、 1 1 1 0 1 1 11 0 01 1 1 0 1 1 1 11 0 11 1 0 1 1 1 1 11 1 01 0 1 1 1 1 1 11 1 10 1 1 1 1 1 1 124采用74LS138譯碼器實現(xiàn)ROM擴展示意表P2.7P2.5138輸入片選/CEi138 輸出選中 ROMP2.4P0.0有效地址范圍0 0 0Y0=0第1片0000H1FFFH0000H1FFFH0 0 1Y1=0第2片0000H1FFFH2000H3FFFH0 1 0Y2=0第3片0000H1FFFH4000H5FFFH0 1 1Y3=0第4片0000H1FFFH6000H7FFFH1 0 0Y4=0

15、第5片0000H1FFFH8000H9FFFH1 0 1Y5=0第6片0000H1FFFHA000HBFFFH1 1 0Y6=0第7片0000H1FFFHC000HDFFFH1 1 1Y7=0第8片0000H1FFFHE000HFFFFH返回25采用不完全譯碼的簡易ROM擴展電路(一)P2.7P2.5P2.5P2.4P2.3P2.2P2.1P2.0P0口口ALEPsenMCS51/CEA12A11A10A9A8A7 8K8A0/OE1O0O774LS37326部分譯碼造成的地址重疊(一)部分譯碼造成的地址重疊(一)P2.7P2.5P2.4P2.0P0.7P0.0有效地址范圍0 0 000000

16、/1111100H/FFH0000H1FFFH0 0 100000/1111100H/FFH2000H3FFFH0 1 000000/1111100H/FFH4000H5FFFH0 1 100000/1111100H/FFH6000H7FFFH1 0 000000/1111100H/FFH8000H9FFFH1 0 100000/1111100H/FFHA000HBFFFH1 1 000000/1111100H/FFHC000HDFFFH1 1 100000/1111100H/FFHE000HFFFFH造成了相互重疊的8個地址存儲區(qū)域27P2.7P2.6P2.5P2.4P2.3P2.2P2.1

17、P2.0P0口口ALEPsenMCS51/CEA12A11A10A9A8A7 8K8A0/OE1O0O774LS373采用不完全譯碼的簡易ROM擴展電路(二)28部分譯碼造成的地址重疊(二)P2.7 P2.6P2.5P2.4 P2.0P0.7 P0.0有效地址范圍0 0000000/1111100H/FFH0000H1FFFH0 0100000/1111100H/FFH2000H3FFFH0 1000000/1111100H/FFH4000H5FFFH0 1100000/1111100H/FFH6000H7FFFH1 0000000/1111100H/FFH8000H9FFFH1 010000

18、0/1111100H/FFHA000HBFFFH1 1000000/1111100H/FFHC000HDFFFH1 1100000/1111100H/FFHE000HFFFFH藍色為無用地址(/CE=1),黃色為重疊存儲區(qū)域29部分譯碼擴展電路的特點 結構簡單; 由于高位地址的“空余位” 沒有與存儲器的地址信號連接,所以其狀態(tài)對存儲器不起任何作用,因此造成地址重疊。 重疊地址的數(shù)量與“空余位”地址線的條數(shù)有關: 重疊地址數(shù) = 2n ;其中n為空余地址線數(shù)。 對于使用ROM空間小于64K時,可以考慮使用部分譯碼的方式,以簡化電路的設計、降低電路成本。 編程時稍加注意:只使用低地址的存儲空間,避

19、免使用其它的重疊空間(盡管不影響效果,但容易找程混亂)。這樣地址重迭不會帶來使用上的錯誤。返回本章目錄304.1.2 數(shù)據(jù)存儲器RAM的擴展 數(shù)據(jù)、地址總線同ROM擴展,使用P0、P2口完成; 控制信號與ROM擴展不同:單片機輸出/RD、/WR作為外部RAM的讀、寫控制信號。 使用MOVX指令訪問外RAM數(shù)據(jù);時序中將產生對應的/RD或/WR信號。此信號作為對RAM的讀寫控制而直接與RAM對應的引腳相連。 當系統(tǒng)外接其它模塊(A/D、D/A等)時,可以采用與RAM統(tǒng)一地址編址,使用MOVX指令對其訪問。31 只能通過間址的尋址方式訪問外部;1,當使用 MOVX Ri ,A指令時,系統(tǒng)僅使用P0

20、口輸出地信號(P2口不用)訪問范圍00HFFH(256B)。 如果系統(tǒng)使用256B以內的RAM或僅使用A/D、D/A等模塊時可采用Ri間址,以減化電路節(jié)省口線;2,當使用 MOVX DPTR,A 指令時,P0口輸出DPTR提供的低八位地址信號,P2口輸出DPTR提供的高八位地址信號。3,不論哪種情況,P0口都是地址/數(shù)據(jù)復用總線,因此 仍要使用74LS373來鎖存P0口的地位地址信號。使用MOVX指令訪問外部RAM時的特點32 設外部RAM2000H單元中有一個數(shù)x,且DPTR中已存有該數(shù)地址2000H.則CPU 執(zhí)行外部ROM中的指令: movx a,dptr ;將外RAM的x送AS1S2S

21、6S5S4S3S1S2S6S5S4S3ALEPsenA15-A8(PC)A15-A8(DPH)A7-A0指令A7- A0數(shù)據(jù)RDP2口P0口選中外部RAM讀外部數(shù)據(jù)存儲器RAM的指令時序33MCS-51與8K RAM的連接P2.5 P2.4: : P2.0P0.7: : : P0.0ALE/RD/WRCEA12 : :A8A7 O7 : : : : : : A0 O0/OE /WED7 Q7 D0 Q0CPCP 6264 8K RAMMCS-51/CE = P2.5(A12)三態(tài)輸出的數(shù)據(jù)口由/OE控制34小小 結:結: 1,外部存儲器使用P0、P2口作為地址、數(shù)據(jù)總線; 2, P0口為數(shù)據(jù)、

22、地址復用總線,須用74LS373來鎖存P0口的低八位地址信號。 3, 靠MOVC指令的/Psen信號來選通外ROM; 靠MOVX指令產生/RD或/WR控制外RAM的讀寫。 4,存儲器的容量M與其地址線條數(shù)n的關系:M=2n 5,當使用兩片存儲器時,可用一個反向器擴展; 當使用2片以上的存儲器時,就要使用譯碼器。譯碼器 的輸入與高位地址相連接,輸出端與各ROM的/CE連接。 6,若16位地址線沒全部參與譯碼時,會發(fā)生地址重疊。35思 考 題: 使用6264(8KRAM)芯片和2764(8KROM)芯片組成16K RAM和16KROM的外存儲陣列(邏輯圖)。 采用74LS138和74LS373實現(xiàn)

23、譯碼和鎖存功能。 根據(jù)設計的結果,寫出RAM和ROM的地址范圍。返回本章目錄364.1.3 使用串行口擴展I/O端口1.MCS-51單片機的UART方式0串行擴展2.SPI總線擴展系統(tǒng)3.I2C總線擴展系統(tǒng)4.單總線(1-Wire bus)接口擴展系統(tǒng)返回本章目錄37關于串口擴展系統(tǒng) 現(xiàn)代嵌入式系統(tǒng)發(fā)展的方向; 具有結構簡單、可靠性高、擴展方便和維護容易的優(yōu)點; 現(xiàn)代新型單片機(包括與MCS-51兼容的芯片)都已具備了各種串行的接口,使系統(tǒng)設計更為簡單和靈活。38(一) UART方式0串行擴展在MCS-51單片機串行口的4種工作模式中模式0 (同步移位模式)可以用來實現(xiàn)系統(tǒng)并行I/O端口的擴展

24、。MCS-51 RXDTXD移位寄存器移位寄存器同步移位脈沖由MCS-51的串口與兩個8位移位寄存器(74LS164)構成的16位并行輸出口數(shù)據(jù)線39使用UART方式0的特點:1.串行口的RXD作數(shù)據(jù)線、TXD引腳作同步移位脈沖線;2.擴展端口與單片機之間的連線少(2 3條);3.需要使用外部的“并入串出” 或“串入并出” 移位寄存器實現(xiàn)“并行/串行”和“串行/并行”轉換;4.擴展I/O端口數(shù)量理論上不受限制(N*8位);5.與并行口相比,串口擴展的數(shù)據(jù)交換時間較長,只適用于對速度沒有太高要求的場合。40串行口0模式特點:1.同步移位方式。8位數(shù)據(jù)移位,低位在先;2.波特率固定為fosc/12

25、;3.數(shù)據(jù)由RXD(P3.0)出入,同步移位脈沖由TXD發(fā)出。與串行口模式0相關的寄存器1.SBUF。用來裝載接收或待傳送數(shù)據(jù)的緩沖器;2.SCON。設定工作模式,存放相關標志的串口控制寄存器。設定串口模式:00000000B 模式0 時發(fā)送機的控制字; 00010000B 模式0 時接收機的控制字?!咀⒁狻? 在接收或發(fā)送前必須將對應的標志RI或TI清零! 只要REN=1便開始啟動接收。SM0SM1SM2RENTB8RB8TIRI41使用使用2 2片片74LS16574LS165構成的構成的1616位輸入擴展口位輸入擴展口MCS-51P3.0P3.1P1.0 H G F E D C B AQ

26、H 74LS165 SIN S/ L CLK H G F E D C B AQH 74LS165 SIN S/ L CLK RXDTXD16位并行I/O端口 74LS165: AH:8位并行數(shù)據(jù)輸入端;并入串出移位寄存器 SIN: 串行數(shù)據(jù)輸入端; QH: 串行數(shù)據(jù)輸出端; S/ L: =0時鎖存并行數(shù)據(jù),=1時允許串行移位。42編程舉例:讀入20個字節(jié)的數(shù)據(jù)并送入內部RAM單元MOV R7,#14H;字節(jié)數(shù)20送計數(shù)器R7MOV R0,#20H;內部數(shù)據(jù)區(qū)指針R0賦初值SETB F0;設置“讀入字節(jié)數(shù)奇偶數(shù)”標志RCV0: CLR P1.0;并行置入數(shù)據(jù)SETB P1.0;允許串行移位RCV

27、1: MOV SCON,#00010000B;設定模式0并啟動接收(REN=1)LOOP: JNB RI,$;等待接收結束CLR RI; 清RI準備下一次接收MOV A,SBUF;將接收的數(shù)據(jù)送AMOV R0,A;數(shù)據(jù)送內存INC R0;修改數(shù)據(jù)區(qū)指針R0CPL F0;標志取反JB F0,RCV2;接收偶次后重新置入數(shù)據(jù)DEC R7;接收奇次時要再接收一幀SJMP RCV1; 轉RCV1接收第二幀數(shù)據(jù)RCV2: DJNZ R7,RCV0;是否完成20個字節(jié)的輸入【注意】:F0的作用和程序根據(jù)F0的狀態(tài)轉移到RCV1、RCV0的區(qū)別。43數(shù)據(jù)塊指針R0、計數(shù)器R7賦初值設定串口命令啟動接收MOV

28、 A,SBUF修改數(shù)據(jù)指針從P1.0輸出負脈沖鎖定并行數(shù)據(jù)RI=1?NYCLR RI標志F0原始置一R7-1R7YCPL F0F0=1?R7-1R7R7=0?NYN結束CC程序流程圖44思考題:思考題:編一個在下面的電路中讀入20個字節(jié)的數(shù)據(jù)的程序MCS-51P3.0P3.1P1.0 H G F E D C B AQH 74LS165 SIN S/ L CLK RXDTXD45使用2片74LS164構成的16位輸出擴展口MCS-51P3.0P3.1P1.0 QA QHA,B 74LS164 /CLR CLK QA QHA,B 74LS164 /CLR CLK RXDTXD 共陽極LED數(shù)碼管

29、. g f e d c b a 共陽極LED數(shù)碼管 . g f e d c b a+5V46編程:利用靜態(tài)數(shù)碼管顯示電路,顯示RAM中的數(shù)據(jù) 數(shù)據(jù)存RAM的20H開始的單元,以BCD碼的形式存儲; 顯示前必須利用查表程序將BCD碼轉換為共陽極的字符碼。顯示字型dp ,g,f,e,d,c,b, a字符碼01 1 0 0 0 0 0 0 C0H11 1 1 1 1 0 0 1F9H21 0 1 0 0 1 0 0A4H31 0 1 1 0 0 0 0B0H41 0 0 1 1 0 0 199H51 0 0 1 0 0 1 092H61 0 0 0 0 0 1 082H71 1 1 1 1 0 0

30、0F8H81 0 0 0 0 0 0 080Habcdefgdp+VCCabcdefgdp47ORG 2000HDISP:MOV R7,02H;設置顯示位數(shù)MOV R0,#20H;設置數(shù)據(jù)區(qū)指針MOV SCON,#00H;設串行口為模式0MOV DPTR, # TABLE ;設置字符表指針DISP0: MOV A , R0;取數(shù)據(jù)到AMOVC A,A+DPTR;從表中取與A對應的字符到AMOV SBUF,A;字符向外傳送LOOP: JNB TI,$;等待傳送結束CLR TI;清除標志TIINC R0;指向下一個數(shù)據(jù)DJNZ R7,DISP0;未完時轉DISP0繼續(xù)RETTABLE: DB 0C

31、0H,0F9H,0A4H,0B0H,99H;0,1, 2,3,4的字符碼DB 92H,82H,0F8H,80H,98H;5,6,7,8,9的字符碼END返回48設定串行口工作模式取數(shù)據(jù)到AMOV A,R0查表:MOVC A,A+DPTR發(fā)送數(shù)據(jù)MOV SBUF,A初始化:計數(shù)器R7賦初值02H數(shù)據(jù)指針R0賦20HDPTR賦表頭地址CCTI=1?清標志:CLR TI修改指針 INC R0R7-1R7R7=0?NYNY返回程序流程圖(查尋法)49采用中斷的方式實現(xiàn)串行口的操作設定串行口工作模式開串行口中斷取數(shù)據(jù)到AMOV A,R0查表發(fā)送數(shù)據(jù)MOV SBUF,A初始化:R7=02H,R0=20HD

32、PTR賦表頭地址等待中斷中斷服務程序返回清除標志修改指針R7-1R7R7=0?N關閉串口中斷Y取數(shù)據(jù)到A查表、發(fā)送數(shù)據(jù)50程序清單(中斷方式) ORG 0000H LJMP START ORG 0023H LJMP CHUAN ORG 2000HSTART: MOV R7,02H;設置顯示位數(shù) MOV R0,#20H;設置數(shù)據(jù)區(qū)指針 MOV SCON,#00H;設串行口為模式0 SETB EA SETB ES;開串口中斷 MOV DPTR, # TABLE;設置字符表指針DISP0: MOV A , R0;取數(shù)據(jù)到A MOVC A,A+DPTR;從表中取與A對應的字符碼到A MOV SBUF,

33、A;字符向外傳送 SJMP $;等待中斷51 ORG 2500HCHUAN: CLR TI;清除標志TI INC R0;修改數(shù)據(jù)指針 DJNZ R7,DISP1;未完時轉DISP1繼續(xù) CLR ES;完成時關閉串口中斷 SJMP DISP0;轉返回DISP1: MOV A,R0;未完時,取下一個數(shù)據(jù) MOVC A,A+DPTR;查表 MOV SBUF,A;發(fā)送DISP0: RETITABLE DB 0C0H,0F9H,0A4H,0B0H,99H;0,1, 2,3,4的字符碼 DB 92H,82H,0F8H,80H,98H ;5,6,7,8,9的字符碼 END52程序在ROM中的位置LJMP S

34、TARTLJMP CHUANMOV R7,02HCLR TIRETIC0HF9H0000H0023H2000H2500HTABLE上電入口ES中斷矢量入口主程序串口服務程序字符表53思考題:1.TI=1時,單片機是如何實現(xiàn)中斷調用的?2.在主程序的什么位置上產生中斷調用的?3.中斷返回時,返回到主程序的什么位置?4.如果想把主程序、中斷服務程序和字符表三者緊密相連(節(jié)省程序空間),程序應如何修改?5.將查表指令改為 MOVC A,A+PC 時,程序應如何修改?54 ORG 2000HSTART: MOV R7,02H;設置顯示位數(shù) MOV R0,#20H;設置數(shù)據(jù)區(qū)指針 MOV SCON,#0

35、0H;設串行口為模式0 SETB EA SETB ES;開串口中斷DISP0: MOV A , R0;取數(shù)據(jù)到A ADD A ,#data;調整 data=2+2 MOVC A,A+PC;從表中取字符碼到A MOV SBUF,A;字符向外傳送 SJMP $;等待中斷TABLE DB 0C0H,0F9H,0A4H,0B0H,99H;0,1, 2,3,4的字符碼 DB 92H,82H,0F8H,80H,98H ;5,6,7,8,9的字符碼 END返回本節(jié)55(二)SPI總線擴展系統(tǒng)SCKMOSI /CSMISO SCKMOSI /CSMISO SCKMOSI /CSMISO SCKMOSI /CS

36、MISO SCK:同步移位脈沖。MOSI:主機輸出、從機輸入。MISO:主機輸入從機輸出。 SCK MOSI MISO I/O I/O I/O I/O56SPI總線工作原理 美國MOTOROLA公司推出的一種同步串行接口。 SPI使用4條信號線: 同步時鐘線SCK; 主機輸入/從機接收線; 主機輸出/從機輸入線;從機片選線/CS(低電平)。 SPI總線為“單主機系統(tǒng)”,主機為單片機,從機為外圍芯片。主機通過/CS線來指定、尋找從機進行數(shù)據(jù)交換。 如果外圍器件是單一功能的輸入或輸出,則連接可簡化為2線系統(tǒng)。 MCS-51單片機雖然沒有SPI接口,但完全可以通過軟件模擬SPI的時序完成SPI操作,

37、但必須注意兩點:先傳送D7位;同步脈沖的有效邊緣以外圍器件要求為準。返回本節(jié)57(三)I2C總線擴展系統(tǒng)SDA SCL鍵盤接口SDA SCLLED驅動SDA SCL打印機接口SDA SCLADC模塊單片機SDA SCL存儲器SDA SCLE2PROMSDA SCLSCLSDAV cc58I2C總線工作原理 I2C總線采用兩線制:數(shù)據(jù)線SDA、時鐘線SCL。 I2C總線為同步總線,數(shù)據(jù)的傳送與時鐘信號完全同步。 I2C總線采用主從方式,由主控器尋址從器件,啟動總線,產生時鐘脈沖。 所有與SDA、SCL總線相連的器件(單片機和外圍器件)都應當具備I2C總線接口。 I2C總線接口器件在出廠時按照芯片

38、的型號都具有唯一的8位地址(4位內部硬件地址、3位引腳定義的外部地址和1位方向地址)。返回本節(jié)59(四)單總線接口擴展系統(tǒng) DS1820為美國DALLAS公司生產的溫度計集成電路DQDS1820DQDS1820DQDS1820DQDS1820I/OMCUDS1820V ccDQGND60單總線接口工作原理 單總線(1-Wire bus)是美國DALLAS公司推出的外圍串口擴展總線。 總線使用一根數(shù)據(jù)線DQ(輸入/輸出),總線上所有的器件都掛在DQ上。 DALLAS公司生產的所有該總線的器件在其內部都有一個64位的ROM,廠家在出廠時使用激光燒寫編碼(十進制的產片序列號)作為每一個器件唯一的地址

39、,以確保掛在總線上可以唯一確定并訪問。 DQ為漏極開路結構,故外部必須使用上拉電阻。 單總線器件具有低功耗特征,并具有電源存儲電路,可以從DQ線上獲取芯片的工作電源(當然也可以單獨使用電源供電)。61參 考 資 料 AT89系列單片機原理與接口技術338474頁 -北京航空航天大學出版社 王幸之等(48元) PIC單片機實用教程 提高篇-北京航空航天大學出版社 李學海 (34元)返回本章目錄624.2專用并行輸入、輸出接口芯片的擴展電路 intel公司為8088、8086微機系統(tǒng)設計的專用并行I/O口擴展芯片8155、8255等同樣可以用于單片機的并行端口擴展。4.2.1,使用 8155擴 展

40、I/O 端口4.2.2,使用 8255擴展I/O 端口返回本章目錄634.2.1:使用8155擴展I/O端口1. 8155的簡介2. 8155的構成:3. CPU 對8155的控制4. 8155的工作方式5. 8155內部定時器的使用6. 8155應用與編程舉例繼續(xù)64(一)8155的簡介 美國Intel公司為8086系列微機開發(fā)出的系列通用可編程I/O接口芯片。 8155不僅可以提供三個并行的I/O端口,在其內部還集成有256個字節(jié)的RAM存儲空間、一個14位的定時/計數(shù)器,因此非常適合與MCS-51單片機連接實現(xiàn)系統(tǒng)功能的擴展。 由于8155的特殊性,這里將主要介紹其結構和使用、編程方法。

41、返回本節(jié)目錄65(二)8155的構成: 1,雙向數(shù)據(jù)總線緩沖器:傳送CPU與RAM之間的數(shù)據(jù)。 2,地址鎖存器:用于鎖存CPU送來得RAM或端口地址。 3,地址譯碼(a)和讀寫控制(b): a,接收地址鎖存器的低三位地址,確定命令/狀態(tài)存存器、 定時/計數(shù)器和A、B、C口中的某個工作。 b,讀寫控制用于接收/RD或/WR上的信息實現(xiàn)CPU與8155 之間的信息控制 4,256個字節(jié)的RAM數(shù)據(jù)存儲器。 5,I/O寄存器:A,B和C雙向通用I/O端口。 6,命令寄存器:用來存放CPU送來得命令字。 7,定時/計數(shù)器:二進制的14位減一計數(shù)器,可做分頻器。6681558155的內部結構簡圖的內部結

42、構簡圖I/O寄存器A口口256字節(jié)RAM雙向數(shù)據(jù)緩沖器地址鎖存器定時計數(shù)器(14位)讀/寫控制器地址譯碼I/O寄存器B口口I/O寄存器C口口狀態(tài)命令寄存器AD7-AD0/CEIO/MALE/RD/WRRESTT / INT / OUT6781558155引腳說明引腳說明 AD7-AD0:數(shù)據(jù)/地址總線。與MCS-51的P0口連接,分 時傳送地址和數(shù)據(jù)信息,是連接兩者的通道。 I/O口線:PA7-0、PB7-0和PC5-0為8155的A、B和C口。 其中A、B口為8為的通用I/O口; C口:在“通用I/O模式”下作I/O口; 在“選通I/O模式”下作命令/狀態(tài)口。 REST、/CE和IO/M :

43、復位、片選和I/O端口/RAM選擇線。 /RD、/WR: 讀寫控制線。 ALE:8155的地址鎖存信號。ALE=1時,信號進入地址鎖 存器,ALE=0時,鎖存器處于“封鎖”狀態(tài),將ALE=1 時的地址鎖存到地址鎖存器中。 T/IN、T/OUT: 計數(shù)器的脈沖輸入線和輸出線,輸出波形 與工作方式有關。 返回本節(jié)目錄68(三)CPU 對8155的控制 8155的A、B和C口的數(shù)據(jù)傳送是由CPU發(fā)出的命令字控制的。 (1)8155內部的7個寄存器地址/CEIO/MA7-A3A2A1A0所選端口01XXXXX000命令 / 狀態(tài)寄存器01XXXXX001A口01XXXXX010B口01XXXXX011

44、C口01XXXXX100計數(shù)器低8位01XXXXX101計數(shù)器高8位00XXXXXXXXRAM單元69(2 2)81558155的命令字的命令字 PB、PA:A、B口工作方式:0 輸入;1 輸出。 PC2、 PC1: C口工作方式:00 ALT1(輸入) 01 ALT2(輸出) 10 ALT3(選通方式) 11 ALT4(選通方式) IEB IEA: A、B口中斷允許位:0 禁止中斷;1 允許中斷。 TM2 TM1:計數(shù)器工作方式:00 無操作;01 停止計數(shù); 10 計滿后停止;11開始計數(shù)。TM2TM1IEBIEAPC2PC1PBPA上一次70(3 3)81558155的狀態(tài)字的狀態(tài)字表征

45、表征81558155的狀態(tài)的狀態(tài) Ingra: A中斷請求標志。 0 無中斷;1 有中斷。 ABF: A口緩沖器狀態(tài)。 0 空; 1 滿。 Intel: A口中斷允許位。 0 禁止; 1 允許。 Nitro: B中斷請求標志。 0 無中斷;1 有中斷。 BBF: B口緩沖器狀態(tài)。 0 空; 1 滿。 Intec: B口中斷允許位。 0 禁止; 1 允許。 TIMER: 定時器中斷。0 讀狀態(tài)字后或硬件復位后。 1 有定時器中斷時。XTIMERINTEbBBFINTRbINTEaABFIngra狀態(tài)字存在于8155的狀態(tài)寄存器中,其地址與命令口地址一樣都是000B,可以用 MOVX A, Ri

46、指令來讀取8155的狀態(tài)。狀態(tài)字寄存器與命令寄存器是靠輸入、輸出來自動區(qū)分的。返回本節(jié)目錄71(四)8155的工作方式 (1)存儲方式:若IO/M=0、CE=0時,8155處于存儲器 模式,此時單片機通過AD7-AD0與8155 的RAM單元進行讀寫數(shù)據(jù)。 (2)I/O方式:若IO/M=1,CE=0時,8155處于I/O狀態(tài)。 a,通用I/O方式:A,B,C都是通用的數(shù)據(jù)端口; b,選通I/O方式:A,B為通用I/O方式,C口作 為A,B口的聯(lián)絡控制線。 選通方式是一種較為特殊的數(shù)據(jù)傳輸方式,它不同于一般并行口的I/O操作。它主要用于高速CPU與低速外設之間的數(shù)據(jù)交換。這里只作基本介紹。72C

47、口在四種工作方式下的各位定義口在四種工作方式下的各位定義C口通用I/O方式選通I/O方式ALT1ALT2ALT3ALT4PC0輸入輸出A INTR(A口中斷)A INTR(A口中斷)PC1輸入輸出ABF (A口緩沖器滿) ABF (A口緩沖器滿)PC2輸入輸出ASTB(A口選通)ASTB(A口選通)PC3輸入輸出輸出B INTR(B口中斷)PC4輸入輸出輸出BBF (B口緩沖器滿)PC5輸入輸出輸出BSTB(B口選通)73選通選通I/O數(shù)據(jù)輸入操作數(shù)據(jù)輸入操作當外設準備好數(shù)據(jù)并送PA口時,發(fā)出低電平的選通信號ASTB;8155接收到ASTB后:1,將PA上的數(shù)據(jù)裝入A口寄存器2,使A口數(shù)據(jù)滿A

48、BF置位以通知外設數(shù)據(jù)已收到。8155在ASTB的上升沿使PC0的A INTR標志置位,以通知單片機數(shù)據(jù)已收到。CPU響應中斷執(zhí)行服務程序,當執(zhí)行到從A口讀取輸入的數(shù)據(jù)(MOVX)時,/RD的上升沿將PC0的INTEA清零并使PC1的ABF變低,通知外設輸入下一個數(shù)據(jù)。 P0INT0 PAPD0-7/RD PC1 PC2 PC0D7- 0 C口為ALT3模式PC0:A口中斷A INTR標志輸出,送單片機;PC1:A口緩沖器滿ABF標志輸出,送外設。PC2:A口選通輸入ASTB,ASTBABFMCS-51 8155 外設A INTR74選通選通I/O數(shù)據(jù)輸出操作數(shù)據(jù)輸出操作CPU執(zhí)行MOVX指令

49、將數(shù)據(jù)送PA口,8155收到數(shù)據(jù)后ABF變高通知外設數(shù)據(jù)已到達PA口。外設接收到ABF的高電平后: 1,從D7-0上接收數(shù)據(jù); 2,使ASTB變低,通知8155外 設已接收到數(shù)據(jù)。當8155監(jiān)測到ASTB回到高電平時,使PC0D的A INTR變?yōu)楦唠娖?,向單片機申請中斷。單片機在中斷服務程序中巴下一個數(shù)據(jù)送到A口,進行下一個數(shù)據(jù)的輸出。 P0INT0 PAPD0-7 PC1 PC2 PC0D7- 0 ASTBABFMCS-51 8155 外設C口為ALT3模式,控制字:00011001BPC0:A口中斷A INTR標志輸出,送單片機;PC1:A口緩沖器滿ABF標志輸出,送外設。PC2:A口選通

50、輸入ASTB,A INTR返回本節(jié)目錄75(五)8155內部定時器的使用 嚴格的將,8155的定時器應當稱為計數(shù)器,因為定時器的計數(shù)脈沖來自外部的T/IN引腳的輸入脈沖,所以8155的定時器非常適合做1/n的分頻器(如圖)。 定時器共有4中工作方式,由計數(shù)器高8位中的最高兩位M2、M1來確定。不同的工作方式對應著不同的T/OUT波形。8155 T/INT/OUT由8155作1/5分頻器MCS-51控制字7681558155內部定時器的內部定時器的4 4種工作方式種工作方式1,M1M2=00時:定時器在計數(shù)的后半周期在T/OUT線上輸出低電平,如果計數(shù)初值為奇數(shù),則高電平持續(xù)時間比低電平多一個計

51、數(shù)脈沖;2, M2M1=01時:同上一方式,差別為當計數(shù)器“減1”到 “全0”時,自動裝入計數(shù)初值,所以在T/OUT上為連續(xù)波形;3, M2M1=10時:當計數(shù)器“減1”到 “全0”時,在T/OUT線上輸出一個單脈沖;4, M2M1=11時:當計數(shù)器“減1”到 “全0”時,在T/OUT線上輸出一個單脈沖,且自動重裝計數(shù)初值,所以在T/OUT線上輸出連續(xù)的波形??刂谱?781558155定時器工作方式與定時器工作方式與T/OUTT/OUT波形波形M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0計數(shù)器高8位(101B)計數(shù)器低8位(100B)1個計數(shù)周期T T/INM2M1

52、=00時 T/OUTM2M1=01時 T/OUTM2M1=10時 T/OUTM2M1=11時 T/OUT思考題:哪種工作方式可以使8155完成1/n分頻器的功能? 這種分頻器與普通數(shù)字電路中的“計數(shù)器分頻”有何不同 ?(返回)785,8155應用與編程舉例 充分利用8155的內部資源可以簡化單片機系統(tǒng)的設計。 無論是8155或其它外圍電路與MCS-51的連接可分為兩種方式:最小化連接; 按照外部RAM地址統(tǒng)一編址。 前者適用于較小的系統(tǒng),后者用于較復雜的系統(tǒng)。這里采用前者,目的是使大家掌握8155最基本的編程方法。 8155在I/O工作方式中我們選擇“通用I/O方式”為例。返回本節(jié)目錄7981

53、558155與與MCS-51MCS-51的最小化連接的最小化連接P2.7P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE/RD/WR/CEIO/M PAAD7AD6AD5 PBAD4AD3AD2 AD1 PCAD0 ALE T/OUT/RD/WR T/INMCS-51 8155P2.7-P2.0P0.7-P0.0地址選擇01111110000000007E00HRAM256存儲單元01111110111111117EFFH01111111000000007F00H命令寄存器01111111000000017F01HPA口01111111000000107F02HP

54、B口01111111000000117F03HPC口01111111000001007F04H計數(shù)器低8位01111111000001017F05H計數(shù)器高8位最小系統(tǒng)對8155內部各寄存器的地址分配80設定:PA口輸入,PB口輸出,輸入脈沖進行16分頻。ORG 1000HSTRAT: MOV DPTR,#7F04H;指向定時器低8位MOV A,#10H;計數(shù)初值16MOVX DPTR,A;裝入初值INC DPTR;指向定時器高8位MOV A,#40H;設定為連續(xù)方波MOVX DPTR,A;裝入定時器高8位MOV DPTR,#7F00H;指向命令口MOV A, # 0C2H;控制字:(A輸入B

55、輸出啟動定時器)MOVX DPTR,A;裝入控制字并啟動定時器INPUT: MOV DPTR,# 7F01H;指向PA口MOVX A,DPTR;從PA口輸入數(shù)據(jù)OUT:MOV DPTR,# 7F02H;指向PB口MOVX DPTR,A;從PB口輸出數(shù)據(jù)END【思考題】:如何將PA口輸入的數(shù)據(jù)存到8155內部RAM的某一單元?控制字81MOVX DPTR,A或MOVX A,DPTR的時序S1S2S6S5S4S3S1S2S6S5S4S3ALEPsenA15-A8(PC)A15-A8(DPH)A7-A0指令(DPL)數(shù)據(jù)RDP2口P0口選中外部RAM第一個階段:取 MOVX 指令第二階段:執(zhí)行MOV

56、X(從外部讀取數(shù)據(jù))返回上一次824.2.2 使用8255擴展I/O端口1.8255的內部結構和引腳功能2.8255的工作模式3.8255的控制字和狀態(tài)字4.8255A應用舉例繼續(xù)831,8255的內部結構和引腳功能(一):內部結構由四部分組成1,A口、B口和C口; 2,A、B組控制器; 3,雙向數(shù)據(jù)緩沖器; 4,讀寫控制器。結構圖848255的內部結構圖A口C口高四位B口C口低四位A組控制器B組控制器數(shù)據(jù)緩沖器讀寫控制邏輯PA7-0PB7-0PC7-4PC3-0D7-D0/RD/WRA0A1RESET/CS返回前一次C口85 A口:8位數(shù)據(jù)輸出緩沖/鎖存,輸入緩沖/鎖存的I/O端口。 B、C

57、口:8位數(shù)據(jù)輸出緩沖/鎖存,輸入緩沖的I/O端口。 A組控制器、B組控制器:接收CPU發(fā)送的控制字并確定8255的工作模式。其中:A 組控制器: 控制A口和C口的高4位; B 組控制器: 控制B口和C口的低4位。結構圖86 數(shù)據(jù)緩沖器:傳送CPU與8255之間的8位數(shù)據(jù)和控制字。 讀寫控制邏輯:接收CPU送來的讀(/RD),寫(/WR)和片選(/CS)等信號,用于對8255的讀寫控制。結構圖8740腳DIP封裝,按照功能劃分為:1.數(shù)據(jù)總線2.控制總線3.并行I/O總線4.電源線結構圖(二)引腳功能881.數(shù)據(jù)總線(D7D0):CPU與8255之間的接口,是接收CPU的命令或與CPU進行數(shù)據(jù)交

58、換的雙向傳輸總線。 內部與數(shù)據(jù)緩沖器連接,外部應與單片機的P0口連接。2.控制總線: RESET: 復位線,輸入信號、高電平有效; /CS: 輸入的片選信號,低電平有效; /RD、/WR:輸入的讀寫命令線,低電平有效; A0、A1: A、B、C口和控制寄存器的地址線。結構圖898255內部寄存器的地址定義A1、A0寄 存 器0 0A口寄存器0 1B口寄存器1 0C口寄存器1 1控制寄存器結構圖903.并行I/O總線(24條):PA7PA0:A口。雙向I/O總線,可設定為輸入、輸出或雙向方式;PB7PB0:B口。雙向I/O總線,可設定為輸入或輸出方式;PC7PC0:C口。雙向I/O總線,具有兩種

59、模式:傳送I/O的數(shù)據(jù)模式(模式0);作為A、B口的控制/狀態(tài)信息口(模式1,2)。4.電源線:Vcc 和 GND91(三)8255與89C51的“總線連接”結構示意圖89C51 P0 ALECP 8255 PAPC/CE A1 PBA0 D7D08674LS3738使用MOVX 指令訪問8255。數(shù)據(jù)、命令都是通過P0口在指令的第二個機器周期進行傳送。譯碼器C0HC3H928255控制信號功能、地址表(設/CS=C0H)/CS=C0C3H(1100 0000)A1 A0/RD/WR端口地址端口功能00 001C0HA口讀A口00 010C0H寫A口00 101C1HB口讀B口00 110C1

60、H寫B(tài)口01 001C2HC口讀C口01 010C2H寫C口01 110C3H控制口寫控制字1X XXXXX未選中返回本節(jié)目錄轉8255框圖返回上一次932,8255的工作模式8255A有三種工作模式:1.模式0。通用I/O模式(A、B和C口都具備);2.模式1。選通I/O模式(A、B口做I/O、C作A、B口聯(lián)絡線);3.模式2。選通I/O模式(A口為雙向I/O、C作A口控制線)用戶可以通過“8255A方式控制字”來設定所需的工作模式。轉控制字94模式0:通用I/O模式 A、B和從C口都具備的I/O功能。根據(jù)實際硬件連接需要,通過控制字設定A、B和C口的各自I/O方向即可; 用于快速的“同步傳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論