吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度解讀MCS51單片機時序分析及系統擴展

電子設計 ? 來源:微型機與應用2013年第20期 ? 作者:微型機與應用201 ? 2021-02-20 14:32 ? 次閱讀

作者:周姝穎,林凡強,何凌霄,富 饒

AT89C51單片機ATMEL公司設計生產的與MCS51內核兼容的51系列單片機之一,該系列單片機以其優越的性能和成熟的技術在控制和自動化應用領域占有著較大的市場;除此以外,51單片機有著計算機系統中經典的總線結構,即:數據總線、地址總線和控制總線。

在實際應用中,單片機的4個端口中,P0口通常是作為地址/數據總線復用;P2口作為高8位地址總線,高8位地址線在有多余I/O的情況下,配合外部的組合邏輯電路一起構成外部總線譯碼使用;P3口通常作為第二功能使用,則提供給用戶使用的I/O僅僅是P1口。在多數應用場合下是不能滿足要求的,因此51單片機系統就或多或少地需要進行系統擴展。另外,由于其內部的RAM只有128 B,在使用C語言進行程序設計時顯得比較不足,必要時需進行外部RAM擴展,方法與擴展外部I/O相同。實際應用中,使用總線方法可以較容易地實現51單片機外部的I/O、RAM、LCD、ADCDAC等等外設的操作,以彌補51單片機片內外設的不足。

1 MCS51單片機系統的四要素

1.1 51單片機系統的啟動

MCS51單片機上電正常工作,需具備以下四點:

(1)電源。AT89S51系列單片機的第40引腳為VCC,外加電壓5 V工作電壓,另外,單片機的第20引腳是GND,須連接到系統的地。

(2)復位電路。任何處理器都需要在上電時進行自身的復位,51單片機也不例外,上電復位電路是較為簡單可靠的電路之一,不可缺少。復位電路如圖1所示,該圖為帶上電復位及手動復位兩種結合,二極管D1在系統瞬間掉電能幫助系統快速放電,使系統重新復位,以提高系統的可靠性。

o4YBAGAwq7qAfMtUAAAzHRRJTW4576.png

(3)振蕩電路。如圖2所示,51單片機的第18腳和第19腳為兩個外接振蕩的引腳,是內部振蕩方式的典型電路, 外接的33 pF電容可以提高振蕩的穩定性。

o4YBAGAwq9mAOUttAAAoqY9JoeE383.png

(4)EA。AT89S51單片機內部有4 KB的程序存儲器,不需要外部的ROM空間,如果不夠可以選擇AT89S52或其他內部存儲器更大的單片機,所以接高電平,即:不使用外部ROM,只使用內部的存儲器。

1.2 MCS51單片機系統的存儲器結構

MCS51單片機的存儲器分為片內和片外兩個部分,即:內部的ROM/RAM和外部的ROM/RAM,編寫程序時必須清楚每一個存儲單元的用途和功能,這樣才能更好地進行系統存儲器資源的分配。51單片機的另一個特點是外部的RAM空間和I/O空間共用外部的64 KB空間,因為外部總線的地址線為16 bit,所以能夠訪問的最大地址空間為64 KB。51單片機系統在進行外部擴展時,所有外設的地址都分布在這64 KB的地址范圍內,對于RAM來說,地址是連續的;而對于LCD、ADC等等部件,地址是不連續的。

1.3 51單片機的中斷系統

AT89S51單片機為用戶提供了可屏蔽中斷源有5個,分別是:外部中斷0(入口地址為:0003H)、外部中斷1(入口地址為:000BH)、定時器0(入口地址為:0013H)、定時器1(入口地址為:001BH)和串行中斷(入口地址為:0023H);不可屏蔽中斷為復位(入口地址為:0000H)。51系列單片機的其他型號所提供的中斷個數不盡相同,所有的單片機都包括上述這6個最基本的中斷源,不同公司生產的51內核單片機中斷源上有略微的區別。

1.4 51單片機的總線結構

