單片機應用技術(第2版)高職全套教學課件_第1頁
單片機應用技術(第2版)高職全套教學課件_第2頁
單片機應用技術(第2版)高職全套教學課件_第3頁
單片機應用技術(第2版)高職全套教學課件_第4頁
單片機應用技術(第2版)高職全套教學課件_第5頁
已閱讀5頁,還剩434頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目一51系列單片機(AT89S51)基礎知識項目說明全套可編輯PPT課件51系列單片機(AT89S51)基礎知識單片機編譯軟件的使用及電路仿真單片機循環彩燈制作簡易串行數碼顯示器與秒表的設計與制作單片機定時/計數器應用——交通信號燈控制系統設計單片機中斷控制應用單片機串行口應用——單片機的雙機通信項目說明在本項目中,主要學習單片機的發展歷史、結構組成、存儲結構、輸入輸出設備及單片機編程語言等。通過實訓,幫助學生加深對單片機編程語言的理解,掌握單片機編程的基本思路和流程,以及其運行和控制的基本規律。(1)了解單片機的發展歷史和應用范圍;(2)掌握AT89S51的結構組成;(4)熟悉單片機的輸入/輸出(I/O)端口;(3)熟悉單片機的存儲結構;(5)掌握單片機編程語言。知識要求(1)能夠根據控制需要連接相對簡單的單片機外圍電路;(2)能夠讀懂簡單的單片機控制程序。能力要求項目準備1.單片機的概念單片微型計算機簡稱單片機,是典型的嵌入式微控制器(microcontrolerunit),單片機芯片常用英文的縮寫MCU表示。單片機不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一個芯片上。單片機由運算器、控制器、存儲器、輸入輸出設備構成,相當于一個微型的計算機(最小系統)。一、單片機概述2.單片機的發展及應用20世紀70年代,美國仙童半導體(FairchildSemiconductor)公司推出了世界上第一款單片機F-8,隨后Intel公司推出了MCS-48系列單片機。隨著集成技術的提高以及CMOS技術的發展,單片機的性能也隨之改善,高性能的8位單片機相繼問世。1983年,Intel公司推出了MCS-96系列16位單片機,加入了更多的外圍接口,如模/數轉換器(ADC)、看門狗(watchdogtimer,WDT)、脈寬調制器(PWM)等,其他一些公司也相繼推出了各自的高性能單片機系統。隨著科學技術的進步,早期的8位單片機逐漸被淘汰,但8位單片機并沒有消失,尤其是以80C51為內核的單片機,不僅沒有消失,還呈現出快速發展的趨勢。一、單片機概述1)中國集成電路產業從無到有的創業期(1965—1978年)2)中國集成電路產業的探索前進期(1978—1989年)4)中國集成電路產業的發展加速期(2000—2011年)3)中國集成電路產業的重點建設期(1990—2000年)5)中國集成電路產業的高質量發展期(2012年至今)一、單片機概述3.中國單片機的發展歷程4.中國單片機的發展現狀與前景展望單片機的發展先后經歷了4位、8位、16位和32位等階段。8位單片機由于功能強,被廣泛用于工業控制、智能接口、儀器儀表等領域。我國的單片機發展歷史很短,起步基本落后于全球產業20年,但是發展迅速,從初級要求到低性能,再到高性能全面進步,如今單片機已經實現了定制化的需求。單片機的開發技術方向如下。(1)提升單片機的運行速度。(2)提升單片機的可靠性。一、單片機概述1.單片機的內部組成AT89S51單片機把作為控制應用所必需的基本功能部件都集成在一個尺寸有限的集成電路芯片上。AT89S51單片機片內硬件組成如圖1-1所示。二、51系列單片機(AT89S51)的結構及功能2.單片機的引腳功能AT89S51雙列直插封裝形式引腳如圖1-2所示。AT89S51與51系列中其他各種型號芯片的引腳互相兼容,目前多采用40只引腳雙列直插的封裝形式。二、51系列單片機(AT89S51)的結構及功能(1)電源及時鐘引腳:VCC、VS,xTAL1、xTAL2。(2)控制引腳:PSEN、ALE/PROG、EA/VPP、RST(RESET)。(3)I/O端口引腳:P0、P1、P2、P3,為4個8位I/O端口。二、51系列單片機(AT89S51)的結構及功能引腳按其功能可分為如下三類。3.單片機的外圍電路1)時鐘電路及時序時鐘電路用于產生AT89S51工作時所必需的控制信號。(1)內部時鐘方式。AT89S51內部有一個用于構成振蕩器的高增益反相放大器,輸入端為芯片引腳xTAL1,輸出端為引腳xTAL2。這兩個引腳跨接石英晶體振蕩器和微調電容,構成一個穩定的自激振蕩器,AT89S51內部時鐘方式的電路如圖所示。二、51系列單片機(AT89S51)的結構及功能3.單片機的外圍電路(2)外部時鐘方式。使用現成的外部振蕩器產生脈沖信號,常用于多片AT89S51同時工作,以便于多片單片機之間的同步。外部時鐘源直接接到xTAL1端,xTAL2端懸空,外部時鐘方式的電路如圖1-4所示。二、51系列單片機(AT89S51)的結構及功能3.單片機的外圍電路2)時鐘周期、機器周期與指令周期單片機執行的指令均是在CPU控制器的時序控制電路的控制下進行的,各種指令時序均與時鐘周期相關。二、51系列單片機(AT89S51)的結構及功能(1)時鐘周期。(2)機器周期。(3)指令周期。3)復位操作和復位電路(1)復位操作。復位操作即單片機的初始化操作,給復位腳RST加上大于2個機器周期(24個時鐘振蕩周期)的高電平就可以使AT89S51復位。復位操作還對其他一些寄存器有影響,這些寄存器復位時的狀態見表1-1。二、51系列單片機(AT89S51)的結構及功能(2)復位電路。復位電路分為上電自動復位和按鍵復位兩種。二、51系列單片機(AT89S51)的結構及功能上電復位電路

