購買設(shè)計(jì)請(qǐng)充值后下載,,資源目錄下的文件所見即所得,都可以點(diǎn)開預(yù)覽,,資料完整,充值下載就能得到。。?!咀ⅰ浚篸wg后綴為CAD圖,doc,docx為WORD文檔,有不明白之處,可咨詢QQ:1304139763
單片機(jī) 單片機(jī)即單片微型計(jì)算機(jī) 是把中央處理器 存儲(chǔ)器 定時(shí) 計(jì)數(shù)器 輸入 輸出接口都集成在一塊集成電路芯片上的微型計(jì)算機(jī) 與應(yīng)用在個(gè)人電腦中的 通用型微處理器相比 它更強(qiáng)調(diào)自供應(yīng) 不用外接硬件 和節(jié)約成本 它的最 大優(yōu)點(diǎn)是體積小 可放在儀表內(nèi)部 但存儲(chǔ)量小 輸入輸出接口簡(jiǎn)單 功能較 低 由于其發(fā)展非常迅速 舊的單片機(jī)的定義已不能滿足 所以在很多應(yīng)用場(chǎng) 合被稱為范圍更廣的微控制器 但是目前在中國(guó)大陸仍多沿用 單片機(jī) 的稱呼 絕大多數(shù)現(xiàn)在的單片機(jī)都是基于馮 諾伊曼結(jié)構(gòu)的 這種結(jié)構(gòu)清楚地定義了 嵌入式系統(tǒng)所必需的四個(gè)基本部分 一個(gè)中央處理器核心 程序存儲(chǔ)器 只讀 存儲(chǔ)器或者閃存 數(shù)據(jù)存儲(chǔ)器 隨機(jī)存儲(chǔ)器 一個(gè)或者更多的定時(shí) 計(jì)時(shí)器 還有用來與外圍設(shè)備以及擴(kuò)展資源進(jìn)行通信的輸入 輸出端口 所有這些都被 集成在單個(gè)集成電路芯片上 說單片機(jī)與通用型中央處理單元芯片不同是因?yàn)?前者一般很容易配合最小型的外部支持芯片制成工作計(jì)算機(jī) 這樣就可以很容 易的把單片機(jī)系統(tǒng)植入裝置內(nèi)部來控制裝置了 近年來為了在指令和數(shù)據(jù)上使 用不同的字寬 并提高處理器流水線速度 哈佛結(jié)構(gòu)在微控制器和 DSP 也逐漸 得到了廣泛的應(yīng)用 傳統(tǒng)的微處理器是不允許這么做的 它要完成單片機(jī)的工作 就必須連接 一些其他芯片 比如說 因?yàn)槠蠜]有數(shù)據(jù)存儲(chǔ)器 就必須要添加一些 RAM 的存儲(chǔ)芯片 雖然所添加存儲(chǔ)器的容量很靈活 但是至少還是要添加 另外還 需要添加很多連線來傳遞芯片之間的數(shù)據(jù) 比如 一個(gè)典型的微控制器只需要 一個(gè)時(shí)鐘發(fā)生器和很少的 RAM 和 ROM 或者 EPROM E2PROM 就可以在軟 件和晶振下工作了 同時(shí) 微控制器具有豐富的輸入輸出設(shè)備 像是模擬數(shù)字 轉(zhuǎn)換 ADC 定時(shí)器 串口或者其他串行通訊接口 比如 I2C 串行外圍接口 SPI 控制器局域網(wǎng) 通常 這些繼承在內(nèi)部的設(shè)備可以通過特殊的指令來操 作 一些現(xiàn)代的微控制器支持一些內(nèi)建的高級(jí)編程語言 比如 BASIC 語言 早期的單片機(jī)都是 8 位或 4 位的 其中最成功的是 INTEL 的 8031 因?yàn)?簡(jiǎn)單可靠而性能不錯(cuò)獲得了很大的好評(píng) 此后在 8031 上發(fā)展出了 MCS51 系列 單片機(jī)系統(tǒng) 基于這一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用 隨著工業(yè)控 制領(lǐng)域要求的提高 開始出現(xiàn)了 16 位單片機(jī) 但因?yàn)樾詢r(jià)比不理想并未得到很 廣泛的應(yīng)用 90 年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展 單片機(jī)技術(shù)得到了巨大的提 高 隨著 INTEL i960 系列特別是后來的 ARM 系列的廣泛應(yīng)用 32 位單片機(jī)迅 速取代 16 位單片機(jī)的高端地位 并且進(jìn)入主流市場(chǎng) 而傳統(tǒng)的 8 位單片機(jī)的性 能也得到了飛速提高 處理能力比起 80 年代提高了數(shù)百倍 目前 高端的 32 位單片機(jī)主頻已經(jīng)超過 300MHz 性能直追 90 年代中期的專用處理器 而普通 的型 號(hào)出廠價(jià)格跌落至 1 美元 最高端的型號(hào)也只有 10 美元 當(dāng)代單片機(jī)系統(tǒng)已 經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用 大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在 全系列的單片機(jī)上 而在作為掌上電腦和手機(jī)核心處理的高端單片機(jī)甚至可以 直接使用專用的 Windows 和 Linux 操作系統(tǒng) 單片機(jī)比專用處理器最適合應(yīng)用于嵌入式系統(tǒng) 因此它得到了最多的應(yīng)用 事實(shí)上單片機(jī)是世界上數(shù)量最多的計(jì)算機(jī) 現(xiàn)代人類生活中所用的幾乎每件電 子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī) 手機(jī) 電話 計(jì)算器 家用電器 電子玩 具 掌上電腦以及鼠標(biāo)等電腦配件中都配有 1 2 部單片機(jī) 而個(gè)人電腦中也會(huì) 有為數(shù)不少的單片機(jī)在工作 汽車上一般配備 40 多部單片機(jī) 復(fù)雜的工業(yè)控制 系統(tǒng)上甚至可能有數(shù)百臺(tái)單片機(jī)在同時(shí)工作 單片機(jī)的數(shù)量不僅遠(yuǎn)超過 PC 機(jī) 和其他計(jì)算的綜合 甚至比人類的數(shù)量還要多 單片機(jī)學(xué)習(xí)應(yīng)中的五大重要部分 一 總線 我們知道 一個(gè)電路總是由元器件通過電線連接而成的 在模 擬電路中 連線并不成為一個(gè)問題 因?yàn)楦髌骷g一般是串行關(guān)系 各器件之 間的連線并不很多 但計(jì)算機(jī)電路卻不一樣 它是以微處理器為核心 各器件 都要與微處理器相連 各器件之間的工作必須相互協(xié)調(diào) 所以就需要的連線就 很多了 如果仍如同模擬電路一樣 在各微處理器和各器件間單獨(dú)連線 則線 的數(shù)量將多得驚人 所以在微處理機(jī)中引入了總線的概念 各個(gè)器件共同享用 連線 所有器件的 8 根數(shù)據(jù)線全部接到 8 根公用的線上 即相當(dāng)于各個(gè)器件并 聯(lián)起來 但僅這樣還不行 如果有兩個(gè)器件同時(shí)送出數(shù)據(jù) 一個(gè)為 0 一個(gè)為 1 那么 接收方接收到的究竟是什么呢 這種情況是不允許的 所以要通過控 制線進(jìn)行控制 使器件分時(shí)工作 任何時(shí)候只能有一個(gè)器件發(fā)送數(shù)據(jù) 可以有 多個(gè)器件同時(shí)接收 器件的數(shù)據(jù)線也就被稱為數(shù)據(jù)總線 器件所有的控制線 被稱為控制總線 在單片機(jī)內(nèi)部或者外部存儲(chǔ)器及其它器件中有存儲(chǔ)單元 這 些存儲(chǔ)單元要被分配地址 才能使用 分配地址當(dāng)然也是以電信號(hào)的形式給出 的 由于存儲(chǔ)單元比較多 所以 用于地址分配的線也較多 這些線被稱為地 址總線 二 數(shù)據(jù) 地址 指令 之所以將這三者放在一起 是因?yàn)檫@三者的本質(zhì) 都是一樣的 數(shù)字 或者說都是一串 0 和 1 組成的序列 換言之 地址 指 令也都是數(shù)據(jù) 指令 由單片機(jī)芯片的設(shè)計(jì)者規(guī)定的一種數(shù)字 它與我們常用 的指令助記符有著嚴(yán)格的一一對(duì)應(yīng)關(guān)系 不可以由單片機(jī)的開發(fā)者更改 地址 是尋找單片機(jī)內(nèi)部 外部的存儲(chǔ)單元 輸入輸出口的依據(jù) 內(nèi)部單元的地址值 已由芯片設(shè)計(jì)者規(guī)定好 不可更改 外部的單元可以由單片機(jī)開發(fā)者自行決定 但有一些地址單元是一定要有的 詳見程序的執(zhí)行過程 數(shù)據(jù) 這是由微處 理機(jī)處理的對(duì)象 在各種不同的應(yīng)用電路中各不相同 一般而言 被處理的數(shù) 據(jù)可能有這么 幾種情況 1 地址 如 MOV DPTR 1000H 即地址 1000H 送入 DPTR 2 方式字或控制字 如 MOV TMOD 3 3 即是控制字 3 常數(shù) 如 MOV TH0 10H 10H 即定時(shí)常數(shù) 4 實(shí)際輸出值 如 P1 口接彩燈 要燈全亮 則執(zhí)行指令 MOV P1 0FFH 要燈全暗 則執(zhí)行指令 MOV P1 00H 這里 0FFH 和 00H 都是實(shí)際輸出值 又如用于 LED 的字形碼 也是實(shí)際輸出的值 理解了地址 指令的本質(zhì) 就不難理解程序運(yùn)行過程中為什么會(huì)跑飛 會(huì) 把數(shù)據(jù)當(dāng)成指令來執(zhí)行了 三 P0 口 P2 口和 P3 的第二功能用法 初學(xué)時(shí)往往對(duì) P0 口 P2 口和 P3 口的第二功能用法迷惑不解 認(rèn)為第二功能和原功能之間要有一個(gè)切換的過程 或者說要有一條指令 事實(shí)上 各端口的第二功能完全是自動(dòng)的 不需要用指 令來轉(zhuǎn)換 如 P3 6 P3 7 分別是 WR RD 信號(hào) 當(dāng)微片理機(jī)外接 RAM 或有外 部 I O 口時(shí) 它們被用作第二功能 不能作為通用 I O 口使用 只要一微處理 機(jī)一執(zhí)行到 MOVX 指令 就會(huì)有相應(yīng)的信號(hào)從 P3 6 或 P3 7 送出 不需要事先 用指令說明 事實(shí)上 不能作為通用 I O 口使用 也并不是 不能 而是 使用者 不會(huì) 將其作為通用 I O 口使用 你完全可以在指令中按排一條 SETB P3 7 的指 令 并且當(dāng)單片機(jī)執(zhí)行到這條指令時(shí) 也會(huì)使 P3 7 變?yōu)楦唠娖?但使用者不會(huì) 這么去做 因?yàn)檫@通常這會(huì)導(dǎo)致系統(tǒng)的崩潰 四 程序的執(zhí)行過程 單片機(jī)在通電復(fù)位后 8051 內(nèi)的程序計(jì)數(shù)器 PC 中的值為 0000 所以程序總是從 0000 單元開始執(zhí)行 也就是說 在系統(tǒng)的 ROM 中一定要存在 0000 這個(gè)單元 并且在 0000 單元中存放的一定是一條指 令 五 堆棧 堆棧是一個(gè)區(qū)域 是用來存放數(shù)據(jù)的 這個(gè)區(qū)域本身沒有任何 特殊之處 就是內(nèi)部 RAM 的一部份 特殊的是它存放和取用數(shù)據(jù)的方式 即 所謂的 先進(jìn)后出 后進(jìn)先出 并且堆棧有特殊的數(shù)據(jù)傳輸指令 即 PUSH 和 POP 有一個(gè)特殊的專為其服務(wù)的單元 即堆棧指針 SP 每當(dāng)執(zhí)一次 PUSH 指令時(shí) SP 就 在原值的基礎(chǔ)上 自動(dòng)加 1 每當(dāng)執(zhí)行一次 POP 指令 SP 就 在原值的基礎(chǔ)上 自動(dòng)減 1 由于 SP 中的值可以用指令加以改變 所以只要 在程序開始階段更改了 SP 的值 就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中 如 在程序開始時(shí) 用一條 MOV SP 5FH 指令 就時(shí)把堆棧設(shè)置在從內(nèi)存單元 60H 開始的單元中 一般程序的開頭總有這么一條設(shè)置堆棧指針的指令 因?yàn)?開機(jī)時(shí) SP 的初始值為 07H 這樣就使堆棧從 08H 單元開始往后 而 08H 到 1FH 這個(gè)區(qū)域正是 8031 的第二 三 四工作寄存器區(qū) 經(jīng)常要被使用 這會(huì)造 成數(shù)據(jù)的混亂 不同作者編寫程序時(shí) 初始化堆棧指令也不完全相同 這是作 者的習(xí)慣問題 當(dāng)設(shè)置好堆 棧區(qū)后 并不意味著該區(qū)域成為一種專用內(nèi)存 它還是可以象普通內(nèi)存區(qū)域一 樣使用 只是一般情況下編程者不會(huì)把它當(dāng)成普通內(nèi)存用