由于51單片機真正可以作為雙向I/O口應用的只有P1口,假設系統需要擴展外部的鍵盤,I/O就所剩無幾了。因此,MCS51單片機應用系統設計都不可避免地需要進行系統的擴展,而I/O的擴展則是與系統總線緊密結合的。由于MCS51單片機的外部RAM和I/O口是統一編址的,因此,可以把單片機外部64 KB RAM空間的一部分作為擴展外圍I/O口的地址空間。這樣,單片機系統就可以把額外的RAM空間用來進行I/O空間的擴展,使用總線方式對外設進行訪問[1]。

本文重點之一是介紹采用具有三態緩沖的74HC244芯片和輸出帶鎖存的74HC573芯片來擴展一個4×4的小鍵盤,緩沖器和鎖存器分別占用外部I/O空間中的兩個地址。而無論是訪問外部的RAM空間還是I/O空間,在進行匯編語言編程時都是通過MOVX指令來實現讀寫的。在使用C語音進行單片機程序設計時,雖然語言改變了,但是C語言程序反匯編后,訪問外部仍然使用的是MOVX指令。因此,分析過程及使用中,都是以匯編語言為例進行擴展設計的。

2 MOVX指令的執行過程

MOVX指令是51單片機訪問片外外設的唯一指令,與外部RAM或I/O空間進行數據的讀寫或者ADC和DAC等都需要使用這條指令。MCS51單片機外部RAM的地址空間為64 KB,地址總線為16 bit,訪問外設可執行4條匯編指令:(1)MOVX A,@DPTR;(2)MOVX @DPTR, A;(3)MOVX A, @RI; (4)MOVX @RI, A。其中DPTR為16 bit地址寄存器,地址高8 bit存于DPH,地址低8 bit存于DPL,Ri(i=0,1)是8 bit寄存器,作為地址指針時僅存低8 bit地址。

MCS51執行上述指令時分為兩個階段:首先,是從程序存儲器中取出指令代碼,并進行譯碼;然后,執行對外設數據的讀寫操作。在這兩個階段中,P0口在指令執行過程中是分時復用口,指令前半個周期,低8 bit地址由地址鎖存允許信號ALE控制一個8 bit的鎖存器輸出,接著輸出8 bit數據至外部數據總線,P2口在此過程中一直輸出高8 bit地址。

由上所述,假設使用R0和R1對外設的進行間接尋址方式的訪問,那么可看作是一種頁面尋址,將外部的64 KB空間分成了256頁,每一頁有256 B地址。寄存器P2的當前值決定了當前的頁地址。MCS51單片機在復位時,P2端口寄存器數值為FFH,若程序運行中沒有改變P2中的值,則R0和R1只能對FF00H~FFFFH范圍的外部的間接尋址,即對第255個頁面進行訪問。往外部空間寫1 B時序圖如圖3所示。

pIYBAGAwq-6AcY9oAACxJHHk4Ok433.png

因此,使用DPTR作為數據指針或者是RI,都可以實現對外部64 KB空間的訪問。而指令都是使用MOVX,可見MCS51單片機系統中,MOVX指令有著非常重要的作用。

3 時序分析及系統擴展

MCS51單片機的外部總線時序擴展主要包括外部的譯碼電路、鎖存電路等組合邏輯電路,形成整個系統的外部總線,即:數據總線、地址總線、控制總線。

譯碼電路采用常用的74系列3/8線譯碼器74LS138,該芯片的A、B、C分別接地址的最高3位,即A13、A14、A15,譯碼電路如圖4所示;138的使能端E3接高電平,E1和E2接的是EN_138,該信號是由單片機系統的讀寫信號經過組合得來的,當系統對外部的總線進行讀寫時,讀/寫信號其中一個為低電平,使得EN_138控制信號輸出為一個低電平脈沖信號,此時,3/8線譯碼器的輸出Y0~Y7其中一個也會輸出一個低電平脈沖,用此脈沖就可以有效地對外部設備進行片選。邏輯電路如圖5所示。

