單片機原理與實踐PPT (本科)完整全套教學課件_第1頁
單片機原理與實踐PPT (本科)完整全套教學課件_第2頁
單片機原理與實踐PPT (本科)完整全套教學課件_第3頁
單片機原理與實踐PPT (本科)完整全套教學課件_第4頁
單片機原理與實踐PPT (本科)完整全套教學課件_第5頁
已閱讀5頁,還剩270頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章單片機概述**********學院

主講教師:單片機原理及實踐全套課件本章知識要點與能力要求知識目標1.理解和掌握單片機的概念;2.了解常用單片機型號及特點;3.了解單片機的應用領(lǐng)域。技能目標1.能根據(jù)應用需求,進行單片機選型;2.掌握單片機常用封裝方式。課程思政與職業(yè)素養(yǎng)1.場景引入:2020年新冠疫情期間大量使用的非接觸式測溫儀。通過硬件拆解講解產(chǎn)品背后的科技原理、人性化的設(shè)計理念、成本細節(jié)等,培養(yǎng)學生的交叉學科應用能力、綜合的工程素質(zhì),樹立“科技造福人類”思想。2.工程科技倫理:科技是把雙刃劍,工程技術(shù)人員不僅要掌握先進的技術(shù)手段,更要樹立正確的世界觀、人生觀、價值觀,從而讓技術(shù)更好地服務(wù)于人類;3.依托物聯(lián)網(wǎng)時代背景,關(guān)注社會熱點、學科前沿、產(chǎn)業(yè)發(fā)展趨勢,展望智能交通、智慧醫(yī)療、智慧農(nóng)業(yè)、智能工廠等的發(fā)展前景。1.1什么是單片機一.計算的黑匣子---抽象化的計算機

計算機,從字面上理解,是用于計算的機器,從這個意義上,我們可以把計算機看作一個黑匣子,用于對數(shù)據(jù)進行處理的機器,抽象出的模型如圖1-1所示:圖1-1計算機系統(tǒng)模型框圖

馮諾依曼計算機模型告訴我們,可以通過程序來控制計算機自動地完成數(shù)據(jù)處理工作,其模型如圖1-2所示:模型應用圖1-2程序控制計算機模型框圖一.計算的黑匣子---抽象化的計算機

馮諾依曼計算機模型將數(shù)據(jù)和程序同等對待,都存儲在存儲器中,將抽象的計算機功能延伸到具體的計算機組成框架,則由五大功能部件構(gòu)成:運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備,現(xiàn)代計算機將運算器和控制器集成在一起,通稱為CPU(CentralProcessingUnit,中央處理器),通用微型計算機組成示意圖如下圖所示。

現(xiàn)代計算機中的CPU不僅有運算器和控制器,還包含寄存器以及中斷系統(tǒng)等。CPU中的運算器負責算術(shù)運算和邏輯運算,其運算結(jié)果存放在CPU內(nèi)部的寄存器中,在控制單元CU的統(tǒng)一指揮下,由程序計數(shù)器PC不停地進行PC+1的操作,從而控制指令按一定的先后順序自動工作,完成取指令---分析指令---執(zhí)行指令的功能。二.程序如何控制硬件?---集成化的微型計算機MCU

針對控制領(lǐng)域,將微型計算機的五大功能組成部件(如CPU、存儲器等)進行功能刪減、縮小體積,將各部件集成在一片芯片上,就形成了單片微型計算機,簡稱單片機或MCU(MicrocontrollerUnit,微控制器)。MCU的組成架構(gòu)如下圖所示,一般由內(nèi)核、存儲器(ROM和RAM)、I/O外設(shè)接口、中斷系統(tǒng)等組成。MCU組成架構(gòu)示意圖二.程序如何控制硬件?---集成化的微型計算機MCUMCU中,外設(shè)與存儲器一般采用統(tǒng)一編址的方式,這樣就可以像操作存儲器一樣操作外設(shè),通過設(shè)置連接外設(shè)的I/O引腳中的寄存器實現(xiàn)對外部設(shè)備的控制,也即實現(xiàn)了程序控制外部設(shè)備的功能,如下圖所示。二.程序如何控制硬件?---集成化的微型計算機MCU

舉例:MCU控制LED亮滅

LED連接在MCU的P1端口的P1.4引腳上,如下圖所示。想要點亮該LED燈,只需要往該引腳P1.4所對應的特殊功能寄存器單元中寫入“0”,此時,P1.4引腳對外輸出低電平,這時電路中的+5V電源、限流電阻R、LED燈與P1.4引腳就構(gòu)成了一個電流通路,即實現(xiàn)了點亮LED燈。MCU通過I/O引腳控制LED燈連接示意圖程序代碼:P1^4=0;二.程序如何控制硬件?---集成化的微型計算機MCU微控制器是如何知道硬件和軟件功能是一一對應的呢?

