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