MCS-51單片機功能模塊及其應用.ppt
《MCS-51單片機功能模塊及其應用.ppt》由會員分享,可在線閱讀,更多相關(guān)《MCS-51單片機功能模塊及其應用.ppt(40頁珍藏版)》請在裝配圖網(wǎng)上搜索。
胡景春 單片機原理及應用 4 1并行口及其應用4 2定時器及其應用4 3串行接口UART4 489C52FLASH程序存儲器 第四章MCS 51單片機功能模塊及其應用 4 1并行口及其應用 MCS 51單片機中有 個雙向 位 并行I O端口 線 每線都配備獨立的端口鎖存器 輸出驅(qū)動器和輸入緩沖器 用于與外界設(shè)備之間交換信息4 1 1P0口 P0口一位結(jié)構(gòu)圖 P0口除了作普通的I O口 直接和外部設(shè)備打交道外 還用作片外總線的地址總線AB0 AB7的低八位和數(shù)據(jù)總線 注 單片機復位后4個端口對外均呈現(xiàn)高電平 P2口除了作普通的I O口 直接和外部設(shè)備打交道外 還用作片外總線的地址總線的高八位地址線AB8 AB15 P2口P0口在作輸出入口使用時 由于它無內(nèi)部上拉電阻 為了在口線上輸出高電平并具有一定的驅(qū)動能力 必須外接上拉電阻 注意 作輸入口使用時 為了防止口鎖存器對輸入口線的輸入信號造成影響 必須先往口鎖存器寫1 同理 P2口作輸入時 也必須先往口鎖存器寫1 P2口一位結(jié)構(gòu)圖 P1口一位結(jié)構(gòu)圖 P1口只用作普通輸入輸出口 P1口從單片機的使用角度來看 P1是一個真正的雙向口 而其他三個端口都是準雙向口 注意 和P0 P2口一樣 為防止口鎖存器對輸入口線造成影響 P1口作輸入時 也必須先往口鎖存器寫1 P3口一位結(jié)構(gòu)圖 P3口除了作普通的I O口 功能和P1口一樣 直接和外部設(shè)備打交道外 還具有第二功能 P3 0串行輸入口 RXD P3 1串行輸出口 TXD P3 2外中斷0 INT0 P3 3外中斷1 INT1 P3 5定時 計數(shù)器1的外部輸入口 T1 P3 6外部數(shù)據(jù)存儲器寫選通 WR P3 4定時 計數(shù)器0的外部輸入口 T0 P3 7外部數(shù)據(jù)存儲器讀選通 RD 4 3中斷系統(tǒng)應用舉例 例1 1 如圖所示為電加熱鍋爐控制工作原理圖和單片機控制系統(tǒng) 當壓力報警信號發(fā)出時 要求排汽電磁閥通電 打開排汽電磁閥以減少鍋爐內(nèi)蒸汽壓力 當?shù)退幌尬粓缶盘柊l(fā)出時 打開進水閥進水 當高水位限位報警信號發(fā)出時 關(guān)閉進水閥停止進水 當溫度達到100 時 關(guān)閉電加熱絲 當溫度低于95 時 接通電加熱絲 請設(shè)計控制軟件 圖4 3電加熱鍋爐控制工作示意圖 解 從示意圖和控制系統(tǒng)電原理圖中可以看出 該系統(tǒng)有5個中斷源 而單片機只有2個外部中斷請求 本系統(tǒng)中5個中斷源通過或非門后接入外部中斷1 5個中斷源中哪個發(fā)生中斷請求還需要通過查詢程序進行判斷 查詢順序的先后決定了這5個中斷源的優(yōu)先級高低 參考程序如下 ORG0000HLJMPMAINORG0013HLJMPINT1ORG0100HMAIN SETBEX1 允許INT1中斷SETBEA 開中斷HALT SJMPHALT 等待中斷ORG1000H中斷服務(wù)程序 INT1 JBP1 0PRESS P1 0 1轉(zhuǎn)壓力報警服務(wù)程序LOOP1 JBP1 1HIGH P1 1 1轉(zhuǎn)高水位服務(wù)程序JBP1 2LOW P1 2 1轉(zhuǎn)低水位服務(wù)程序 LOOP2 JBP1 3HEATOFF P1 3 1轉(zhuǎn)100 服務(wù)程序JBP1 4HEATON P1 4 1轉(zhuǎn)95 服務(wù)程序LOOP3 RETIPRESS SRTBP1 5 壓力報警服務(wù)程序JBP1 0PRESSCLRP1 5SJMPLOOP1HIGH CLRP1 6 高水位服務(wù)程序SJMPLOOP2LOW SETBP1 6 低水位服務(wù)程序SJMPLOOP2HEATOFF CLRP1 7 100 服務(wù)程序SJMPLOOP3HEATON SETBP1 7 95 服務(wù)程序SJMPLOOP3END 5 1定時 計數(shù)器的概述5 2定時 計數(shù)器的控制5 3定時 計數(shù)器的工作方式5 4定時 計數(shù)器的一般編程步驟5 5定時 計數(shù)器的應用舉例 第五章MCS 51單片機的定時 計數(shù)器 5 1定時 計數(shù)器概述 在單片機的內(nèi)部結(jié)構(gòu)中 有兩個16位可編程的定時 計數(shù)器 它們具有四種工作方式 其控制字和狀態(tài)均在相應的特殊功能寄存器中 通過對控制寄存器的編程 就可方便地選擇適當?shù)墓ぷ鞣绞?5 2定時 計數(shù)器的控制 1 定時器控制寄存器TCON 88H TR0 定時 計數(shù)器0運行控制位 0停止 1開始工作 與GATE位的狀態(tài)有關(guān) 軟件置位 軟件復位 TR1 定時 計數(shù)器1運行控制位 用法與TR0類似 TF0 TF1 分別是定時 計數(shù)器T0 T1的溢出標志位 2 定時方式寄存器TMOD 89H GATE 門控位 GATE 0啟動不受 INT0或 INT1的控制 GATE 1啟動受 INT0或 INT1的控制 C T 外部計數(shù)器 定時器方式選擇位C T 0定時方式 C T 1計數(shù)方式M1M0工作模式選擇位 編程可決定四種工作模式 5 3定時 計數(shù)器的工作方式 5 3 1工作方式0 13位定時 計數(shù)器 定時器 計數(shù)器方式0的計數(shù)器結(jié)構(gòu) 圖5 2方式0等效邏輯結(jié)構(gòu) 在計數(shù)工作方式下 計數(shù)器的計數(shù)值范圍是 20 213 1 8192在定時工作方式時 定時時間的計算公式為 定時時間 8192 計數(shù)初值 晶振周期 12 8192 計數(shù)初值 機器周期計數(shù)初值 8192 定時時間 機器周器 2n 定時時間 機器周期如果單片機的晶振選為6 000MHz 則最長定時時間為 8192 0 1 6 10 6 12 16384 10 6 s 16384 us 定時器 計數(shù)器運行控制的情況 由TR0控制的情況要運行控制位TR0能夠控制定時器 計數(shù)器的運行 其或門的輸出一定要為1 這就意味著GATE要設(shè)置為0或者INT0 1 因此在單片機的定時或計數(shù)應用中 要注意定時器方式寄存器TMOD的GATE位一定要設(shè)置為0 由INT0控制的情況要能用INT0來控制定時器 計數(shù)器的運行 TR0和GATE均應設(shè)置為1 這種情況可用于測量外部信號的脈沖寬度 例5 1 設(shè)單片機晶振頻率為6MHZ 使用定時器1以方式0產(chǎn)生周期為500 s的等寬正方波連續(xù)脈沖 并由P1 0輸出 以查詢方式完成 解 計算計數(shù)初值欲產(chǎn)生500 s的等寬正方波脈沖 只需在P1 0端以250 s為周期交替輸出高低電平即可實現(xiàn) 為此定時時間應為250 s 使用6MHZ晶振 則一個機器周期為2 s 方式0為13位計數(shù)結(jié)構(gòu) 設(shè)待求的計數(shù)初值為X 則 213 X 2 10 6 250 10 6求解得 X 8067 二進制數(shù)表示為0001111110000011B 十六進制 按方式0的13位11111100XXX00011 表示得 高8位為0FCH 低5位為03H 相關(guān)控制寄存器的設(shè)定TMOD各位的設(shè)定 設(shè)定方式0 M1M0 00 實現(xiàn)定時 C T 0 定時應用 GATE 0 TCON 地址 88H 是可以位尋址的 又因與該題有關(guān)的位只有TR1 故這里采用位尋址方式 用設(shè)置TR1 1來啟動定時器T1 TR1 0來停止定時器T1 IE題目要求采用查詢方式 當定時時間到定時器溢出標志位TF1置1時 不允許產(chǎn)生中斷 故應禁止中斷 即置IE 00H 參考程序 ANLTMOD 0FH 設(shè)置T1為定時工作方式0ORLTMOD 00H 且不影響T0的工作MOVTH1 0FCH 置計數(shù)初值MOVTL1 03HMOVIE 00H 禁止中斷LOOP SETBTR1 啟動定時器JBCTF1 LOOP1 查詢計數(shù)溢出AJMPLOOPLOOP1 MOVTH1 0FCH 重新設(shè)置計數(shù)初值MOVTL1 03HCPLP1 0 輸出取反AJMPLOOP 重復循環(huán)END 5 3 2工作方式1 16位定時 計數(shù)器 圖5 3方式1等效邏輯結(jié)構(gòu) 在計數(shù)工作方式下 計數(shù)器的計數(shù)值范圍是 20 216 1 65536在定時工作方式時 定時時間的計算公式為 定時時間 65536 計數(shù)初值 晶振周期 12 65536 計數(shù)初值 機器周期計數(shù)初值 65536 定時時間 機器周器 2n 定時時間 機器周期如果單片機的晶振選為6 000MHz 則最長定時時間為 65536 0 1 6 10 6 12 131072 10 6 s 131072 us 例2 2 設(shè)單片機晶振頻率為6MHZ 要求使用定時器0工作方式1產(chǎn)生周期為500 s的等寬正脈沖 并在P1 0端輸出 試編寫采用中斷方式完成的相關(guān)程序 解 計算計數(shù)初值 216 X 1 6 10 6 12 250 10 6X 65411 FF83H 即可得 TH0 0FFH TL0 83H 設(shè)置各相關(guān)控制寄存器TMOD應設(shè)置為XXXX0001B IE和TCON均采用位尋址方式 參考程序 ORG0000HSTART AJMPMAINORG000BHAJMPINTERORG0100HMAIN ANLTMOD 0F0H 置定時器0工作方式1ORLTMOD 01HMOVTH0 0FFH 設(shè)置計數(shù)初值MOVTL0 83HSETBEA CPU開中斷SETBET0 定時器0開中斷SETBTR0 啟動定時器0SJMP 等待中斷INTER MOVTH0 0FF 重新設(shè)置計數(shù)初值MOVTL0 83HCPLP1 0 輸出取反RETI 中斷返回END 2 3 3工作方式2 8位循環(huán)計數(shù) 圖2 4方式2等效邏輯結(jié)構(gòu) 方式2與方式0 1的區(qū)別 工作方式0和工作方式1的最大特點就是計數(shù)溢出后 計數(shù)器為全0 因而循環(huán)定時或循環(huán)計數(shù)應用時就存在反復設(shè)置初值的問題 這給程序設(shè)計帶來許多不便 同時也會影響計時精度 工作方式2就具有自動重裝載功能 即自動加載計數(shù)初值 所以也有的文獻稱之為自動重加載工作方式 在這種工作方式中 16位計數(shù)器分為兩部分 即以TL0為計數(shù)器 以TH0作為預置寄存器 初始化時把計數(shù)初值分別加載至TL0和TH0中 當計數(shù)溢出時 不再象方式0和方式1那樣需要 人工干預 由軟件重新賦值 而是由預置寄存器TH以硬件方法自動給計數(shù)器TL0重新加載 方式2在串口通訊時 常用作波特率發(fā)生器 例2 3 已知晶振頻率fosc 6MHz 要求使用定時器0以工作方式2產(chǎn)生100 s定時 在P1 0輸出周期為200 s的連續(xù)正方波脈沖 試編寫相關(guān)程序 解 計算計數(shù)初值在6MHZ晶振下 一個機器周期為2 s 假設(shè)計數(shù)初值為X 則 28 X 2 10 6 100 10 6求解得 X 206 0CEH 各有關(guān)控制寄存器的設(shè)置IE和TCON均采用位尋址方式 即分別將應位置 1 或 0 TMOD的設(shè)置 定時器 計數(shù)器0為方式2 M1M0 10 為實現(xiàn)定時功能C T應設(shè)置為0 為允許定時器 計數(shù)器0能通過TR0進行運行控制 須使GATE 0 定時器 計數(shù)器1不用 通常應不改變其參數(shù) 故應將其屏蔽起來 參考程序 查詢方式 ANLTMOD 0F0H 設(shè)置定時器0ORLTMOD 02H 為工作方式2MOVTH0 0CEH 設(shè)置計數(shù)初值MOV TL0 0CEHMOVIE 00H 禁止中斷SETBTR0 啟動定時LOOP JBCTF0 LOOP1 查詢計數(shù)溢出AJMPLOOPLOOP1 CPLP1 0 輸出方波 初值自動裝入AJMPLOOP 參考程序 中斷方式 主程序 ANLTMOD 0F0HORLTMOD 02HMOVTH0 0CEHMOVTL0 0CEHSETBEA CPU開中斷SETBET0 定時器0開中斷SETBTR0 啟動定時SJMP 等待中斷中斷服務(wù)程序 CLPP1 0RETI 5 3 4工作方式3 雙8位定時方式 圖5 5方式3等效邏輯結(jié)構(gòu) 前三種工作方式 對兩個定時器 計數(shù)器的設(shè)置和使用是完全相同的 但是在工作方式3下 兩個定時器 計數(shù)器的設(shè)置和使用卻是不同的 1 工作方式3下的定時器 計數(shù)器0在工作方式3下 定時器 計數(shù)器0被拆成兩個獨立的8位計數(shù)器TL0和TH0 其中TL0既可以用作計數(shù) 又可以用作定時 定時器 計數(shù)器0的各控制位和引腳信號全歸它使用 其功能和操作與方式0和方式1完全相同 而且邏輯電路結(jié)構(gòu)也極其類似 如圖5 13a所示 定時器 計數(shù)器0的高8位TH0 則只能作為簡單的定時器使用 而且由于定時器 計數(shù)器0的控制位已被TL0占用 因此只好借用定時器 計數(shù)器1的控制位TR1和TF1 即以計數(shù)溢出去置位TF1 而定時的啟動和停止則由TR1的狀態(tài)控制 在工作方式3下 定時器 計數(shù)器0可以構(gòu)成兩個定時器或一個定時器一個計數(shù)器 2 在定時器 計數(shù)器0設(shè)置為工作方式3時的定時器 計數(shù)器1定時器 計數(shù)器1不能工作于方式3 只能工作于方式0 方式1或方式2 且在定時器 計數(shù)器0已工作于方式3時 定時器 計數(shù)器1通常用作串行口的波特率發(fā)生器 以確定串行通信的速率 因為已沒有計數(shù)溢出標志位TF1可供使用 因此只能把計數(shù)溢出直接送給串行口 如圖5 14所示 當作為波特率發(fā)生器使用時 只需設(shè)置好工作方式 便可自動運行 如要停止工作 只需送入一個把它設(shè)置為方式3的方式控制字就可以了 5 4定時 計數(shù)器的一般編程步驟 首先必須對定時計數(shù)器進行初始化 然后再開啟定時或計數(shù) 簡單的總結(jié)一下 定時器 計數(shù)器的初始化包括以下內(nèi)容 1 確定工作方式 對TMOD賦值 如 MOVTMOD 06H指令 設(shè)定T0為計數(shù)器工作方式 2 預置定時計數(shù)器中計數(shù)的初值 直接寫入TH和TL 如MOVTH0 00H兩條指令 設(shè)定計數(shù)初值 MOVTL0 00H 3 開放定時器 計數(shù)器的中斷 對IE位賦值 4 啟動定時器 計數(shù)器 如 SETBTR0 5 計數(shù)初值的計算方法N 8192 定時時間 機器周器 2n 定時時間 機器周期n視工作方式不同而不同 方式0 n 13 最多計數(shù)脈沖是8192個 方式1 n 16 最多計數(shù)脈沖是65536個 方式2和方式3 n 8 最多計數(shù)脈沖是256個 5 5定時 計數(shù)器的應用舉例 例5 4 單片機對按鍵次數(shù) 99次 進行計數(shù) 并在發(fā)光二極管上實時顯示 圖5 6例5 4的硬件電路圖 任務(wù)描述 用手按動按鍵S3 每按鍵一次S3引腳上出現(xiàn)一個負脈沖 單片機計數(shù)一次 并實時將按鍵次數(shù)以BCD碼方式 在發(fā)光二極管上面顯示 圖5 7 例5 4 流程圖 ORG0000HLJMPMAINORG0030HMAIN MOVTMOD 06H 外部計數(shù)方式2MOVTH0 00H 設(shè)定計數(shù)初值MOVTL0 00H SETBTR0 啟動計數(shù)器A1 MOVA TL0CPLAMOVP1 A 送顯示SJMPA1END 例5 6 單片機上電 單燈按1HZ頻率循環(huán) 一旦按下按鍵S1 發(fā)光二極管按雙燈循環(huán) 松開此鍵 單燈繼續(xù)原來的循環(huán) 見圖5 6 圖5 8例5 6的流程圖 參考程序 ORG0000HLJMPMAINORG0003HLJMPINT 0 INT0中斷入口地址ORG000BHLJMPDELAY T0中斷入口地址MAIN SETBIT0 INT0邊沿觸發(fā)MOVTMOD 01H T0方式1 16位 MOVTL0 38H 延時0 05S 初值MOVTH0 50H 見備注 SETBPT0 T0設(shè)定為高級SETBEA 開中斷SETBEX0 允許INT0中斷SETBET0 允許T0中斷 MOVB 20 設(shè)定中斷次數(shù)SETBTR0 啟動T0MOVA FEH D1亮代碼BEGIN MOVP1 A D1亮CJNEB 00 等待中斷MOVB 20RLASJMPBEGININT 0 PUSHACCMOVA FCH D1D2亮代碼LOOP MOVP1 ACJNEB 00 MOVB 20RLAJNBP3 2 LOOPPOPACCRETIDELAY MOVTL0 38HMOVTH0 50HDECB 20 0 05 1SRETIEND- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- MCS 51 單片機 功能模塊 及其 應用
鏈接地址:http://www.hcyjhs8.com/p-6382246.html