---這就用到指令系統(tǒng),指令系統(tǒng)實現(xiàn)了硬件和軟件的統(tǒng)一。通過單片機指令系統(tǒng)中的操作指令,實現(xiàn)了程序與指令功能的對應與統(tǒng)一,通過寄存器實現(xiàn)了單片機對外部設(shè)備的控制,控制示意圖如下圖所示。程序通過寄存器實現(xiàn)對外部設(shè)備的控制示意圖為什么要使用單片機?---智能化控制的需求隨著單片機和集成電路的發(fā)展,以及對智能化控制的需求,智能電表逐步取代了傳統(tǒng)的機械電表。三.為什么要使用單片機?---智能化控制的需求1.2常見單片機型號51單片機命名規(guī)則MCS-51是Intel公司的單片機產(chǎn)品型號,20世紀80年代,Intel以專利轉(zhuǎn)讓等形式將8051內(nèi)核轉(zhuǎn)讓給了其他半導體廠商,許多公司如Atmel、Philips、Fujitsu、STC等都在80C51基礎(chǔ)上推出與80C51兼容的新型單片機,通稱為51系列單片機。STC89C52是STC公司的一款性價比高的完全兼容8051的8位單片機,具有8KB的ROM,512B大小的RAM,在存儲容量上遠超AT89C52,讀者可通過STC官網(wǎng)下載芯片數(shù)據(jù)手冊(datasheet)進行詳細對比(STC官網(wǎng):)。STC89C52系列單片機命名規(guī)則如圖所示。一.常見單片機型號廠商型號簡介TI德州儀器MSP430超低功耗,采用精簡指令集的16位單片機,廣泛應用于儀器儀表等領(lǐng)域。全國電子設(shè)計大賽指定用的單片機。提供多種具有超低功耗和集成式模擬和數(shù)字外設(shè)的16位MCU,適用于工業(yè)傳感和測量應用的超低功耗微控制器C2000針對高實時控制應用的32位微控制器,專用于控制電力電子產(chǎn)品,并在工業(yè)驅(qū)動器和電動汽車應用中提供高級數(shù)字信號處理及電源控制系統(tǒng)。Microchip微芯公司PIC8位MCU,同樣是基于精簡指令集設(shè)計的單片機,具有功耗低、驅(qū)動能力強、穩(wěn)定性好等特點,配有中文的Datasheet,漢化方面一流。PIC2416位的MCU,適合那些性能或存儲能力超過8位MCU的應用。特點:具有DSP性能的簡單性;精確的電機控制和無傳感器的磁場定向控制;具有功率因數(shù)校正功能的高效數(shù)字電源轉(zhuǎn)換;針對關(guān)鍵安全應用的強大功能安全性。SAM4E32位的MCU,具有低功耗、高性能,可運行多線程應用程序,適用于HMI應用程序的基于硬件的觸摸和圖形功能,具備安全固件升級、硬件隔離、密鑰保護等安全功能。AVR(Atmel)基于精簡指令集開發(fā)的一款高性能、低成本的8位單片機,具有芯片級安全功能,圖形化開發(fā)工具AtmelStudio。Atmel(愛特梅爾)于2016年被Microchip收購,代表性產(chǎn)品有AT89系列單片機和AT90系列單片機,AT89系列單片機將51內(nèi)核與Flash技術(shù)融合而成的AT89C/S51,得到廣泛的應用和市場認可;AT90系列為具備Flash的增強型RISC單片機,通常稱為AVR單片機。一.常見單片機型號廠商型號簡介NXP恩智浦K60種類齊全,涵蓋從8位到32位的各個系列的單片機,具有超強的抗干擾能力,具備更多的可選模塊及多種通訊模塊接口,主要應用在汽車電子領(lǐng)域,占據(jù)汽車電子領(lǐng)域的霸主地位。每年舉辦一次飛思卡爾大學生智能車競賽。Freescale飛思卡爾于2015年被恩智浦收購。LPC系列LPC800系列:基于ARMCortex-M0+內(nèi)核的通用微控制器,為超值型、入門級、8位MCU替代產(chǎn)品;K32L系列:基于ARMCortex-M4內(nèi)核的通用微控制器,針對低功耗應用進行了優(yōu)化,主打超低功耗;i.MX系列基于ARMCortex-A7/A8/A35/A53/A7和Cortex-M4/M7內(nèi)核,面向汽車、消費電子/工業(yè)多媒體和顯示應用的異構(gòu)多核和單核處理器。ST意法半導體STM8主要針對C51市場,為低性能8位MCU。產(chǎn)品系列有:STM8S:主流MCUSTM8L:超低功耗MCUSTM8AF、STM8AL:汽車級MCUSTM32為32位的高性能高性價比MCU,目前最火的MCU,基于ARMCortex-M內(nèi)核專門針對嵌入式應用設(shè)計的高性能芯片,具有一流的外設(shè)及超高的運算速度,是高性價比、低成本、低功耗產(chǎn)品的典型代表。產(chǎn)品系列有:主流MCU:STM32F0、F1、F3、G0、G4;高性能MCU:STM32F2、F4、F7、H7;低功耗MCU:STM32L0、L1、L4、L5;無線MCU:STM32WB一.常見單片機型號廠商型號簡介STC宏晶科技STC89C52高速、低功耗、超強抗干擾的新一代8051單片機51單片機,指令代碼完全兼容傳統(tǒng)8051,具有在應用編程,調(diào)試方便,下載燒錄軟件STC-ISP簡單方便好用。此外,還有STC12系列、STC15系列單片機。新唐科技N76E0038位的8051內(nèi)核單片機,N76E003為新唐高速1T8051單片機系列產(chǎn)品,具有自我喚醒、欠壓檢測等功能,主要應用于門禁系統(tǒng)/警報器、溫度傳感設(shè)備、藍牙音箱、電動車表頭、等領(lǐng)域。兆易創(chuàng)新GD32F103基于ArmCortex-M內(nèi)核和RISC-V內(nèi)核設(shè)計的32位通用微控制器。主要產(chǎn)品系列有:針對超值型、主流型和增強型應用需求:GD32F1、GD32F2系列,基于ARMCortex-M3內(nèi)核。GD32F3、GD32F4、GD32E103系列,基于ARMCortex-M4內(nèi)核。華大半導體HC32F003華大半導體有限公司(簡稱華大半導體)是中國電子信息產(chǎn)業(yè)集團有限公司(CEC)整合旗下集成電路企業(yè)而組建的專業(yè)子集團。其MCU產(chǎn)品系列主要有超低功耗MCU、通用類MCU、電機類MCU、車規(guī)類MCU。HC32F003是基于ARMCortex-M0+設(shè)計的32位通用類MCU靈動微電子MM32F主要基于ARMCortex-M0及Cortex-M3內(nèi)核的MCU,產(chǎn)品系列有:針對通用高性能市場的MM32F系列:MM32F103針對超低功耗及安全應用的MM32L系列具有多種無線連接功能的MM32W系列二.單片機芯片常見的封裝形式1.3單片機應用領(lǐng)域及系統(tǒng)框架一.單片機常見應用領(lǐng)域1、家用電器等消費領(lǐng)域應用由于單片機的集成度高、可靠性高、體積小、功耗低,價格便宜,如洗衣機、空調(diào)、電飯煲、電子音響、智能家居等。2、智能儀表應用單片機廣泛應用于實驗室、測量和控制儀表中,提高測量精度和控制功能,簡化儀表結(jié)構(gòu),促進各種儀器儀表逐漸走向數(shù)字化、智能化、多功能化,并使監(jiān)測與控制等功能一體化,便于使用、改進與維護。3、實時控制系統(tǒng)應用單片機應用系統(tǒng)結(jié)構(gòu)框圖√

熟悉常見單片機型號及封裝方式本章小結(jié)√理解和掌握微型計算機組成架構(gòu)及原理√

理解和掌握單片機的概念及內(nèi)涵√

了解單片機的應用領(lǐng)域休息一下下!Thanks第2章單片機內(nèi)部結(jié)構(gòu)及引腳功能 *****學院主講教師:單片機原理及實踐本章知識要點與能力要求知識目標1.理解89C51/S51單片機的內(nèi)部結(jié)構(gòu);2.理解和掌握89C51/S51單片機最小系統(tǒng);3.理解89C51/S51單片機的存儲系統(tǒng);4.掌握89C51/S51單片機的時序與復位。能力目標1.繪制89C51/S51單片機最小系統(tǒng);2.學會查看芯片用戶手冊;3.根據(jù)系統(tǒng)時鐘計算延時時間。課程思政與職業(yè)素養(yǎng)1.場景引入:電子計算機的二進制運算方式與中國古代傳統(tǒng)文化《易經(jīng)》中“一陰一陽之謂道”有著異曲同工之妙;電子計算機所講授的八進制(三位二進制數(shù))亦與《易經(jīng)》中的八卦蘊含著相同的樸素辯證的排列組合思想,在理解計算機原理的同時,加深學生對傳統(tǒng)文化的了解,建立文化自信;2.通過對比國內(nèi)與國外微控制器內(nèi)核的學習,培養(yǎng)學生的系統(tǒng)化、結(jié)構(gòu)化的思維能力,孵化創(chuàng)新、創(chuàng)造的思考能力,激發(fā)愛國熱情,為祖國科技發(fā)展而努力學習、科技強國;3.通過專業(yè)繪圖工具(AltiumDesigner、立創(chuàng)EDA)繪制51單片機最小系統(tǒng),培養(yǎng)學生良好的職業(yè)素養(yǎng),引導學生遵守職業(yè)道德規(guī)范。2.1單片機內(nèi)部結(jié)構(gòu)單片機內(nèi)部結(jié)構(gòu)89C51單片機的內(nèi)部結(jié)構(gòu)如圖所示。51內(nèi)核負責指令的預取、分析以及執(zhí)行,由運算器和控制器構(gòu)成。

運算器以算術(shù)/邏輯運算單元(ALU,ArithmeticLogicUnit)為核心,主要由累加器ACC(Accumulator)、寄存器B、程序狀態(tài)寄存器PSW(ProgramStatusWord,程序狀態(tài)字)組成,用于完成算術(shù)運算、邏輯運算、位運算以及數(shù)據(jù)傳送等操作,運算結(jié)果保存在程序狀態(tài)寄存器中。

