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

正文內(nèi)容

課程設(shè)計論文-基于單片機(jī)的遙控密碼鎖-閱讀頁

2024-11-29 00:58本頁面
  

【正文】 圖 19 不帶 LCD 的硬件實物圖 當(dāng)接收到識別按鍵后,單片機(jī)便可解碼出相應(yīng)的鍵碼和該遙控器的用戶碼,組成該遙控器的 ID。如果 ID 存在,系統(tǒng)即進(jìn)入電子密碼鎖模式。若 密碼輸入正確,就 可以選擇進(jìn)行開鎖、上鎖或修改密碼的操作,并伴有 LED 燈顯示。系統(tǒng)被鎖定后無法通過遙控器解鎖,只能夠按電子鎖上面的復(fù)位鍵使整個程序復(fù)位。兩次新密碼接收完畢后,進(jìn)入密碼比較程序,判斷兩次輸入的密碼是否相同。 若不相同則 LCD 顯示錯誤,程序返回。 C 語言不像匯編一樣可以計算指令運(yùn)行所要的時間,所以 C 語言的定時是C語言編寫單片機(jī)程序最大的一個缺陷。 還有 可以考慮用定時器,但進(jìn)出中斷程序以及重新裝載計數(shù)初值也是要耗費(fèi)一些時間的,也很難精確定時到微秒級,而且在極端的情況下,計時器甚至已經(jīng)全部 有其它 的用途。 Keil uVision2 編譯器有程序調(diào)試的功能,通過調(diào)試 本系統(tǒng) 成功地只用 C51 語言產(chǎn)生精確 的 定時。 while(i)。 如圖 20所示 然后進(jìn)22 入 Keil uVision2 的調(diào)試狀態(tài)。紅點之間的程序就是 所調(diào)試 的延時程序, 接著 把項目所用的晶振設(shè)為 12M,這與硬件電路相對應(yīng)。兩時間相減是 秒,就是說延時程序的運(yùn)行時間是 101us,與理想值只差 1us,延時十分精確。這樣的結(jié)合使密碼鎖的使用更加方便,安全性能得到進(jìn)一步 的 提高。本系統(tǒng)還具有學(xué)習(xí)識別 NEC 編碼遙控器的功能,可以實現(xiàn)多對一操作,不同的遙控器采用相同的密碼,不用擔(dān)心遙控器遺失的問題,而且 用戶可以經(jīng)常更改密碼,防止密碼被盜 。 接收部分用單片機(jī)作為主芯片,可以根據(jù)不同要求來 修改 設(shè)定不同的密 碼位數(shù)或改變、增添一些新功能。而且本系統(tǒng)既可以室內(nèi)使用,也可以在野外使用。在惡劣的環(huán)境使用出現(xiàn)故障的機(jī)率會大大的提高。 還有就是 由于紅外遙控編碼的調(diào)制方式有 很多 種 , 編碼格式也各不相同 。因此本系統(tǒng)只針對最常用的 NEC 編碼格式的遙控器進(jìn)行學(xué)習(xí)與識別,舍棄其它編碼。 設(shè)計總結(jié) 本次的課程 設(shè)計過程中 , Proteus 仿真軟件中都是沒有此類硬件的, 只能放棄仿真。用 keil 寫程序的時候,由于我們受 FPGA 和組態(tài)軟件的影響, 總是認(rèn)為程序是并行執(zhí)行的, 所以 遇到了一些困難。我們小組參考了一個音樂播放器的程序而想出了按鍵發(fā)音的主意。液晶顯示方面,參考了一些程序,對寫命令還有寫數(shù)據(jù)有了一定的認(rèn)識。 1 參 考 文 獻(xiàn) 李朝青 . 2020. 單片機(jī)原理及接口技術(shù) (第 3 冊 )[M]. 北京 : 北京航空航天大學(xué)出版社 . 17140 來清民 . 2020. 傳感器與單片機(jī) 接口及實例 [M]. 北京 : 北京航空航天大學(xué)出版社 . 213226 張義和 , 陳敵北 , 周金圣 . 2020. 例說 Protel2020[M]. 北京 : 人民郵電出版社 . 142204 康華光 . 2020. 電子技術(shù)基礎(chǔ)數(shù)字部分 (第四版 )[M]. 北京 : 高等教育出版社 .213228 譚浩強(qiáng) . 2020. C語言程序設(shè)計 (第三版 )[M]. 北京 : 清華教育出版社 . 204278 Q1855012345678RST91011121314151617XTAL218XTAL119VSS202122232425262728PSEN29ALE30EA/VPP313233343536373839VCC40U189S5112Y1XTAL104C11 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16LCD1LCD1602VCC1 2 3 4 5 6 7 8 9RP1R_10K30PC230PC3VCC10uFE1VCC1KR31KR91KR10D2LEDD3LEDVCCLED1 LED21KR5VCC100R6SPEAKERLED2LED1 LED3D0 D1 D2 D3 D4 D5 D6 D7 ERWRSD0 D1 D2 D3 D4 D5 D6 D7ERWRSE01E12E23GND4SDA5SCL6WC7VCC8U324C02VCC10KR710KR8WC SCL SDAWC SCL SDAVCCVCC1KR4D1LED4213S11KR2R110kIN13OUT2GNDU2780512J1POWERINVCC104C4SWPower1SWSPSTVss1Vdd2OUT31VCC4213S2D4LED1KR11LED3SPEAKERSPEAKER1Speaker附錄 A 電路連接圖 附錄 C 實物圖 圖 1 HZFT007 的 20 鍵 車載 MP3 紅外遙控器 圖 2 不帶 LCD 硬件實物圖 圖 3 帶 LCD 硬件實物圖 程序附錄: 主程序: include sbit IR = P3^2。 sbit LED1=P1^3。 sbit LED3=P1^5。 uchar key_data=100。 uchar origin_code[]={1,2,3,4,5,6,7,8},receive_code[8],_code[8],1_code[8]。 int code FreTab[21] = { 300,400,600,800,800,1200,1400,300,400,600,800,800,1200,1400,300,400,600,800,800,1200,1400 }。 //音符定時器初值暫存 extern void delay_100us(void)。 extern void initLCM( void)。 extern void DisplayOneChar(uchar X,uchar Y, unsigned char DData)。 //顯示指定坐標(biāo)的一串字符子函數(shù) extern void LCM_cls(void)。 void delay_100us(void)。 void change_code(void)。 /************** 按 鍵 數(shù) 據(jù) 編 碼 *****************************/ /************** 18,19,20 ***********************************/ /************** 15,16,17 ***********************************/ /************** 12,13,14 ***********************************/ /************** 0, 10,11 ***********************************/ /************** 1, 2, 3 ***********************************/ /************** 4, 5, 6 ***********************************/ /************** 7, 8, 9 ***********************************/ /************** 遙控器 ***********************************/ uchar key_match() { switch(ir_data) { case 0x68: return(0)。 case 0x18: return(2)。 case 0x10: return(4)。 case 0x5a: return(6)。 case 0x4a: return(8)。 case 0x98: return(10)。 case 0xe0: return(12)。 case 0x90: return(14)。 case 0x02: return(16)。 case 0xa2: return(18)。 case 0xe2: return(20)。 } } main(void) { TH1=0X3C。 initLCM()。 //定時器 0 和定時器 1 工作方式都是 1 ET0 = 1。 IT0=1。 EA=1。 DisplayListChar(3,0,WELCOME!)。 shi=0。 miao=0。 while(1) //時鐘部分程序 { F1: DisplayListChar(0,0, )。 DisplayListChar(6,0,(0_0))。 write_sfm(3,shi)。 write_sfm(9,miao)。 DisplayListChar(6,0,(^_^))。 if(key_data==14){key_data=99。} if(key_data==18) //轉(zhuǎn)入密碼模式 { beep_flag=1。 key_data=99。 delay_LCM(10)。 show=1。 goto A1。 if(miao==60) { miao=0。 if(fen==60) { fen=0。 if(shi==24) { shi=0。 } write_sfm(6,fen)。 } } F2: while(1) { if(ir_flag==1) {key_data= key_match()。 else shi++。write_sfm(3,shi)。 case 9: if(fen==59)fen=0。ir_flag=0。break。ir_flag=0。DisplayListChar(6,0,(^0^))。 }} if(key_data==14){key_data=99。} } A1: while(1) { TR1=1。 //密碼程序部分 else change_code()。 code_right=0。 goto F1。 //Beep 函數(shù)發(fā)出按鍵聲音 if(show==1amp。flag==0) //接收 8 個密碼 if(key_data10) { receive_code[rec_num]=key_data。 flag=1。 } else if(rec_num0amp。key_data==10) //10 號鍵退格 { DisplayListChar(rec_num1,1, )。 rec_num。 delay_LCM(10)。 show=0 。rec_num=0。} if(rec_num==8) //輸入八個密碼后密碼檢查 amp。 for(j=7。j) { if(origin_code[j]!=receive_code[j]) //與原密碼比較 { wrong_num++。LCM_cls()。 DisplayListChar(0,0,Input it again!)。LCM_cls()。 DisplayListChar(0,0,the last time)。 DisplayListChar(0,0,Wrong!)。 LED1=1。LED3=0。 //3 次錯誤報警 delay_LCM(10000)。 } //3 次錯誤進(jìn)入死循環(huán)鎖定 code_right=0。 return。 DisplayListChar(0,0, (^_^))。 rec_num=0。 code_right=1。 if(ir_flag==1) key_data=key_match(),flag=0,Beep(),ir_flag=0。amp。 LCM_cls()。 new_code1=1。amp。 Displ
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1