按鍵復位電路AT89S51單片機的存儲器組織結構與一般微機不同。一般微機通常是程序和數據共用一個存儲空間,屬于馮·諾伊曼型結構,而AT89S51單片機把程序存儲器空間和數據存儲器相互分離開來,屬于哈佛型結構。AT89S51單片機存儲器組織結構如圖所示。三、單片機的存儲器結構1.單片機的數據存儲器RAMRAM用于存放運算的中間結果,用作緩沖和數據暫存,以及設置特征標志等。AT89S51片內有256B的RAM空間,片外有64KB的RAM空間,兩個存儲空間獨立尋址。1)內部RAM低128字節地址空間(0H~7FH)為內部RAM區,是供用戶使用的數據存儲器單元,作為處理問題的數據緩沖器,單元的劃分如圖所示。三、單片機的存儲器結構(1)工作寄存器區。(3)用戶RAM區。(2)位尋址區。內部RAM低128字節單元按用途可分為以下3個區域。三、單片機的存儲器結構2)特殊功能寄存器SFR單片機采用特殊功能寄存器集中控制各功能部件。特殊功能寄存器映射在片內RAM的80H~FFH區域中,共26個。有些還可以進行位尋址。常用的特殊功能寄存器如下。三、單片機的存儲器結構(4)PSW:程序狀態字寄存器。(1)ACC:累加器,通常用A表示。(2)B:B寄存器。(3)AUxR:輔助寄存器。(8)WDT:看門狗定時器。(5)數據指針DPTR0和DPTR1。(6)AUxR1:輔助寄存器1。(7)SP堆棧指針。2.單片機的程序存儲器ROM三、單片機的存儲器結構ROM用于存放程序及表格常數,讀取ROM的指令為"MOVC_。AT89C51片內有4KB的ROM,外部可用16位地址線擴展到最大64KB的ROM空間。片內ROM和外部擴展ROM是統一編址的。ROM中的特定單元(0003H~002AH)共40個,均勻地分為5段,是給系統默認使用的,分別作為5個中斷源的中斷地址區。1.P0n(P0.0~P0.7)四、單片機的輸入/輸出(I/O)端口P0口是一個雙功能的8位并行端口,字節地址為80H,位地址為80H~87H。端口的各位具有完全相同但又相互獨立的電路結構,P0口某一位的位電路結構如圖所示。四、單片機的輸入/輸出(I/O)端口P0口的工作過程分析如下。1)P0口用作地址/數據總線外擴存儲器或I/O時,P0口作為單片機系統復用的地址/數據總線使用。當作為地址或數據輸出時,控制信號為1,硬件自動使轉接開關MUx打向上面,接通反相器的輸出,同時使與門處于開啟狀態。2)P0口用作通用I/O端口當P0口不作為系統的地址/數據總線使用時,此時P0口也可作為通用I/O端口使用。(1)P0口作輸出口使用時,來自CPU的"寫"脈沖加在D鎖存器的CP端,內部總線上的數據寫入D鎖存器,并由引腳P0.x輸出。(2)P0口作輸入口使用時,有兩種讀入方式:"讀鎖存器"和"讀引腳"。2.P1口(P1.0~P1.7)四、單片機的輸入/輸出(I/O)端口P1口為單功能的I/O端口,字節地址為90H,位地址為90H~97H。P1口某一位的位電路結構如圖所示。四、單片機的輸入/輸出(I/O)端口P1口的工作過程分析如下。P1口只能作為通用的I/O端口使用。(1)P1口作輸出口使用時,若CPU輸出為1,Q=1,Q=0,場效應管截止,P1口引腳的輸出為1;若CPU輸出為0,Q=0,Q=1,場效應管導通,P1口引腳的輸出為0。(2)P1口作輸入口使用時,分為"讀鎖存器"和"讀引腳"兩種方式。(3)P1口由于內部上拉電阻,無高阻抗輸入狀態,故為準雙向口。P1口"讀引腳"輸入時,必須先向鎖存器寫入1。3.P2口(P2.0~P2.7)四、單片機的輸入/輸出(I/O)端口P2口為雙功能口,字節地址為A0H,位地址為A0H~A7H。P2口某一位的位電路結構如圖所示。四、單片機的輸入/輸出(I/O)端口P2口的工作過程分析如下。1)P2口用作地址總線P2口用作地址總線時,在控制信號作用下,MUx與"地址"接通。2)P2口用作通用I/O端口P2口用作通用I/O端口時,在內部控制信號作用下,MUx與鎖存器的Q端接通。3)P2口的特點P2口作為地址輸出線時,P2口高8位地址與P0口輸出的低8位地址尋址64KB地址空間。4.P3()P3.0~P3.7)四、單片機的輸入/輸出(I/O)端口由于引腳數目有限,在P3口增加了第二功能,每一位都可以分別定義為第二輸人功能或第二輸出功能。P3口字節地址為B0H,位地址B0H~B7H。P3口某一位的位電路結構如圖所示。四、單片機的輸入/輸出(I/O)端口P3口的工作過程分析如下。1)P3口用作第二輸人/輸出功能當選擇第二輸出功能時,該位的鎖存器需要置1,使與非門為開啟狀態。2)P3口用作第一功能—通用I/O端口P3口用作第一功能通用輸出時,第二輸出功能端應保持高電平,與非門開啟。3)P3口的特點P3口內部有上拉電阻,無高阻抗輸人態為準雙向口。5.I/O端口的使用四、單片機的輸入/輸出(I/O)端口P0口與P1、P2、P3口相比,P0口的驅動能力較大,每位可驅動8個LSTTL輸人,而P1、P2、P3口的每一位的驅動能力只有P0口的一半。當P0口某位為高電平時,可提供400以A的電流:當P0口某位為低電平(0.45V)時,可提供3.2mA的灌電流。五、單片機編程語言單片機一般采用匯編語言進行編程,因為匯編語言編譯效率高,非常適合程序直接控制硬件的場合。由于匯編語言程序要安排運算或控制每一個細節,這就使得編寫匯編語言程序比較煩瑣,現在也常用高級語言中的C語言進行單片機程序編寫。(一)單片機指令概述在單片機系統中,把與計算機之間交流的語言稱為指令,指令是CPU按照人們的意圖來完成某種操作的命令,它以英文名稱或縮寫形式作為助記符。指令不止一條,AT89S51單片機使用MCS-51指令系統。掌握匯編語言指令是程序設計的基礎。1.單片機尋址方式尋址方式是指在指令中說明操作數所在地址的方法。一般來說,尋址方式越多,功能就越強,靈活性則越大,指令系統就越復雜。五、單片機編程語言4)立即數尋址方式直接在指令中給出操作數,也稱立即數。1)寄存器尋址方式指令中的操作數為某一寄存器的內容。2)直接尋址方式指令中直接給出操作數的單元地址,該單元地址中的內容就是操作數,直接的操作數單元地址用"direct"表示。3)寄存器間接尋址方式寄存器中存儲的是操作數地址,即先從寄存器中找到操作數的地址,再按該地址找到操作數。五、單片機編程語言5)基址寄存器加變址寄存器間接尋址方式以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器,以兩者內容相加形成的16位地址作為目的地址進行尋址。6)相對尋址方式相對尋址是以該轉移指令的地址(PC值)加上它的字節數,再加上相對偏移量(rel),形成新的轉移目的地址,從而將程序轉移到該目的地址。7)位尋址方式對內部RAM和特殊功能寄存器具有位尋址功能的某位內容進行置1和清零操作。2.單片機指令分類五、單片機編程語言AT89S51共111條指令,按功能分為5類:數據傳送類(28條)、算術運算類(24條)、邏輯操作類(25條)、控制轉移類(17條)、位操作類(17條)。指令用到的符號見下表。五、單片機編程語言(二)數據傳送類指令數據傳送類指令使用最頻繁,一般數據傳送類指令的助記符為"MOV",通用格式為M0V<目的操作數>,<源操作數>數據傳送類指令是把源操作數傳送到目的操作數。指令執行之后,源操作數不改變,目的操作數修改為源操作數。1.以累加器為目的操作數的指令以累加器為目的操作數的指令如下。M0VA,Rn;(Rn)→A,n=0~7M0VA,@Ri;((Ri)→A,i=0,1M0VA,direct;(direct)→AM0VA,#data;#data→A五、單片機編程語言1.以累加器為目的操作數的指令把源操作數內容送累加器A,源操作數有寄存器尋址、直接尋址、間接尋址和立即數尋址等方式。M0VA,R6;(R6)→A,寄存器尋址M0VA,@R0;((R0)→A,間接尋址M0VA,70H;(70H)→A,直接尋址M0VA,#78H;78H→A,立即數尋址2.以Rn為目的操作數的指令以Rn為目的操作數的指令如下。M0VRn,AM0VRn,directM0VRn,#data五、單片機編程語言3.以直接地址direct為目的操作數的指令以直接地址direct為目的操作數的指令如下oM0Vdirect,A;(A)→directM0Vdirect,Rn;(Rn)→direct,n=0~7M0Vdirect1,direct2;(direct2)→direct1M0Vdirect,@Ri;((Ri)→direct,i=0,1M0Vdirect,#data;#data→direct把源操作數送人直接地址指定的存儲單元odirect指的是內部RAM或SFR地址o4.以寄存器間接地址為目的操作數的指令以寄存器間接地址為目的操作數的指令如下oM0V@Ri,AM0V@Ri,directM0V@Ri,#data把源操作數內容送人R0或R1指定的存儲單元中o;(A)→((Ri),i=0,1;(direct)→((Ri),i=0,1;#data→((Ri),i=0,1五、單片機編程語言5.16位數傳送指令16位數傳送指令如下。M0VDPTR,#data16;#data16→DPTR把16位立即數送人DPTR,用來設置數據存儲器的地址指針。例如,M0VDPTR,#1234H執行之后DPH中的值為12H,DPL中的值為34H。如果分別向DPH和DPL送數,則結果也一樣。如下面兩條指令。M0VDPH,#12HM0VDPL,#34H相當于執行了以下指令。M0VDPTR,#1234HAT89S51有兩個DPTR,通過設置特殊功能寄存器AUxR1中的DPS位來選擇。當DPS=1時,指令中的DPTR為DPTR1,DPTR0被屏蔽,反之亦然。DPTR為16位的數據指針,分為DPH和DPL,操作十分靈活方便。設有兩個DPTR后,就可避免頻繁地出人堆棧操作。五、單片機編程語言6.堆棧操作指令內部RAM中設定一個后進先出(lastinfirstout,LIFO)的區域,稱為堆棧。在特殊功能寄存器中有一個堆棧指針SP,指示堆棧的棧頂位置。堆棧操作有進棧和出棧兩種,因此,在指令系統中相應有兩條堆棧操作指令。1)進棧指令PUSHdirect首先將堆棧指針SP加1,然后把direct中的內容送到SP指示的內部RAM單元中。例如,當(SP)=60H,(A)=30H,(B)=70H時,執行下列指令。PUSHAC;(SP)+1=61H→SP,(A)→61HPUSHB;(SP)+1=62H→SP,(B)→62H結果為(61H)=30H,(62H)=70H,(SP)=62H。2)出棧指令POPdirect將SP指示的棧頂單元的內容送人direct字節中,然后SP減1。例如,當(SP)=62H,(62H)=70H,(61H)=30H時,執行下列指令。P0PDPH