控制單元(CU,ControlUnit)具有產(chǎn)生各種控制信號的功能,核心是由程序計數(shù)器PC每執(zhí)行完一條指令后自動加1,指向下一條指令的地址,從而實現(xiàn)程序的執(zhí)行。2.2單片機引腳及功能一.單片機的封裝方式雙列直插式(DIP)封裝、PLCC封裝、PQFP/TQFP封裝二.AT89C51單片機引腳及功能功能類別引腳名稱引腳功能數(shù)量最小系統(tǒng)引腳Vcc+5V電源5個GND地XTAL1和XTAL2時鐘信號引腳RST復位引腳并行I/O引腳P0.0~P0.7P0口8位雙向I/O線32個P1.0~P1.7P1口8位雙向I/O線P2.0~P2.7P2口8位雙向I/O線P3.0~P3.7P3口8位雙向I/O線控制引腳PSEN外部程序存儲器讀選通信號3個ALE地址鎖存控制信號EA訪問程序存儲器控制信號三.最小系統(tǒng)引腳1.電源引腳Vcc和GND 1)Vcc(40引腳):電源端,接+5V電源。 2)GND(20引腳):接地端。2.時鐘信號引腳XTAL1和XTAL2單片機時鐘信號電路3.復位引腳RSTRST(9引腳):復位信號輸入引腳,高電平有效。該引腳為低電平時單片機正常工作。四.并行I/O端口P0、P1、P2、P3口每個端口都有8條I/O線,均可用作輸入/輸出功能使用,稱為通用輸入/輸出口,簡寫為通用I/O。四.并行I/O端口P0口和P2口除作為通用I/O口外,還可用作連接外部存儲器的地址線使用,此時,P0口用作低8位地址線或8位數(shù)據(jù)線,分時復用使用;P2口用作高8位地址線,與P0口組成16位的地址總線使用。P3口除可作為通用I/O口外,還具有第二功能,有輸出和輸入兩類。P3口的每一個引腳都有特殊的用途,如下表所示。端口引腳第二功能說明P3.0RXD串行數(shù)據(jù)接收端P3.1TXD串行數(shù)據(jù)發(fā)送端P3.2外部中斷0P3.3外部中斷1P3.4T0定時器/計數(shù)器0的外部輸入引腳P3.5T1定時器/計數(shù)器1的外部輸入引腳P3.6外部RAM寫選通引腳P3.7外部RAM讀選通引腳五.控制引腳

(1)(31引腳):內(nèi)/外部存儲器訪問選擇引腳/編程電壓輸入引腳。用于控制89C51/S51單片機使用片內(nèi)程序存儲器或片外程序存儲器。當為低電平時,使用片外程序存儲器。當為高電平時(如接VCC),使用片內(nèi)程序存儲器,此時單片機的程序計數(shù)器PC首先訪問片內(nèi)ROM,從0000H單元開始執(zhí)行片內(nèi)ROM中的程序(對89S51片內(nèi)4KB),當PC的值超過0FFFH時,PC將自動轉(zhuǎn)到片外ROM中執(zhí)行程序。(2)ALE/(30引腳):地址鎖存允許信號輸出引腳/編程脈沖輸入引腳。上電后ALE(AddressLatchEnable)引腳持續(xù)輸出正脈沖信號,可通過該引腳檢測單片機是否正常運行。此引腳的第二功能

是編程脈沖輸入引腳,實現(xiàn)對片內(nèi)帶有FlashROM的芯片編寫固化程序。目前一般采用串行口進行程序下載,不再使用編程脈沖往內(nèi)部燒寫程序,因此該引腳一般懸空。五.控制引腳

(3)

(29引腳):PSEN(ProgramStoreEnable)為片外ROM選通引腳,低電平時有效,當

引腳為低電平時,實現(xiàn)對片外ROM的讀操作,當前單片機型號繁多,單片機的內(nèi)部ROM越來越大,通過芯片選型可以滿足應用需求,所以在設(shè)計電路時,該引腳一般懸空。

六.單片機最小系統(tǒng)電路1.電源電路2.晶振電路3.復位電路外接電容C1和C2通常取3010pF,晶振的頻率一般為fosc=0~24MHz,晶體蕩器的頻率越高,單片機的運行速度也就越快。一般情況下多采用12MHz的晶振,如果系統(tǒng)中使用了單片機的串行通信接口,則一般選用11.0592MHz的晶振。

復位電路的作用是當單片機啟動或發(fā)生故障時(如死機、陷入死循環(huán)),使CPU恢復到一個確定的初始狀態(tài),并從這個初始狀態(tài)重新開始工作。

單片機復位有兩種實現(xiàn)方式:上電自動復位和按鍵手動復位。AT89C51和STC89C52的供電電壓范圍在3.3V-5.5V之間,所以可以采用5V的電源供電。2.3單片機的存儲器一.概述51單片機的程序存儲器可分為片內(nèi)程序存儲器和片外程序存儲器,數(shù)據(jù)存儲器也分為片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。一.概述從用戶使用的角度來看,單片機的存儲空間可劃分為3部分。片內(nèi)4KB和片外64KB統(tǒng)一編址的ROM程序存儲器地址空間,地址范圍為0000H~FFFFH。片內(nèi)256B的數(shù)據(jù)存儲器地址空間,地址范圍為00H~FFH;AT89C51單片機片內(nèi)128B數(shù)據(jù)存儲器地址空間,地址范圍為00H~7FH。片外64KB的數(shù)據(jù)存儲器地址空間,地址范圍為0000H~FFFFH。二.程序存儲器程序存儲器用于存放用戶編寫的應用程序、常數(shù)或表格。程序存儲器以程序計數(shù)器PC作為地址指針,通過16位地址總線,可尋址64KB的程序地址空間。程序存儲器又細分為片內(nèi)程序存儲器和片外程序存儲器,AT89C51和STC89C51單片機內(nèi)部具有4KB大小的片內(nèi)Flash程序存儲器空間,當片內(nèi)程序存儲器空間不夠時,還可以擴展外部程序存儲器,最大尋址空間范圍為64KB(即FFFFH)。二.程序存儲器51單片機的片內(nèi)ROM中不只存放用戶的應用程序,還將一部分空間劃分出來,用于中斷處理程序。在系統(tǒng)遇到中斷時,會根據(jù)中斷的類型,自動跳轉(zhuǎn)到ROM中該中斷處理程序處執(zhí)行相應的中斷處理服務(wù)程序。地址說明0000H~0002H單片機復位后的程序入口地址(占3個單元)0003H~000AH外部中斷0的中斷服務(wù)程序地址(占8個單元)000BH~0012H定時器0的中斷服務(wù)程序地址(占8個單元)0013H~001AH外部中斷1的中斷服務(wù)程序地址(占8個單元)001BH~0022H定時器1(T1)的中斷服務(wù)程序地址(占8個單元)0023H~002AH串行口的中斷服務(wù)程序地址(占8個單元)

程序存儲器中的0003H~002AH共40個單元被保留,用于5個中斷源的中斷服務(wù)程序的入口地址,用戶不可修改。用戶程序在程序存儲器中的位置三.數(shù)據(jù)存儲器單片機的存儲器除了存放應用程序所用到的ROM之外,其運行過程中還需要用到內(nèi)存空間,這個內(nèi)存空間就是RAM,用來存放運算的中間結(jié)果和數(shù)據(jù)等。89C51單片機的數(shù)據(jù)存儲器分為片內(nèi)RAM和片外RAM。AT89C51單片機的片內(nèi)RAM只有128B,地址范圍為00H~7FH,AT89C52單片機片內(nèi)RAM有256B,地址范圍為00H~FFH。片外RAM最多可擴展至64KB,地址范圍為0000H~FFFFH。采用MOV指令訪問片內(nèi)數(shù)據(jù)存儲器,采用MOVX指令訪問外部數(shù)據(jù)存儲器。三.數(shù)據(jù)存儲器---片內(nèi)RAM89C52單片機片內(nèi)RAM有256B,根據(jù)需要分為低128字節(jié)RAM區(qū)和高128字節(jié)的特殊功能寄存器(SFR)區(qū)。

低128B(地址范圍:00H~7FH)是真正的RAM存儲器,按用途劃分為通用工作寄存器區(qū)、位尋址區(qū)、用戶RAM區(qū)。通用工作寄存器區(qū)該區(qū)共有4組通用寄存器組,地址范圍為00H~1FH,每組有8個工作寄存器R0~R7,共計32個寄存器,用于存放操作數(shù)和中間結(jié)果等,一般稱為通用寄存器。三.數(shù)據(jù)存儲器---片內(nèi)RAM(1)通用工作寄存器區(qū)

該區(qū)共有4組通用寄存器組,地址范圍為00H~1FH,每組有8個工作寄存器R0~R7,共計32個寄存器,用于存放操作數(shù)和中間結(jié)果等,一般稱為通用寄存器。(2)位尋址區(qū)

