單片機(jī)實(shí)驗(yàn)指導(dǎo)書(shū)(C語(yǔ)言).doc_第1頁(yè)
單片機(jī)實(shí)驗(yàn)指導(dǎo)書(shū)(C語(yǔ)言).doc_第2頁(yè)
單片機(jī)實(shí)驗(yàn)指導(dǎo)書(shū)(C語(yǔ)言).doc_第3頁(yè)
單片機(jī)實(shí)驗(yàn)指導(dǎo)書(shū)(C語(yǔ)言).doc_第4頁(yè)
單片機(jī)實(shí)驗(yàn)指導(dǎo)書(shū)(C語(yǔ)言).doc_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單單 片片 機(jī)機(jī) 原原 理理 及及 應(yīng)用應(yīng)用 實(shí)實(shí) 驗(yàn)驗(yàn) 指指 導(dǎo)導(dǎo) 書(shū)書(shū) C 語(yǔ)言 華南師范大學(xué)物電學(xué)院 微機(jī)教研室 宋暉 2011 09 前前 言言 由于單片機(jī)具有高可靠性 超小型 低價(jià)格 容易產(chǎn)品化等特點(diǎn) 在儀 器儀表智能化 實(shí)時(shí)工業(yè)控制 實(shí)時(shí)數(shù)據(jù)采集 智能終端 通信設(shè)備 導(dǎo)航 系統(tǒng) 家用電器等控制應(yīng)用領(lǐng)域 具有十分廣泛的用途 由于目前在國(guó)內(nèi)單 片機(jī)應(yīng)用中 MCS 51 系列單片機(jī)仍然是一種主流單片機(jī) 所以本實(shí)驗(yàn)指導(dǎo) 書(shū)為學(xué)習(xí) MCS 51 單片機(jī)的學(xué)生 配合 單片機(jī)原理 及應(yīng)用 課程的教學(xué) 結(jié)合本學(xué)院自制 單片機(jī)教學(xué)實(shí)驗(yàn) 板編寫(xiě)了這本實(shí)驗(yàn)指導(dǎo)書(shū) 單片機(jī)原理 應(yīng)用及 是一門(mén)實(shí)踐性很強(qiáng)的課程 提高教學(xué)質(zhì)量的一 個(gè)重要環(huán)節(jié)是上機(jī)實(shí)習(xí)和訓(xùn)練 無(wú)論是學(xué)習(xí)匯編語(yǔ)言程序設(shè)計(jì) 還是學(xué)習(xí)接 口電路和外設(shè)與計(jì)算機(jī)的連接 或者軟硬兼施地研制單片機(jī)應(yīng)用系統(tǒng) 不通 過(guò)加強(qiáng)動(dòng)手是不能獲得預(yù)期效果的 本實(shí)驗(yàn)指導(dǎo)書(shū)提供多個(gè)實(shí)驗(yàn)的指導(dǎo)性 材料 有些實(shí)驗(yàn)還有一些有一定難度的選做項(xiàng)目 可以根據(jù)課時(shí)的安排和教 學(xué)要求進(jìn)行取舍 為了達(dá)到某些實(shí)驗(yàn)的目的 書(shū)中提供的參考程序與實(shí)際應(yīng) 用中的程序會(huì)有些差別 所以不一定是最優(yōu)的 由于時(shí)間緊迫 需要趕課程進(jìn)度與實(shí)驗(yàn)時(shí)間的同步 加上編者學(xué)識(shí)有 限 如有不妥之處 歡迎讀者批評(píng)指正 實(shí)實(shí) 驗(yàn)驗(yàn) 須須 知知 1 實(shí)驗(yàn)前必須閱讀教科書(shū)的有關(guān)部分和本實(shí)驗(yàn)指導(dǎo)書(shū) 了解 實(shí)驗(yàn)?zāi)康?內(nèi)容 步驟 做好實(shí)驗(yàn)前的準(zhǔn)備工作 編寫(xiě)好實(shí)驗(yàn)中 要求自編或修改的程序 完成實(shí)驗(yàn)前要求完成的準(zhǔn)備工作后方可 以上機(jī)實(shí)驗(yàn) 否則不得上機(jī)操作 2 各種電源的電壓和極性不能接錯(cuò) 嚴(yán)禁帶電接線和接插元 器件 通電前須經(jīng)過(guò)指導(dǎo)教師檢查認(rèn)可后方能通電 3 不準(zhǔn)隨意撥弄各種與實(shí)驗(yàn)無(wú)關(guān)的旋鈕和開(kāi)關(guān) 凡與本次實(shí) 驗(yàn)無(wú)關(guān)的任何設(shè)備都禁止動(dòng)用和摸弄 注意安全 4 嚴(yán)禁用手觸摸實(shí)驗(yàn)系統(tǒng)印制電路板和元器件的引腳 防止 靜電擊穿芯片 5 實(shí)驗(yàn)中若損壞儀器或元器件 應(yīng)及時(shí)向指導(dǎo)教師報(bào)告 6 在實(shí)驗(yàn)室內(nèi)保持安靜和衛(wèi)生 不得隨意走動(dòng)和喧嘩 集中 精力完成實(shí)驗(yàn) 7 實(shí)驗(yàn)完成后 關(guān)掉電源 及時(shí)整理實(shí)驗(yàn)臺(tái)桌面 保持環(huán)境 整潔 8 按規(guī)定認(rèn)真完成實(shí)驗(yàn)報(bào)告 在規(guī)定的時(shí)間內(nèi)繳上實(shí)驗(yàn)報(bào)告 9 凡實(shí)驗(yàn)或?qū)嶒?yàn)報(bào)告未能按規(guī)定完成的學(xué)員 不能參加本課 程的考試或考查 單片機(jī)實(shí)驗(yàn)報(bào)告格式 實(shí)驗(yàn)報(bào)告標(biāo)題 一 實(shí)驗(yàn)?zāi)康?二 實(shí)驗(yàn)內(nèi)容 三 實(shí)驗(yàn)設(shè)計(jì)及調(diào)試 1 實(shí)驗(yàn)分析及內(nèi)容 2 實(shí)驗(yàn)電路 畫(huà)出與實(shí)驗(yàn)內(nèi)容有關(guān)的簡(jiǎn)單實(shí)驗(yàn)電路 3 實(shí)驗(yàn)設(shè)計(jì)及調(diào)試步驟 根據(jù)內(nèi)容寫(xiě)出實(shí)驗(yàn)程序 調(diào)試程序 觀 察結(jié)果 4 實(shí)驗(yàn)調(diào)試過(guò)程中所遇到的問(wèn)題 解決問(wèn)題的思路和解決的方法 四 實(shí)驗(yàn)后的經(jīng)驗(yàn)教訓(xùn)總結(jié) 五 對(duì)實(shí)驗(yàn)課的建議 目 錄 實(shí)驗(yàn)一實(shí)驗(yàn)一 實(shí)驗(yàn)板使用 實(shí)驗(yàn)板使用 KEIL C51 軟件使用軟件使用 6 實(shí)驗(yàn)二實(shí)驗(yàn)二 單片機(jī)控制單片機(jī)控制 LED 燈點(diǎn)亮燈點(diǎn)亮 12 實(shí)驗(yàn)三實(shí)驗(yàn)三 模擬開(kāi)關(guān)燈模擬開(kāi)關(guān)燈 16 實(shí)驗(yàn)四實(shí)驗(yàn)四 單片機(jī)控制數(shù)碼管實(shí)驗(yàn)單片機(jī)控制數(shù)碼管實(shí)驗(yàn) 21 實(shí)驗(yàn)五實(shí)驗(yàn)五 中斷系統(tǒng)應(yīng)用實(shí)驗(yàn)中斷系統(tǒng)應(yīng)用實(shí)驗(yàn) 25 實(shí)驗(yàn)六實(shí)驗(yàn)六 LED 數(shù)碼管的動(dòng)態(tài)驅(qū)動(dòng)數(shù)碼管的動(dòng)態(tài)驅(qū)動(dòng) 29 實(shí)驗(yàn)七實(shí)驗(yàn)七 定時(shí)器定時(shí)器 計(jì)數(shù)器使用計(jì)數(shù)器使用 32 實(shí)驗(yàn)八實(shí)驗(yàn)八 數(shù)字電子鐘數(shù)字電子鐘 36 實(shí)驗(yàn)九實(shí)驗(yàn)九 矩陣鍵盤(pán)識(shí)別實(shí)驗(yàn)矩陣鍵盤(pán)識(shí)別實(shí)驗(yàn) 37 實(shí)驗(yàn)十實(shí)驗(yàn)十自動(dòng)演奏樂(lè)曲自動(dòng)演奏樂(lè)曲 41 實(shí)驗(yàn)十一實(shí)驗(yàn)十一 綜合實(shí)驗(yàn)綜合實(shí)驗(yàn) 交通信號(hào)燈控制器的設(shè)計(jì)交通信號(hào)燈控制器的設(shè)計(jì) 45 實(shí)驗(yàn)十二實(shí)驗(yàn)十二 教學(xué)板自檢程序設(shè)計(jì)教學(xué)板自檢程序設(shè)計(jì) 46 實(shí)驗(yàn)十三實(shí)驗(yàn)十三 綜合實(shí)驗(yàn) 數(shù)據(jù)采集綜合實(shí)驗(yàn) 數(shù)據(jù)采集 火災(zāi)報(bào)警裝置的軟硬件設(shè)計(jì)火災(zāi)報(bào)警裝置的軟硬件設(shè)計(jì) 47 附錄 實(shí)驗(yàn)教學(xué)板電路原理圖附錄 實(shí)驗(yàn)教學(xué)板電路原理圖 48 實(shí)驗(yàn)一實(shí)驗(yàn)一 實(shí)驗(yàn)板使用 實(shí)驗(yàn)板使用 Keil C51 軟件使用軟件使用 一 實(shí)驗(yàn)?zāi)康囊?實(shí)驗(yàn)?zāi)康?1 熟悉單片機(jī)實(shí)驗(yàn)板 Keil C51軟件使用 二 實(shí)驗(yàn)說(shuō)明二 實(shí)驗(yàn)說(shuō)明 本實(shí)驗(yàn)介紹實(shí)驗(yàn)板的組成 Keil C51 軟件使用以及燒錄軟件的使用 通過(guò)該實(shí)驗(yàn)學(xué)生 可以了解單片機(jī)編程 調(diào)試方法 三 實(shí)驗(yàn)內(nèi)容及步驟三 實(shí)驗(yàn)內(nèi)容及步驟 1 啟動(dòng) PC 機(jī) 安裝好 Keil C51 軟件以及燒錄軟件 用串口線連接計(jì)算機(jī)與實(shí)驗(yàn)板 USB 線提供電源 2 打開(kāi) Keil uVision2 仿真軟件 首先建立本實(shí)驗(yàn)的項(xiàng)目文件 接著建立源程序 編譯 無(wú)誤后 全速運(yùn)行程序 3 可把源程序編譯成可執(zhí)行文件 用燒錄器燒錄到 89 芯片中 四 四 Keilc 軟件使用說(shuō)明軟件使用說(shuō)明 1 打開(kāi)程序 雙擊程序 2 新建工程 Project New Project 保存工程 選擇 CPU 一般選 ATMEL 公司的 AT89S51 17 3 設(shè)置工程 右擊 Options for Target 1 選擇 Create HEX 輸出 HEX 文件 18 4 新建源文件 選 File New 輸入 編輯源程序 保存 匯編源程序 文件名 asm C 源程序 文件名 c 5 為工程添加源文件 在 Project 出口 File 頁(yè)上單擊文件組 選擇 Add Files to Group Source Group 1 選項(xiàng) 選擇你的源文件和文件類(lèi)型 然后點(diǎn)擊 ADD 再點(diǎn)擊 close 19 6 編譯 點(diǎn)擊 或右擊 Target 1 Build Target F7 就可對(duì)源程序進(jìn)行編譯 當(dāng)程序有語(yǔ)法錯(cuò)誤時(shí) 會(huì)在輸出窗口 Output Windows 中顯示錯(cuò)誤信息和警告信息 修改編譯成功后會(huì)生成 HEX 文件 7 下載 調(diào)試 編譯成功后 用在線燒錄程序?qū)?HEX 文件下載到單片機(jī)內(nèi)部 ROM 中 運(yùn)行 在運(yùn)行過(guò)程中若發(fā)現(xiàn)錯(cuò)誤要重新修改程序 并編譯后再下載運(yùn)行 五 燒錄軟件的使用五 燒錄軟件的使用 1 打開(kāi)在線燒錄程序 2 選擇 MCU 類(lèi)型 STC89C51RC 1 點(diǎn)擊 打開(kāi)工程目錄下的 hex 文件 2 選擇端口 一般是 COM1 3 點(diǎn)擊 Download 燒錄程序 4 打開(kāi)實(shí)驗(yàn)板上的電源 如果燒錄的時(shí)候出現(xiàn)問(wèn)題 點(diǎn)擊 stop 注意 注意 5 5 6 6 兩步驟的順序不能顛倒 即在兩步驟的順序不能顛倒 即在點(diǎn)擊 Download 之前要先關(guān)掉實(shí)驗(yàn)板上的電源 實(shí)驗(yàn)二實(shí)驗(yàn)二 單片機(jī)控制單片機(jī)控制 LED 燈點(diǎn)亮燈點(diǎn)亮 一 實(shí)驗(yàn)?zāi)康囊?實(shí)驗(yàn)?zāi)康?1 進(jìn)一步熟悉編程和程序調(diào)試 2 學(xué)習(xí) P1 口的使用方法 3 學(xué)習(xí)延時(shí)子程序的編寫(xiě)和使用 二 實(shí)驗(yàn)說(shuō)明二 實(shí)驗(yàn)說(shuō)明 1 輸出控制 如圖 1 所示 當(dāng) P1 0 端口輸出高電平 即 P1 0 1 時(shí) 根據(jù)發(fā)光二極管的單向?qū)щ娦?可知 這時(shí)發(fā)光二極管 L1 熄滅 當(dāng) P1 0 端口輸出低電平 即 P1 0 0 時(shí) 發(fā)光二極管 L 1 亮 我們可以使用 SETB P1 0 指令使 P 1 0 端口輸出高電平 使用 CLR P1 0 指令 使 P1 0 端口輸出低電平 XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 510 8 VCC P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 RESET R2F 100 R1F 1K L0 L1 L2 L3 L4 L5 L6 L7 2 延時(shí)子程序的設(shè)計(jì)方法 作為單片機(jī)的指令的執(zhí)行時(shí)間是很短的 數(shù)量達(dá)微秒級(jí) 因此 如果我們要求的閃爍時(shí)間 間隔為 0 2 秒 相對(duì)于微秒來(lái)說(shuō) 相差太大 所以我們?cè)趫?zhí)行某一指令時(shí) 插入延時(shí)程序 來(lái)達(dá)到我們的要求 但這樣的延時(shí)程序是如何設(shè)計(jì)呢 下面具體介紹其原理 石英晶體為 12MHz 因此 1 個(gè)機(jī)器周期為 1 微秒 機(jī)器周期 微秒 MOV R6 20 2 個(gè)機(jī)器周期 2 D1 MOV R7 248 2 個(gè)機(jī)器周期 2 20 DJNZ R7 2 個(gè)機(jī)器周期 2 248 20 DJNZ R6 D1 2 個(gè)機(jī)器周期 2 20 40 10002 因此 上面的延時(shí)程序時(shí)間為 10 002ms XTAL1A 11 0592MHz C3A 22pF C2A 22pF P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 RST 9 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P3 6 WR 16 P3 7 RD 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 89C51 U1F C3F 10uF VCC VCC P3 0 P3 1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 EA ALE PSEN P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 P3 2 P3 3 P3 4 P3 5 P3 6 P3 7 510 8 VCC P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 RESET R2F 100 R1F 1K L0 L1 L2 L3 L4 L5 L6 L7 由以上可知 當(dāng) R6 10 R7 248 時(shí) 延時(shí) 5ms R6 20 R7 248 時(shí) 延時(shí) 10ms 以此 為基本的計(jì)時(shí)單位 如要求 0 2 秒 200ms 10ms R5 200ms 則 R5 20 匯編延時(shí)子程 序如下 DELAY MOV R5 20 D1 MOV R6 20 D2 MOV R7 248 DJNZ R7 DJNZ R6 D2 DJNZ R5 D1 RET C 語(yǔ)言延時(shí)子程序如下 void delay02s void 延時(shí) 0 2 秒子程序 unsigned char i j k for i 20 i 0 i for j 20 j 0 j for k 248 k 0 k 三 實(shí)驗(yàn)步驟及參考例子三 實(shí)驗(yàn)步驟及參考例子 實(shí)驗(yàn)步驟說(shuō)明 實(shí)驗(yàn)步驟說(shuō)明 本實(shí)驗(yàn)需要用到單片機(jī)最小應(yīng)用系統(tǒng) 用 P1 口做輸出口 程序功能使發(fā)光二極管點(diǎn)亮 1 用串行數(shù)據(jù)通信線連接計(jì)算機(jī)與實(shí)驗(yàn)板 用 USB 給實(shí)驗(yàn)板提供電源 3 打開(kāi) Keil uVision2 仿真軟件 首先建立本實(shí)驗(yàn)的項(xiàng)目文件 輸入源程序 參考程序 1 進(jìn)行編譯 直到編譯無(wú)誤 生成 hex 文件 5 通過(guò) STC ISP 下載軟件 將 hex 文件下載到實(shí)驗(yàn)板內(nèi) 觀察發(fā)光二極管顯示情況 參考例子參考例子 1 點(diǎn)亮板子上的第一個(gè)燈 D0 2 讓第一個(gè)燈閃爍 四 參考程序四 參考程序 一 適用于 mini80E 實(shí)驗(yàn)板 1 include void main P1 0 xfe 2 include define uint unsigned int define uchar unsigned char delay void main while 1 P1 0 xfe delay P1 0 xff delay void delay uint x y for x 100 x 0 x for y 600 y 0 y 二 適用于自制最小系統(tǒng)實(shí)驗(yàn)板 1 include void main void P2 0 x00 P2 0 x10 P0 0 xfe 2 include void delay void void main void P2 0 x00 while 1 P2 0 x10 P0 0 xfe delay P2 0 x00 P0 0 xff delay void delay void int x y for x 600 x 0 x for y 100 y 0 y 六 實(shí)驗(yàn)內(nèi)容六 實(shí)驗(yàn)內(nèi)容 請(qǐng)?jiān)?keil 環(huán)境下編寫(xiě)以下程序 1 點(diǎn)亮最后一個(gè) LED 或者任意一個(gè) LED 或者任意幾個(gè) LED 2 讓點(diǎn)亮的 LED 閃爍 3 點(diǎn)亮板子上的 D0 D2 D4 D6 燈 與 D1 D3 D5 D7 燈交替閃爍 4 設(shè)計(jì)出流水燈程序 從 D7 D0 或從 D0 D7 實(shí)驗(yàn)三實(shí)驗(yàn)三 模擬開(kāi)關(guān)燈模擬開(kāi)關(guān)燈 1 實(shí)驗(yàn)?zāi)康?1 進(jìn)一步熟悉編程和程序調(diào)試 2 學(xué)習(xí)獨(dú)立按鍵的使用方法 2 實(shí)驗(yàn)說(shuō)明 如果系統(tǒng)只需幾個(gè)按鍵 可直接采用 I O 線構(gòu)成單個(gè)按鍵電路 各個(gè)按鍵之間相互獨(dú) 立 一根線上的按鍵狀態(tài)不會(huì)影響其他輸入線上的工作狀態(tài) 又稱(chēng)獨(dú)立式鍵盤(pán)接口電路 檢測(cè)是否有鍵閉合 如有鍵閉合 則去除鍵抖動(dòng) 判斷鍵號(hào)并轉(zhuǎn)入相應(yīng)的按鍵處理 編寫(xiě)單片機(jī)的鍵盤(pán)檢測(cè)程序時(shí) 一般在檢測(cè)按下時(shí)加入去抖延時(shí) 檢測(cè)松手時(shí)就不用加了 3 參考例子參考例子 1 通過(guò)四個(gè)按鍵來(lái)控制 LED 燈的顯示情況 S1 D0 點(diǎn)亮 S2 D1 點(diǎn)亮 S3 D2 點(diǎn)亮 S4 D3 點(diǎn)亮 4 參考程序 一 適用于自制實(shí)驗(yàn)板 include define uint unsigned int define uchar unsigned char uchar flag uchar key down sbit LED2 P0 0 sbit LED3 P0 1 sbit LED4 P0 2 sbit LED5 P0 3 void delay uint k uint data i j for i 0 i k i for j 0 j 121 j uchar scan key void uchar temp temp P3 return temp void main void key down 0 P3 0 xf7 P2 0 x10 P0 0 xff while 1 P3 0 xf7 if P3 0 xf7 if P3 0 xf7 key down 1 switch flag case 0 xe7 LED2 LED2 break case 0 xd7 LED3 LED3 break case 0 xb7 LED4 LED4 break case 0 x77 LED5 LED5 break default break if P3 0 xf7 key down 0 二 適用與 mini80E 板 include define uint unsigned int define uchar unsigned char uchar flag void delay uint k uint data i j for i 0 i k i for j 0 j 121 j uchar scan key void uchar temp temp P3 return temp void main void while 1 P3 0 xff if P3 0 xff delay 20 if P3 0 xff flag scan key else flag 0 switch flag case 0 xfe P1 0 xfe break case 0 xfd P1 0 xfd break case 0 xfb P1 0 xfb break case 0 xf7 P1 0 xf7 break default P1 0 xff break 或者 include define uint unsigned int define uchar unsigned char uchar flag uchar key down sbit LED2 P1 0 sbit LED3 P1 1 sbit LED4 P1 2 sbit LED5 P1 3 void delay uint k uint data i j for i 0 i k i for j 0 j 121 j uchar scan key void uchar temp temp P3 return temp void main void key down 0 P3 0 xff P1 0 xff while 1 P3 0 xff if P3 0 xff if P3 0 xff key down 1 switch flag case 0 xfe LED2 LED2 break case 0 xfd LED3 LED3 break case 0 xfb LED4 LED4 break case 0 xf7 LED5 LED5 break default break if P3 0 xff key down 0 5 實(shí)驗(yàn)內(nèi)容 1 8 個(gè)按鍵分別對(duì)應(yīng) 8 盞 led 燈的亮滅 針對(duì)自制教學(xué)板 2 通過(guò)四個(gè)按鍵來(lái)控制 LED 燈的顯示情況 S1 D0 D3 點(diǎn)亮 S2 D2 點(diǎn)亮 S3 D0 D7 點(diǎn)亮 S4 D0 D5 點(diǎn)亮 實(shí)驗(yàn)四實(shí)驗(yàn)四 單片機(jī)控制數(shù)碼管實(shí)驗(yàn)單片機(jī)控制數(shù)碼管實(shí)驗(yàn) 一 實(shí)驗(yàn)?zāi)康囊?實(shí)驗(yàn)?zāi)康?1 掌握數(shù)碼管是如何顯示出字符 2 進(jìn)一步掌握延時(shí)子程序的使用 二 實(shí)驗(yàn)原理二 實(shí)驗(yàn)原理 1 數(shù)碼管兩種接法數(shù)碼管兩種接法 2 共陰極數(shù)碼管編碼共陰極數(shù)碼管編碼 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 1 2 3 4 5 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 6 7 8 9 A B 0 x39 0 x5e 0 x79 0 x71 0 x00 C D E F 無(wú)顯示 請(qǐng)思考共陽(yáng)極數(shù)碼管的編碼 三 參考例子參考例子 1 讓第一個(gè)數(shù)碼管顯示一個(gè) 8 字 A 對(duì)于 MINI80E 實(shí)驗(yàn)板 共陰極共陰極 數(shù)碼管的選通是通過(guò) P2 口控制三八譯碼器得 到的 要讓第一個(gè)數(shù)碼管顯示 8 字 那么別的數(shù)碼管的位選就要關(guān)閉 即只打開(kāi)第一 個(gè)數(shù)碼管的位選 控制位選的 P2 口要輸出的數(shù)據(jù)位 0 xf7 二進(jìn)制為 1111 0111 位選 確定后 在確定段選 要顯示的是 8 那么只有 dp 段為 0 其余段為 1 所以 P0 口要 輸出 0 x7f 二進(jìn)制 0111 1111 B 對(duì)于自制實(shí)驗(yàn)板 共陽(yáng)極 數(shù)碼管的選通是通過(guò) P2 口控制的 要讓第一個(gè)數(shù)碼管 顯示 8 字 那么別的數(shù)碼管的位選就要關(guān)閉 即只打開(kāi)第一個(gè)數(shù)碼管的位選 控制位 選的 P2 口要輸出的數(shù)據(jù)位 0 x08 二進(jìn)制為 0000 1000 位選確定后 在確定段選 要 顯示的是 8 那么只有 dp 段為 1 其余段為 0 所以 P0 口要輸出 0 x80 二進(jìn)制 1000 0000 ab cde g GND f dp GND a b c e f g d dp a b c d e f g dp dp g f e d c b a 5V a b 2 在四個(gè)數(shù)碼管上顯示 1 2 3 4 位選 接 P2 口 左邊四個(gè)數(shù)碼管 DS3 DS2 DS1 DS0 對(duì)應(yīng)的 P2 口 0 xf3 0 xf2 0 xf1 0 xf0 右邊四個(gè)數(shù)碼管 DS3 DS2 DS1 DS0 對(duì)應(yīng)的 P2 口 0 xf7 0 xf6 0 xf5 0 xf4 段選 接 P0 口 四 參考程序四 參考程序 一 一 mini80e 實(shí)驗(yàn)板實(shí)驗(yàn)板 1 include void main void while 1 P2 0 xf7 P0 0 x7f 2 include define uint unsigned int define uchar unsigned char void delay void main void while 1 P2 0 xf7 P0 0 x66 delay P2 0 xf6 P0 0 x4f delay P2 0 xf5 P0 0 x5b delay P2 0 xf4 P0 0 x06 delay void delay 延時(shí)程序 1 uint x y for x 2 x 0 x for y 112 y 0 y 二 自制教學(xué)實(shí)驗(yàn)板 共陽(yáng)極數(shù)碼管 1 include void main void while 1 P2 0 x08 P0 0 x80 2 include define uint unsigned int define uchar unsigned char void delay void main void while 1 P2 0 x08 P0 0 x99 delay P2 0 x04 P0 0 xb0 delay P2 0 x02 P0 0 xa4 delay P2 0 x01 P0 0 xf9 delay void delay 延時(shí)程序 1 uint x y for x 2 x 0 x for y 112 y 0 y 五 原理圖五 原理圖 六 實(shí)驗(yàn)內(nèi)容六 實(shí)驗(yàn)內(nèi)容 1 用一位數(shù)碼管循環(huán)顯示 0 9 2 用數(shù)碼管顯示字母 A F 3 交替點(diǎn)亮 4 個(gè)數(shù)碼管 例如 開(kāi)始時(shí)在數(shù)碼顯示器的最右邊一位上顯示 1 個(gè) 0 字 以后每隔 0 5 秒將 0 字左移 1 位 直到最左邊一位后則停止顯示 4 結(jié)合實(shí)驗(yàn) 3 實(shí)現(xiàn)按鍵與數(shù)字的一一對(duì)應(yīng) 實(shí)驗(yàn)五實(shí)驗(yàn)五 中斷系統(tǒng)應(yīng)用實(shí)驗(yàn)中斷系統(tǒng)應(yīng)用實(shí)驗(yàn) 一 實(shí)驗(yàn)?zāi)康囊?實(shí)驗(yàn)?zāi)康?1 掌握外部中斷技術(shù)的基本使用方法 2 掌握中斷處理程序的編寫(xiě)方法 二 實(shí)驗(yàn)說(shuō)明二 實(shí)驗(yàn)說(shuō)明 1 外部中斷的初始化設(shè)置共有三項(xiàng)內(nèi)容 中斷總允許即 EA 1 外部中斷允許即 EXi 1 i 0 或 1 中斷觸發(fā)方式設(shè)置 中斷觸發(fā)方式設(shè)置一般有兩種方式 電平觸發(fā)方式 和脈沖 邊沿 觸發(fā)方式 本實(shí)驗(yàn)選用后者 其前一次為高電平后一次為低電平時(shí)為有效 中斷請(qǐng)求 因此高電平狀態(tài)和低電平狀態(tài)至少維持一個(gè)周期 中斷請(qǐng)求信號(hào)由引腳 INT0 P3 2 和 INT1 P3 3 引入 本實(shí)驗(yàn)由 INT0 P3 2 引入 2 中斷控制原理 中斷控制是提供給用戶(hù)使用的中斷控制手段 實(shí)際上就是控制一些寄存器 51 系列用 于此目的的控制寄存器有四個(gè) TCON IE SCON 及 IP 3 中斷響應(yīng)的過(guò)程 首先中斷采樣然后中斷查詢(xún)最后中斷響應(yīng) 采樣是中斷處理的第一步 對(duì)于本實(shí)驗(yàn)的 脈沖方式的中斷請(qǐng)求 若在兩個(gè)相鄰周期采樣先高電平后低電平則中斷請(qǐng)求有效 IE0 或 IE1 置 1 否則繼續(xù)為 0 所謂查詢(xún)就是由 CPU 測(cè)試 TCON 和 SCON 中各標(biāo)志位的狀態(tài) 以確定有沒(méi)有中斷請(qǐng)求發(fā)生以及是那一個(gè)中斷請(qǐng)求 中斷響應(yīng)就是對(duì)中斷請(qǐng)求的接受 是 在中斷查詢(xún)之后進(jìn)行的 當(dāng)查詢(xún)到有效的中斷請(qǐng)求后就響應(yīng)一次中斷 4 8051 的中斷系統(tǒng) 8051 的中斷系統(tǒng)包括 5 個(gè)中斷源 并提供兩個(gè)優(yōu)先級(jí) 允許用戶(hù)對(duì)中斷源進(jìn)行獨(dú)立控制 和中斷優(yōu)先級(jí)設(shè)置 8051 支持的 5 個(gè)中斷源分別為外部中斷 0 定時(shí)器 0 溢出中斷 外部中 斷 1 定時(shí)器 1 溢出中斷和串口中斷 對(duì)應(yīng)的中斷號(hào)為 0 1 2 3 4 寄存器有 4 個(gè)工 作組可以切換 為 0 3 C51 中 中斷服務(wù)程序是以中斷函數(shù)的方式來(lái)時(shí)實(shí)現(xiàn)的 5 中斷函數(shù)格式如下 void 函數(shù)名 interrupt 中斷號(hào) using 工作組 中斷服務(wù)程序內(nèi)容 三 參考例子三 參考例子 1 右邊的三個(gè)數(shù)碼管從 000 開(kāi)始進(jìn)行加法計(jì)數(shù) 按動(dòng)按鍵時(shí)計(jì)數(shù)暫停 再按繼續(xù)計(jì) 數(shù) 四 參考程序四 參考程序 一 適用于自制教學(xué)實(shí)驗(yàn)板 一 適用于自制教學(xué)實(shí)驗(yàn)板 include define uchar unsigned char define uint unsigned int sbit P37 P3 7 uchar code table 10 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 uchar code wei 4 0 x08 0 x04 0 x02 0 x01 uint cnt bit flag void init void bit flag 0 設(shè)置標(biāo)志 EA 1 開(kāi)中斷 EX0 1 外部中斷 0 開(kāi)中斷 IT0 1 外部中斷 0 的觸發(fā)方式 void delay uint k uint data i j for i 0 i k i for j 0 j999 cnt 0 for i 0 i 100 i P0 table cnt 100 P2 wei 2 delay 1 P0 table cnt 100 10 P2 wei 1 delay 1 P0 table cnt 10 P2 wei 0 delay 1 void extern int0 void interrupt 0 using 0 flag flag 二 適用于 二 適用于 MINI80E 實(shí)驗(yàn)板實(shí)驗(yàn)板 include define uchar unsigned char define uint unsigned int sbit P37 P3 7 uchar code table 10 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f uchar code wei 4 0 xf7 0 xf6 0 xf5 0 xf4 uint cnt bit flag void init void bit flag 0 設(shè)置標(biāo)志 EA 1 開(kāi)中斷 EX0 1 外部中斷 0 開(kāi)中斷 IT0 1 外部中斷 0 的觸發(fā)方式 void delay uint k uint data i j for i 0 i k i for j 0 j999 cnt 0 for i 0 i 100 i P0 table cnt 100 P2 wei 2 delay 1 P0 table cnt 100 10 P2 wei 1 delay 1 P0 table cnt 10 P2 wei 0 delay 1 void extern int0 void interrupt 0 using 0 flag flag 五 實(shí)驗(yàn)內(nèi)容五 實(shí)驗(yàn)內(nèi)容 1 使用外部中斷 使用外部中斷 1 實(shí)現(xiàn)上述功能 注意實(shí)現(xiàn)上述功能 注意 C51 中的不同中斷號(hào) 中的不同中斷號(hào) 2 數(shù)碼管從 數(shù)碼管從 0000 開(kāi)始計(jì)數(shù) 高兩位和低兩位獨(dú)立計(jì)數(shù) 采用兩個(gè)按鍵 一個(gè)對(duì)應(yīng)開(kāi)始計(jì)數(shù) 高兩位和低兩位獨(dú)立計(jì)數(shù) 采用兩個(gè)按鍵 一個(gè)對(duì)應(yīng) 前兩位的暫停和繼續(xù) 另一個(gè)對(duì)應(yīng)后兩位的暫停和繼續(xù) 前兩位的暫停和繼續(xù) 另一個(gè)對(duì)應(yīng)后兩位的暫停和繼續(xù) 實(shí)驗(yàn)六實(shí)驗(yàn)六 LED 數(shù)碼管的動(dòng)態(tài)驅(qū)動(dòng)數(shù)碼管的動(dòng)態(tài)驅(qū)動(dòng) 一 實(shí)驗(yàn)?zāi)康?1 學(xué)習(xí) LED 數(shù)碼管的動(dòng)態(tài)驅(qū)動(dòng)編程 2 學(xué)習(xí)使用定時(shí) 計(jì)數(shù)器 二 實(shí)驗(yàn)內(nèi)容 編寫(xiě)程序 使實(shí)驗(yàn)板上的 4 個(gè) LED 數(shù)碼管穩(wěn)定顯示 4 個(gè)不同的數(shù)字 并使這四位數(shù)從 0000 開(kāi)始 每秒鐘加一 三 實(shí)驗(yàn)說(shuō)明 在前面實(shí)驗(yàn)中 我們已經(jīng)能夠讓某一個(gè) LED 數(shù)碼管顯示需要的數(shù)字 比如選讓第一 個(gè) LED 顯示 1 隔一較短的時(shí)間 如 5 毫秒 后關(guān)閉第一個(gè) LED 讓第二個(gè) LED 顯示 2 如此周而復(fù)始 讓 4 個(gè) LED 依次顯 1 2 3 4 我們就能看到 4 個(gè) LED 上穩(wěn) 定地顯示 4 個(gè)不同的數(shù)字 當(dāng)然 每個(gè)瞬間只有一個(gè) LED 被點(diǎn)亮 大家亮的時(shí)間相同 均為 5 毫秒 4 個(gè) LED 數(shù)碼管點(diǎn)亮一遍需要 20 毫秒 一秒鐘各亮 50 次 所以看上去 不會(huì)有閃爍感 但亮度只是實(shí)驗(yàn)四中 LED 亮度的四分之一 要實(shí)現(xiàn)每隔 5 毫秒變換一個(gè) LED 最好的方法是使用定時(shí)器中斷 四 參考程序 一 自制實(shí)驗(yàn)教學(xué)板 C51 參考程序如下 include define U8 unsigned char U8 tab 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 U8 scn 0 x01 0 x02 0 x04 0 x08 先點(diǎn)亮左邊一個(gè)數(shù)碼管 U8 buf 4 0 0 0 0 顯示緩沖區(qū) 開(kāi)機(jī)先顯示 0000 U8 cnt 0 掃描計(jì)數(shù) void main void EA 1 允許中斷 TMOD 0 x01 設(shè)定時(shí)器 0 為模式 1 16 位 ET0 1 定時(shí)器 0 中斷允許 TH0 0 xee 晶振 11 0592MHz 5mS TL0 0 TR0 1 開(kāi)始計(jì)數(shù) while 1 死循環(huán) 等待中斷 void timeint void interrupt 1 定時(shí)器 0 中斷服務(wù)程序 char i TH0 0 xee 設(shè)置定時(shí)器時(shí)間常數(shù) TL0 0 i cnt 求應(yīng)點(diǎn)亮的 LED 號(hào) 從左到右依次為 0 1 2 3 P0 tab buf i 筆劃代碼送 P0 口 P2 scn i 控制掃描碼送 P2 口 if cnt 200 cnt 0 到 1 秒鐘 顯示的數(shù)字加一 for i 3 i 0 i buf i if buf i 10 buf i 0 加到 10 向前進(jìn)位 else break cnt 二 mini80e 實(shí)驗(yàn)板 C51 參考程序如下 include define U8 unsigned char U8 tab 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f U8 scn 0 xf4 0 xf5 0 xf6 0 xf7 先點(diǎn)亮左邊一個(gè)數(shù)碼管 U8 buf 4 0 0 0 0 顯示緩沖區(qū) 開(kāi)機(jī)先顯示 0000 U8 cnt 0 掃描計(jì)數(shù) void main void EA 1 允許中斷 TMOD 0 x01 設(shè)定時(shí)器 0 為模式 1 16 位 ET0 1 定時(shí)器 0 中斷允許 TH0 0 xee 晶振 11 0592MHz 5mS TL0 0 TR0 1 開(kāi)始計(jì)數(shù) while 1 死循環(huán) 等待中斷 void timeint void interrupt 1 定時(shí)器 0 中斷服務(wù)程序 char i TH0 0 xee 設(shè)置定時(shí)器時(shí)間常數(shù) TL0 0 i cnt 求應(yīng)點(diǎn)亮的 LED 號(hào) 從左到右依次為 0 1 2 3 P0 tab buf i 筆劃代碼送 P0 口 P2 scn i 控制掃描碼送 P2 口 if cnt 200 cnt 0 到 1 秒鐘 顯示的數(shù)字加一 for i 3 i 0 i buf i if buf i 10 buf i 0 加到 10 向前進(jìn)位 else break cnt 五 實(shí)驗(yàn)內(nèi)容 1 每個(gè)按鍵控制一個(gè)數(shù)碼管 按任意一個(gè)鍵 可在相應(yīng)的數(shù)碼管上實(shí)現(xiàn)數(shù)字加 1 2 如何讓 4 個(gè) LED 數(shù)碼管從 0000 開(kāi)始 每秒鐘自動(dòng)加 1 前兩位代表分 后兩位代 表秒 實(shí)驗(yàn)七實(shí)驗(yàn)七 定時(shí)器定時(shí)器 計(jì)數(shù)器使用計(jì)數(shù)器使用 一 實(shí)驗(yàn)?zāi)康囊?實(shí)驗(yàn)?zāi)康?1 學(xué)習(xí) 89C51 內(nèi)部定時(shí)計(jì)數(shù)器的使用和編程方法 2 進(jìn)一步掌握中斷處理程序的編寫(xiě)方法 二 實(shí)驗(yàn)說(shuō)明二 實(shí)驗(yàn)說(shuō)明 1 51 單片機(jī)有 兩個(gè) 16 位內(nèi)部定時(shí)器 計(jì)數(shù)器 T C Timer Counter 若是計(jì)數(shù)內(nèi) 部晶振驅(qū)動(dòng)時(shí)鐘 則是定時(shí)器 若是計(jì)數(shù) 8051 的輸入引腳的脈沖信號(hào) 則它是計(jì)數(shù)器 定 時(shí)器實(shí)際上也是工作在計(jì)數(shù)方式下 只不過(guò)對(duì)固定頻率的脈沖計(jì)數(shù) 由于脈沖周期固定由 計(jì)數(shù)值可以計(jì)算出時(shí)間 有定時(shí)功能 定時(shí)器有關(guān)的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON TMOD 用于設(shè) 置定時(shí)器 計(jì)數(shù)器的工作方式 0 3 并確定用于定時(shí)還是用于計(jì)數(shù) TCON 主要功能是為定 時(shí)器在溢出時(shí)設(shè)定標(biāo)志位 并控制定時(shí)器的運(yùn)行或停止等 2 TMOD 1 M1M0 工作方式控制位 2 C T 定時(shí)器方式或計(jì)數(shù)器方式選擇位 若 C T 1 時(shí) 為計(jì)數(shù)器方式 C T 0 時(shí) 為定時(shí)器方式 3 GATE 定時(shí)器 計(jì)數(shù)器運(yùn)行門(mén)控標(biāo)志位 當(dāng) GATE 1 時(shí) T C 的啟動(dòng)受雙重控制 即要求 INT0 或 INT1 引腳為高電平且 TR0 或 TR1 置 1 時(shí) 相應(yīng)的 T C 才被選通工作 若 GATE 0 T C 的啟動(dòng)僅受 TR0 或 TR1 控制 即置 1 T C 就被選通 而不管 INT0 或 INT1 的電平是高還是低 3 TCON TF0 TF1 分別是定時(shí)器 計(jì)數(shù)器 T0 T1 的溢出中斷標(biāo)志位 加法計(jì)數(shù)器計(jì)滿(mǎn)溢出時(shí) 置 1 申請(qǐng)中斷 在中斷響應(yīng)后自動(dòng)復(fù) 0 TF 產(chǎn)生的中斷申請(qǐng)是否被接受 還需要由中斷 是否開(kāi)放來(lái)決定 TR1 TR0 分別是定時(shí)器 計(jì)數(shù)器 T1 T0 的運(yùn)行控制位 通過(guò)軟件置 1 后 定時(shí)器 計(jì)數(shù)器才開(kāi)始工作 在系統(tǒng)復(fù)位時(shí)被清 0 4 初始化 1 初始化步驟 在使用 51 系列單片機(jī)的 T C 前 應(yīng)對(duì)它進(jìn)行編程初始化 主要是對(duì) TCON 和 TMOD 編程 還需要計(jì)算和裝載 T C 的計(jì)數(shù)初值 一般完成以下幾個(gè)步驟 1 確定 T C 的工作方式 編程 TMOD 寄存 2 計(jì)算 T C 中的計(jì)數(shù)初值 并裝載到 TH 和 TL 3 T C 在中斷方式工作時(shí) 必須開(kāi) CPU 中斷和源中斷 編程 IE 寄存器 4 啟動(dòng)定時(shí)器 計(jì)數(shù)器 編程 TCON 中 TR1 或 TR0 位 2 計(jì)數(shù)初值的計(jì)算 1 定時(shí)器的計(jì)數(shù)初值 在定時(shí)器方式下 T C 是對(duì)機(jī)器周期脈沖計(jì)數(shù)的 fOSC 6MHZ 一個(gè)機(jī)器周期為 12 fOSC 2us 則 方式 0 13 位定時(shí)器最大定時(shí)間隔 213 2us 16 384ms 方式 1 16 位定時(shí)器最大定時(shí)間隔 216 2us 131 072ms 方式 2 8 位定時(shí)器最大定時(shí)間隔 28 2us 512us 若 T C 工作在定時(shí)器方式 1 時(shí) 要求定時(shí) 1ms 求計(jì)數(shù)值 如設(shè)計(jì)數(shù)初值為 x 則 有 216 x 2us 1000us 推出 x 216 500 因此 TH TL 可置 65 536 500 2 計(jì)數(shù)器的計(jì)數(shù)初值 在計(jì)數(shù)器方式下 方式 0 13 位計(jì)數(shù)器的滿(mǎn)計(jì)數(shù)值 213 8192 方式 1 16 位計(jì)數(shù)器的滿(mǎn)計(jì)數(shù)值 216 65 536 方式 2 8 位計(jì)數(shù)器的滿(mǎn)計(jì)數(shù)值 28 256 若 T C 工作在計(jì)數(shù)器方式 2 時(shí) 則要求計(jì)數(shù) 10 個(gè)脈沖的計(jì)數(shù)初值 如設(shè)計(jì)數(shù)初值 為 x 則有 28 x 10 即 x 28 10 因此 TH TL 256 10 三 參考例子三 參考例子 1 設(shè)單片機(jī)晶振頻率為 12 MHz 利用定時(shí)器在 P1 0 腳輸出周期為 2 ms 的方波 分析 選用定時(shí)器 計(jì)數(shù)器 T0 作定時(shí)器 輸出為 P1 0 引腳 2 ms 的方波可由間隔 1 ms 的高低電平相間而成 因而只要每隔 1 ms 對(duì) P1 0 取反一次即可得到這個(gè)方波 機(jī)器周期 12 12MHz 1 s 1 ms 內(nèi) T0 需要計(jì)數(shù) N 次 N 1 ms 1 s 1000 由于計(jì)數(shù)器向上計(jì)數(shù) 為得到 1000 個(gè)計(jì)數(shù)之后的定時(shí)器溢出 必須給定時(shí)器置初值為 65 536 1000 2 在 P1 7 端接有一個(gè)發(fā)光二極管 要求利用 T C 控制 使 LED 亮 1s 滅 1s 周而復(fù)始 分析 要求定時(shí) 1s T C 的三種工作方式都不能滿(mǎn)足 為什么 對(duì)于較長(zhǎng)時(shí)間的定時(shí) 應(yīng)采用符合定時(shí)的方法 使 T C0 工作在定時(shí)器方式 1 定時(shí) 100ms 定時(shí)時(shí)間到后 P1 0 反相 即 P1 0 端輸 出周期 200ms 的方波脈沖 另設(shè) T C1 工作在計(jì)數(shù)器方式 2 對(duì) T1 輸出的脈沖計(jì)數(shù) 當(dāng)計(jì)滿(mǎn) 5 次 定時(shí) 1s 時(shí)間到 將 P1 7 端方向 改變燈的狀態(tài) 采用 6MHZ 晶振 方式 1 的最大定時(shí)才能達(dá)到 100 多 ms 對(duì)于 100ms 機(jī)器周期 為 12 fOSC 2us 需要計(jì)數(shù)的次數(shù) 100 1000 2 50 000 即初值為 65 536 50 000 方式 2 滿(mǎn) 5 次溢出中斷 初值為 256 5 四 參考程序四 參考程序 一 適用于自制實(shí)驗(yàn)教學(xué)板 1 設(shè)置周期為 2ms 的方波 查詢(xún)方式 include sbit P1 0 P1 0 void main TMOD 0 x01 T CO 工作在定時(shí)器方式 1 16 位定時(shí)器 TR0 1 啟動(dòng) T C0 for 主程序循環(huán) TH0 65536 1000 256 預(yù)置計(jì)數(shù)初值 TL0 65536 1000 256 do P1 0 P1 0 P1 0 取反 TF0 0 軟件清 TF0 while TF0 查詢(xún)等待 TF0 置位 中斷方式 include sbit P1 0 P1 0 void timer0 void interrupt 1 using 1 T C 中斷服務(wù)程序入口 TF0 0 清楚中斷標(biāo)志位 P1 0 P1 0 P1 0 取反 TH0 65536 1000 256 計(jì)數(shù)初值重裝載 TL0 65536 1000 256 void main TMOD 0 x01 T CO 工作在定時(shí)器方式 1 P1 0 0 TH0 65536 1000 256 預(yù)置計(jì)數(shù)初值 TL0 65536 1000 256 EA 1 CPU 開(kāi)中斷 TF0 0 ET0 1 T C0 開(kāi)中斷 TR0 1 啟動(dòng) T C0 開(kāi)始定時(shí) do while 1 2 燈的閃爍 時(shí)間間隔為 1s P1 0 與 P3 5 相連 作為定時(shí)器 1 的輸入 include sbit P1 0 P1 0 sbit P0 7 P0 7 timer0 interrupt 1 using 1 T C0 中斷服務(wù)程序入口 TF0 0 清楚中斷 T0 標(biāo)志位 P1 0 P1 0 P1 0 取反 TH0 65536 1000 256 計(jì)數(shù)初值重裝載 TL0 65536 1000 256 timer1 interrupt 3 using 2 T C1 中斷服務(wù)程序入口 TF1 0 清楚中斷 T1 標(biāo)志位 P0 7 P0 7 1s 到 燈改變狀態(tài) void main P2 0 x10 打開(kāi) LED 電源開(kāi)關(guān) P0 7 1 置燈初始滅 P1 0 1 保證第一次方向便開(kāi)始計(jì)數(shù) TMOD 0 x61 T CO 工作在定時(shí)器方式 1 T C1 工作在計(jì)數(shù)器方式 2 TH0 65536 10000 256 預(yù)置計(jì)數(shù)初值 10 毫秒 TL0 65536 10000 256 TH1 256 100 TL1 256 100 IP 0X08 置優(yōu)先級(jí)存儲(chǔ)器 EA 1 CPU 開(kāi)中斷 TF0 0 清除中斷 T0 標(biāo)志位 TF1 0 清除中斷 T1 標(biāo)志位 ET0 1 T C0 開(kāi)中斷 ET1 1 T C1 開(kāi)中斷 TR0 1 啟動(dòng) T C0 開(kāi)始定時(shí) TR1 1 啟動(dòng) T C1 do while 1 二 適用于 MINI80E 實(shí)驗(yàn)板 2 P0 7 與 P3 5 相連 作為定時(shí)器 1 的輸入 include sbit P1 0 P1 0 sbit P0 7 P0 7 timer0 interrupt 1 using 1 T C0 中斷服務(wù)程序入口 TF0 0 清除中斷 T0 標(biāo)志位 P0 7 P0 7 P1 0 取反 TH0 65536 1000 256 計(jì)數(shù)初值重裝載 TL0 65536 1000 256 timer1 interrupt 3 using 2 T C1 中斷服務(wù)程序入口 TF1 0 清除中斷 T1 標(biāo)志位 P1 0 P1 0 1s 到 燈改變狀態(tài) void main P2 0 x10 打開(kāi) LED 電源開(kāi)關(guān) P0 7 1 置燈初始滅 P1 0 1 保證第一次方向便開(kāi)始計(jì)數(shù) TMOD 0 x61 T CO 工作在定時(shí)器方式 1 T C1 工作在計(jì) 數(shù)器方式 2 TH0 65536 10000 256 預(yù)置計(jì)數(shù)初值 10 毫秒 TL0 65536 10000 256 TH1 256 100 TL1 256 100 IP 0X08 置優(yōu)先級(jí)存儲(chǔ)器 EA 1 CPU 開(kāi)中斷 TF0 0 清除中斷 T0 標(biāo)志位 TF1 0 清除中斷 T1 標(biāo)志位 ET0 1 T C0 開(kāi)中斷 ET1 1 T C1 開(kāi)中斷 TR0 1 啟動(dòng) T C0 開(kāi)始定時(shí) TR1 1 啟動(dòng) T C1 do while 1 五 電路圖五 電路圖 六 實(shí)驗(yàn)內(nèi)容六 實(shí)驗(yàn)內(nèi)容 1 利用定時(shí) 計(jì)數(shù)器 T1 產(chǎn)生定時(shí)時(shí)鐘 由 P1 口 或 P0 口 控制 8 個(gè)發(fā)光二極管 使 8 個(gè)指 示燈依次一個(gè)一個(gè)閃動(dòng) 閃動(dòng)頻率為 10 次 秒 8 個(gè)燈依次亮一遍為一個(gè)周期 循環(huán) GATE C T M1 M0 GATE C T M1 M0 TH1TL1TH0TL0 T1方式 T0方式 T1引腳 T0引腳 機(jī)器周 期脈沖 內(nèi)部總線 TMOD TCON 外部中斷相關(guān)位 TF1 TR1 TF0 TR0 實(shí)驗(yàn)八實(shí)驗(yàn)八 數(shù)字電子鐘數(shù)字電子鐘 一 實(shí)驗(yàn)?zāi)康?進(jìn)一步熟悉定時(shí) 計(jì)數(shù)器的使用 二 實(shí)驗(yàn)內(nèi)容 在實(shí)驗(yàn)板上編寫(xiě)程序 實(shí)現(xiàn)電子鐘功能 時(shí)間顯示格式為 HH MM 中間的小數(shù)點(diǎn)每秒鐘 閃爍一次 用兩個(gè)按鍵控制分和小時(shí)的調(diào)整 每按一次分或者小時(shí)加 1 三 實(shí)驗(yàn)說(shuō)明 前面實(shí)驗(yàn)鐘 LED 數(shù)碼管的筆劃代碼均不含小數(shù)點(diǎn) h 位為 1 小數(shù)點(diǎn)不亮 為了讓第 2 個(gè) LED 的小數(shù)點(diǎn)在每一秒的前半秒亮 后半秒滅 應(yīng)在定時(shí)器的中斷子程序中 判斷當(dāng) 前時(shí)間為前半秒 而且動(dòng)態(tài)掃描到第 2 個(gè) LED 時(shí) 將其筆劃代碼取出 和 0 xDF 相與 后再寫(xiě)入 P0 口 實(shí)驗(yàn)九實(shí)驗(yàn)九 矩陣鍵盤(pán)識(shí)別實(shí)驗(yàn)矩陣鍵盤(pán)識(shí)別實(shí)驗(yàn) 一 實(shí)驗(yàn)?zāi)康囊?實(shí)驗(yàn)?zāi)康?1 掌握矩陣鍵盤(pán)的檢測(cè)原理 二 實(shí)驗(yàn)說(shuō)明二 實(shí)驗(yàn)說(shuō)明 1 矩陣式鍵盤(pán)中 行 列線分別連接到按鍵開(kāi)關(guān)的兩端 行線通過(guò)上拉電阻接到 5V 上 當(dāng)無(wú)鍵按下時(shí) 行線處于高電平狀態(tài) 當(dāng)有鍵按下時(shí) 行 列線將導(dǎo)通 此時(shí) 行線電平 將由與此行線相連的列線電平?jīng)Q定 這一點(diǎn)是識(shí)別矩陣按鍵是否被按下的關(guān)鍵 然而 矩 陣鍵盤(pán)中的行線 列線和多個(gè)鍵相連 各按鍵按下與否均影響該鍵所在行線和列線的電平 各按鍵間將相互影響 因此 必須將行線 列線信號(hào)配合起來(lái)作適當(dāng)處理 才能確定閉合 鍵的位置 掃描方式是利用 CPU 完成其他工作的空余調(diào)用鍵盤(pán)掃描子程序來(lái)響應(yīng)鍵盤(pán)輸入的要求 在執(zhí)行鍵功能程序時(shí) CPU 不再響應(yīng)鍵輸入要求 直到 CPU 重新掃描鍵盤(pán)為止 鍵盤(pán)掃 描程序一般應(yīng)包括以下內(nèi)容 1 判別有無(wú)鍵按下 2 鍵盤(pán)掃描取得閉合鍵的行

溫馨提示

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

評(píng)論

0/150

提交評(píng)論