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

正文內容

基于51單片機的紅外密碼鎖設計及測試報告-資料下載頁

2025-05-31 08:57本頁面
  

【正文】 s(200):延時 199 805 195usDelay_1ms(255):延時 254 750 250us*///void Delay_1ms (unsigned char t){unsigned char i,j。 do {j = 2。do {i = 165。do { _nop_()。} while (i)。} while (j)。} while (t)。 }//// void Delay_882us (void)////// 函數(shù)功能: 時基為 882us 的延時// 入口參數(shù): 無// 返回參數(shù): 無// 全局變量: 無// 調用模塊: 無 // 注意事項: 延時時間為 881us,誤差為 1us//38void Delay_882us (void) {uchar i,j。for (i=20。 i0。 i) {for(j=20。 j0。 j) {。 }}for (i=5。 i0。 i) {_nop_()。 }}//// void Decoder (void)////// 函數(shù)功能: 遙控解碼// 入口參數(shù): 無// 返回參數(shù): 無// 全局變量: irvalidf: 紅外解碼有效標志位,為 1 表示有效// ch:紅外原碼數(shù)據(jù)存放單元// 調用模塊: Delay_882us()。Delay_1ms(unsigned char) // 注意事項: //void Decoder (void){uchar i,j。uchar tmp[2]。 // tmp[0]:暫存原碼數(shù)據(jù)。tmp[1]:暫存反碼數(shù)據(jù)irvalidf = 1。 // 先設紅外解碼有效for (i=0。 i10。 i++) // 循環(huán) 10 次,檢測在 內信號的電平狀態(tài){Delay_882us()。 // 延時 882usif (HONGWAI) // 若信號為高電平,則為干擾信號{ irvalidf = 0。 // 紅外解碼解碼無效39break。}}if (irvalidf){while (!HONGWAI)。 // 等待引導碼中的 9ms 低電平結束Delay_1ms(5)。 // 延時 5ms,屏蔽引導碼中的 高電平for (j=0。 j16。 j++) // 檢測 26 位系統(tǒng)識別碼{while (!HONGWAI)。 // 等待系統(tǒng)識別碼第一位數(shù)據(jù)的上升沿Delay_882us()。 // 高電平開始后,用 882us 的時間尺檢測信號的電平狀態(tài)if (HONGWAI) // 若該信號為高電平,則延時 1ms等待高電平結束{Delay_1ms(1)。 // 延時 1ms }} for (i=0。 i2。 i++) // 接收原碼和反碼數(shù)據(jù)并暫存{ for (j=0。 j8。 j++) // 循環(huán) 8 次,接收 8 位數(shù)據(jù)(原碼或反碼){while (!HONGWAI)。 // 等待系統(tǒng)識別碼第一位數(shù)據(jù)的上升沿Delay_882us()。 // 高電平開始后,用 882us 的時間尺讀取信號的電平狀態(tài)tmp[i] = 1。 // 先接收低位數(shù)據(jù)if (HONGWAI) // 若該信號為高電平 ,則延時 1ms 等待高電平結束{Delay_1ms(1)。 // 延時 1ms tmp[i] = tmp[i] | 0x80。 // 暫存信號此時的電平狀態(tài)}} } if (~tmp[0] == tmp[1]) // 將原碼取反后與反碼進行比較,若兩者的值相同則完成解碼{ch = tmp[0]。 // 保存原碼數(shù)據(jù)}else 40{irvalidf = 0。 // 若原碼和反碼不等,則本次接收的數(shù)據(jù)無效}} }//// 中斷服務子程序////// void INTX0_ISR (void)////// 函數(shù)功能: 外 0 中斷服務程序,接收到紅外信號(下降沿)響應中斷// 入口參數(shù): 無// 出口參數(shù): 無// 全局變量: intx0f:初始為 0。為 1 表示響應了外 0 中斷// 調用模塊: 無 // 注意事項: //void INTX0_ISR (void) interrupt 0{_nop_()。 // 目的:跳過尖峰干擾脈沖intx0f = 1。}//// End Of File// 單片機接收終端部分1. 密碼的輸入與確認 初始狀態(tài)紅燈亮,表示閉鎖。設定初始密碼為{1,2,3,4} ,通過按輸入鍵開始輸入密碼,依次輸入 4 個數(shù)字,最后與 24C02 當中儲存的密碼相比較,密碼相等則開鎖,綠燈亮。否則開鎖失敗閉鎖,紅燈亮。2. 密碼的修改 通過按下密碼修改鍵,重現(xiàn)設定密碼。重新設定密碼首先要輸入原密碼,正確則進行新密碼的設定,不相等則退出修改。重新修改密碼時需輸入兩次密碼,第一次為新設定的密碼,第二次為新密碼的確認修改密碼成功時 LCD 提示修改成功并有 led 閃爍。稍后返回歡迎界面。3. 矩陣鍵盤的掃描鍵盤設計為 4*4 矩陣鍵盤。16 個按鍵用到的實際為 14 個按鍵,其中包括 10 個41數(shù)字鍵,一個輸入鍵,一個確認鍵,一個取消鍵,一個修改密碼鍵。矩陣鍵盤的掃描方式采用線反轉法。4. IIC 程序開始就從 24c02 讀出密碼儲存,為以后輸入密碼比較。當修改密碼成功時將新的密碼寫入 24c02 中,掉電不丟失。5. 1602 液晶顯示本設計采取 1602 液晶顯示界面進行人機交互, 液晶初始狀態(tài)為歡迎登錄界面 每次操作都有相應的提示語言顯示,密碼輸入輸入正確與錯誤都有相應的提示。6. 終端程序部分 ① 1602 顯示//1602 頭文件ifndef _LCD1602_Hdefine _LCD1602_Hinclude define uchar unsigned chardefine uint unsigned intsbit rs=P2^3。sbit rw=P2^4。sbit en=P2^5。sbit lcd=P2^7。 //背光燈端口//table 中存放相應必要提示語uchar code table[] =Wele!。uchar code table1[]=Successful!。uchar code table2[]=Wrong!。uchar code table3[]=Modify Success!。uchar code table4[]=Enter password:。uchar code table5[]=Modify Password:。uchar code table6[]=New password:。uchar code table7[]=New pwd again:。uchar code table8[]=Modify Fail!。uchar code table9[]=Exit later!。void delay(uint n){uint x,y。for (x=n。x0。x)for (y=110。y0。y)。}//1602 寫命令子函數(shù)void lcd_w(uchar ){42rs = 0。rw = 0。P0 = 。delay(5)。en = 1。en = 0。}// 1602 寫數(shù)據(jù)子函數(shù)void lcd_wdat(uchar dat){rs = 1。rw = 0。P0 = dat。delay(5)。en = 1。en = 0。}// 1602 初始化void lcd_init(){lcd_w(0x38)。lcd_w(0x0c)。lcd_w(0x06)。lcd_w(0x01)。}endif ② 矩陣鍵盤掃描 /*判斷按鍵按下及按鍵值確定 */uint keyin(){uchar t, keydown。uint x=16。P1 = 0xF0。if (P1!=0xF0){ //按鍵操作delay_ms(10)。P1 = 0xF0。if (P1!=0xF0){t = P1。}P1 = 0x0F。keydown = P1 | t。43switch(keydown) //判斷按鍵值{case 0xED: x=14。 break。 // 密碼輸入case 0xE7: x=0。 break。 // 0case 0xDE: x=12。 break。 // 取消case 0xDD: x=3。 break。 // 3case 0xDB: x=2。 break。 // 2case 0xD7: x=1。 break。 // 1case 0xBE: x=11。 break。 // 確認case 0xBD: x=6。 break。 // 6case 0xBB: x=5。 break。 // 5case 0xB7: x=4。 break。 // 4 case 0x7E: x=10。 break。 // 設定修改密碼case 0x7D: x=9。 break。 // 9case 0x7B: x=8。 break。 // 8case 0x77: x=7。 break。 // 7default: break。 }while (P1!=0x0f)。 //松鍵檢測} return x。} ③ IICifndef _24Cxx_Hdefine _24Cxx_Hinclude include include include define uint unsigned intdefine uchar unsigned charsbit scl = P3^6。 //時鐘線sbit sda = P3^7。 //數(shù)據(jù)線// 24c02 初始化void init(){scl = 1。delay_us(2)。sda = 1。delay_us(2)。}//24c02 啟動void start()44{sda = 1。delay_us(2)。scl = 1。delay_us(2)。sda = 0。delay_us(2)。scl = 0。delay_us(2)。}//24c02 結束void stop(){sda = 0。delay_us(2)。scl = 1。delay_us(2)。sda = 1。delay_us(2)。}//24c02 寫一字節(jié)數(shù)據(jù)void writex(uchar temp){uchar i。for (i=0。i8。i++){sda = (bit)(tempamp。0x80)。delay_us(2)。scl = 1。delay_us(2)。scl = 0。delay_us(2)。temp = 1。}}//從 24c02 讀一字節(jié)數(shù)據(jù)uchar readx(){uchar i,j,k。scl = 0。delay_us(2)。sda = 1。for (i=0。i8。i++){45delay_us(2)。scl = 1。delay_us(2)。if (sda==1)j = 1。else j = 0。k = (k1)|j。scl = 0。}delay_us(2)。return k。}//軟件模擬時鐘信號void clock(){uchar i。scl = 1。delay_us(2)。while ((sda==1)amp。amp。(i255))i++。scl = 0。delay_us(2)。}//24c02 從相應地址讀數(shù)據(jù)uchar aread(uchar address){uchar i。start()。writex(0xa0)。clock()。writex(address)。clock()。start()。writex(0xa1)。clock()。i = readx()。stop()。delay_us(5)。return (i)。}//24c02 向相應地址寫入數(shù)據(jù)46voi
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1