位尋址區(qū)是數(shù)據(jù)存儲器的一部分,地址范圍為20H~2FH的單元,既可以像普通RAM一樣按字節(jié)使用,還可以對RAM單元中的每一位進行位操作,因此把該區(qū)域稱為位尋址區(qū)。(3)用戶RAM區(qū)

用戶RAM區(qū)的地址范圍為30H~7FH,共80個字節(jié)的空間,是供用戶使用和操作的RAM區(qū)。三.數(shù)據(jù)存儲器---片外RAM片外RAM當片內(nèi)RAM不足時,可以根據(jù)需要對進行擴展,片外RAM最大為64KB,地址范圍為0000H~FFFFH。此時,低8位地址A0~A7和8位數(shù)據(jù)D0~D7由P0端口分時傳送,高8位地址A8~A15由P2端口傳送。因此,只有在沒有使用擴展的片外RAM時,P0口和P2口才可以作為雙向I/O口使用。四.特殊功能寄存器SFRSFR

片內(nèi)RAM的高128B為特殊功能寄存器區(qū),是作為專用寄存器來使用的,故稱為特殊(專用)功能寄存器(SFR,SpecialFunctionRegister)。SFR專用寄存器既可以使用寄存器的符號名稱進行相應操作,也可以使用寄存器的單元地址進行操作。寄存器符號名稱字節(jié)地址ACC累加器E0HBB寄存器F0HPSW程序狀態(tài)字D0HSP堆棧指針81HDPTR數(shù)據(jù)指針DPH83HDPL82HP0P0端口80HP1P1端口90HP2P2端口A0HP3P3端口B0HIP中斷優(yōu)先級控制寄存器B8HIE中斷允許控制寄存器A8HTMOD定時器/計數(shù)器工作方式控制寄存器C8HTCON定時器/計數(shù)器控制寄存器88HTH0定時器/計數(shù)器T0(高字節(jié))8CHTL0定時器/計數(shù)器T0(低字節(jié))8AHTH1定時器/計數(shù)器T1(高字節(jié))8DHTL1定時器/計數(shù)器T1(低字節(jié))8BHSCON串口控制寄存器98HSBUF串口數(shù)據(jù)緩沖器99HPCON電源控制寄存器97H四.特殊功能寄存器SFR51單片機C語言中的SFRsfr不是標準C語言的關(guān)鍵字,是Keil中用來定義專用寄存器字節(jié)地址的關(guān)鍵字,從而在單片機C51語言程序中可以直接訪問這些專用寄存器。用法:sfr變量名=地址值例如:sfrP1=0x90;//專用寄存器P1的地址為90H,對應P1端口的8個I/O引腳/*BYTERegisters*/sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;sfrB=0xF0;sfrSP=0x81;sfrDPL=0x82;sfrDPH=0x83;sfrPCON=0x87;sfrTCON=0x88;sfrTMOD=0x89;sfrTL0=0x8A;sfrTL1=0x8B;sfrTH0=0x8C;sfrTH1=0x8D;sfrIE=0xA8;sfrIP=0xB8;sfrSCON=0x98;sfrSBUF=0x99;2.4單片機時序與復位一.單片機時序系統(tǒng)89C51/S51單片機的時序系統(tǒng)是由節(jié)拍、狀態(tài)、機器周期、指令周期組成。振蕩周期:晶振的振蕩周期,又稱時鐘周期或節(jié)拍,為單片機最小的時序單位。狀態(tài)周期:振蕩頻率經(jīng)單片機內(nèi)的二分頻器分頻后提供給片內(nèi)CPU的時鐘周期。因此,一個狀態(tài)周期包含2個振蕩周期。機器周期:1個機器周期由6個狀態(tài)周期即12個振蕩周期組成,是計算機執(zhí)行一種基本操作的時間單位。指令周期:執(zhí)行一條指令所需的時間。一個指令周期由1~4個機器周期組成,依據(jù)指令的不同而不同。二.單片機復位

單片機的復位用于實現(xiàn)單片機的初始化,目的是使單片機從一種確定的狀態(tài)開始運行。

單片機復位后并不改變片內(nèi)RAM區(qū)中的內(nèi)容,單片機復位后的PC及特殊功能寄存器的狀態(tài)如表所示。寄存器復位值PC0000HACC00HPSW00HSP07HDPTR0000HTCON00HTL000HTH000HTL100HTH100HP0FFHP1FFHP2FFHP3FFHIPxx000000BIE0xx00000BTMOD00HSCON00HSBUF不定PCON0xxx0000B√

理解51單片機存儲系統(tǒng)本章小結(jié)√理解51單片機內(nèi)部結(jié)構(gòu)√

掌握51單片機最小系統(tǒng)√

理解和掌握51單片機的時序與復位休息一下下!Thanks第3章單片機開發(fā)工具單片機原理及實踐知識目標1.了解89C51/S51單片機常用的開發(fā)工具;2.理解89C51/S51單片機的開發(fā)流程。能力目標1.能夠獨立搭建89C51/S51單片機的開發(fā)環(huán)境;2.掌握keilC51軟件的使用方法;3.掌握89C51/S51單片機的仿真和調(diào)試方法。課程思政與職業(yè)素養(yǎng)1.推廣國產(chǎn)單片機芯片,在高校中推廣國產(chǎn)自主產(chǎn)權(quán)的行業(yè)軟件(如立創(chuàng)EDA軟件、STC_ISP下載軟件),打造國產(chǎn)軟件的生態(tài)鏈,有利于構(gòu)建國產(chǎn)行業(yè)應用軟件的生態(tài)系統(tǒng);2.通過搭建單片機開發(fā)環(huán)境,培養(yǎng)職業(yè)素養(yǎng),強化職業(yè)素質(zhì)訓練。

本章知識要點與能力要求3.1單片機開發(fā)環(huán)境搭建概述

集成開發(fā)環(huán)境(IDE,IntegratedDevelopmentEnvironment),就是將編輯器、編譯器、調(diào)試器等功能模塊集成在一起,構(gòu)建一個完整的系統(tǒng)開發(fā)的平臺。

編輯器如記事本、Notepad++等,編譯器用于將高級語言(如C語言)編寫的程序代碼編譯成單片機能夠識別和執(zhí)行的機器代碼,調(diào)試器用于調(diào)試和仿真程序,檢測程序Bug。

單片機常用的集成開發(fā)環(huán)境有Keil、IAR。KeilC51是Keil公司(現(xiàn)已被ARM公司收購)設(shè)計的一款針對8051系列單片機的集成開發(fā)環(huán)境,該集成開發(fā)環(huán)境集成了C編譯器、宏匯編、鏈接器、庫管理和仿真調(diào)試器等功能模塊。一.KeilC51軟件下載

