摘要:哈爾濱工業大學張毅剛教授主編的《單片機原理與應用》一書,由高等教育出版社出版,在全國發行量較大,影響面較廣。本文對該書的例9-7內容進行了分析討論,指出了該例題的錯誤所在,并進行了更正,在Proteus軟件平臺和實驗平臺上對更正前后的內容分別進行了仿真驗證。
關鍵詞:單片機;教學;Proteus仿真;高等教育
《單片機原理及應用》C51編程+Proteus仿真一書,哈爾濱工業大學教授張毅剛老師主編,由高等教育出版社出版。該書內容安排合理,涵蓋了單片機的關鍵知識點,例題簡潔明了。在全國高校應用范圍較廣。正因為如此,該書內容的正確性,對大學生及其他單片機初學者影響較大,有必要對部分錯誤內容進行探討。本文對該書的例9-7的內容進行了分析討論,并對相關內容進行了更正。
一、例9-7內容原文引述見教材[1]
二、有關內容的分析討論與更正
該例題要求把SO-S7的開關狀態顯示在LEDO-LED7的8個發光二極管上。內容簡單明了,講述了如何將單片機訪問外部數據存儲器的方法應用于擴展外部并行I/O口上,包括硬件連接及軟件編程。但是該例中有兩個錯誤,第一個錯誤出現在該例題的配圖9-30中控制74LS373的鎖存信號上:與G端相連的“或門”應該改成“或非門”;第二個錯誤是為該硬件配備的端口地址0xf7ff;應改為峨蛛斥任。本以為是印刷錯誤,但見該書新版本仍然保持原理的錯誤狀態,覺得有必要討論更正。
(一)芯片74LS373功能簡介及控制信號分析
74LS373是一款常用的地址鎖存器芯片,由八個并行的、帶三態緩沖輸出的D觸發器構成。G為數據打入端:當G為“1”時,鎖存器輸出狀態(1Q~8Q)同輸入狀態(1D~8D);當G由“1”變“0”時,數據打入鎖存器中[2]。
因此要為G端提供一個高電平才能使輸入的數據輸入鎖存器,并在其下降沿將數據鎖存在內部,并通過OED控制三態門輸出。
(二)芯片74LS244功能簡介及控制信號分析
74LS244是TTL八同相三態緩沖器/線驅動器,不具備鎖存功能。在單片機系統中,常用作輸入輸出數據緩沖器。在選通時將輸入數據送到總線上,在非選通時對總線呈高阻態。其選通控制信號為低電平有效[3]。
(三)AT89S51訪問外部數據存儲器時序邏輯分析
如圖1所示為AT89S51單片機訪問外部數據存儲器時序圖[4]。結合教材[例9-7]可知,在執行軟件i=XBYTE[Oxfeff]語句過程中,就是對外部的74LS244進行讀操作。在此過程中,RR=0期間,與有效的地址P2.0=0的共同作用下,同RD相連的“或門”輸出為0,打通了74LS244的輸入與輸出,使8個開關的狀態送到了PO口上(此時PO口為數據總線),通過數據總線傳送到了內部變量i中。由于74LS244的控制端1G和2G是低電平有效,所以與RD相連的電平邏輯是正確的。
由于地址信號使用了P2.0,如果按照書上的地址編碼默認規則:不用的地址默認為1,那么該口的16位地址應該為1111111011111111,即Oxfeff。而不是書上的Oxf7ff。
根據AT89S51單片機寫外部數據存儲器時序圖,結合教材[例9-7]可知,在執行軟件XBYTE[Oxfeff]=i語句過程中,就是對外部的74LS373進行寫操作。在此過程中,WRY期間,與有效的地址P2.0=0的共同作用下,同WR相連的“或門”輸出為0,根據74LS373控制邏輯,無法將總線上的數據鎖存進74LS373中,因此無法點亮8個LED燈。只有將該處的或門改為“或非門”才符合74LS373的控制邏輯,才能使電路正常工作。
三、在Proteus平臺上仿真及硬件電路上的驗證
在Proteus仿真軟件平臺上[5]畫出教材[例9-7]的原理圖,并將與WR相連的“或門”改成“或非門”。在軟件方面,將端口地址修改為Oxfeff,并補全其他程序。從仿真結果看,完全實現了例題的要求:可以將8個開關的狀態穩定地顯示在8個LED上。將仿真所用的硬件和軟件在實驗箱上進行驗證得出與仿真同樣的結果。
如果按照書上的內容在Proteus上進行仿真,不修改端口地址,將無法實現相關功能。如果僅僅更正了端口地址,不修改硬件,那么8個開關的狀態偶爾能在8個LED上顯示,且非常不穩定。
四、結語
本文對發行量較大、影響較廣的一本高等學校單片機教材中的一個例題進行了分析討論,提出了修改辦法,并在軟件仿真平臺和硬件試驗箱上進行了驗證。供相關初學者參考。
參考文獻:
[1]張毅剛.單片機原理及應用-C51編程+Proteus仿真[M].北京:高等教育出版社,2016:269-270.
[2]http://m.clecfans.com/article/594067.html
[3]http://www5lhei.com/chip/344.html
[4]https://wenku_baidu.com/view/8393c5f0770bf78a652954c7.html
[5]林立,張俊亮.單片機原理及應用:基于Proteus和Keil C-第4版[M].北京:電子工業出版社,2018,1.
作者簡介:韓強(1964-),男,漢,安徽泗縣人,博士在讀,副教授/高級工程師,上海電機學院電氣學院教師。研究領域為信號與信息處理。