;((SP)→DPH,(SP)-1→SPP0PDPL

;((SP)→DPL,(SP)-1→SP結果為(DPTR)=7030H,(SP)=60H。五、單片機編程語言7.累加器A與外部數據存儲器RAM/IO傳送指令累加器A與外部數據存儲器RAM/IO傳送指令如下。M0VxA,@DPTR;((DPTR)→A,讀外部RAM/I0M0VxA,@Ri;((Ri)→A,讀外部RAM/I0M0Vx@DPTR,A;(A)→((DPTR),寫外部RAM/I0M0Vx@Ri,A;(A)→((Ri),寫外部RAM/I0MOV的后面加"x",表示訪問的是外部RAM或I/O端口。執行前兩條指令時,RD(P3.7)有效;執行后兩條指令時,WR(P3.6)有效。五、單片機編程語言8.查表指令查表指令是僅有的兩條讀程序存儲器中表格數據的指令。1)MOVCA,@A+PC以PC作為基址寄存器,A的內容(無符號數)和PC的當前值(下一條指令的起始地址)相加后得到一個新的16位地址,把該地址的內容送到A。2)MOVCA,@A+DPTRDPTR為基址寄存器,A的內容(無符號數)和DPTR的內容相加得到一個16位地址,把由該地址指定的程序存儲器單元的內容送到累加器A。五、單片機編程語言9.字節交換指令字節交換指令如下。xCHA,Rn:(A)?(Rn),n=0~7xCHA,direct:(A)?(direct)xCHA,@Ri:(A)?((Ri),i=0,1這組指令的功能是將累加器A的內容和源操作數的內容相互交換。源操作數有寄存器尋址、直接尋址和寄存器間接尋址等方式。例如,(A)=80H,(R7)=08H,(40H)=F0H,(R0)=30H,(30H)=0FH,執行下列指令。xCHA,R7:(A)?(R7)xCHA,40H:(A)?(40H)xCHA,@R0:(A)?((R0)結果為(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H。10.低半字節交換指令低半字節交換指令格式如下。xCHDA,@Ri累加器的低4位與內部RAM低4位交換。例如,(R0)=60H,(60H)=3EH,(A)=59H,執行完"xCHDA,@R0"指令,則(A)=5EH,(60H)=39H。五、單片機編程語言(三)算術運算類指令指令系統中,有單字節的加、減、乘、除法指令,算術運算功能比較強。算術運算指令都是針對8位二進制無符號數的,如要進行帶符號或多字節二進制數運算,需編寫具體的運算程序,通過執行程序實現。算術運算的結果將使PSW的進位(CY)、輔助進位(AC)、溢出(OV)3種標志位置1或清零。1.不帶進位加法指令8位加法指令的一個加數總是來自累加器A,而另一個加數可由寄存器尋址、直接尋址、寄存器間接尋址和立即數尋址等不同的尋址方式得到。五、單片機編程語言2.帶進位加法指令3.增1指令增1指令有以下5條指令。INCAINCRn;n=0~7INCdirectINC@Ri;i=0,1INCDPTR把指令中所指出的變量增1,且不影響PSW中的任何標志。五、單片機編程語言4.十進制調整指令十進制調整指令用于對BCD碼加法運算結果的內容修正,指令格式如下。DAA十進制調整指令是對壓縮的BCD碼(一個字節存放2位BCD碼)的加法結果進行十進制調整o5.帶借位的減法指令帶借位的減法指令有以下4條指令。五、單片機編程語言6.減1指令減1指令有以下4條指令。DECA;(A)-1→ADECRn;(Rn)-1→Rn,n=0~7DECdirect;(direct)-1→directDEC@Ri;((Ri)-1→(Ri),i=0,17.乘法指令乘法指令格式如下。MULAB;A×B→BA乘法積的低字節在累加器A中,高字節在B中。8.除法指令除法指令格式如下。DIVAB;A/B→A(商),余數→B商(為整數)存放在A中,余數存放在B中,且CY和溢出標志位OV清零。五、單片機編程語言(四)邏輯操作類指令1.累加器A清零指令累加器A清零指令格式如下。CLRA累加器A清零,不影響CY、AC、OV等標志位。2.累加器A求反指令累加器A求反指令格式如下。CPLA將累加器A的內容按位邏輯取反,不影響標志位。五、單片機編程語言3.左環移指令左環移指令格式如下。RL

A左環移指令的功能是A向左循環移位,位7循環移人位0,不影響標志位,如圖所示。4.帶進位左環移指令帶進位左環移指令格式如下。RLCA帶進位左環移指令的功能是將累加器A的內容和進位標志位CY一起向左環移一位,如圖所示。五、單片機編程語言5.右環移指令右環移指令格式如下。RA右環移指令的功能是A的內容向右環移一位,不影響其他標志位,如圖所示。6.帶進位右環移指令帶進位右環移指令格式如下。RCA帶進位右環移指令的功能是將A的內容和進位標志CY一起向右環移一位,如圖所示。五、單片機編程語言7.累加器半字節交換指令累加器半字節交換指令格式如下。SWAPA累加器半字節交換指令的功能是將累加器A的高半字節(ACC.7~ACC.4)和低半字節(ACC.3~ACC.0)互換。例如,(A)=95H,執行以下指令。SWAPA結果為(A)=59H。五、單片機編程語言8.邏輯與指令邏輯與指令如下。邏輯與指令的功能是在指定的變量之間以位為基礎進行"邏輯與"操作,結果存放到目的變量所在的寄存器或存儲器中。例如,(A)=07H,(R0)=0FDH,執行以下指令。ANLA,R0運算式為結果為(A)=05H。五、單片機編程語言9.邏輯或指令邏輯或指令如下。邏輯或指令的功能是在所指定的變量之間執行位的"邏輯或"操作,結果存到目的變量寄存器或存儲器中。五、單片機編程語言10.邏輯異或指令邏輯異或指令如下。邏輯異或指令的功能是在所指定的變量之間執行位的"邏輯異或"操作,結果存到目的變量寄存器或存儲器中。五、單片機編程語言(五)跳轉與循環指令1.長轉移指令長轉移指令格式如下。LJMPaddr162.相對轉移指令相對轉移指令格式如下。SJMPre1無條件轉移,rel為相對偏移量,是一個單字節的帶符號8位二進制補碼數,因此程序轉移是雙向的。五、單片機編程語言3.絕對轉移指令絕對轉移指令格式如下。AJMPadr11絕對轉移指令提供11位地址A10~A0(即addr11),其中A10~A8位于第1字節的高3位,A7~A0在第2字節。4.間接跳轉指令間接跳轉指令格式如下。JMP@A+DPTR間接跳轉指令為單字節轉移指令,目的地址由A中8位無符號數與DPTR的16位無符號數內容之和來確定。五、單片機編程語言5.條件轉移指令執行條件轉移指令時,如條件滿足,則轉移;條件不滿足,則順序執行下一指令。轉移目的地址在以下一條指令首地址為中心的256B范圍內(-128~+127)。JZre1;如果累加器內容為0,則執行轉移JNZre1;如果累加器內容非0,則執行轉移6.比較不相等轉移指令比較不相等轉移指令如下。CJNEA,direct,re1CJNEA,#data,re1CJNERn,#data,re1CJNE@Ri,#data,re1比較前兩個操作數大小,如果值不相等則轉移,并轉向目的地址。五、單片機編程語言7.減1不為0轉移指令減1不為0轉移指令把減1與條件轉移兩種功能合在一起。此種指令有兩種形式。DJNZRn,re1;n=0~7DJNZdirect,re1此指令用于控制程序循環。預先裝人循環次數,以減1后是否為0作為轉移條件,即實現按次數控制循環。8.調用子程序指令1)長調用指令長調用指令格式如下。LCALLaddr162)絕對調用指令絕對調用指令格式如下。ACALLaddr11五、單片機編程語言9.子程序的返回指令子程序的返回指令格式如下。RET執行本指令時,(SP)→PCH,然后(SP)-1→SP

(SP)→PCL,然后(SP)-1→SP10.中斷返回指令中斷返回指令格式如下。RETI11.空操作指令空操作指令格式如下。N0P空操作指令不進行任何操作,消耗一個機器周期時間,執行(PC)+1→PC操作。五、單片機編程語言(六)布爾指令(位操作指令)1.數據位傳送指令數據位傳送指令格式如下。M0VC,bitM0Vbit,C2.位變量修改指令位變量修改指令格式如下。CLRC;CY位清零CLRbit;bit位清零CPLC;CY位求反CPLbit;bit位求反SETBC;CY位置1SETBbit;bit位置1這組指令將操作數指定的位清零、求反、置1,不影響其他標志位。五、單片機編程語言(六)布爾指令(位操作指令)3.位變量邏輯與指令位變量邏輯與指令格式如下。ANLC,bit;bitCY→CYANLC,/bit;/bitCY→CY4.位變量邏輯或指令位變量邏輯或指令格式如下。0RLC,bit0RLC,/bit五、單片機編程語言(六)布爾指令(位操作指令)5.條件轉移指令條件轉移指令格式如下。五、單片機編程語言(七)單片機偽指令單片機匯編語言程序設計中,除了使用指令系統規定的指令外,還要用到一些偽指令。1.DS:預留存儲區指令格式:[標號:]DS表達式值2.BIT:定義位指令格式:字符名稱BIT位地址3.USING:通知匯編器使用的是哪一個工作寄存器組格式:USING表達式(值必須為0~3,默認值為0)。例如,USING0五、單片機編程語言(七)單片機偽指令單片機匯編語言程序設計中,除了使用指令系統規定的指令外,還要用到一些偽指令。4.ORG:改變匯編器的計數器,從而設定一個新的程序起始地址格式:ORG表達式5.END:控制匯編結束在每個匯編程序的最后一行必須有一條END指令,并且END指令只能出現一次。6.EQU:將一個數值或寄存器名賦給一個指定的符號名格式:符號名EQU表達式或符號名EQU寄存器名五、單片機編程語言(七)單片機偽指令單片機匯編語言程序設計中,除了使用指令系統規定的指令外,還要用到一些偽指令。7.DATA:將一個內部RAM的地址賦給指定的符號名格式:符號名DATA表達式8.DB:以表達式的值的字節形式初始化代碼空間在每個匯編程序的最后一行必須有一條END指令,并且END指令只能出現一次。9.XDATA:數據地址賦值偽指令格式:符號名XDATA表達式將表達式的值或某個特定匯編符號定義為一個指定的符號名,可以先使用后定義,并且用于雙字節數據定義。例如,DELAYxDATA0356HLCALDELAY;執行指令后,程序轉到0356H單元執行五、單片機編程語言(八)關于AT89S51指令部分的說明1.關于操作數的字節地址和位地址的區分問題例如,指令"M0VC,40H,和指令"M0VA,40H,中源操作數"40H,都是以直接地址形式給出的。顯然前條指令中的"40H,肯定是位地址,因為目的操作數C是位變量;后條指令的"40H,是字節地址,因為目的操作數A是字節變量。2.關于累加器A與ACC的書寫問題ACC匯編后的機器碼必有一個字節的操作數是累加器的字節地址E0H,A匯編后則隱含在指令操作碼中。五、單片機編程語言(八)關于AT89S51指令部分的說明3.書寫2位十六進制數據前要加0經常遇到必須在某些數據或地址的前面多填一個前導0,否則匯編就不能通過。這是匯編語言的嚴格性和規范性的體現。由于部分十六進制數是用字母來表示的,而程序內的標號也常用字母表示,為了將標號和數據區分開,幾乎所有的匯編語言都規定,凡是以字母開頭(對十六進制數而言,就是A~F開頭)的數字量,應當在前面添加一個數字0任務單片機功能體驗——LED的“眨眼”節奏控制工作內容及要求本任務通過單片機對接在P1.0口上的一

只LED進行閃爍控制

。控制過程為上電后LED點亮,持續點亮一段時間后,LED熄滅,熄滅相同的時間后再點亮……這樣周而復始地進行下去,形成“眨眼”的效果。通過實訓體驗單片機控制外圍設備的方法,了解單片機硬件系統和軟件指令系統協調工作的過程,激發學生學習單片機應用技術的興趣

。任務要求程序設計是單片機開發最重要的工作,而程序在執行過程中常常需要完成延時的功能。在單片機編程里并沒有真正的延時指令,從前面介紹過的機器周期和指令周期的概念中,我們知道單片機每執行一條指令都需要一定的時間,所以要達到延時的效果,可以讓單片機不斷地執行沒有具體實際意義的指令或循環重復某種操作,從而達到延時的效果。1.

空操作指令NOP2.

循環轉移指令DJNZ利用以上三種操作方式的組合就可以比較精確地編寫出所需要的延時程序。3.利用定時器延時一、簡單的單片機時間控制二、程序流程圖流程圖就是用箭頭線將一些規定的圖形符號(如半圓弧形框、矩形框、菱形框等)有機地連接起來的圖形。二、程序流程圖常見的流程圖結構說明如圖1-19所示。一、硬件電路原理圖的設計1.電路設計思路及控制要求"眨眼"的LED的具體控制原理是采用典型的單片機芯片AT89S51進行控制的。利用單片機的P1端口中的某位外接一只LED,LED負極接P1.0正極通過限流電阻接電源。2.硬件電路原理圖設計實例根據上述的控制要求設計出的電路原理圖如圖1-20所示。二、會"眨眼"的LED系統程序設計1.

主程序流程圖根據程序設計思路畫出程序流程圖如圖所示。二、會"眨眼"的LED系統程序設計2.

采用字節操作進行LED的控制參考程序(采用字節操作)編寫如下,程序仿真圖如圖所示。二、會"眨眼"的LED系統程序設計二、會"眨眼"的LED系統程序設計3.

采用位操作進行LED的控制參考程序(采用位操作)編寫如下,程序仿真圖如圖所示。二、會"眨眼"的LED系統程序設計二、會"眨眼"的LED系統程序設計4.延時程序參數的變化對"眨眼"節奏的影響改變延時子程序DELAY中的R6或R7的參數,觀察LED"眨眼"節奏的變化情況。注意R6和R7的值不能超過255或0FFH。若想增加延時時間,可以再加一層延時循環。三、"眨眼"電路的實訓效果圖"眨眼"電路的實訓效果圖如圖所示。本項目詳細介紹了單片機的存儲結構、端口結構、指令語言、程序設計流程等基礎知識,結合實訓模塊,介紹了單片機指令系統的構成、指令的尋址方式及各類指令的格式、功能和使用方法。51系列單片機共有7種尋址方式,即立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。尋址方式的不同主要表現為取操作數的方法和尋址范圍的不同。51系列單片機指令按功能分為5大類111條,由于條數比較多,初學時不宜死記硬背。對于具體的指令,應結合尋址方式找出規律來記憶。小結感謝觀看!項目二單片機編譯軟件的使用及電路仿真項目說明在本項目中,主要學習偉福仿真軟件、Proteus仿真軟件和KeilC仿真軟件的使用方法和特點。通過實訓加深對仿真軟件的使用感受,掌握單片機應用系統開發的基本思路、步驟和方法。(1)掌握偉福仿真軟件的使用方法;(2)掌握KeilC仿真軟件的使用方法;(3)掌握Proteus仿真軟件的使用方法。知識要求(1)會用偉福仿真軟件對電路進行仿真;(2)會用Proteus軟件繪制電路原理圖并實現仿真;(4)綜合利用各種仿真軟件并結合單片機進行簡單的系統開發。(3)會用KeilC軟件對源程序進行編譯調試及與Proteus軟件聯調,實現電路仿真;知識要求項目準備1.偉福純軟件仿真器的特點偉福純軟件仿真器具有以下幾個特點。一、偉福軟件的使用(1)雙平臺。有DOS版本和Windows版本兩種,其中Windows版本功能強大,中文界面、英文界面可任選。(2)雙工作模式。具有軟件模擬仿真(不要仿真器也能模擬仿真)和硬件仿真兩種工作模式。(3)雙集成環境。編輯、編譯、下載、調試全部集中在一個環境下。多種仿真器、多類CPU仿真全部集成在一個環境下。2.Windows版本軟件安裝(1)將光盤插入光驅,找到WAVE6000文件夾,打開。(2)雙擊SETUP文件。(3)按照安裝程序的提示輸入相應內容。(4

)繼續安裝,直至結束。也可以將安裝盤全部復制到硬盤的一個目錄(文件夾)中,執行相應目錄下的SETUP文件進行安裝。一、偉福軟件的使用3.軟件的啟動(1)在開始菜單單擊“程序”→“WAVE”。(2)如果在桌面建立了快捷方式,直接雙擊其圖標即可。啟動之后的界面如圖所示。一、偉福軟件的使用1)設置仿真器選擇菜單“仿真器設置”→“仿真器”,彈出“仿真器設置”對話框,如圖所示。一、偉福軟件的使用4.軟件的使用單擊“目標文件”選項卡,出現圖所示界面,按圖示設置即可。一、偉福軟件的使用單擊“語言”選項卡,出現圖所示界面,按照圖中設置即可。一、偉福軟件的使用2)建立源程序執行“文件”→“新建文件”命令,出現圖所示的窗口。一、偉福軟件的使用默認文件名稱是NONAME1,然后就可以在此窗口中輸入源程序了。例如,輸入以下一個小程序。MOV30H,#5AHMOVDPTR,#0128HMOVA,30HMOVX@DPTR,ANOP首先輸入源程序,修改文件名。執行“文件”→“另存為”命令,出現圖所示對話框。輸入文件名(如“MOVX.ASM”),單擊“保存”按鈕即可。一、偉福軟件的使用3)新建項目執行“文件”→“新建項目”命令,新建項目會自動分三步進行。新建項目并加入模塊文件窗口如圖所示。一、偉福軟件的使用(1)加入模塊文件。加入剛建立的模塊文件。(2)加入包含文件。在“加入包含文件”對話框中選擇要加入的包含文件,如果沒有包含文件,單擊“取消”按鈕,如圖所示。一、偉福軟件的使用(3)保存項目。在“保存項目”對話框中輸入項目名稱,無須加后綴,軟件會自動將后綴設成“.PRJ”,單擊“保存”按鈕將項目保存在與源程序相同的文件夾中,如圖所示。一、偉福軟件的使用4)匯編執行“項目”→“編譯”命令,就會自動調用偉福匯編器對源程序進行匯編,這時在信息窗口會顯示匯編的相關信息,如圖所示。一、偉福軟件的使用圖中信息表示沒有錯誤,匯編完成。如果有錯誤,雙擊錯誤信息行,在源程序窗口會出現深色顯示行,指示錯誤所在。修改錯誤后,再次匯編,直到沒有錯誤。這時在代碼窗口(CODE)會出現十六進制的機器碼,默認的開始地址是0000H,如圖所示。一、偉福軟件的使用5)調試執行“執行”→“復位”命令,在源程序窗口出現橄欖綠色橫條,橫條顯示在即將執行的程序行上,并且在該行的前面出現一個小箭頭,指示該行指令即將被執行,如圖所示。執行“執行”→“單步”命令,即執行該條指令,并將橫條和小箭頭移動到下一行指令上,同時可以在對應的窗口看到執行的結果,如圖所示。一、偉福軟件的使用單步運行到第三條指令后的情形如圖所示。由圖可知,即將執行的指令如下。MOVX@DPTR,A一、偉福軟件的使用ProteusISIS是英國Labcenter公司開發的電路分析與實物仿真軟件。它運行于Windows操作系統上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點如下。二、Proteus軟件的使用(1)實現了單片機仿真和SPICE電路仿真相結合。(2)支持主流單片機系統的仿真。(3)提供軟件調試功能。(4)具有強大的原理圖繪制功能。1.Proteus的特點Proteus啟動界面如圖所示,工作界面如圖所示。二、Proteus軟件的使用2.Proteus的啟動在Proteus中,鼠標操作與傳統的方式不同,其右鍵用來選取,左鍵用來編輯或移動。二、Proteus軟件的使用3.Proteus的鼠標使用原則右擊選中對象,此時對象呈紅色;再次右擊已選中的對象,即可刪除該對象。右鍵拖曳可以框選一個塊的對象。單擊可以放置對象或對選中的對象編輯屬性。左鍵拖曳可以移動對象。二、Proteus軟件的使用4.原理圖設計的步驟(1)新建設計文件并設置圖樣參數和相關信息。(2)放置元器件。(3)對原理圖進行布線。(4)調整、檢查和修改。(5)補充完善。(6)存儲和輸出。二、Proteus軟件的使用5.對元器件的操作1)選擇元器件單擊圖標工具欄中的圖標,并單擊圖中所示對象選擇器中的P按鈕,出現選擇元器件對話框,如圖所示。5.對元器件的操作二、Proteus軟件的使用2)放置元器件在對象選擇器窗口中選中元器件,將鼠標置于圖形編輯窗口該對象的欲放位置,單擊,完成該對象的放置。3)移動元器件若對象位置需要移動,將鼠標移到該對象上,右擊,可以注意到該對象的顏色已變至紅色,表明該對象已被選中。單擊鼠標左鍵拖動,將對象移至新位置后松開鼠標,完成移動操作。4)刪除元器件對于誤放置的元器件,右鍵雙擊對象即可刪除。若不小心進行了誤刪除操作,可通過工具欄的“撤銷”按鈕進行恢復。5.對元器件的操作二、Proteus軟件的使用5)調整元器件的方位選中元器件,使其高亮顯示,單擊“旋轉”按鈕即可調整方位。6)撤銷選中(刷新)編輯窗口顯示正在編輯的電路原理圖,可以通過執行“View”→“Redraw”命令來刷新顯示內容,也可以單擊工具欄的“刷新”命令按鈕或者快捷鍵“R”,同時預覽窗口中的內容也將被刷新。7)編輯對象先右鍵單擊鼠標選中對象,然后單擊對象,此時出現屬性編輯對話框。這時可以改變元器件標號、值、PCB封裝以及是否把這些東西隱藏等,修改完畢單擊“OK”按鈕即可。(1)單擊繪圖工具欄中的“總線”按鈕,使之處于選中狀態。將鼠標置于圖形編輯窗口,繪制出總線。(2)單擊繪圖工具欄中的“導線”按鈕,在圖形編輯窗口完成導線或總線的標注。6.對原理圖布線二、Proteus軟件的使用Proteus具有線路自動路徑功能(簡稱WAR),當選中兩個連接點后,WAR將選擇一個合適的路徑連線。二、Proteus軟件的使用7.KeilC與Proteus連接仿真調試在KeilC中編譯輸出“*.HEX”文件,右擊選中工作區中的單片機芯片,單擊

打開屬性對話框,如圖所示。單擊按鈕,在彈出的選擇文件對話框中選擇相應的“*.HEX”文件。三、KeilC編譯器的使用首先進行軟件的安裝,這里不再贅述。運行Keil軟件,執行“Project”→“NewProject”(新建工程)命令,如圖所示。三、KeilC編譯器的使用在出現的窗口中選擇保存工程的路徑及具體目錄,如圖所示。三、KeilC編譯器的使用輸入新建工程文件名,如圖所示。三、KeilC編譯器的使用接著需要選擇單片機的類型及具體型號,操作如下。(1)選擇單片機類型,如圖所示。三、KeilC編譯器的使用(2)選擇單片機具體型號,單擊“確定”按鈕,如圖所示。三、KeilC編譯器的使用(3)在接著出現的窗口中單擊“是”或“否”按鈕均可,這里單擊“是”按鈕,如圖所示。三、KeilC編譯器的使用(4)執行“File”→“NewProject”(新建文件)命令,如圖所示。(5)執行“File”→“Save”命令保存文件,在彈出的對話框中輸入文件名和擴展名(C語言加“c”后綴,匯編語言加“asm”后綴),如圖所示。三、KeilC編譯器的使用(6)添加代碼文件到工程中,單擊“Target”前邊的“+”,添加文件到SourceGroup1,方法如圖所示。(7)在出現的窗口中進行圖所示操作,即添加前面保存的代碼文件到工程中。三、KeilC編譯器的使用(8)接著就可以編寫代碼了,代碼編寫過程中可隨時保存且很有必要,關于代碼的編寫請查閱其他相關資料,代碼編寫區域如圖所示。三、KeilC編譯器的使用如果需要生成“.HEX”文件,即燒錄到單片機的文件,還應進行圖所示操作。三、KeilC編譯器的使用在接著出現的窗口中進行圖所示操作。三、KeilC編譯器的使用在程序編寫完成時要進行查錯及文件編譯,如圖所示。窗口最下部為輸出窗口,編譯中出現的錯誤及警告可在此處看到,如圖所示。三、KeilC編譯器的使用調試程序直至沒有出現錯誤。若事先選擇了生成“.HEX”文件,則系統將創建“.HEX”文件,如圖所示,再用相應軟件即可將該文件燒錄到單片機里。1)貨源充足、穩定3)芯片加密功能完善2)性價比高4)研發周期短四、單片機應用系統的開發過程1.明確系統功能在選擇單片機類型時應綜合考慮以下幾個因素。四、單片機應用系統的開發過程2.硬件電路設計與搭建硬件設計的任務是依據總體設計的要求,在選定單片機類型的基礎上規劃出系統的硬件電路框圖、所用的元器件及電氣連接關系,生成系統的電路原理圖,再根據經驗或經過計算確定系統中每一元器件的參數、型號及封裝形式。四、單片機應用系統的開發過程(2)系統配置及擴展標準必須充分滿足系統的功能要求并留有余地,以便于系統的二次開發。(1)盡可能選擇標準化、模塊化的典型電路,且符合單片機應用系統的常規用法。(3)硬件結構應結合控制程序設計一并考慮。(6)可靠性及抗干擾設計是硬件系統設計不可缺少的一部分。(5)單片機外接電路較多時,必須考慮其驅動能力。(4)系統中相關的器件要盡可能做到性能匹配。四、單片機應用系統的開發過程3.軟件(程序)設計與編譯一個單片機應用系統所擁有的硬件資源可分為片內和片外兩部分。4.程序語言及程序結構選擇設計控制程序時可選擇C語言,如KeilC,也可以選擇匯編語言。選擇C語言時,程序編寫、調試相對容易,但編譯后代碼長,所需程序存儲空間大,執行速度慢。而采用匯編語言時,情況則正好相反。5.軟件可靠性設計由于單片機芯片主要應用于工業控制、智能化儀器儀表和家用電器中,因此對單片機應用系統的可靠性要求更高。四、單片機應用系統的開發過程(1)PC“飛跳”過部分程序段,如果跳過的部分正好是接收輸入數據程序段,則將造成隨后的數據處理不正常。(2)拆分多字節指令,即將一條指令的操作數部分當作指令碼執行。(3)跳到數據區,把數據當指令執行。6.下載程序到單片機中并調試四、單片機應用系統的開發過程1)利用編程器把程序寫入單片機編程器是一個專門用于單片機寫入的設備,寫入就是把程序代碼存儲到單片機的過程。編程器通過串口或并口與普通計算機連接,計算機端通過寫入芯片的應用程序控制編程器的工作,將編譯好的“.HEX”文件中的十六進制代碼寫入單片機專門用于存儲執行代碼的空間中。2)利用下載線把程序在線寫入單片機現在一些單片機(如AT89S51)大都支持在線下載(insystemprograming)。在線下載與前述提到的編程器寫入單片機不同。在線下載不需要使用編程器就能使代碼在目標系統中直接被寫入,即指令代碼能從普通計算機直接寫入單片機。任務汽車雙閃燈控制程序的編譯工作內容及要求雙閃燈即危險報警閃光燈,其開關為紅三角標志的按鈕。雙閃燈是一種提醒其他車輛與行人注意本車發生了特殊情況的信號燈。本任務中,利用單片機驅動左右兩個LED來模擬雙閃燈,LED的亮滅過程即雙閃燈的閃爍過程,亮滅之間的時間間隔通過單片機延時500ms程序控制完成。雙閃按鈕如圖所示。本任務用AT89S51單片機作為系統的控制核心,利用單片機P0口的兩個位端口控制兩個LED,利用延時程序來控制LED亮與滅之間的時間間隔達到500ms,從而模擬汽車的兩個轉向燈實現“雙閃”功能。兩個LED接限流電阻,限流電阻起到保護LED的作用。在項目一中學習了單片機驅動負載的方法,這里仍然采用單片機接收輸入電流,提供低電平使LED發光。因此,使P0.0和P0.7分別接LED的負極。其他按單片機最小系統的接法,即40號引腳接電源,20號引腳接地,電解電容接復位端(9號引腳),18號和19號引腳接晶振的兩端,31號引腳接電源。任務分析1.“雙閃”硬件電路設計及連接根據本任務的工作內容及要求,結合任務分析,設計的汽車雙閃燈控制系統硬件電路圖如圖所示。根據硬件電路圖在面包板上連接此汽車雙閃燈模擬電路。一、硬件電路及軟件程序設計2.軟件程序編寫根據汽車雙閃燈控制系統硬件電路圖和本任務的工作內容及要求,編寫程序如下。(閃爍亮滅之間延時500ms)一、硬件電路及軟件程序設計1.把匯編的源程序編譯成可執行文件用偉福軟件把前述程序匯編成可執行文件,具體操作如下。二、程序編譯與調試(4)保存新建項目,系統自動添加項目名稱的擴展名。(1)打開偉福仿真軟件,選擇“新建文件”,輸入分支結構系統軟件程序。(2)保存新建文件,擴展名必須為“.ASM”或“.asm”。(3)選擇“新建項目”,加入剛保存的新建文件。(8)打開CPU窗口和外設端口,“單步運行”或設置好斷點進行“連續運行”。(5)仿真器設置中,在“語言”選項里選擇“偉福匯編器”。(6)執行“項目”→“編譯”命令或按F9鍵,進行程序編譯。(7)根據編譯提示信息進行修改,直到編譯成功,生成可執行的十六進制文件“.HEX”。汽車雙閃燈程序仿真(點亮/熄滅)窗口如圖所示。二、程序編譯與調試2.把程序下載到單片機二、程序編譯與調試(4)單擊“運行”中的“開始”按鈕,把程序下載到單片機中,如圖所示。(1)把單片機從電路板上取下,放到編程器上。(2)打開編程器軟件,在“操作”菜單下選擇單片機型號。(3)打開編譯好的可執行文件“.HEX”,放到文件緩沖區。3.軟硬件聯合調試把寫入程序的單片機安置到搭好的電路中進行軟硬件聯合調試。調試成功后,改變R2的參數,把“MOVR2,#5”改成“MOVR2,#2”,再觀察電路的情況,看有什么變化。二、程序編譯與調試1)汽車雙閃燈點亮汽車雙閃燈點亮的實訓效果圖如圖所示。2)汽車雙閃燈熄滅汽車雙閃燈熄滅的實訓效果圖如圖243所示。本項目主要介紹了WAVE6000、Proteus、KeilC三種軟件的使用過程和單片機系統開發過程。WAVE6000軟件采用中文界面,用戶源程序大小不受限制,有豐富的窗口顯示方式,能夠多方位、動態地展示程序的執行過程。Proteus軟件不僅具有其他EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發系統。與匯編語言相比,C語言在功能、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。單片機系統開發是一個相對復雜的工程,要計劃和考慮的問題較多,總體來說包含下列步驟:設計前的準備工作、硬件設計、軟件設計、電子工藝設計、調試方案設計。小結感謝觀看!項目三單片機循環彩燈制作項目說明在本項目中,設計一個應用實例——循環彩燈(流水燈)制作。就是將若干個發光二極管排列成一列或其他形狀,在單片機的控制下依次發光,達到流動的效果。知識要求(4)掌握單片機數據輸入的方法;(1)掌握單片機端口的控制方法;(2)熟悉常用單片機傳送指令的使用方法;(3)理解常用幾種結構程序設計的特點;(5)掌握常用元器件的特性和測試方法;(6)掌握單片機子程序的編寫及調用方法;(7)掌握單片機延時程序的編寫方法。能力要求(4)能夠進行時鐘電路、復位電路的正確連接及調試;(1)能夠靈活運用單片機中的傳送指令;(2)能夠使用WAVE6000軟件對匯編程序進行調試、編譯等;(3)能夠進行LED電路的正確連接及調試;(5)能夠根據項目要求設計出硬件電路;(6)能夠進行單片機系統控制電路的正確連接及調試;(7)能夠使用編程器下載程序到單片機中。項目準備1.數制、基數、位權一、單片機中常用的數制及編碼1)數制數制就是規定計數的進位制度,又稱為進位計數制。不同的計數方法的進位制度不同。2)基數十進制數中用于組成數字的編碼集合中的數碼為0~9這10個字符,而鐘表計時中采用0~59共60個字符,由此得出基數的概念。3)位權位權即一個常數,這個常數就是一個以該進制的基數為底,以數碼所在位置的編號為指數的冪數。2.任意進制的通用表示一、單片機中常用的數制及編碼R進制的數可以用kn-1kn-2…k2k1k0k-1k-2…k-m表示(其中,k表示數碼,n表示整數位數,m表示小數位數,R表示基數),其按照位權展開相加的形式為kn-1×Rn-1+kn-2×Rn-2+…+k2×R2+k1×R1+k0×R0+k-1×R-1+k-2×R-2+…+k-m×R-m3.常用數制一、單片機中常用的數制及編碼在計算機領域中,常用的數制有二進制、八進制、十六進制和十進制四種。四種常用數制的對照見表。3.常用數制一、單片機中常用的數制及編碼1)十進制數十進制(decimal)數的特點是基數為10,有0~9共10個數碼,逢十進一;各位的權為10i(i=-m~n-1,m為小數部分位數,n為整數部分位數)。2)二進制數二進制(binary)數的特點是基數為2,有0和1兩個數碼,逢二進一;各位的權為2i(i=-m~n-1)。3)十六進制數十六進制(hexadecimal)數的特點是基數為16,有0~9和A、B、C、D、E、F(對應十進制10~15)共16個數碼,逢十六進一;各位的權為16i(i=-m~n-1)。4.各種數制間的轉換一、單片機中常用的數制及編碼4)十六進制數轉換成二進制數十六進制數轉換成二進制數的方法是把每一位十六進制數轉換為相應的四位二進制數,小數點位置不變。1)非十進制數轉換成十進制數非十進制數轉換成十進制數的方法是將非十進制數的數值按權展開,再把各項相加。2)十進制數轉換成非十進制數十進制數轉換成非十進制數的方法是整數部分除基取余,余數倒序排列;小數部分乘基取整,整數正序排列。3)二進制數轉換成十六進制數轉換方法是從二進制數的小數點開始,整數部分向前而小數部分向后,每四位劃分為一組,前面不足四位和末尾不足四位的補0,再把各組數(每組四位)分別轉換為相應的十六進制數,小數點位置不變。(1)由4位二進制數0000~1001分別表示十進制數0~9。(2)每4位二進制數的進位規則為逢十進一。1)BCD碼人們日常習慣使用十進制數,而計算機又不能直接識別十進制數,為了將十進制數用二進制數表示,并按十進制的運算規則運算,就出現了BCD碼(binarycodedecimal)。(3)當進行兩個BCD碼運算時,為了得到BCD碼結果,需要進行十進制調整。一、單片機中常用的數制及編碼5.單片機中的常用編碼2)ASCII碼ASCII碼(美國信息交換標準代碼)是一種用于信息交換的美國標準代碼。7位字符集廣泛用于代表標準美國鍵盤上的字符或符號。ASCII碼用來在計算機中表示各種字母、符號等。ASCII碼是由7位二進制數碼構成的字符編碼,常用的ASCII碼表共有27=128種組合狀態,用它們表示52個大小寫英文字母、10個十進制數、7個標點符號、9個運算符號及50個其他控制符號。常用的ASCII碼見表。一、單片機中常用的數制及編碼一、單片機中常用的數制及編碼一、單片機中常用的數制及編碼1.數據傳送指令二、常用指令及延時程序詳解MOVP1,#0FFHMOVP2,#0FFH以上傳送指令是初始化端口,就是在并行口P0、P1、P2或P3作為輸入數據的端口時,先給此8位并行口送去1,然后讀這些并行口數據,以保證讀入的數據不出錯。MOVA,P1;可以用ANLA,P1指令來完成同樣的任務MOVP0,A以上兩條傳送指令的用途是:讀取端口P1的輸入值,再把這一數值送給P0端口輸出。2.控制轉移類指令二、常用指令及延時程序詳解LCALLDEL500ms……RETSJMPLOOPJNBACC.0,KEY0JNBACC.7,KEY1DJNZR3,LOOP1上面第一條指令是長調用子程序指令,調用子程序DEL500ms;RET是子程序DEL500ms的最后一條語句,表示子程序返回到LCALL的下一條指令繼續執行;SJMPLOOP指令表示無條件轉移到標號為LOOP的語句處;JNBACC.0,KEY0指令是當累加器A的最低位等于0時,轉移到KEY0處去執行;JNBACC.7,KEY1指令是當累加器A的最高位等于0,轉移到KEY1處去執行;DJNZR3,LOOP1指令先執行R3-1,若R3-1的值不為0,轉移到LOOP1處執行,一般用于循環的次數判定。3.循環移位指令二、常用指令及延時程序詳解RLARRA以上兩條指令把累加器A中的數據循環移動1位,不同的是RLA是向左循環1位,而RRA是向右循環1位。這兩條指令常用在彩燈移動點亮方面。4.延時子程序二、常用指令及延時程序詳解(1)時序分析。①時鐘周期。單片機要正常工作,必須接晶振電路,晶振電路產生的矩形波的周期就是單片機時序的一個基準信號,相當于現實生活中的秒。②機器周期。單片機工作時,是一條一條地從ROM中取指令,然后一步一步地執行的,因此規定單片機訪問一次存儲器的時間稱為一個機器周期。③指令周期。為了衡量指令執行時間的長短,引入指令周期的概念。(2)延時程序。軟件延時程序在單片機程序設計中應用十分廣泛,其主要設計思想就是利用DJNZ減1指令構成循環程序,只占用CPU的時間,而不進行任何實質性操作來實現延時功能。任務一循環彩燈的簡易控制工作內容及要求本任務通過單片機對接在P0口上的8個LED進行移動和閃爍控制,形成一個簡易的循環彩燈控制系統。控制過程為:上電后第一個彩燈(LED)點亮500ms后,開始由右向左移動,即從低位向高位移動,移動到最左邊后再返回向右移動。當彩燈返回移動到最開始處時8個彩燈一起閃爍3次,然后整個程序再重復執行下去,直到關閉電源才會停止。通過實訓熟悉單片機控制I/O端口的方法,了解和熟悉單片機硬件系統和軟件指令系統的開發過程。任務要求根據本任務的工作內容及要求,單片機如何控制彩燈的亮滅是任務實施的關鍵。由于結構原因,51系列單片機對外提供負載電流(拉電流)的能力很弱,如果外接多個負載(本任務中負載是LED),需要單片機對外提供的總電流會很大,超出它的供給能力,這樣不僅不能驅動這些負載,還會造成單片機損壞。但單片機接受灌電流(單片機接受負載輸入的電流)的能力卻很強,所以本任務中的8個LED的負極與P0口的各位直接連接。由于不同的LED的驅動電流不同,每個LED的正極串聯一個47~220Ω的限流電阻到VCC,這樣就得到了本例的循環彩燈系統電路圖,如圖所示。順序結構程序在執行時是從第一條指令開始依次執行每一條指令,直到執行完畢。這種結構的程序簡單明了,結構清晰,往往是構成復雜結構程序的基礎。但這種結構編寫出來的程序在修改時效率低,且程序冗長,占用存儲空間大。一、順序結構程序設計在一個實際的應用程序中,程序不可能始終是順序執行的,通常需要根據實際問題設定條件,通過對條件是否滿足的判斷產生一個或多個分支,以決定程序的流向,這種程序稱為分支程序。分支程序的特點是程序中含有條件轉移指令。51系列單片機的指令系統中直接用來判斷分支條件的指令有JZ、JNZ、CJNE、DJNZ、JC、JNC、JB、JNB等。正確合理地運用條件轉移指令是編寫分支程序的關鍵。二、分支結構程序設計二、分支結構程序設計1.循環初始化循環初始化程序段位于循環程序的開頭,用于完成循環前的準備工作。2.循環處理循環處理程序段位于循環程序的中間,又稱循環體,是循環程序不斷重復執行的部分,用于對數據進行實際處理。3.循環控制循環控制程序段包括修改變量和循環結束條件檢測兩部分。通過修改循環計數器和數據指針的值,為下一次循環和循環結束檢測做準備,然后通過條件轉移來判斷循環是否結束。4.循環結束循環結束程序段用于存放執行循環程序后的運算結果等操作。搭建硬件電路也就是在面包板或萬用板上插器件,并使用導線完成特定電氣連接,這個過程需要親自動手來完成。本任務硬件電路按圖31進行接線,實訓電路所需要的元器件見表。一、硬件電路的搭建一、硬件電路的搭建連接完成后,需要對照電路圖進行仔細檢查。當把編譯好的程序下載到單片機后再連接電源。在連接電源時務必確保電源的正負極沒有接反,否則單片機和其他一些元器件很容易被燒壞,容易發生危險。搭建硬件電路的步驟如下。(1)按照原理圖的要求在面包板上進行單片機、時鐘電路、復位電路的安裝。(2)安裝LED、排阻等其他元器件。(3)AT89S51單片機40腳接電源VCC,20腳接地。一、硬件電路的搭建單片機電路在搭建時,首先考慮能使單片機工作的最小系統。在以后的實訓中必須熟練掌握單片機最小系統的連接方法,這是單片機實訓的第一步。圖所示為單片機最小系統在面包板上搭建的效果圖。二、單片機端口輸出數據表在任務分析中分析了系統的功能和點亮LED的思路方法,要使端口對應的LED發光或熄滅,只需要使端口輸出低電平或高電平。表所示是8個LED做一次從右向左逐一點亮,接著從左端返回到右端的情況,最后是全滅和全亮的控制情況。表中每個步驟中端口為1的代表對應端口上的LED熄滅,而端口為0的代表對應的LED點亮。為了易于觀察,給P0的每一個端口配上一個二進制數描述這個過程,并在表中標出二進制數對應的十六進制數。二、單片機端口輸出數據表1.程序設計思路根據前面的系統分析可以得到軟件程序的設計思路:把表3-4中的數據依次向P0端口輸出。為了保證彩燈顯示的效果,把切換不同LED的時間間隔設為500ms,最后把全滅和全亮數據送出三次,全亮和全滅之間的時間間隔也設為500ms,時間延時通過調用延時500ms子程序來實現。按這個思路,利用傳送指令和子程序調用指令可以很容易地把程序編寫出來。三、循環彩燈順序結構程序設計2.程序設計內容循環彩燈順序結構程序設計如下。三、循環彩燈順序結構程序設計1.C語言編程示例四、C語言程序設計與編譯仿真2.程序編譯與Proteus仿真程序編寫完成,經過KeilC軟件編譯通過后,再利用Proteus軟件進行仿真。在Proteus中繪制仿真電路圖,將編譯好的HEX文件載入單片機中。啟動仿真,即可以看到彩燈的運行效果。仿真成功后,可以把編譯好的HEX文件寫入單片機芯片,通電運行聯合調試,觀察電路是否達到設計要求。四、C語言程序設計與編譯仿真利用WAVE6000仿真軟件進行如下操作:先進行新文件的建立,輸入上述程序,然后保存文件,命名為“LED1.ASM”;再建立項目文件,把保存好的“LED1.ASM”加入項目文件中并保存;設置仿真器,選擇偉福仿真器;編譯項目得到程序的十六進制文件,為以后寫入單片機時用。程序編譯完成后,單擊工具欄中的“單步運行”按鈕開始調試程序。如圖所示,調試結束后,如果發現各端口和寄存器的數值變化與預測的一致,說明程序沒有問題,仿真成功,可以寫入單片機進行實際工作。五、軟件仿真調試五、軟件仿真調試1.移位指令一、彩燈循環結構程序的指令應用2)循環右移指令執行循環右移指令時,ACC中的每一位向右循環移動一位。每次移出ACC的位0進入位7,即“ACC.0”→“ACC.7”,如圖所示。該指令不影響標志位。1)循環左移指令執行循環左移指令時,ACC中的每一位向左循環移動一位。每次移出ACC的位7進入位0,即“ACC.7”→“ACC.0”,如圖所示。該指令不影響標志位。2.循環控制指令通過表3-4所列的端口輸出數據可以總結出彩燈是先從右向左移位的,每次移動一位,一共移動8位到最左側,然后返回,用了7次移位返回到原處。顯然用上述介紹的循環移位指令能使“0”流動起來,但流動多少次如何進行控制呢?這里需要用循環控制指令DJNZ來控制循環的次數,于是有如下指令應用。一、彩燈循環結構程序的指令應用1.循環結構程序設計思路先讓所有燈熄滅,再讓第一個燈點亮,然后利用循環移位指令向左移動一次點亮第2個燈,判斷循環是否到第7次,不到繼續左移一位……右移的方法與左移的相同,最后讓燈全滅全亮3次,接著程序開始循環。二、循環結構程序設計2

溫馨提示

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

評論

0/150

提交評論