KeilC51作為8051系列單片機的主流開發(fā)工具,支持常用的AT89系列、STC89系列以及STC12系列等單片機。官方下載地址:/download/product。二.KeilC51軟件安裝雙擊安裝軟件,出現(xiàn)如圖所示的安裝界面。單擊“Next”,進入下一步。勾選用戶許可協(xié)議。單擊“Next”,進入下一步。二.KeilC51軟件安裝設(shè)置安裝路徑,默認安裝在C盤Keil_v5文件夾下,若更改安裝路徑,盡量使用英文命名單擊“Next”,進入下一步。二.KeilC51軟件安裝填入用戶相關(guān)信息,比如郵箱等。單擊“Next”,進入下一步。二.KeilC51軟件安裝軟件安裝成功,下圖為Keil軟件的開發(fā)界面。由于Keil是收費軟件,免費評估版有編譯后的程序不能超過2KB的限制。二.KeilC51軟件安裝三.KeilC51新建工程KeilC51采用工程(Project)的理念進行項目式的管理,因此在新建工程之前,需要先在桌面或其他盤符下新建一個存放工程的文件夾,這里命名為Demo。雙擊uVision圖標啟動Keil軟件,在菜單欄找到Project中的NewuVisionProject(新建工程)選項。三.KeilC51新建工程(1)KeilC51采用工程(Project)的理念進行項目式的管理,因此在新建工程之前,需要先在桌面或其他盤符下新建一個存放工程的文件夾,這里命名為Demo。雙擊uVision圖標啟動Keil軟件,在菜單欄找到Project中的NewuVisionProject(新建工程)選項。三.KeilC51新建工程(2)選擇項目存放的文件夾位置Demo,并在“文件名”文本框中輸入新建工程的名稱,這里命名為test三.KeilC51新建工程(3)單擊保存按鈕,在彈出的對話框中,選擇所使用的單片機型號。這里選擇Atmel公司的AT89C52系列單片機。三.KeilC51新建工程(4)單擊OK按鈕,彈出如圖所示的添加啟動代碼對話框。單擊“是”按鈕,表示添加啟動文件STARTUP.A51文件到新建的工程中。工程創(chuàng)建完之后,就可以在左側(cè)的工程欄看到整個工程架構(gòu)。三.KeilC51新建工程(5)新建C51源程序文件。在Keil菜單欄中的File中找到NewFile。該操作將新建一個默認名為“Text1”的空白文檔。三.KeilC51新建工程(6)在此窗口中進行程序的編輯,輸入源程序代碼:#include<reg52.h> voidDelay(void){ unsignedchari,j; for(i=0;i<255;i++) for(j=0;j<255;j++);}voidmain(void){P1=0xff;while(1){ P1=0xfe; Delay(); P1=0xff; Delay();}}三.KeilC51新建工程(7)保存C51源文件。執(zhí)行菜單命令File中的Save命令,彈出“保存”對話框,在此對話框中輸入保存的文件名稱,其后綴名為.c。三.KeilC51新建工程(8)添加C51源文件到工程目錄中。在工程窗口中,右鍵單擊“SourceGroup1”,在彈出的菜單欄中選擇“AddFilestoGroup'SourceGroup1‘”。三.KeilC51新建工程(9)在彈出的對話框中,選中剛才進行的.c源文件,單擊“Add”按鈕,即可將main.c添加到項目中。三.KeilC51新建工程(10)工程參數(shù)設(shè)置。在Target選項頁中設(shè)置單片機的時鐘晶振頻率。三.KeilC51新建工程(11)設(shè)置創(chuàng)建HEX文件。在“Output”選項卡中,勾選“CreateHEXFile”選項。三.KeilC51新建工程(12)程序編譯。點擊快捷工具欄中的編譯按鈕,進行項目編譯,編譯完成會在編譯輸出區(qū)顯示編譯結(jié)果。編譯無錯誤,則會生成HEX文件。3.2單片機程序下載工具單片機開發(fā)大多采用交叉編譯的方式,即在通用PC機上安裝KeilC51等開發(fā)工具編寫程序,編譯生成后綴為.hex的文件后,通過程序燒錄工具下載到單片機的ROM中,由單片機執(zhí)行程序。STC_ISP為宏晶科技的一款針對STC系列單片機的程序下載工具二.STC_ISP程序下載工具需要安裝相應的USB轉(zhuǎn)串口的驅(qū)動,比如CH3403.3單片機開發(fā)其他常用工具一.代碼編輯器Notepad++Notepad++開源免費,占用資源少,支持多種語言:C、C++、Java、C#、Python、R、HTML、PHP、Verilog等,具有代碼補全、語法高亮等功能,可根據(jù)語法節(jié)點自由折疊/打開,支持鼠標滾輪改變文檔顯示比例。Proteus作為一款集電路設(shè)計、PCB制版以及仿真于一體的多功能EDA工具,以其強大的仿真功能和易操作性,廣泛應用于單片機電路的開發(fā)、仿真和調(diào)試,支持51系列、AVR、PIC、ARM等主流單片機的仿真。二.Proteus仿真軟件3.4單片機系統(tǒng)開發(fā)流程一、單片機系統(tǒng)開發(fā)流程(1)系統(tǒng)設(shè)計

一個單片機應用系統(tǒng)需要首先明確設(shè)計要求,根據(jù)設(shè)計要求確定設(shè)計思路,根據(jù)設(shè)計思路確定設(shè)計方案,繪制系統(tǒng)組成框圖。(2)硬件電路設(shè)計

根據(jù)系統(tǒng)需求,按照系統(tǒng)組成架構(gòu)和設(shè)計方案,利用電路圖設(shè)計軟件AltiumDesigner或其他設(shè)計軟件進行硬件電路的設(shè)計。(3)系統(tǒng)軟件設(shè)計

系統(tǒng)軟件設(shè)計一般包括數(shù)據(jù)采集和處理程序、控制算法實現(xiàn)程序、人際交互程序和數(shù)據(jù)管理程序。一般根據(jù)功能設(shè)計要求,將軟件按模塊化獨立設(shè)計。注意軟件設(shè)計時需要把每個模塊的軟件設(shè)計流程圖畫出,以便編程實現(xiàn)。(4)系統(tǒng)調(diào)試與運行

調(diào)試分硬件調(diào)試和軟件調(diào)試。硬件調(diào)試主要確保硬件設(shè)計部分符合設(shè)計要求,確定硬件無故障后,便可進行軟件調(diào)試。軟件調(diào)試可以采用模塊化程序設(shè)計分別進行模塊化調(diào)試,確認各個模塊軟件能正常運行后,再進行系統(tǒng)程序總調(diào)試。LED控制系統(tǒng)的硬件電路設(shè)計

在最小系統(tǒng)電路的基礎(chǔ)上,P1.0低電平控制LED燈點亮。根據(jù)二極管的單向?qū)щ娞匦裕琍1.0引腳接LED的陰極,LED的陽極通過阻值為1k的限流電阻R連接到5V電源上,當P1.0引腳輸出低電平時,LED燈亮。LED控制系統(tǒng)的硬件電路圖如圖3-38所示。3-38LED控制系統(tǒng)的硬件電路圖二、編寫點亮一個LED燈的程序#include<reg51.h>//包含AT89C51的頭文件sbitLED=P1^0; //定義LED為P1.0引腳voidmain(){ LED=0;//P1.0輸出低電平點亮LED燈

while(1);}(1)#include<reg51.h>語句是一個文件包含的意思,是將reg51.h中的頭文件的內(nèi)容都包含進來。這里程序中包含reg51.h頭文件是為了要使用P1^0這個符號,即通知C編譯器,程序中所寫的P1^0是指AT89C51單片機的P1.0引腳。(2)P1.0不能直接使用,這里用“sbitLED=P1^0”就是定義符號LED來表示P1.0引腳,也可以用P1_0或P10一類的名字。(3)“LED=0;”語句是P1.0引腳輸出低電平,點亮發(fā)光二極管。因為單片機只能處理二進制數(shù)字,所以編程時用0和1來代替高低電平,以點亮或者熄滅發(fā)光二極管。(4)“while(1);”語句的表達式是1,也就是說while語句的表達式始終為真,進入死循環(huán),LED燈始終點亮。(5)KeilC51支持C++風格的注釋,可以用“//”進行注釋,也可以用“/*.......*/”進行注釋。

三、程序下載將源程序編譯生成可執(zhí)行的HEX文件led.hex。通過STC_ISP程序下載工具,將軟件生成的目標文件led.hex下載到單片機系統(tǒng),即可驗證。

掌握51單片機的仿真和調(diào)試方法本章小結(jié)√掌握51單片機開發(fā)環(huán)境搭建√

掌握KeilC51軟件的使用方法√

熟悉和理解51單片機的開發(fā)流程休息一下下!Thanks第4章通用輸入輸出單片機原理及實踐本章知識要點與能力要求知識目標1.理解通用I/O的基本概念;2.理解89C51/S51單片機通用I/O的內(nèi)部結(jié)構(gòu);3.理解和掌握通用輸入輸出的工作模式。能力目標1.掌握通用I/O的輸出功能;2.掌握通用I/O的輸入功能。3.能根據(jù)應用需求進行通用I/O的應用實踐。課程思政與職業(yè)素養(yǎng)1.通過I/O變量、標識符等的命名規(guī)則,引導學生做事做人要遵守規(guī)則,遵守國家法律法規(guī);2.文本、圖片、視頻的本質(zhì)都是二進制序列,經(jīng)過不同的加工處理產(chǎn)生不同的結(jié)果,量變產(chǎn)生質(zhì)變;3.通過I/O程序編程,培養(yǎng)職業(yè)素養(yǎng),強化職業(yè)素質(zhì)訓練。4.1通用輸入輸出概述

