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

正文內(nèi)容

畢業(yè)論文-智能密碼防盜防火報(bào)警器設(shè)計(jì)【帶全部源代碼-資料下載頁(yè)

2025-06-03 23:54本頁(yè)面
  

【正文】 r!}。//提示密碼修改 成功錯(cuò)誤提示語(yǔ) //登陸狀態(tài)下管理員身份驗(yàn)證提示。 uchar code ASucess[2][16]={Waiting...,Identity Correct}。 …… uchar EroTimes=0。 //錯(cuò)誤的次數(shù) 對(duì)應(yīng)著 ERTimes[3]; uchar frq。 //聲音的頻率 uchar Voice=1。 //聲音 Stop/Start 的標(biāo)志 uchar AmditKey=0。 //管理員進(jìn)去之后,管理員標(biāo)志 uchar WarnSign=0。 //溫度太高標(biāo) 志 uchar NCSign=0。 //修改密碼標(biāo)志, 2 次修改密碼 uchar Size=0。 //CodeStr 的大小,有此標(biāo)志可以使用 Back 按鍵功能 uchar NCSize=0,ACSize=0。 //NewCode2[7], NewCode2[7]的大小, uchar BackFlag=0。 //Back 按鍵可以使用標(biāo)志 uchar Ensure=0。 //確定鍵按下的標(biāo)志 系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn) 第 15 頁(yè) (共 77 頁(yè)) uchar OverFull=0。 //Back 鍵 此標(biāo)志來(lái)確定是那一種 back 6 個(gè)的情況和未 滿 6 的情況; 此段為按下鍵盤發(fā)聲數(shù)據(jù)。 uchar code SONG_TONE[]={255,0}。 uchar code SONG_LONG[]={1,0}。 uchar EvetInf。 鍵盤掃描變量 ?? 主函數(shù)模塊 學(xué)過(guò) C 語(yǔ)言的都知道主 函 數(shù)是干什么的,是運(yùn)行整個(gè)系統(tǒng)的入口,在主函數(shù)首先初始化各 模塊,(溫度模塊、中斷初始化、顯示模塊初始化),然后程序進(jìn)入while 不停調(diào)用各種功能模塊。 ?? uchar flag=0。 TMOD = 0x01。 frq = 0x00。 TH0 = 0xfe。 TL0 = 0xff。 TR0 = 1。 IE = 0x82。 P1=0xff。 //初始化 p1 口,全設(shè)為 1,設(shè)為輸入 以上關(guān)于定時(shí)中斷,后節(jié)將會(huì)介紹。 Inital_LCD1602()。 //初始化 LCD1602 ReadFrmDS18B20()。 //先給初始化掉 得出正確的時(shí)間 if(Int_Tempt60) //當(dāng)溫度達(dá)到大于 50 的時(shí)候, WarnSign 就會(huì) 置 1 啟動(dòng) Wa rnSign=1。 //當(dāng) WarnSign = 1,報(bào)警就會(huì)隨之響起。 ScreenMyInfo()。 //這里面的時(shí)候程序執(zhí)行的時(shí)候,只會(huì)運(yùn)行一次,開機(jī)顯示任意字符串 ,這里為讀取時(shí)間起到緩沖作用。 SetComLCD1602(0xca)。 while(1) 智能防火防盜系統(tǒng) 第 16 頁(yè) (共 77 頁(yè)) { if(EroTimes=3 ||WarnSign==1) { 下面說(shuō)到了 EroTimes(見下節(jié)密碼錯(cuò)誤次數(shù)標(biāo)志)或者溫度大于 50 就會(huì)報(bào)警 RL=1。 并且紅燈一直亮。 下面這塊改變頻率 利用 中斷發(fā)聲。 ?? case 0:frq += 15。break。 //flag 標(biāo)志置 0 時(shí) ,frq 遞增 case 1:frq = 15。break。 //flag 標(biāo)志置 1 時(shí) ,frq 遞減 if (!(frq^0xff)) flag = 1。 //當(dāng) frq 增加到 FFH 時(shí) ,flag 置 1,準(zhǔn)備 frq 遞減 if (!(frq^0x00)) flag = 0。 //當(dāng) frq 遞減到 00H 時(shí) ,flag 置 0,準(zhǔn)備 frq 遞增 ?? AllKeyScan()。 // 無(wú)限掃描按鍵 ReadFrmDS18B20()。 //這里不是及時(shí)顯示溫度了,閃爍效果太厲害了。頻率不夠 if(1 = (Int_Tempt Int_LtTemp) || 1 = (Int_Tempt Int_LtTemp)) ShowAllStr()。 //重新刷新屏幕 Int_LtTemp = Int_Tempt。 //利用溫度變了一度就重 新 顯示 ?? 密碼模塊 IsAcessSys 映射于按鍵的 (3,0)和 (3,1)這里將此兩個(gè)鍵設(shè)為確定鍵,當(dāng)這個(gè) 2 個(gè)坐標(biāo)任意一個(gè)按鍵(坐標(biāo))按下 時(shí)候 Ensure 置 1,然后再 main 里面循環(huán)里面將此函數(shù)調(diào)用,下面是調(diào)用的語(yǔ)句。 if(Ensure==1) { IsAcessSys()。 Ensure=0。 } void IsAcessSys()函數(shù)是對(duì)密碼的檢驗(yàn)的正確性,而同時(shí)此函數(shù)的作用不僅僅比較函系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn) 第 17 頁(yè) (共 77 頁(yè)) 數(shù)的比較,更重要的功能在管理員進(jìn)入系統(tǒng)后, AmditKey 置 1( AmditKey 后面叫管理員),管理員就可以對(duì)密碼進(jìn)行修改, uchar i=0。 if(NCSign==1) { NCSign=2。 ChangeCode()。 } NCSign 是對(duì)密碼修改器作用,當(dāng)進(jìn)入系統(tǒng)后,修改密碼按鍵( 0,0)按下,調(diào)用 ChangeCode(), NCSign = 1,進(jìn)入修改的狀態(tài)。 ?? if(NCSign==4) ?? 當(dāng)按下按鍵的 (3,0)和 (3,1)時(shí)候, NCSign = 1 進(jìn)入 ChangeCode()。 void ChangeCode() ?? if(AmditKey==1 amp。amp。 NCSign==0) //只有管理員才可以修改密碼, NCSign 為第一次輸入新密碼才會(huì)起作用。 ?? NCSign=1。 if(NCSign==2) ? ? NCSign=3。 ?? 而在 ChangeCode()。 中 NCSign =3,在 JudgeStrSize 中函數(shù)對(duì) else if(NCSign==3) ?? NewCode2[ACSize] = keys + 39。039。 //* LCD1602Input(NewCode2[ACSize])。 if(ACSize=5) 智能防火防盜系統(tǒng) 第 18 頁(yè) (共 77 頁(yè)) { ACSize=5。 ?? NCSign=4。 // 第二個(gè)字符新密碼成功 SetComLCD1602(0xcb)。 // 第二行第最后那個(gè)位置 } 當(dāng) NCSign = 4 了 就說(shuō)明第一次輸入的新密碼至少 ACSize = 5 位,后才可以點(diǎn)擊確定鍵。 Void IsAcessSys 函數(shù) ?? if(NCSign==4) ?? if(strcmp(NewCode1,NewCode2)==0) 在 NCSign =4 下,就是得到了 2 個(gè)密碼新字符串了。比較 2 個(gè)新的密碼字符串是否相等、如果成功,那么就在屏幕上顯示 Successfully 并把 NewCode 的值重新賦給ClientCode;( ClientCode 定義的全局進(jìn)入系統(tǒng)的密碼字符串,詳情查看附錄代碼) while(NewCode1[i]! = 39。\039。) { ClientCode[i] = NewCode1[i]。 i++。 } ClientCode[i]=39。\039。 //輸出 successfully!! ?? while(Message[0][i]!=39。\039。) { LCD1602Input(Message[0][i])。 i++。 } for(i=0。i4。i++) DelaySecond(200)。 系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn) 第 19 頁(yè) (共 77 頁(yè)) ?? 下面是 2 次 新的字符串如果不相等,那么在屏幕上顯示 ERROR,并且 調(diào)用ShowAllStr(); ( PS: ShowAllStr()。全部代碼查看附錄) i=0。 SetComLCD1602(0x01)。 SetComLCD1602(0x84)。 while(Message[1][i]!=39。\039。) { LCD1602Input(Message[1][i])。 i++。 } for(i=0。i4。i++) DelaySecond(200)。 假如 2 次 新密碼匹配成功,則界面就會(huì)返回到登陸界面 就要對(duì)一下參數(shù)初始化; AmditKey=0。 NCSign=0。 CodeStr[0]=39。\039。 Size=0。 NCSize=0。 ACSize=0。 ShowAllStr()。 ?? 當(dāng)系統(tǒng)沒(méi)有進(jìn)入時(shí),也就沒(méi) 有 管理員,密碼正確程序 系統(tǒng) 才承認(rèn)你是管理員, 當(dāng) AmditKey = 0 時(shí)候,說(shuō)明此時(shí)沒(méi)管理員,只有在當(dāng)前輸入密碼后,按下確定鍵時(shí)才會(huì)相應(yīng)此條 if else if(AmditKey==0) i=0。 智能防火防盜系統(tǒng) 第 20 頁(yè) (共 77 頁(yè)) SetComLCD1602(0x01)。 SetComLCD1602(0x82)。 SetComLCD1602(0x0c)。 while(CletLoad[i]!=39。\039。) { LCD1602Input(CletLoad[i])。 i++。 } DelaySecond(250)。 i=0。 if(strcmp(CodeStr,ClientCode)==0) //比較當(dāng)前輸入的密碼,跟全局密碼 ClientCode 對(duì)比 ,如果正確,確定管理員AmditKey = 1; AmditKey=1。 ?? while(ASucess[1][i]!=39。\039。) { LCD1602Input(ASucess[1][i])。 i++。 } 當(dāng)?shù)顷懗晒Φ臅r(shí)候,綠燈指 示等就會(huì)亮 1s 鐘作為合法提示 參看下面代碼 for(I = 0。I 10。 I ++) // 綠 1second { GL=1。 DelaySecond(100)。 } GL=0; SPK=0。EroTimes=0。RL=0。 系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn) 第 21 頁(yè) (共 77 頁(yè)) ?? 當(dāng)密碼對(duì)比不正確時(shí),重新初始化。 i=0。 SetComLCD1602(0x01)。 SetComLCD1602(0x84)。 while(ErrorInfo[0][i]!=39。\039。) { LCD1602Input(ErrorInfo[0][i])。 i++。 } 這里密碼錯(cuò)誤了,在屏幕上錯(cuò)誤的信息。 i=0。 SetComLCD1602(0xc2)。 LCD1602Input(ERTimes[EroTimes])。 ERTimes[EroTimes]來(lái)確定還有多少次輸入的機(jī)會(huì)。 如果密碼錯(cuò)誤了,將會(huì)在屏幕上提示還剩下幾次輸入機(jī)會(huì)。 SetComLCD1602(0xc4)。 while(ErrorInfo[1][i]!=39。\039。) { LCD1602Input(ErrorInfo[1][i])。 i++。 } 這里密碼錯(cuò)誤了,在屏幕上錯(cuò)誤的信息 。 for(i=0。i4。i++) DelaySecond(250)。 CodeStr[0]=39。\039。 這里有必要說(shuō)一下 EroTimes 當(dāng)在登陸界面上每次輸入密碼按確定鍵錯(cuò)誤的話,EroTimes 機(jī)會(huì) +1,當(dāng)達(dá)到 3 次,系統(tǒng)就會(huì)報(bào)警,(本程序采用中斷報(bào)警,代碼如下智能防火防盜系統(tǒng) 第 22 頁(yè) (共 77 頁(yè)) 節(jié)) EroTimes ++。 Size=0。 Ensure=1。 //必須置 1 或者置 0,不然錯(cuò)誤了后 不能使用 back 按鈕了 ShowAllStr()。 ?? 顯示模塊 進(jìn)入系統(tǒng)后,如右圖 6 所示,在 LCD 顯示芯片將依據(jù)程 序顯示設(shè)定的字符串顯示, LCD 設(shè)定 2 行 16 個(gè)字符(調(diào)用命令), SetComLCD1602(0x38)。 SetComLCD1602(0x0c)。開關(guān)光標(biāo),光標(biāo)顯示部分只將出現(xiàn)在第二行第 11 個(gè)的位置開始,這個(gè)可以一眼可以看出來(lái)密碼輸入的位置。默認(rèn)密碼為 6 位,也就是說(shuō)修改后的密碼也只能是 6 位, 當(dāng) 程序中設(shè)定當(dāng)超過(guò) 6 位時(shí)候,光標(biāo)將不會(huì)往后面移動(dòng) 。 圖 6 顯示模塊電路圖 RS 為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。 RW 為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作 系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn) 第 23 頁(yè) (共 77 頁(yè)) ,低電平時(shí)進(jìn)行寫操作。當(dāng) RS 和 RW 共 同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng) RS 為低電平 RW 為高電平時(shí)可以讀忙信
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1