




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
酒泉職業(yè)技術(shù)學(xué)院酒泉職業(yè)技術(shù)學(xué)院 畢畢 業(yè)業(yè) 設(shè)設(shè) 計(jì)計(jì) 題目模擬交通燈 系別機(jī)電工程系 專業(yè)機(jī)電一體化 班級09 機(jī)電 5 班 姓名毛顯鵬 學(xué)號 091101003 指導(dǎo)教師李玉軍 日期2011 年 11 月 I 設(shè)計(jì)任務(wù)書 設(shè)計(jì)題目 設(shè)計(jì)題目 單片機(jī)的交通燈控制器 設(shè)計(jì)要求 設(shè)計(jì)要求 1 在十字路口的兩個方向上各設(shè)一組紅綠黃燈 顯示順序?yàn)?其中一個方向是 綠燈 黃燈 紅燈 另一個方向是紅燈 綠燈 黃燈 2 設(shè)置一組數(shù)碼管 以倒計(jì)時(shí)的方式顯示允許通過或禁止通行的時(shí)間 其中左轉(zhuǎn) 燈 綠燈 黃燈 紅燈的持續(xù)時(shí)間分別是 15S 30S 3S 48S 3 當(dāng)各條路上任意一條出現(xiàn)特殊情況 例如消防車 救護(hù)車或其他需要優(yōu)先放行 的車輛時(shí) 各方向上均是紅燈亮 倒計(jì)時(shí)停止 且顯示數(shù)字在閃爍 當(dāng)特殊運(yùn)行狀態(tài)結(jié) 束后 控制器恢復(fù)原來狀態(tài) 繼續(xù)正常運(yùn)行 設(shè)計(jì)進(jìn)度要求 設(shè)計(jì)進(jìn)度要求 第一周 查找資料 初步確定論文題目 第二周 與老師商討 第三周 確定論文題目 第四周 根據(jù)論文題目進(jìn)一步查找材料 第五周 完成開提報(bào)告及論文大綱交老師批閱 第六周 依據(jù)論文大綱完成論文一稿交老師批閱 第七周 完成相關(guān)論文簡介 答辯提綱等 第八周 定稿打印 指導(dǎo)教師 簽名 指導(dǎo)教師 簽名 李玉軍 II 摘 要 近年來隨著科技的飛速發(fā)展 單片機(jī)的應(yīng)用正在不斷地深入發(fā)展 同時(shí)帶動傳 統(tǒng)控制檢測的更新 在實(shí)時(shí)檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中 單片機(jī)往往是作 為一個核心部件來使用 僅單片機(jī)方面的知識是不夠的 還應(yīng)該根據(jù)具體硬件結(jié)構(gòu) 以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合 加以完善 十字路口車輛穿梭 行人熙攘 車行車道 人行人道 有條不紊 那么靠什么來 實(shí)現(xiàn)這井然秩序呢 靠的是交通信號燈的自動指揮系統(tǒng) 交通信號燈控制方式很多 本系統(tǒng)采用 AT89C52 系列單片機(jī)和可編程并行 I O 接口芯片 8255A 為中心器件來設(shè) 計(jì)交通燈控制器 實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過 AT89C52 芯片的 P1 口設(shè)置紅 綠燈 燃亮?xí)r間的功能 為了系統(tǒng)穩(wěn)定可靠采用了 MAX629 看門狗 芯片 避免了系統(tǒng)因 為死機(jī)而停止工作的情況發(fā)生 顯示時(shí)間直接通過 8255 的 PA PB 口輸出 交通燈 信號通過 PC 口輸出 交通燈的點(diǎn)亮采用 VT 雙向晶閘管來控制 直接采用 220V 交 流電源驅(qū)動 系統(tǒng)實(shí)用性強(qiáng) 操作簡單 擴(kuò)展性強(qiáng) 關(guān)鍵詞 關(guān)鍵詞 單片機(jī) 看門狗 MAX629 交通燈 控制器 1 目 錄 摘 要 II 1 交通燈的發(fā)展及應(yīng)用 1 2 控制器系統(tǒng)設(shè)計(jì) 2 2 1 交通管理的方案 2 2 2 系統(tǒng)設(shè)計(jì)原理 3 3 芯片的選擇與簡介 6 3 1 AT89C52 芯片簡介 6 3 2 8255 芯片簡介 9 3 3 數(shù)碼管 11 4 控制器的軟件設(shè)計(jì) 12 4 1 計(jì)數(shù)器初值計(jì)算 12 4 2 軟件延時(shí) 13 4 3 AT89C52 并行口的擴(kuò)展 14 5 程序設(shè)計(jì) 16 5 1 流程圖 16 5 2 程序清單 18 6 看門狗硬件電路 22 6 1 軟件看門狗 22 6 2 硬件看門狗 23 7 系統(tǒng)的調(diào)試與運(yùn)行方案 25 7 1 實(shí)驗(yàn)步驟 25 7 2 系統(tǒng)內(nèi)存分配和 I 0 接口 26 7 3 實(shí)驗(yàn)程序原代碼 27 8 結(jié) 論 30 致 謝 31 參考文獻(xiàn) 32 1 1 交通燈的發(fā)展及應(yīng)用 目前紅綠燈安裝在各個道口上 已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手 段 但這一技術(shù)在 19 世紀(jì)就已出現(xiàn)了 1858 年 在英國倫敦主要街頭安裝了以燃煤氣為光源的紅 藍(lán)兩色的機(jī)械扳手 式信號燈 用以指揮馬車通行 這是世界上最早的交通信號燈 1868 年 英國機(jī)械 工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上 安裝了世界上最早的煤 氣紅綠燈 它由紅綠兩以旋轉(zhuǎn)式方形玻璃提燈組成 紅色表示 停止 綠色表示 注意 1869 年 1 月 2 日 煤氣燈爆炸 使警察受傷 遂被取消 1914 年 電氣啟動的紅綠燈出現(xiàn)在美國 這種紅綠燈由紅綠黃三色圓形的投光 器組成 安裝在紐約市 5 號大街的一座高塔上 紅燈亮表示 停止 綠燈亮表示 通行 1918 年 又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈 帶控制的紅綠燈 一種是 把壓力探測器安在地下 車輛一接近紅燈便變?yōu)榫G燈 另一種是用擴(kuò)音器來啟動紅 綠燈 司機(jī)遇紅燈時(shí)按一下嗽叭 就使紅燈變?yōu)榫G燈 紅外線紅綠燈當(dāng)行人踏上對 壓力敏感的路面時(shí) 它就能察覺到有人要過馬路 紅外光束能把信號燈的紅燈延長 一段時(shí)間 推遲汽車放行 以免發(fā)生交通事故 信號燈的出現(xiàn) 使交通得以有效管制 對于疏導(dǎo)交通流量 提高道路通行能力 減少交通事故有明顯效果 1968 年 聯(lián)合國 道路交通和道路標(biāo)志信號協(xié)定 對各 種信號燈的含義作了規(guī)定 綠燈是通行信號 面對綠燈的車輛可以直行 左轉(zhuǎn)彎和 右轉(zhuǎn)彎 除非另一種標(biāo)志禁止某一種轉(zhuǎn)向 左右轉(zhuǎn)彎車輛都必須讓合法地正在路口 內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行 紅燈是禁行信號 面對紅燈的車輛必 須在交叉路口的停車線后停車 黃燈是警告信號 面對黃燈的車輛不能越過停車線 但車輛已十分接近停車線而不能安全停車時(shí)可以進(jìn)入交叉路口 2 2 2 控制器系統(tǒng)設(shè)計(jì)控制器系統(tǒng)設(shè)計(jì) 2 12 1 交通管理的方案交通管理的方案 A B 兩干道交于一個十字路口 各干道有一組紅 黃 綠三色的指示燈 指揮 車輛和行人安全通行 紅燈亮禁止通行 綠燈亮允許通行 黃燈亮提示人們注意紅 燈 綠燈的狀態(tài)即將切換 且黃燈燃亮?xí)r間為 A B 兩干道的公共停車時(shí)間 設(shè) A 道 比 B 道的車流量大 指示燈燃亮的方案如表 2 1 表 2 1 指示燈的狀態(tài) 從表中可以看出 1 當(dāng)為黃燈時(shí) A B 兩道同時(shí)為黃燈 以提示行人或車輛下一個燈色即將 到來 時(shí)間 3 秒 2 當(dāng) A 到為紅燈 A 道車輛禁止通行 A 道行人可通過 B 道為綠燈 B 道車輛通過 行人禁止通行 時(shí)間為 60 秒 2 當(dāng) A 道綠燈 A 道車輛通行 B 道為紅燈 B 道車輛禁止通過 行人通 行 時(shí)間為 80 秒 A 道車流大 通行時(shí)間長 3 這樣如上表的時(shí)間和紅 綠 黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就 能安全暢通的通行 4 此表可根據(jù)車流量動態(tài)設(shè)定 360380360 A 道黃 燈亮 紅 燈亮 黃 燈亮 綠 燈亮 黃 燈亮 紅 燈亮 B 道黃 燈亮 綠 燈亮 黃 燈亮 紅 燈亮 黃 燈亮 綠 燈亮 3 2 22 2 系統(tǒng)設(shè)計(jì)原理系統(tǒng)設(shè)計(jì)原理 選用 AT89C52 單片機(jī)一片選用設(shè)備 AT89C52 單片機(jī)一片 8255 并行通用接 口芯片一片 74LS07 兩片 MAX692 看門狗 一片 共陰極的七段數(shù)碼管兩個雙 向晶閘管若干 7805 三端穩(wěn)壓電源一個 紅 黃 綠交通燈各兩個 開關(guān)鍵盤 連線若干 系統(tǒng)總框圖如圖 2 1 所示 圖 2 1 交通燈控制系統(tǒng)總框圖 4 交通燈控制線路圖 2 2 所示 圖 2 2 交通燈控制線路圖 1 開關(guān)鍵盤輸入交通燈初始時(shí)間 通過 AT89C52 單片機(jī) P1 輸入到系統(tǒng) 2 由 AT89C52 單片機(jī)的定時(shí)器每秒鐘通過 P0 口向 8255 的數(shù)據(jù)口送信息 由 8255 的 PC 口顯示紅 綠 黃燈的燃亮情況 由 8255 的 PA PB 口顯示每個燈的燃 5 亮?xí)r間 3 AT89C52 通過設(shè)置 各個信號等的燃亮?xí)r間 通過 AT89C52 設(shè)置 黃 綠 紅時(shí)間依次為 3 秒 60 秒 3 秒 80 秒 3 秒循環(huán)由 AT89C52 的 P0 口向 8255 的數(shù) 據(jù)口輸出 4 通過 AT89C52 單片機(jī)的 P3 0 位來控制系統(tǒng)是工作或設(shè)置初值 當(dāng) 牌位 0 就對系統(tǒng)進(jìn)行初始化 為 1 系統(tǒng)就開始工作 5 8255 口用于輸出時(shí)間的個位 口用于輸出時(shí)間的十位 由 747S07 驅(qū)動芯片驅(qū)動 而 口用于輸出各個燈的情況 它的末段連接雙向晶閘管采用 220V 交流電壓驅(qū)動 6 在交通控制程序中加入看門狗指令 當(dāng)系統(tǒng)出現(xiàn)異??撮T狗將發(fā)出溢出中 斷 通過專用端口輸入到 MAX692 看門狗芯片的 WDI 引腳引起 RESET 復(fù)位信號復(fù)位 系統(tǒng) 6 3 3 芯片的選擇與簡介芯片的選擇與簡介 3 13 1 AT89C52AT89C52 芯片簡介芯片簡介 3 1 13 1 1 AT89C52AT89C52 單片機(jī)內(nèi)部結(jié)構(gòu)單片機(jī)內(nèi)部結(jié)構(gòu) 8051 是 AT89C52 系列單片機(jī)的典型產(chǎn)品 AT89C52 單片機(jī)包含中央處理器 程序存儲器 ROM 數(shù)據(jù)存儲器 RAM 定時(shí) 計(jì)數(shù)器 并行接口 串行接口和中斷系 統(tǒng)等幾大單元及數(shù)據(jù)總線 地址總線和控制總線等三大總線 見圖 3 1 現(xiàn)在說明如 下 圖 3 1 總線結(jié)構(gòu) 1 中央處理器 中央處理器 CPU 是整個單片機(jī)的核心部件 是 8 位數(shù)據(jù)寬度的處理器 能處理 8 位二進(jìn)制數(shù)據(jù)或代碼 CPU 負(fù)責(zé)控制 指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作 完成 運(yùn)算和控制輸入輸出功能等操作 2 數(shù)據(jù)存儲器 RAM AT89C52 內(nèi)部有 128 個 8 位用戶數(shù)據(jù)存儲單元和 128 個專用寄存器單元 它們 是統(tǒng)一編址的 專用寄存器只能用于存放控制指令數(shù)據(jù) 用戶只能訪問 而不能用 于存放用戶數(shù)據(jù) 所以 用戶能使用的 RAM 只有 128 個 可存放讀寫的數(shù)據(jù) 運(yùn)算 的中間結(jié)果或用戶定義的字型表 3 存儲器 ROM AT89C52 共有 4096 個 8 位掩膜 ROM 用于存放用戶程序 原始數(shù)據(jù)或表格 4 定時(shí) 計(jì)數(shù)器 ROM 7 AT89C52 有兩個 16 位的可編程定時(shí) 計(jì)數(shù)器 以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于 控制程序轉(zhuǎn)向 5 并行輸入輸出 I O 口 AT89C52 共有 4 組 8 位 I O 口 P0 P1 P2 或 P3 用于對外部數(shù)據(jù)的傳輸 6 全雙工串行口 AT89C52 內(nèi)置一個全雙工串行通信口 用于與其它設(shè)備間的串行數(shù)據(jù)傳送 該 串行口既可以用作異步通信收發(fā)器 也可以當(dāng)同步移位器使用 7 中斷系統(tǒng) AT89C52 具備較完善的中斷功能 有兩個外中斷 兩個定時(shí) 計(jì)數(shù)器中斷和一個 串行中斷 可滿足不同的控制要求 并具有 2 級的優(yōu)先級別選擇 8 時(shí)鐘電路 AT89C52 內(nèi)置最高頻率達(dá) 12MHz 的時(shí)鐘電路 用于產(chǎn)生整個單片機(jī)運(yùn)行的脈沖 時(shí)序 但 AT89C52 單片機(jī)需外置振蕩電容 單片機(jī)的結(jié)構(gòu)有兩種類型 一種是程序存儲器和數(shù)據(jù)存儲器分開的形式 即哈 佛 Harvard 結(jié)構(gòu) 另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲器與數(shù)據(jù)存儲器合 二為一的結(jié)構(gòu) 即普林斯頓 Princeton 結(jié)構(gòu) INTEL 的 AT89C52 系列單片機(jī)采用 的是哈佛結(jié)構(gòu)的形式 而后續(xù)產(chǎn)品 16 位的 MCS 96 系列單片機(jī)則采用普林斯頓結(jié)構(gòu) 3 1 23 1 2 AT89C52AT89C52 的引腳說明的引腳說明 AT89C52 系列單片機(jī)中的 8031 8051 及 8751 均采用 40Pin 封裝的雙列直接 DIP 結(jié)構(gòu) 右圖是它們的引腳配置 40 個引腳中 正電源和地線兩根 外置石英振蕩器 的時(shí)鐘線兩根 4 組 8 位共 32 個 I O 口 中斷口線與 P3 口線復(fù)用 引腳如圖 3 2 所示 8 圖 3 2 引腳圖 RESET Vpd復(fù)位信號復(fù)用腳 當(dāng) AT89C52 通電 時(shí)鐘電路開始工作 在 RESET 引 腳上出現(xiàn) 24 個時(shí)鐘周期以上的高電平 系統(tǒng)即初始復(fù)位 初始化后 程序計(jì)數(shù)器 PC 指向 0000H P0 P3 輸出口全部為高電平 堆棧指針寫入 07H 其它專用寄存器被 清 0 RESET 由高電平下降為低電平后 系統(tǒng)即從 0000H 地址開始執(zhí)行程序 然 而 初始復(fù)位不改變 RAM 包括工作寄存器 R0 R7 的狀態(tài) AT89C52 的初始態(tài) AT89C52 的復(fù)位方式可以是自動復(fù)位 也可以是手動復(fù)位 見圖 3 3 此外 RESET Vpd還是一復(fù)用腳 Vcc掉電其間 此腳可接上備用電源 以保證單片機(jī)內(nèi)部 RAM 的數(shù)據(jù)不丟失 圖 3 3 復(fù)位電路 ALE 當(dāng)訪問外部程序器時(shí) ALE 地址鎖存 的輸出用于鎖存地址的低位字節(jié) 而訪問內(nèi)部程序存儲器時(shí) ALE 端將有一個 1 6 時(shí)鐘頻率的正脈沖信號 這個信號 可以用于識別單片機(jī)是否工作 也可以當(dāng)作一個時(shí)鐘向外輸出 更有一個特點(diǎn) 當(dāng) 訪問外部程序存儲器 ALE 會跳過一個脈沖 如果單片機(jī)是 EPROM 在編程其間 將用于輸入編程脈沖 當(dāng)訪問外部程序存儲器時(shí) 此腳輸出負(fù)脈沖選通信號 PC 的 16 位地址數(shù)據(jù) 將出現(xiàn)在 P0 和 P2 口上 外部程序存儲器則把指令數(shù)據(jù)放到 P0 口上 由 CPU 讀入并 執(zhí)行 EA Vpp程序存儲器的內(nèi)外部選通線 AT89C52 單片機(jī) 內(nèi)置有 4kB 的程序存儲器 當(dāng) EA 為高電平并且程序地址小于 4kB 時(shí) 讀取內(nèi)部程序存儲器指令數(shù)據(jù) 而超過 9 4kB 地址則讀取外部指令數(shù)據(jù) 如 EA 為低電平 則不管地址大小 一律讀取外部程 序存儲器指令 顯然 對內(nèi)部無程序存儲器的 AT89C52 EA 端必須接地 在編程時(shí) EA Vpp腳還需加上 21V 的編程電壓 3 23 2 82558255 芯片簡介芯片簡介 8255 可編程并行接口芯片簡介 8255 可編程并行接口芯片有三個輸入輸出端口 即 A 口 B 口和 C 口 對應(yīng)于 引腳 PA7 PA0 PB7 PB0 和 PC7 PC0 其內(nèi)部還有一個控制寄存器 即控制口 通常 A 口 B 口作為輸入輸出的數(shù)據(jù)端口 C 口作為控制或狀態(tài)信息的端口 它在方 式字的控制下 可以分成 4 位的端口 每個端口包含一個 4 位鎖存器 它們分別與 端口 A 配合使用 可以用作控制信號輸出或作為狀態(tài)信號輸入 8255 可編程并行接口芯片方式控制字格式說明 8255 有兩種控制命令字 一個是方式選擇控制字 另一個是 C 口按位置位 復(fù) 位控制字 其中 C 口按位置位 復(fù)位控制字方式使用較為繁難 說明也較冗長 故 在此不作敘述 需要時(shí)用戶可自行查找有關(guān)資料 方式控制字格式說明如表 3 1 表 3 1 8255 方式控制字 D7 設(shè)定工作方式標(biāo)志 1 有效 D6 D5 A 口方式選 0 0 方式 0 0 1 方式 1 1 方式 2 D4 A 口功能 1 輸入 0 輸出 D3 C 口高 4 位功能 1 輸入 0 輸出 D2 B 口方式選擇 0 方式 0 1 方式 1 D1 B 口功能 1 輸入 0 輸出 D0 C 口低 4 位功能 1 輸入 0 輸出 D7D6D5D4D3D2D1D0 10 8255 可編程并行接口芯片工作方式說明 方式 0 基本輸入 輸出方式 適用于三個端口中的任何一個 每一個端口都 可以用作輸入或輸出 輸出可被鎖存 輸入不能鎖存 方式 1 選通輸入 輸出方式 這時(shí) A 口或 B 口的 8 位外設(shè)線用作輸入或輸出 C 口的 4 條線中三條用作數(shù)據(jù)傳輸?shù)穆?lián)絡(luò)信號和中斷請求信號 方式 2 雙向總線方式 只有 A 口具備雙向總線方式 8 位外設(shè)線用作輸入或輸出 此時(shí) C 口的 5 條線用作通訊聯(lián)絡(luò)信號和中斷請求信號 3 33 3 數(shù)碼管數(shù)碼管 采用共陰極的七段數(shù)碼管 如圖 3 4 所示 圖 3 4 數(shù)碼管電路 VT 為雙向晶閘管 當(dāng)門極為高電平時(shí)晶閘管導(dǎo)通 該支路指示燈亮 當(dāng)門極為 低電平時(shí)晶閘管關(guān)斷 該支路指示燈滅 11 4 4 控制器的軟件設(shè)計(jì)控制器的軟件設(shè)計(jì) 延時(shí)方法可以有兩種一中是利用 AT89C52 內(nèi)部定時(shí)器才生溢出中斷來確定 1 秒 的時(shí)間 另一種是采用軟延時(shí)的方法 4 14 1 計(jì)數(shù)器初值計(jì)算計(jì)數(shù)器初值計(jì)算 定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值 這個值是送到 TH 和 TL 中的 他是 以加法記數(shù)的 并能從全 1 到全 0 時(shí)自動產(chǎn)生溢出中斷請求 我們采用在主程序中設(shè)定一個初值為 20 的軟件計(jì)數(shù)器和使 T0 定時(shí) 50 毫秒 這 樣每當(dāng) T0 到 50 毫秒時(shí) CPU 就響應(yīng)它的溢出中斷請求 進(jìn)入他的中斷服務(wù)子程序 在中斷服務(wù)子程序中 CPU 先使軟件計(jì)數(shù)器減 然后判斷它是否為零 為零表示 秒已到可以返回到輸出時(shí)間顯示程序 相應(yīng)程序代碼 1 主程序 定時(shí)器需定時(shí) 50 毫秒 故 T0 工作于方式 1 初值 TC M T T 計(jì)數(shù) 216 50ms 1us 15536 3CBOH ORG 1000H START MOV TMOD 01H 令 T0 為定時(shí)器方式 1 MOV TH0 3CH 裝入定時(shí)器初值 MOV TL0 0B0H MOV IE 82H 開 T0 中斷 SEBT TR0 啟動 T0 計(jì)數(shù)器 MOV R0 14H 軟件計(jì)數(shù)器賦初值 OP SJMP 等待中斷 2 中斷服務(wù)子程序 ORG 000BH AJMP BRT0 ORG 00BH BRT0 DJNZ R0 NEXT AJMP TIME 跳轉(zhuǎn)到時(shí)間及信號燈顯示子程序 DJNZ MOV R0 14H 恢復(fù) R0 值 12 MOV TH0 3CH 重裝入定時(shí)器初值 MOV TL0 0B0H MOV IE 82H RETI END 4 24 2 軟件延時(shí)軟件延時(shí) AT89C52 的工作頻率為 2 12MHZ 我們選用的 AT89C52 單片機(jī)的工作頻率為 6MHZ 機(jī)器周期與主頻有關(guān) 機(jī)器周期是主頻的 12 倍 所以一個機(jī)器周期的時(shí)間為 12 1 6M 2us 我們可以知道具體每條指令的周期數(shù) 這樣我們就可以通過指令 的執(zhí)行條數(shù)來確定 1 秒的時(shí)間 具體的延時(shí)程序 DELAY MOV R4 08H 延時(shí) 1 秒子程序 DE2 LCALL DELAY1 DJNZ R4 DE2 RET DELAY1 MOV R6 0 延時(shí) 125ms 子程序 MOV R5 0 DE1 DJNZ R5 DJNZ R6 DE1 RET MOV RN DATA 所以此指令的執(zhí)行時(shí)間為 2ms DELAY1 為一個雙重循壞 循環(huán)次數(shù)為 256 256 65536 所以延時(shí)時(shí)間 65536 2 131072us 約為 125us DELAY R4 設(shè)置的初值為 8 主延時(shí)程序循環(huán) 8 次 所以 125us 8 1 秒 由于單片機(jī)的運(yùn)行速度很快其它的指令執(zhí)行時(shí)間可以忽略 不計(jì) 13 4 34 3 AT89C52AT89C52 并行口的擴(kuò)展并行口的擴(kuò)展 AT89C52 雖然有 4 個 8 位 I O 端口 但真正能提供借用的只有 P1 口 因?yàn)?P2 和 P0 口通常用于傳送外部傳送地址和數(shù)據(jù) P3 口也有它的第二功能 因此 AT89C52 通常需要擴(kuò)展 由于我們用外輸出時(shí)間時(shí) 時(shí)間的個位 十位 信號燈的顯示都要 用到一個 I O 端口 顯然 AT89C52 的端口是不夠 需要擴(kuò)展 擴(kuò)展的方法有兩種 1 借用外部 RAM 地址來擴(kuò)展 I O 端口 2 采用 I O 接口來擴(kuò)充 本設(shè)計(jì)中采用 8255 并行接口信片來擴(kuò)展 I O 端口 4 3 14 3 1 顯示原理顯示原理 當(dāng)定時(shí)器定時(shí)為 1 秒 時(shí)程序跳轉(zhuǎn)到時(shí)間顯示及信號燈顯示子程序 它將依次 顯示信號燈時(shí)間 同時(shí)一直顯示信號燈的顏色 這時(shí)在返回定時(shí)子程序定時(shí)一秒 在顯示黃燈的下一個時(shí)間 這樣依次把所有的燈色的時(shí)間顯示完后在重新給時(shí)間計(jì) 數(shù)器賦初值 重新進(jìn)入循環(huán) 4 3 24 3 2 82558255 輸出信號的放大輸出信號的放大 要使行人能看見信號燈的情況 必須把 8255 輸出的信號進(jìn)行放大 這里我們 用 VT 為雙向晶閘管 當(dāng)門極為高電平時(shí)晶閘管導(dǎo)通 該支路指示燈亮 當(dāng)門極為低 電平時(shí)關(guān)斷 該支路指示燈滅 4 3 34 3 3 82558255 輸出信號與信號燈的連接輸出信號與信號燈的連接 LED 燈的顯示原理 通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點(diǎn)量 而顯示不同的字形如 SP g f e d c b a 管腳上加上 7FH 所以 SP 為 0 伏 不亮 其余為 TTL 高電平 全亮則顯示為 8 采用共陰級連接 見表 4 1 所示 14 表 4 1 驅(qū)動代碼表 顯示數(shù)值 dop g f e d c b a 驅(qū)動代碼 16 進(jìn)制 00 0 1 1 1 1 1 1 3FH 1 0 0 0 0 0 1 1 006H 2 0 1 0 1 1 0 1 15BH 3 0 1 0 0 1 1 1 14FH 4 0 1 1 0 0 1 1 066H 5 0 1 1 0 1 1 0 06DH 6 0 1 1 1 1 1 0 07DH 7 0 0 0 0 0 1 1 107H 8 0 1 1 1 1 1 1 17FH 4 3 44 3 4 82558255 與與 AT89C52AT89C52 的連接的連接 用 AT89C52 的 P0 口的 p0 7 連接 8255 的片選信號 cs 我們用 AT89C52 的地 址采用全譯碼方式 當(dāng) p0 7 0 時(shí)片選有效 其它無效 p0 1 p0 1 用于選 擇 8255 端口 P0 7 p0 6 p0 5 p0 4 p0 3 p0 2 P0 1 P0 0 A7 A6 A5 A4 A3 A2 A1 A0 1 X X X X X 0 0 00H 為 8255 的 PA 口 1 X X X X X 0 1 01H 為 8255 的 PB 口 1 X X X X X 1 0 02H 為 8255 的 PC 口 1 X X X X X 1 1 03H 為 8255 的控制口 由于AT89C52是分時(shí)對 8255 和儲存器進(jìn)行訪問所以AT89C52的 P0 口不會發(fā)生沖突 15 5 5 程序設(shè)計(jì)程序設(shè)計(jì) 5 15 1 流程圖流程圖 R4 存放黃燈時(shí)間 3 03H 此時(shí)間可以動態(tài)設(shè)定 R5 存放紅燈時(shí)間 60 3CH R6 存放綠燈時(shí)間 80 50H PC0 顯示黃燈信號 PC1 顯示紅燈信號 PC2 顯示黃燈信號 8825 工作于方式 0 8255 PA PB PC 口輸出 PC 控制字為 10000000B 80H 主程序如圖 5 1 所示 圖 5 1 主程序流程圖 開始 初始化 等待鍵盤事件 鍵盤事件 處理 顯示程序處 理 16 圖 5 2 程序流程圖 5 25 2 程序清單程序清單 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV R1 03H 初始化 8255 MOV A 80H MOVX R1 A 17 AGAIN MOV P3 80H 設(shè)置初值 MOV A P3 JB ACC 7 NEXT0 AGAIN1 MOV P3 40H MOV A P3 JB ACC 6 RED MOV P3 0FH MOV A P3 ANL A 0FH MOV R3 A AJMP AGAIN1 RED MOV P3 0FH MOV A P3 ANL A 0FH MOV R2 A AJMP AGAIN NEXT0 MOV R1 03H NEXT1 MOV DPTR TAB 顯示黃燈個位 MOV A R1 MOVC A A DPTR MOV R1 00H MOVX R1 A MOV R1 O MOV DPTR TAB 顯示黃燈十位 MOV A R0 18 MOVC A A DPTR MOV R1 01H MOVX R1 A MOV DPTR 0C62H 顯示黃燈信號 MOV A 00H LCALL 0F4E0H ACALL DELAY 延時(shí) 1 秒 DJNZ R0 NEXT1 MOV A R3 MOV R0 A NEXT2 MOV DPTR TAB 顯示紅燈個位 MOV A R0 MOVC A A DPTR MOV R1 00H MOVX R1 A MOV DPTR TAB 顯示紅燈十位 MOV A R0 MOVC A A DPTR MOV R1 01H MOV A R0 MOVX R1 R0 MOV R1 02H 顯示紅燈信號 MOV A 02H MOVX R1 A 19 ACALL DELAY 延時(shí) 1 秒 DJNZ R0 NEXT2 MOV A R2 MOV R0 A NEXT3 MOV DPTR TAB 顯示綠燈個位 MOV A R0 MOVC A A DPTR MOV R1 00H MOVX R1 R0 MOV DPTR TAB 顯示綠燈十位 MOV A R0 MOVC A A DPTR MOV R1 01H MOV A R0 MOVX R1 R0 MOV R1 02H 顯示綠燈信號 MOV A 02H MOVX R1 A ACALL DELAY 延時(shí) 1 秒 DJNZ R0 NEXT3 AJMP NEXT0 DELAY MOV R4 08H 延時(shí) 1 秒子程序 DE2 LCALL DELAY1 20 DJNZ R4 DE2 RET DELAY1 MOV R6 0 MOV R5 0 DE1 DJNZ R5 DJNZ R6 DE1 RET TAB DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH 39H 5EH 79H 71H END 21 6 6 看門狗硬件電路看門狗硬件電路 由于單片機(jī)自身的抗干擾能力比較差 尤其在一些條件比較惡劣 噪聲大的場 合 常會出現(xiàn)單片機(jī)因?yàn)槭芡饨绺蓴_而導(dǎo)致死機(jī)的現(xiàn)象 造成系統(tǒng)不能正常工作 設(shè)置看門狗是為了防止單片機(jī)死機(jī) 提高單片機(jī)系統(tǒng)抗干擾性的一種重要途徑 一個完整的單片機(jī)應(yīng)用系統(tǒng)應(yīng)該是一個軟 硬件的結(jié)合體 在系統(tǒng)正常工作時(shí) 會受到各種外界干擾因素的影響 這種外界干擾輕者導(dǎo)致系統(tǒng)內(nèi)部數(shù)據(jù)出錯 重者 將嚴(yán)重影響程序的運(yùn)行 因此單片機(jī)應(yīng)用系統(tǒng)的開發(fā)一定要考慮系統(tǒng)可靠性的設(shè)計(jì) 以滿足系統(tǒng)在現(xiàn)場苛刻環(huán)境下的正常運(yùn)行 而 看門狗 則是系統(tǒng)可靠性設(shè)計(jì)的重 要一環(huán) 在一個單片機(jī)應(yīng)用系統(tǒng)中 所謂的 看門狗 是指在系統(tǒng)設(shè)計(jì)中通過軟件 或硬件方式在一定的周期內(nèi)監(jiān)控單片機(jī)或其它 CPU 的運(yùn)行情況 如果在規(guī)定的時(shí)間 內(nèi)沒有收到來自單片機(jī)或其它 CPU 的觸發(fā)信號 則系統(tǒng)會強(qiáng)制復(fù)位 以保證系統(tǒng)在 受到干擾時(shí)仍能夠維持正常的工作狀態(tài) 在單片機(jī)系統(tǒng)中 看門狗的設(shè)計(jì)一般采用 硬件和軟件結(jié)合兩種方式 6 16 1 軟件看門狗軟件看門狗 軟件看門狗是利用單片機(jī)片內(nèi)閑置的定時(shí)器 計(jì)數(shù)器單元作為看門狗 在單片 機(jī)程序中適當(dāng)?shù)牟迦氡O(jiān)控指令 當(dāng)程序出現(xiàn)異常或進(jìn)入死循環(huán)時(shí) 利用軟件將程序 計(jì)數(shù)器 PC 賦予初始值 強(qiáng)制性的使程序重新開始運(yùn)行 使用軟件看門狗的具體實(shí)現(xiàn)方法如下 1 首先在初始化程序中設(shè)置好定時(shí)器 計(jì)數(shù)器的方式控制寄存器 TMOD 和定時(shí) 時(shí)間的初值 并開中斷 2 根據(jù)定時(shí)器的定時(shí)時(shí)間 在主程序中按一定的間隔插入復(fù)位定時(shí)器的指令 既 插入監(jiān)控指令 兩條指令間的時(shí)間間隔應(yīng)該小于定時(shí)時(shí)間 否則看門狗將發(fā)生錯 誤動作 3 在定時(shí)器的中斷服務(wù)程序中設(shè)置一條無條件轉(zhuǎn)移指令 將程序計(jì)數(shù)器 PC 轉(zhuǎn)移 到初始化程序的入口 軟件看門狗的最大特點(diǎn)是無須外加硬件電路 經(jīng)濟(jì)性好 當(dāng)然 如果片內(nèi)的 定時(shí)器 計(jì)數(shù)器被占用 就需要尋求其它的設(shè)計(jì)方式了 22 6 26 2 硬件看門狗硬件看門狗 專用硬件看門狗是指一些集成化的或集成在單片機(jī)內(nèi)的專用看門狗電路 它實(shí) 際上是一個特殊的定時(shí)器 當(dāng)定時(shí)時(shí)間到時(shí) 發(fā)出溢出脈沖 從實(shí)現(xiàn)角度上看 該 方式是一種軟件與片外專用電路相結(jié)合的技術(shù) 硬件電路連接好后 在程序中適當(dāng) 地插入一些看門狗復(fù)位的指令 保證程序正常運(yùn)行時(shí)看門狗不溢出 而當(dāng)程序運(yùn)行 異常時(shí) 看門狗超時(shí)發(fā)出溢出脈沖 通過單片機(jī)的 RESET 引腳使單片機(jī)復(fù)位 這種 方式中 看門狗能否可靠有效地工作 與硬件組成及軟件的控制策略都有密切的關(guān) 系 目前常用的集成看門狗電路很多 如 MAX705 708 MAX813L X5043 5045 等 看門狗電路可以分為內(nèi)看門狗和外看門狗 看門狗電路是指看門狗的硬件電路 包含在單片機(jī)內(nèi)部 如 Microchip 的 16C5x 系列 MOTOROLA 的 68C05 系列 51 內(nèi)核 中比較典型的有 Atmel 公司的 AT89C55WD AT89S8252 Winbond 公司的 W77E58 SST 公司的 SST89C58 以及 Philips 公司 87 系列的多種型號的單片機(jī)等 對于沒有看門狗定時(shí)器的單片機(jī)或是認(rèn)為內(nèi)部看門狗不可靠時(shí) 可以采用外部 看門狗定時(shí)器 外部看門狗電路既可以用專用看門狗芯片 也可由普通芯片實(shí)現(xiàn) 這里 以專用芯片 MAX692 作為外部看門狗的電路 MAX692 是微系統(tǒng)監(jiān)控電路芯片 具有后備電池切換 掉電判別 看門狗監(jiān)控等 功能 其封裝和引腳說明如圖 6 1 所示 VOUTVOUT VBATTVBATT VCCVCC RESETRESET GNDGND WDIWDI PFIPFI PFD PFD 圖 6 1 MAX692 封裝和引腳 VOUT 電源輸出引腳 MAX692 1 2 3 4 5 6 7 8 23 VCC 接電源引腳 電源供電 3 0 5 5V GND 接地 PFI 電池故障輸入 PFO 電池故障輸出 WDI 監(jiān)視器輸入引腳 RESET 復(fù)位輸出引腳 低電平有效 VBATT 后備電池輸入端 MAX692 在本文的單片機(jī)系統(tǒng)中的具體使用方法和電路原理圖 MAX692 電路原理圖如圖 6 2 所示 其中 WDI 是看門狗監(jiān)測輸入腳 接到 CPU 的一個 專用 I O 口或一個總線上 RESET 是復(fù)位信號輸出腳 接到 CPU 的復(fù)位輸入腳 MAX692 的 WDI 定時(shí)周期是 1 6s 復(fù)位脈沖寬度是 200ms 如果 WDI 保持高或低超過 看門狗定時(shí)周期 1 6s RESET 端將發(fā)生 200ms 的負(fù)脈沖使 CPU 復(fù)位 圖 6 2 MAX692 電路原理圖 24 7 7 系統(tǒng)的調(diào)試與運(yùn)行方案系統(tǒng)的調(diào)試與運(yùn)行方案 系統(tǒng)的調(diào)試與運(yùn)行采用 TDN86 51 教學(xué)實(shí)驗(yàn)系統(tǒng) 系統(tǒng)簡介 開啟計(jì)算機(jī)及實(shí)驗(yàn)平臺 進(jìn)入 TDN 的子目錄 鍵入 MD51 選擇 1 1 COM1 口 進(jìn)入系統(tǒng)集成軟件 功能介紹 F1 EDIT 編輯 可以對源程序進(jìn)行編輯 F2 MASM 匯編源程序 F3 LINK 連接成可執(zhí)行文件 HEX F5 LOAD 將可執(zhí)行文件載入實(shí)驗(yàn)系統(tǒng) F6 SAVE 保存 F8 EXIT 推出系統(tǒng) 7 17 1 實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟 1 按照系統(tǒng)硬件連線圖連好 說明 由于此實(shí)驗(yàn)平臺只提供了一個顯示燈接口所以我們只用 了 8255 的 PA 口 只用了一個顯示燈 和 3 個 LED 燈 AT89C52 的 P1 口的低 4 位用于給系統(tǒng)賦初 值 P1 7 用于控制系統(tǒng)工作或初始化 P1 6 用于控制是對紅燈 綠燈進(jìn)行初始化 2 把編好的程序進(jìn)行匯編對輸入單片機(jī) AT89C52 仿真器和對 8255 進(jìn)行初始化 3 通過平臺上的開關(guān)來設(shè)定紅 綠等的初值 4 先使 K7 撥為 0 觀察 LED 燈和 8 段數(shù)碼管的顯示情況 撥 K6 為 0 設(shè)置 撥 K3 K2 K1 K0 為 0101 即紅燈時(shí)間為 5 秒 撥 K6 為 1 設(shè)置 撥 K3 K2 K1 K0 為 1001 即綠燈時(shí)間為 9 秒 觀察觀察 LED 燈和 8 段數(shù)碼管的顯示與設(shè)置的時(shí)間和 LED 的顏色是否一致 5 不一致反復(fù)調(diào)試程序認(rèn)識檢查線路連接是否正確 直到與預(yù)定目的一致 25 7 27 2 系統(tǒng)系統(tǒng)內(nèi)存分配和內(nèi)存分配和 I 0I 0 接口接口 1 程序空間 64k 表 7 1 程序空間分配表 地址使用情況芯片 0000 3FFFH 用戶程序區(qū) U23RAM 4000 DFFFH 用戶程序區(qū) E000 FFFFH 系統(tǒng)保留 ROM 2 I O 接口分配 用戶程序區(qū) 8255 的端口地址如下表 表 7 2 8255 的端口地址 信號線寄存器 編址 A 口 0C60H B 口 0C61H C 口 0C62H IOY3 控制寄存器 0C63H 7 37 3 實(shí)驗(yàn)程序原代碼實(shí)驗(yàn)程序原代碼 從 8255 的 PB 口輸入開關(guān)量 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV DPTR 0C63H MOV A 82H LCALL 0F4E0H AGAIN MOV DPTR 0C61H 26 LCALL 0F4E3H MOV C ACC 7 JC NEXT0 AGAIN1 MOV DPTR 0C61H LCALL 0F4E3H MOV C ACC 6 JC RED MOV DPTR 0C61H LCALL 0F4E3H ANL A 0FH MOV R3 A AJMP AGAIN1 RED MOV DPTR 0C61H LCALL 0F4E3H ANL A 0FH MOV R2 A AJMP AGAIN NEXT0 MOV R0 03H NEXT1 MOV DPTR TAB MOV A R0 MOVC A A DPTR MOV DPTR 0C60H LCALL 0F4E0H MOV DPTR 0C62H MOV A 00H LCALL 0F4E0H 27 ACALL DELAY DJNZ R0 NEXT1 MOV A R2 MOV R0 A NEXT2 MOV DPTR TAB MOV A R0 MOVC A A DPTR MOV DPTR 0C60H LCALL 0F4E0H MOV DPTR 0C62H MOV A 02H LCALL 0F4E0H ACALL DELAY DJNZ R0 NEXT2 MOV A R3 MOV R0 A NEXT3 MOV DPTR TAB MOV A R0 MOVC A A DPTR MOV DPTR 0C60H LCALL 0F4E0H MOV DPTR 0C62H 28 MOV A 04H LCALL 0F4E0H ACALL DELAY DJNZ R0 NEXT3 AJMP NEXT0 DELAY MOV R4 08H DE2 LCALL DELAY1 DJNZ R4 DE2 RET DELAY1 MOV R6 0 MOV R5
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵道養(yǎng)路機(jī)械應(yīng)用技術(shù)專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育??疲?025修訂
- 藥學(xué)專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育??疲?025修訂
- 臨床皮內(nèi)注射技術(shù)
- 稅務(wù)師考試東奧課件
- 中國廣告發(fā)布行業(yè)市場調(diào)查研究及投資前景預(yù)測報(bào)告
- 中國農(nóng)藥殺菌劑行業(yè)市場調(diào)查報(bào)告
- 2025年中國手袋線行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 回復(fù)反射器行業(yè)深度研究分析報(bào)告(2024-2030版)
- 中國城市經(jīng)營行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與投資分析研究報(bào)告(2024-2030)
- 2025年中國小曲酒行業(yè)市場深度調(diào)研分析及投資前景研究預(yù)測報(bào)告
- 第三方外包管理制度
- 2025年重慶市中考生物試卷真題(含標(biāo)準(zhǔn)答案)
- 2025高考英語解析及其范文
- 2025年6月8日北京市事業(yè)單位面試真題及答案解析(下午卷)
- 人力資源測評期末考試試題及答案
- 2024年貴州省糧食儲備集團(tuán)有限公司招聘真題
- 護(hù)理生物學(xué)試題及答案
- 電子產(chǎn)品倉庫管理制度與流程
- 浙江國企招聘2025杭州地鐵科技有限公司招聘51人(第一批)筆試參考題庫附帶答案詳解析
- 深度學(xué)習(xí)的基本概念試題及答案
- 甘肅省平?jīng)鍪?025屆七下數(shù)學(xué)期末教學(xué)質(zhì)量檢測試題含解析
評論
0/150
提交評論