I/O:Input/Output,輸入/輸出,是MCU與外部世界進行信息交互的通道。

1.對外表現(xiàn)為MCU的I/O引腳;

2.對內(nèi)對應MCU的RAM中的特殊功能寄存器各寄存器單元。

如:89C51/S51單片機的P0、P1、P2、P3端口,每個端口各對應MCU的8條I/O引腳,可獨立的進行信息的輸入/輸出,I/O引腳能夠進行信息傳輸?shù)膶嵸|(zhì)是往該I/O引腳所對應的寄存器寫入和讀出0(低電平)或1(高電平)。一.通用I/O端口89C51單片機共有4個8位并行I/O端口,分別用P0、P1、P2、P3表示。STC89C52具有5個通用I/O口,分別用P0、P1、P2、P3、P4,其中P4端口只有7個(P4.0~P4.6)。這4個I/O端口內(nèi)部都包含有一個鎖存器、一個輸出驅(qū)動器和輸入緩沖器。作為輸出端口使用時,數(shù)據(jù)可以鎖存;作為輸入端口使用時,數(shù)據(jù)可以緩沖。二.通用I/O使用小結(jié)1.P0、P1、P2、P3口的電平與CMOS、TTL電平兼容。2.P0口的每一位可驅(qū)動8個低功耗肖特基型TTL門電路(LSTTL門電路),其內(nèi)部沒有上拉電阻,因此,P0口作為通用I/O使用時,需外接10k的上拉電阻。用作地址/數(shù)據(jù)分時復用總線時,無需外接上拉電阻。注:上拉就是將不確定的信號通過一個電阻使其電平保證在高電平,電阻同時起限流的作用,下拉電路同理。上拉電阻是用來解決總線驅(qū)動能力不足時提供電流的,即拉電流,下拉電阻是用來吸收電流的,也就是常說的灌電流。數(shù)字電路有三種狀態(tài):高電平、低電平和高阻狀態(tài),有些應用場合不希望出現(xiàn)高阻狀態(tài),可以通過上拉電阻或下拉電阻的方式使處于穩(wěn)定狀態(tài),具體視設(shè)計要求而定。比如,當一個接有上拉電阻的端口設(shè)為輸入狀態(tài)時,常態(tài)就為高電平,用于檢測低電平的輸入。3.P1~P3口每一位可驅(qū)動4個LSTTL門電路,內(nèi)部均有上拉電阻,因此,P1~P3口的每個引腳作為通用I/O使用時,不需要外接上拉電阻。4.P0~P3口作為輸入端口使用時,必須先向?qū)亩丝诩拇嫫髦袑懭搿?”,否則會導致誤讀。4.2通用輸出功能應用通用輸出功能概述P0~P3口最基本的功能就是輸入和輸出,P0~P3口內(nèi)部的鎖存器與RAM進行統(tǒng)一編址,因此,可通過特殊功能寄存器(SFR)對Px端口進行寫入、讀出操作。往I/O端口引腳對應的寄存器某位寫入1或0,此時該引腳就對外輸出高電平或低電平,從而實現(xiàn)對外部設(shè)備的控制。一.簡單輸出功能應用

簡單輸出功能應用是指單片機的引腳采用簡單的灌電流方式或拉電流方式直接控制輸出高低電平,不涉及復雜的外圍電路設(shè)計。控制系統(tǒng)中常用的指示燈(故障指示燈、狀態(tài)指示燈等)就是I/O端口最簡單的通用輸出功能的應用場景?!纠?-1】控制一個LED燈每隔500ms閃爍。一、功能描述通過不精確延時函數(shù)Delay()實現(xiàn)每隔500ms對LED燈進行循環(huán)點亮和熄滅。二、硬件設(shè)計

由于單片機引腳的驅(qū)動能力有限,拉電流能力較弱,一般采用灌電流的方式驅(qū)動LED,即單片機引腳輸出低電平時,點亮LED,輸出高電平時,熄滅LED。Proteus電路圖四、程序代碼三、系統(tǒng)流程圖#include<reg52.h>//C51頭文件voidDelay_ms(unsignedintn);//函數(shù)聲明voidmain(void){P1=0xff;//P1口置高電平,所有LED燈熄滅while(1){ P1=0xfe;//LED0亮 Delay_ms(500);//延時500ms P1=0xff;//LED0滅 Delay_ms(500);//延時500ms}}//延時1毫秒,不精確延時voidDelay_ms(unsignedintn){unsignedinti=0,j=0;for(i=0;i<n;i++)//“++”為自增運算符,i++表示使用i后再加1for(j=0;j<390;j++);}二.I/O引腳驅(qū)動能力

單片機引腳的驅(qū)動能力有限,拉電流能力較弱,所以89C51/S51單片機I/O引腳可以直接驅(qū)動LED燈,但不能直接驅(qū)動蜂鳴器、電機等。當用單片機的I/O口驅(qū)動蜂鳴器的時候,需要使用三極管組成的放大電路進行驅(qū)動。LED1為灌電流方式,P1.0引腳輸出低電平時,LED1點亮;LED2為拉電流方式,P1.4引腳輸出高電平時,LED2點亮。案例分析:兩種LED驅(qū)動方式電路從電路結(jié)構(gòu)上看,兩種方式都可以點亮LED,但實際應用中,會發(fā)現(xiàn)LED2的亮度比LED1的亮度低了很多,原因是51單片機的引腳只能夠輸出高、低電平,而不是一個能提供無限大電流的電源,其驅(qū)動能力是有一定限制的。二.I/O引腳驅(qū)動能力【例】驅(qū)動蜂鳴器鳴叫,三極管放大電路應用。一、功能概述

利用三極管放大電路,通過51單片機的I/O引腳驅(qū)動蜂鳴器,控制蜂鳴器發(fā)出嘀嘀的報警聲。二、硬件電路設(shè)計89C51/S51單片機的P3.6引腳經(jīng)1k的限流電阻連接PNP型號三極管Q(2N3703),當單片機P3.6引腳輸出低電平時,三極管導通,流經(jīng)三極管的集電極、經(jīng)蜂鳴器、發(fā)射極,到達電源地,形成一個回路,從而驅(qū)動蜂鳴器發(fā)聲,即通過控制三極管的導通和截止控制蜂鳴器的狀態(tài)。Proteus電路圖三、程序設(shè)計#include<reg51.h>#include<intrins.h>voidDelay500ms();sbitBeep=P3^6;voidmain(void){while(1){//電平取反,“~”為位運算符,按位取反 Beep=~Beep;//延時500ms,通過修改此延時時間達到不同的發(fā)聲效果 Delay500ms();}}voidDelay500ms() //不精確延時500ms函數(shù){ unsignedchari,j,k;

_nop_(); i=4; j=129; k=119; do { do { while(--k); }while(--j); }while(--i);}4.3通用輸入功能應用一.通用輸入功能應用概述

單片機可以通過I/O引腳從接口接收高電平(+5V)或低電平(0V),即外設(shè)向單片機輸入了1或0,如按鍵輸入;若信號為模擬信號,則需要先將模擬信號轉(zhuǎn)換成數(shù)字信號,再通過單片機I/O引腳輸入到單片機進行處理。二.通用輸入功能應用案例【例】按鍵查詢輸入點亮LED

功能描述:該實例通過按鍵控制LED亮滅。單片機的P1.2引腳連接一個LED,P1.6引腳連接按鍵,通過查詢方式控制LED燈的亮滅,即按鍵按下,LED燈亮,按鍵未按下時,LED燈滅。二.通用輸入功能應用案例#include<reg52.h>#include<intrins.h>sbitKEY=P1^6;sbitLED=P1^2;voidDelay500ms();voidmain(void){ //用作輸入時,輸入前I/O端口需先寫入“1” KEY=1; if(KEY==0) { LED=0; Delay500ms(); } else { LED=1; }}voidDelay500ms() //不精確延時500ms函數(shù){ unsignedchari,j,k;

