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

正文內(nèi)容

課程設(shè)計報告---單片機實現(xiàn)密碼鎖-在線瀏覽

2025-07-30 16:20本頁面
  

【正文】 可以鍵盤模塊、顯示模塊、報警模塊、電子鎖控制模塊和單 片機模塊。 各模塊設(shè)計思路如下: 、鍵盤設(shè)計。 、數(shù)碼管設(shè)計。 硬件電路設(shè)計 、鍵盤電路設(shè)計 按鍵模塊采用 4 4 行列矩陣結(jié)構(gòu),由 4 條行線和 4 條列線構(gòu)成。按鍵電路如 圖 2 所示。軟件編程采用線翻轉(zhuǎn)法,該方法要求行線和列線上 都有上拉電阻。圖中順序前十個按鍵為 0~ 9,最后 3 個按鍵分別為退格鍵、閉鎖鍵和確認(rèn)鍵。軟件編程時采用動態(tài)顯示方法,其結(jié)構(gòu)圖如 圖 3 所示。 、報警電路設(shè)計 報警電路主要由 PNP 三極管和蜂鳴器構(gòu)成。 圖 4 LS1 為一個 5V 的壓電蜂鳴器,當(dāng)對其 2 號引腳施加 5V 電壓時,便會鳴叫。通過控制 ALARMCON輸出低電平的時間長短來控制蜂鳴器長叫或短叫。電子鎖控制電路圖如 圖 5 所示。三極管的基極通過一個電阻接單片機的引腳。圖中普通二極管是繼電器線圈的續(xù)流二極管,為感應(yīng)電動勢提供回路,以免損壞三極管。由于 AT89C51 內(nèi)部集成了 12MHz 的振蕩電路,所以系統(tǒng)外部未加。 圖 6 AT89C51 單片機的 P0 口用于輸出顯示器段碼。 P2 口用于構(gòu)成行列矩陣鍵盤。 用于控制電子鎖的開閉。因此整個軟件分為按鍵子程序、顯示子程序、報警子程序、電子鎖控制子程序及主程序。 typedef unsigned int uint。 //保存上次掃描按鍵的鍵值 uchar KeyUp。 //LED 位碼 uchar code BITCODE[]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80}。 //保存顯示的字符 bit DispNormal。 //控制閃爍顯示的頻率 define LONG_TIME 200 //蜂鳴器響 2s define SHORT_TIME 20 //蜂鳴器響 200ms define LONGER_TIME 18000 //蜂鳴器響 3min sbit ALARMCON=P3^4。 //定義是否報警或聲音提示 uint AlarmTime。 //定義電子鎖控制引腳 uchar PassWord[]={1,2,2,2,1}。 //保存輸入的密碼字符 uchar PassInBuf1[6]。 //用戶輸入的密碼字符在 PassInBuf[6]中的位置 bit TimerBit。 //系統(tǒng)所處的模式: 0 輸入密碼模式 1 報警模式 2 開鎖模式 uchar ErrorCnt。 char i=0。 //密碼重新輸入錯誤標(biāo)志位 char q。 //重置密碼輸入次數(shù)標(biāo)志 char SET=0。 for(t=0。t++) { DispBuf[t]=FillChar。 } } void Fill_Buf_P() //將系統(tǒng)閉鎖時的信息寫入緩沖區(qū) { Fill_Buf(BLANKCHAR)。 } void Fill_Buf_O() //將系統(tǒng)開鎖時的信息寫入緩沖區(qū) { Fill_Buf(BLANKCHAR)。 } void Fill_Buf_A() //將系統(tǒng)報警時的信息寫入緩沖區(qū) { Fill_Buf(LINECHAR)。 } void Fill_Buf_B() //將系統(tǒng)設(shè)定密碼時的信息寫入緩沖區(qū) { Fill_Buf(BLANKCHAR)。 } //緩沖區(qū)顯示函數(shù) void Disp_Led_Sin(uchar DispChar,uchar DispPosi) //在某個 LED 上顯示字符 { LEDPORT=SEGCODE[DispChar]。 } void Disp_Led_OFF() //關(guān)閉顯示器 { uchar T。 for(T=0。T++) Disp_Led_Sin(BLANKCHAR,T)。 DispCnt%=10。 } if(SysMode==1) { if(!DispNormal) { Disp_Led_OFF()。 } } Disp_Led_Sin(DispBuf[i],i)。 AlarmTime=stime。 AlarmTime。 ALARMCON=1。 Fill_Buf_P()。 KEYPORT=0XF0。 if(KeyTemp==0XF0) return NO_KEY。 break。 break。 break。 break。 } KEYPORT=0x0f。 switch(KeyTemp) { case 0x07: i=4。 case 0x0b: i=3。 case 0x0d: i=2。 case 0x0e: i=1。 default: break。 } uchar Scan_Key() //負(fù)責(zé)按鍵去抖動等操作 { uchar KeyTemp。 if(KeyTemp==NO_KEY) { if(KeyUp2) { KeyUp=0。 }
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1