通過這樣的組合后就可以在總線上數據有效的時間內,通過74LS138的Y0~Y7控制外設的片選,實現有效的數據讀寫。尤其是在擴展外部I/O口使用的74系列的邏輯電路芯片時,這個方法尤為重要,因為這類芯片沒有外部的讀/寫信號,只能通過單片機外部的組合邏輯電路輸出一個讀/寫信號寬度的脈沖用以控制此類I/O芯片。若外設信號控制信號為低電平脈沖,則剛好與3/8線譯碼器的輸出匹配,此時直接相連即可;若外設控制信號需要的是高脈沖信號,則必須在3/8線譯碼器的輸出外面再加一級反相器電路,常用的反相器為74LS04。

以寫數據往外設為例,得到的時序流程如圖6所示。讀數據的時序與寫數據一致,只是將寫信號換成讀信號。

o4YBAGAwrGmAB0M8AAAzmE-aN7M470.png

4 I/O擴展實例

4.1 行列鍵盤擴展

如前所述,51單片機供用戶使用的I/O只有P1端口的8個引腳,遠不能滿足系統的需求,這樣就必須通過總線的方法進行外部I/O擴展。在這里需要注意的是,51單片機系統外部I/O空間是和外部的RAM空間共用外部64 KB空間的。使用74LS573和74LS244分別進行行列的擴展,其中573鎖存行信號,244讀回數據,擴展了端口,實現了4×4的矩陣式行列掃描鍵盤,如圖7所示。在此程序略,主要介紹擴展的方法。

pIYBAGAwrIiASGxeAADGBes2rys372.png

圖8所示為4×4矩陣鍵盤連接圖。

o4YBAGAwrKSABJRHAACeUiN_cfk331.png

4.2 大于64 KB空間的擴展

MCS51單片機是8位的微控制器,外部地址總線共16 bit地址,能訪問的空間共為64 KB,但是如果系統中所有的外設加起來需要的地址空間超過64 KB時(如128 KB、256 KB的RAM或者需要更多的I/O空間等情況出現)就需要使用P1口或者是P3口不使用的I/O口進行線選法譯碼或者譯碼法進行額外的擴展來實現。

這種情況在單片機系統中經常會遇到,本文中介紹一種基于分頁原理的擴展方法。51單片機系統雖然只有16條地址總線,在系統需要較大的RAM或I/O空間時,可以將系統中空余的I/O口作為額外的外部地址使用,例如:使用P1.0時進行線選法譯碼時,就可以擴展外部的128 KB空間。當P1.0為低電平時,選擇第1個64 KB空間;當P1.0為高電平時, 選擇第2個64 KB空間。

以此類推,假設有更多的空間需求時,還可使用專用譯碼器進行譯碼,來進行更多的選擇
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638579
  • OPPO
    +關注

    關注

    20

    文章

    5243

    瀏覽量

    79387
  • MCS51單片機
    +關注

    關注

    0

    文章

    24

    瀏覽量

    14728
  • 5G
    5G
    +關注

    關注

    1356

    文章

    48506

    瀏覽量

    566024
