freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設(shè)計(論文)-基于單片機的遙控密碼鎖-文庫吧

2025-10-06 00:58 本頁面


【正文】 占的時間 uPD6122G 按鍵輸出有兩種方式:一種是每 次按鍵都輸出完整的一幀數(shù)據(jù);另一種是按下按鍵不松開時,發(fā)送完整的一幀數(shù)據(jù)后再發(fā)送重復碼,直到按鍵被松開。其波形如圖 7 所示。 圖 7 重復碼的波形圖 接收解碼模塊 接收解碼原理 接收解碼的關(guān)鍵是如何識別‘ 0’和‘ 1’ ,本系統(tǒng) 使用的是一體化紅外接收頭進行紅外信號接收,在沒有信號的時候其輸出端是高電平,而有信號的時候是低電平,所以其5 輸出信號電平正好和遙控發(fā)射端相反 。 從上面的討論可以發(fā)現(xiàn)在遙控發(fā)射端‘ 0’和‘ 1’均以 的 高 電平開始,不同的是 低 電平的寬度 , ‘ 0’為 ,‘ 1’為 ,所以必須根據(jù) 低 電平的寬度區(qū)別‘ 0’和‘ 1’。 本系統(tǒng) 用中斷的方式實現(xiàn)從接收頭到 MCU的信號傳輸。如圖 9 所示, 紅外接收頭的輸出端連接到單片機的 INT0 腳 。 接收頭輸出端有 低電平 信號輸出時引起單片機的中斷。單片機響應中斷并進行信號的接收解碼。解碼后的信號就變成 相應的遙控器按鍵代碼 ,從而可以成為密碼鎖的密碼。 圖 9 中斷接收示意圖 接收解碼模塊的硬件電路 接收解碼電路由 一體化紅外接 收 頭 SM0038 和 單片機 STC89C51RC 組成。 STC 系列單片機具有在系統(tǒng) 中直接 可編程特性 ,其 好處是:省去購買通用編程器,單片機在用戶系統(tǒng)上即可下載 /燒錄用戶程序,而無須將單片機從已生產(chǎn)好的產(chǎn)品上拆下,再用通用編程器將程序代碼燒錄進單片機內(nèi)部。有些程序尚未定型的產(chǎn)品可以一邊生產(chǎn),一邊完善,加快了產(chǎn)品進入市場的速度,減小了新產(chǎn)品由于軟件缺陷帶來的風險。由于可以在用戶 的目標系統(tǒng)上將程序直接下載進單片機看運行結(jié)果對錯,故無須仿真器,因此選擇 使用這款單片機。 一體化紅外接收頭 SM0038 是集信號放大、濾波、檢波、整形于一體的紅外接收器,電路內(nèi) 置 PIN 二極管和前置放大器,采用可以紅外濾波的環(huán)氧樹脂材料封裝,可靠性高,不易受環(huán)境影響并可以防止非控制信號的輸出脈沖出現(xiàn)。它的內(nèi)部電路 如 圖 10 所示 。 接收頭 SM0038 MCU INT0 6 圖 10 SM0038 內(nèi)部結(jié)構(gòu)圖 SM0038 內(nèi)置帶通濾波器、積分器、和自動增益控制電路以抑制各種干擾和噪音。數(shù)據(jù)信號和干擾信號的主要區(qū)別在于載波頻率、脈沖波長和工作周期上。所以數(shù)據(jù)信號應該滿足以下的要求。而 本系統(tǒng) 選用的 SM0038 在這三方面和 NEC 編碼格式 是相配的。 ● 載波信號的頻率盡量接近帶通濾波器的中心頻率( 38KHz) 。 ● 脈沖長度在 300us 以 上 。 ● 數(shù)據(jù)的編碼類型相兼容 。 液晶 顯示模塊 系統(tǒng)中采用 LCD1602 作為顯示器件輸出信息。與傳統(tǒng)的 LED 數(shù)碼管顯示器件相比,液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等 優(yōu) 點 ,而且不需要外加驅(qū)動電路,現(xiàn)在液晶顯示模塊已經(jīng)是單片機應用設(shè)計中最常用的顯示器件了。 LCD1602 可以顯示 2行 16 個字符, 具 有 8 位數(shù)據(jù)總線 D0D7,和 RS、 R/W、 E 三個控制端口,工作電壓為5V,并且?guī)в凶址麑Ρ榷日{(diào)節(jié)和背光 設(shè)置 。 LCD1602 與單片機的連接電路圖參考附錄 A。 其 管腳功能簡介 如下 : VL: LCD 對比度調(diào)節(jié)端 ,電壓調(diào)節(jié)范圍為 0- 5V。接正電源時對比度最弱,接地電源時對比度最高, 可以用 一個 10K 的電位器來調(diào)整對比度 ; RS:數(shù)據(jù)或者指令選擇端。 處理器 寫入指令時, RS 為低電平 , 寫入數(shù)據(jù)時, RS 為高電平 ; R/W:讀寫控制端。 R/W 為高電平時,讀取數(shù)據(jù); R/W 為低電平時,寫入數(shù)據(jù) ; E: LCD 模塊使能信號控制端。寫數(shù)據(jù)時,需要下降沿觸發(fā)模塊 ; D0- D7: 8 位數(shù)據(jù)總線,三態(tài)雙向 ; BLA: LED 背光正極。需要背光時 , BLA 串接一個限流電阻接 VCC; BLK: LED 背光 負極 。 7 4 軟件設(shè)計 編程語言 目 前 , 對單片機的編程主要采用匯編 和 C 語言 。 匯編語言有執(zhí)行效率高 、 速度快 、與硬件結(jié)合緊密等特點。尤其在進行 I/O 端口管理時,使用匯編語言有快捷、直觀的優(yōu)點。但是使用匯編語言相對于使用高級語言編程難度要大一些,且程序可讀性低,開放性差,從系統(tǒng)開發(fā)時間來看,效率不是很高。 C 語言是一種結(jié)構(gòu)化語言,可產(chǎn)生緊湊代碼。 C 語言可以用許多機器級函數(shù)直接控制操作 8051 硬件。與匯編語言相比, C 語言有如下的優(yōu)點: ● 不要求了解單片機的指令系統(tǒng),僅要求對 8051 的存儲結(jié)構(gòu)有初步了解; ● 寄存器分配,不同存儲器的尋址及數(shù)據(jù)類型等 細節(jié)可由編譯器管理; ● 程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),這種方式可使程序結(jié)構(gòu)化; ● 具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性; ● 關(guān)鍵字及運算符可用近似人的思維方式使用; ● 編程及程序調(diào)試時間顯著縮短,從而提高效率; ● 提供的庫包含許多標準子程序,具有較強的數(shù)據(jù)處理能力; ● 已編好的程序可容易地植入新程序,因為它具有方便的模塊化編程技術(shù)。 當然,采用混編模式,就能結(jié)合兩者的優(yōu)點。本著學習的目的,本系統(tǒng)均采用 C51語言編寫。 主要程序說明及流程圖 主程序 本系統(tǒng)的軟件程序 主要包括主程序、接收解碼程序、密碼判斷 和 報警程序、密碼修改程序 、遙控器學習識別 程序幾個大的模塊程序。 完整 程序見 附錄 B。 主程序首先是初始化程序,然后就等待紅外接收頭輸出端的低電平,低電平出現(xiàn)說明遙控有鍵按下, 外部中斷 設(shè)定為下降沿觸發(fā),故單片機進入中斷服務程序進行信號的接收解碼。 系統(tǒng)進入密碼輸入界面,并且 接收到 八 位的密碼以后就開始運行密碼核對程序,當密碼輸入正確后,就 可以進行開鎖、上鎖或修改密碼的操作。 當密碼輸入錯誤的時候就會進入密碼輸入提醒程序提醒 用戶 重新輸入密碼,密碼輸入累積到 3 次時系統(tǒng) 會 報警并鎖定 。相應 的主程序流程圖 如圖 12 所 示 。 8 圖 12 主程序流程圖 接收解碼程序 紅外接 收 解碼的關(guān)鍵是如何識別‘ 0’和‘ 1’碼,我的做法是根據(jù)‘ 0’和‘ 1’碼的高電平寬度不一樣的特點來進行識別。接收程序的流程圖 如圖 13 所示。 進入紅外接 收程序后先 關(guān)閉中斷。接著的工作是避開 9ms 高電平、 的低電平的引導碼, 并且判斷是否干擾信號或者重復信號。 正如前面所說 , 一體化紅外接收頭的輸出端電平跟遙控發(fā)射端電平相反。 如圖 14 所示。 所以只要遙控有鍵 按下單片機就會 馬上 產(chǎn)生中斷接收數(shù)據(jù)。跟在引導碼后面的是 32位用戶 碼 和 數(shù)據(jù)碼,也就是我們想要的數(shù)據(jù),單片機把它接收并保存。當接 收 完 8 位的數(shù)據(jù) 時要更換另外一個數(shù)據(jù)緩沖區(qū),當 32 位的 鍵碼都接收完的時候就意味這一幀的數(shù)據(jù)已經(jīng)接收完畢。然后根據(jù)接收到的數(shù)據(jù)碼和數(shù)據(jù)反碼是否對應位相反來確定接收的這一幀數(shù)據(jù)是否正確,最后 退出接收解碼程序。 初始化 等待遙控識別按鍵 時鐘 模式 密碼核對 報警鎖定 開鎖 上鎖 密碼修改 N 錯誤 正確 密碼鎖按鍵 密碼鎖模式 Y 9 圖 13 紅外接收程序流程圖 圖 14 接收頭前導碼信號變相圖 而單片機的接收端的‘ 0’‘ 1’波形圖如圖 15 所示。在保存 ‘ 0’ 碼和 ‘ 1’碼 的時候還有一個保存時機的問題 , 如果從 低電平過后開始延時 , 以后若讀到為低紅外中斷程序 關(guān)中斷 是否 9ms 低電平 開始接收 32位編碼 接收信號“ 1” 保存,接收了 8 位? 是否 低電平 低電平 大于 800us 接收信號“ 0” 保存,接收了 32 位? 開 中斷 返回 干擾信號 重復信號 N N N N N Y Y Y Y Y 發(fā)射模塊 MCU 9ms 接收頭 9ms 10 電平 , 說明該位為 ‘ 0’, 反之則為 ‘ 1’。 為安全起見 , 延時必須比 長一些 , 但又不能超過 , 否則如果該位 為‘ 0’ 讀到的已是下一位的高電平 , 因此取 ( + )/2= 較為可靠 , 一般取 左右均可 。 圖 15 單片機接收端的‘ 0’‘ 1’波形圖 接收解碼 關(guān)鍵 程序: sbit IR = P3^2。 // 紅外中斷輸入端口( INT0) void ir_svr(void) interrupt 0 using 0 { int width=0,i。 EX0 = 0。 //關(guān)中斷 /****常規(guī)狀態(tài)下 INT0 為高電平,由高電平跳變?yōu)榈碗娖綍r (即下降沿 )產(chǎn)生中斷 ****/ // 引導信號 :9ms 低電平 while(!IR) { delay_100us()。 width++。 } //計算引導電平的寬度 if (width 80) { EX0 = 1。 return。 } // 8ms=80*100us 如果不到 8ms 視為干擾信號 // 計算 高電平寬度 width = 0x00。 while(IR) { delay_100us()。 width++。 } if (width 30) {EX0 = 1。 return。}// 3ms=30*100us 如果不到 3ms即視為 // 至此,引導碼已校驗,以下接收地址碼和數(shù)據(jù)碼,一共 32 位 i=0。 while(i++ 32) //接收 32 位編碼 { 11 while(!IR)。 //等待高電平 width = 0x00。 while(IR) //記錄高電平寬度 { delay_100us()。 width++。 } ir_data = 1。 if (width 0x08) ir_data |= 0x01。 //信號 1和 0判斷 if (i==8) //保存接收到的數(shù)據(jù) dataIR[0] = ir_data。 if (i==16) dataIR[1] = ir_data。 if (i==24) dataIR[2] = ir_data。 if (i==32) dataIR[3] = ir_data。 } if (dataIR[2] != ~dataIR[3]) //糾錯校驗 { EX0 = 1。 return。 } ir_data = dataIR[2]。 ir_flag = 1。 //接收成功標志位 TR1=0。 //有按鍵關(guān)定時器 1 T=0。 EX0 = 1。 }} 按鍵數(shù)字分配 由于遙控器的編碼是為了不容易出錯而編 的,導致數(shù)據(jù)比較亂,為了編程方便,我們特意修改了數(shù)據(jù)。 0~9 號為密碼數(shù)據(jù), 10 號為退格鍵, 11 號為密碼修改鍵, 18 號為開鎖鍵, 14 號為調(diào)整時間鍵, 8 號調(diào)時, 9 號調(diào)分。 /************** 按 鍵 數(shù) 據(jù) 編 碼 *****************************/ /************** 18,19,20 ***********************************/ /************** 15,16,17 ***********************************/ /************** 12,13,14 ***********************************/ /************** 0, 10,11 ***********************************/ /************** 1, 2, 3 ***********************************/ 12 /************** 4, 5, 6 ***********************************/ /************** 7, 8, 9 ***********************************/ /************** 遙控器 ***********************************/ uchar key_match() { switch(ir_data) { case 0x68: return(0)。 case 0x30: return(1)。 case 0x18: return(2)。 case 0x7a: return(3)。 case 0x10: return(4)。 case 0x38: return(5)。
點擊復制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1