_nop_(); i=4; j=129; k=119; do { do { while(--k); }while(--j); }while(--i);}程序設(shè)計√

理解和掌握通用I/O的工作模式本章小結(jié)√理解51單片機通用輸入輸出的原理√

理解51單片機通用輸入輸出的內(nèi)部結(jié)構(gòu)√

能根據(jù)應用需求進行通用I/O的應用實踐休息一下下!Thanks第5章外部中斷單片機原理及實踐本章知識要點與能力要求知識目標1.理解中斷的概念;2.了解51單片機中斷系統(tǒng)的內(nèi)部結(jié)構(gòu);3.理解和掌握外部中斷的處理過程。能力目標1.掌握中斷服務(wù)函數(shù)的編程方法;2.掌握中斷控制寄存器的初始化步驟;3.能根據(jù)應用需求進行中斷的應用實踐;4.掌握利用Proteus進行中斷程序的仿真與調(diào)試。課程思政與職業(yè)素養(yǎng)1.培養(yǎng)辯證思維能力通過外部中斷的處理學習,使同學們明白做事要有輕重緩急,引導和培養(yǎng)學生的突發(fā)應急處理意識,以及應對突發(fā)事件的處理方法和手段;2.培養(yǎng)哲學思維方法:任何事情都有輕重緩急,要抓住主要矛盾;3.通過DMA的大批量數(shù)據(jù)傳輸技術(shù)與中斷方式的對比,引導和培養(yǎng)學生的邏輯思維能力,不同場合不同應用需求下,如何高效的解決問題其方式和方法具有多樣性,物極必反、過猶不及的道理。4.通過單片機結(jié)構(gòu)化程序代碼的實踐與訓練,培養(yǎng)和鍛煉同學們的職業(yè)素養(yǎng).。5.1中斷概述一.中斷概念

當CPU在處理某件事情時,外部發(fā)生的某一事件(相對比較緊急)請求CPU迅速去處理,CPU需要暫時停止當前的工作,轉(zhuǎn)去處理所發(fā)生的事情,當該事件處理完成后,再回到原來CPU中止的地方,繼續(xù)執(zhí)行,整個處理過程稱為中斷。實現(xiàn)這種功能的部件稱為中斷系統(tǒng)。中斷源:產(chǎn)生中斷請求的來源。中斷請求:中斷源向CPU提出的處理請求。中斷響應:CPU暫停自身的事務(wù),轉(zhuǎn)去處理突發(fā)請求事件的過程。中斷服務(wù):對請求事件的整個具體處理過程。中斷返回:當請求事件處理完畢后,再回到原來CPU被中止的地方。一個完整的中斷處理過程包括中斷請求、中斷響應、中斷處理及中斷返回。二、51單片機中斷系統(tǒng)結(jié)構(gòu)89C51有5個中斷源,4個用于控制中斷的寄存器IE、IP、TCON和SCON,用來控制中斷的類型、開關(guān)及中斷源的優(yōu)先級。5個中斷源各有兩個優(yōu)先級,可以實現(xiàn)中斷服務(wù)二級嵌套。

外部中斷源包括:外部中斷0和外部中斷1,內(nèi)部中斷源包括:定時/計數(shù)器T0、定時/計數(shù)器T1和串行口中斷。5.2中斷控制相關(guān)寄存器一、概述

中斷作為單片機對外部事件進行實時處理的一種方式,通過對51單片機相關(guān)寄存器進行配置,可以實現(xiàn)具體的中斷實時事件處理。一、概述中斷相關(guān)的寄存器二、中斷源AT89C51的5個中斷源:1、INT0—外部中斷0請求,低電平有效。通過P3.2引腳輸入。觸發(fā)方式有兩種:低電平觸發(fā)、下降沿觸發(fā),通過特殊功能寄存器TCON的IT0位進行設(shè)置。2、INT1—外部中斷1請求,低電平有效。通過P3.3引腳輸入。觸發(fā)方式有兩種:低電平觸發(fā)、下降沿觸發(fā),通過特殊功能寄存器TCON的IT1位進行設(shè)置。3、T0—定時器/計數(shù)器0溢出中斷請求。4、T1—定時器/計數(shù)器1溢出中斷請求。5、TX/RX—串口通信中斷請求。型號中斷源中斷編號引腳優(yōu)先級

AT89C51外部中斷0(INT0)0P3.2高

低定時器0溢出中斷(T0)1P3.4外部中斷1(INT1)2P3.3定時器溢出中斷(T1)3P3.5串口中斷(UART)4P3.0(TX)P3.1(RX)中斷編號對應著51單片機的中斷源,并按照內(nèi)部優(yōu)先級的順序編為0~5,編號越小,優(yōu)先級越高。三、中斷請求標志寄存器51單片機的中斷請求是由控制寄存器TCON設(shè)置的。當外部中斷輸入信號有效,將TCON中的IE0或IE1標志位置1,向CPU申請中斷。

TCON寄存器可以按字節(jié)操作也可以按位操作,進行字節(jié)操作時,TCON的字節(jié)地址為88H,按位操作,各位的地址為88H-8FH。

89C51/S51單片機復位后,TCON的各位初始狀態(tài)為0。IE1和IE0分別為外部中斷1和外部中斷0的中斷請求標志位。當外部中斷源有中斷請求時,對應的中斷標志位由硬件置“1”,當CPU響應該中斷后由硬件自動將其清“0”。IT1和IT0分為為外部中斷1和外部中斷0的觸發(fā)方式選擇位。設(shè)置為“0”時為低電平觸發(fā)方式;設(shè)置為“1”時,相應的外部中斷為邊沿觸發(fā)方式。D7D6D5D4D3D2D1D0TCON88H8FH8EH8DH8CH8BH8AH89H88HTF1TR0TF0TR0IE1IT1IE0IT0四、中斷允許控制寄存器IE51單片機的中斷系統(tǒng)為兩級串聯(lián)式中斷允許。EA=1,開CPU總中斷;開某個中斷源中斷時,還需將對應中斷源的中斷允許位(EX0、ET0、EX1、ET1、ES)置位。中斷允許控制位存放在特殊功能寄存器IE中。系統(tǒng)復位后,IE各位均為0,即禁止所有中斷。EA(IE.7)為CPU中斷總允許控制位。EA=0,CPU禁止響應一切中斷。EA=l,CPU開放中斷;當EA=l時,僅使CPU對所有的中斷開放,但每個中斷源被允許還是屏蔽是由各自的允許位確定。EX1為外部中斷l(xiāng)的中斷允許控制位。EX1=1允許外部中斷1中斷,否則禁止中斷。EX0為外部中斷0的中斷允許控制位。EX0=1允許外部中斷0中斷,否則禁止中斷。D7D6D5D4D3D2D1D0IE0A8H0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8HEA——ESET1EX1ET0EX0五、中斷優(yōu)先級控制寄存器IP51單片機的中斷分為2個優(yōu)先級,每個中斷源的優(yōu)先級都可以通過中斷優(yōu)先級寄存器IP中的相應位來設(shè)定。當系統(tǒng)復位后,IP各位均為0,即所有中斷源均設(shè)置為低優(yōu)先級中斷。IP.7、IP.6和IP.5保留位。PS為串行口優(yōu)先級設(shè)定位。PS=1時,串行口為高優(yōu)先級,否則為低優(yōu)先級。PTl為定時器1優(yōu)先級設(shè)定位。PTl=1時,T1為高優(yōu)先級,否則為低優(yōu)先級。PXl為外部中斷1優(yōu)先級設(shè)定位。PXl=1時,外部中斷1為高優(yōu)先級,否則為低優(yōu)先級。PT0為定時器0優(yōu)先級設(shè)定位。PT0=1時,T0為高優(yōu)先級,否則為低優(yōu)先級。PX0為外部中斷0優(yōu)先級設(shè)定位。PX0=1時,外部中斷0為高優(yōu)先級,否則為低優(yōu)先級。D7D6D5D4D3D2D1D0IPDB8H0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H———PSPT1PX1PT0PX0六、中斷優(yōu)先級控制原則默認的中斷源優(yōu)先級順序:外部中斷(INT0)--定時器/計數(shù)器0(T0)---外部中斷1(INTI1)---定時器/計數(shù)器1(T1)---串行通信口中斷。中斷優(yōu)先級的控制原則:(1)高優(yōu)先級中斷請求可以打斷低優(yōu)先級的中斷服務(wù),實現(xiàn)二級中斷嵌套;但是,低優(yōu)先級的中斷請求不能打斷高優(yōu)先級的中斷服務(wù)。(2)同優(yōu)先級或低優(yōu)先級中斷請求不能打斷正在執(zhí)行的中斷。如果一個中斷請求已經(jīng)被響應,則同級或低級的其他中斷服務(wù)將被禁止。(3)如果同級的多個中斷同時提出請求,根據(jù)CPU查詢次序來確定哪個中斷請求被響應。CPU查詢順序按照默認的中斷源優(yōu)先級響應中斷。如表5-1所示。單片機型號中斷源中斷編號引腳優(yōu)先級AT89C51外部中斷0(INT0)0P3.2高

