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

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論