收藏 人收藏

    評論

    相關推薦

    51單片機pwm和spwm

    51單片機pwm
    發表于 01-08 15:54 ?2次下載

    51單片機核心板原理圖

    51單片機核心板原理圖
    發表于 12-16 11:30 ?3次下載

    51單片機中為什么很少出現printf的身影

    51單片機中為什么很少出現 printf 的身影?是用不了嗎? 不是的,51單片機可以用 printf,只是不建議使用。 平時我們在操作系統
    的頭像 發表于 12-03 10:46 ?536次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>中為什么很少出現printf的身影

    基于51單片機的手動數字時鐘

    眾多嵌入式控制應用系統提供靈活、高效的解決方案。本設計所使用的芯片可兼容以下所有的51系列單片機(包括AT系列和STC系列)。資料內容仿真實現(protues8.7) 本設計利
    的頭像 發表于 10-22 14:12 ?300次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的手動數字時鐘

    基于51單片機的停車場管理系統

    設置現有車輛數及剩余車位數;(4)車位滿后將報警提示。仿真演示視頻:基于51單片機的停車場管理系統-仿真視頻設計介紹51單片機簡介
    的頭像 發表于 10-22 14:12 ?331次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的停車場管理<b class='flag-5'>系統</b>

    基于51單片機的遙控開關仿真(雙機通信)

    具體實現功能由51單片機+獨立按鍵+繼電器+LED燈等構成。實現功能:(1)本仿真設計的是一款遙控開關,采用51單片機進行遙控器與主機的設計;(2)遙控器由
    的頭像 發表于 10-22 14:12 ?394次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的遙控開關仿真(雙機通信)

    基于51單片機的LED點陣滾動顯示系統

    花樣;(4)可以利用“點陣LED字模生成工具”生成自己想要顯示的字符。仿真演示視頻:基于51單片機的LED點陣滾動顯示系統-仿真視頻設計介紹51單片
    的頭像 發表于 10-22 14:12 ?292次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的LED點陣滾動顯示<b class='flag-5'>系統</b>

    如何實現51單片機與PC機的串行通信

    51單片機與PC機的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC機進行數據交換。這種通信方式在嵌入式系統、工業控制、物聯網等領域有著廣泛的應用。以下是實現
    的頭像 發表于 10-21 11:35 ?1288次閱讀

    51單片機驅動

    電子發燒友網站提供《51單片機驅動.exe》資料免費下載
    發表于 09-20 11:46 ?5次下載

    51單片機晶振的問題總結

    電子發燒友網站提供《51單片機晶振的問題總結.doc》資料免費下載
    發表于 09-07 09:32 ?0次下載

    51單片機燒錄軟件怎么用

    準備工作 確保您已經安裝了51單片機燒錄軟件,如Keil、IAR等。 準備好51單片機開發板和燒錄器,如STC-ISP等。 確保您的計算機已經安裝了相應的驅動程序。 安裝燒錄軟件 從官
    的頭像 發表于 08-22 09:26 ?1499次閱讀

    國產單片機(MCU)崛起 —— 51系列

    一、51系列單片機的命名由來51系列單片機的命名由來與它的設計和開發歷史相關。這個系列的單片機主要由Intel的8051微控制器發展而來,后
    的頭像 發表于 08-14 08:39 ?2562次閱讀
    國產<b class='flag-5'>單片機</b>(MCU)崛起 —— <b class='flag-5'>51</b>系列

    51單片機復位電路電容怎么放電

    51單片機的復位電路中,電容的放電過程是實現復位功能的關鍵環節之一。以下是關于51單片機復位電路中電容放電的介紹: 放電過程 電容充電狀態 :在
    的頭像 發表于 08-06 10:52 ?793次閱讀

    基于51單片機時鐘溫度顯示設計

    本資源內容概要:? ? ? ?這是基于51單片機時鐘溫度顯示設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、proteus仿真圖。本資源適合人群
    發表于 06-25 10:17 ?0次下載

    基于51單片機時鐘SHT10濕度采集顯示定時報警設計

    本資源內容概要:? ? ? ?這是基于51單片機時鐘SHT10濕度采集顯示定時報警設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、proteus
    發表于 06-25 10:14 ?0次下載
    百乐彩博彩| 博之道百家乐官网的玩法技巧和规则| 百家乐开户百家乐技巧| bet365信誉好吗| 百家乐官网真人游戏赌场娱乐网规则 | 老虎机下载| 百盛百家乐官网软件| 天猫百家乐娱乐城| 百家乐官网断缆赢钱| 百家乐娱乐城地址| 百家乐试玩| 百家乐网上最好网站| 网络足球投注| 澳门百家乐指数| bet365贴吧| 总格24名人| 易胜国际| 哪个百家乐投注比较好| 电白县| 百家乐大西洋城| 百家乐官网棋牌外挂| 博彩百家乐画谜网| 百家乐官网最保险的方法| 全景网百家乐的玩法技巧和规则 | 历史| 免费百家乐缩水| 玩百家乐官网有几种公式| 大发888wofacai官网| 缅甸百家乐官网的玩法技巧和规则| 网上棋牌游戏赚钱| 皇冠网百家乐赢钱| 百家乐官网预测和局| 真人百家乐怎么玩| 顶尖百家乐官网的玩法技巧和规则 | 梦幻城百家乐的玩法技巧和规则| 里尼的百家乐官网策略| 大发888娱乐在线客服| 风水24山图片| 百家乐官网是哪个国家| 大发888网页打不开| 网上百家乐官网指|