低定時/計數(shù)器0溢出中斷(T0)1P3.4外部中斷1(INT1)2P3.3定時/計數(shù)器1溢出中斷(T1)3P3.5串行口通信中斷(UART)4P3.0(TX)P3.1(RX)5.3中斷寄存器設(shè)置一、中斷初始化中斷初始化設(shè)置,步驟如下(以外部中斷0為例):(1)設(shè)置中斷觸發(fā)方式

配置TCON寄存器中的IT0的值,IT0=0為低電平觸發(fā),IT0=1為下降沿觸發(fā)。(2)設(shè)置中斷優(yōu)先級

配置IP寄存中PX0位的值,PX0=0為低優(yōu)先級,PX0=1為高優(yōu)先級。(3)開啟外部中斷0

配置IE中EX0的值,EX0=1。(4)開總中斷:EA=1。voidInt0_Init(void){ //設(shè)置外部中斷0的中斷觸發(fā)方式為低電平有效 IT0=0; PX0=1;//設(shè)置外部中斷0為高優(yōu)先級 EX0=1;//打開外部中斷0 EA=1;//開總中斷}二、中斷服務(wù)

中斷服務(wù)是針對不同中斷源的具體要求進行設(shè)計的,中斷服務(wù)函數(shù)必須由用戶自己編寫。

單片機針對各中斷源有專門對應的中斷處理函數(shù)用于處理相應的中斷事務(wù),中斷處理函數(shù)的寫法有固定的格式。中斷處理函數(shù)的定義:void中斷函數(shù)名(void)interruptn[usingm]{ ...… //中斷服務(wù)程序}“中斷函數(shù)名”為中斷服務(wù)程序的名稱,用戶自行定義。“interruptn”為固定的中斷關(guān)鍵字,用來指明該中斷處理函數(shù)屬于哪一個中斷源的中斷服務(wù)函數(shù),n為對應的中斷源編號?!皍singm”為可選項,用中括號表示,用來指明該中斷處理函數(shù)所使用的RAM中的那一組工作寄存器組。5.4中斷應用案例中斷應用案例【例5-1】外部中斷簡單實例---按鍵中斷控制LED亮滅89C51/S51單片機的外部中斷0引腳(P3.2)接按鍵,該按鍵通過上拉電阻連接電源,即沒有按鍵按下時,單片機檢測到的是高電平,當按鍵按下時,單片機檢測到的是低電平。單片機的P1.6引腳以灌電流的方式連接LED燈,當按鍵按下時LED燈點亮,沒按下時LED燈熄滅。中斷應用案例#include<reg52.h>voidInt0_Init(void);//聲明外部中斷0的初始化函數(shù)sbitLED=P1^6;sbitKEY=P3^2;voidmain(void){LED=1;Int0_Init();//調(diào)用外部中斷0的初始化函數(shù)

while(1){}}voidInt0_Init(void)//外部中斷0的初始化函數(shù){ IT0=1;EX0=1;EA=1;}voidInt0_ISR(void)interrupt0//外部中斷0的中斷處理函數(shù){if(KEY==0){LED=~LED;}}程序一:中斷應用案例#include<reg52.h>//包含頭文件sbitLED=P0^0;//位定義,將P0.0定義為LEDsbitKEY=p3^2;//位定義,將P3.2定義為按鍵

unsignedcharFlag=0;//定義標志位voidmain(){ EA=1;//EA為中斷總開關(guān),1:打開;0:關(guān)閉 IT0=1;//IT0為外部中斷0的觸發(fā)方式,1:邊沿觸發(fā);0:電平觸發(fā) EX0=1;

//EX0為外部中斷允許,1:打開外部中斷;0:關(guān)閉外部中斷 LED=1;//將LED燈的初始狀態(tài)設(shè)置為熄滅狀態(tài) while(1) { if(Flag==1)//按鍵按下LED點亮 { LED=0; Flag=0;//標記清零 } else//否則將LED熄滅 { LED=1; } }}voidInt0_ISR(void)interrupt0{ if(KEY==0)//如果按鍵按下,則將標志位置位 { Flag=1; } else//否則標志位清零 { Flag=0; }}程序二:使用全局變量Flag5.5按鍵中斷綜合應用案例按鍵中斷計數(shù)數(shù)碼管顯示綜合實例

功能需求:家用電器中經(jīng)常用到按鍵,并通過數(shù)碼管顯示按下的次數(shù),如微波爐設(shè)置加熱時長等,每按下一次按鍵,數(shù)碼管顯示次數(shù),并伴隨有聲音提示。本實例通過模擬家用電器按鍵操作,進行中斷計數(shù)、數(shù)碼管顯示的綜合實踐。

根據(jù)功能需求分析,單片機系統(tǒng)需要人機接口,用戶通過按鍵輸入信息,數(shù)碼管輸出顯示。本實例設(shè)計2個按鍵,按鍵K1實現(xiàn)加1計數(shù);按鍵K2實現(xiàn)減1操作。通過按鍵中斷方式,實現(xiàn)統(tǒng)計按鍵次數(shù)和數(shù)碼管顯示按鍵次數(shù)。

數(shù)碼管的顯示接口可分為靜態(tài)顯示接口和動態(tài)顯示接口。本設(shè)計采用動態(tài)顯示接口。4位LED數(shù)碼管靜態(tài)顯示接口電路4位8段LED動態(tài)顯示器電路硬件設(shè)計

在單片機最小系統(tǒng)的基礎(chǔ)上,使用單片機的P0口、P2口控制2位LED共陽極數(shù)碼管,其中P0口控制數(shù)碼管的段碼,P2.0和P2.1控制數(shù)碼管的位選,P3.2(

)引腳控制按鍵K1P3.3(

)引腳控制按鍵K2硬件電路設(shè)計圖如圖5-8所示。軟件設(shè)計流程

本實例軟件設(shè)計的流程圖如圖5-6所示,首先對中斷進行初始化,然后判斷是否有外部中斷按鍵按下,根據(jù)按鍵K1和K2按下分為兩個不同的數(shù)據(jù)流分支,當K1按下1次,計數(shù)變量加1,計數(shù)值顯示在數(shù)碼管上,當計數(shù)值為99時,由于加1后會變成100,而數(shù)碼管只能顯示2位,無法顯示100,故此時將計數(shù)值清0,重新開始計數(shù);同理,當K2按下時,計數(shù)變量減1,如果計數(shù)值為0時,再減1無法顯示顯示負數(shù),此時將計數(shù)值置位99,重新開始倒計數(shù)。程序設(shè)計#include<reg51.h>#include<intrins.h>#defineucharunsignedchar//宏定義將無符號字符型定義為uchar#defineunitunsignedint//宏定義將無符號整型定義為uintsbitK1=P3^2;//按鍵K1sbitK2=p3^3;//按鍵K2u

溫馨提示

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

評論

0/150

提交評論