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

正文內(nèi)容

電子密碼鎖總體設(shè)計(jì)方案(編輯修改稿)

2025-05-22 13:39 本頁面
 

【文章內(nèi)容簡介】 真結(jié)果圖示密碼比較仿真結(jié)果圖鍵盤輸入模塊程序設(shè)計(jì)1)、設(shè)計(jì)原理本系統(tǒng)使用44矩陣鍵盤當(dāng)沒有鍵按下時(shí),行線和列線之間是不相連的,若第N行與第M列的鍵被按下,那么第N行與第M列的線就被接通。根據(jù)上述原理,本系統(tǒng)的鍵盤掃描方法是利用P1口的低四位作為行掃描線,P1口的高四位作為列回掃線。具體實(shí)施方法為:,P1口其他口輸出高電平,、。若此四口都為高電平,則沒有鍵按下;若有鍵按下,、、。、,其他口為高電平,依次掃描下去,找到按鍵所在的行,再判斷P1口的高四位哪一位為低,便可知道鍵在哪一列上。2)、具體實(shí)現(xiàn)程序如下/ void delay_key(uint x){ uchar i。 while (x) for(i=0。i120。i++)。}//矩陣鍵盤掃描uchar keys_scan(){ uchar temp。 P1=0x0f。 delay_key(2)。 temp=P1^0x0f。 switch(temp) { case 1: k=0。break。 case 2: k=1。break。 case 4: k=2。break。 case 8: k=3。break。 default:break 。 } P1=0xf0。 delay_key(2)。 temp=(P14)^0x0f。 switch(temp) { case 1: k+=0。break。 case 2: k+=4。break。 case 4: k+=8。break。 case 8: k+=12。break。 default:break 。 } return k。}void delay_lcd(uchar n) {uchar i。while(n) { for (i=0。ii++) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 } } }//測試LCD忙狀態(tài)返回bit lcd_bz(){ bit result。 rs = 0。 rw = 1。 eq = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result = (bit)(P0amp。0x80)。 eq = 0。 return result。} void lcd_wcmd(uchar cmd)//寫指令數(shù)據(jù)到LCD{ rs = 0。 rw = 0。 eq = 0。 P0 = cmd。 eq = 1。 delay_lcd(1)。 eq = 0。}void lcd_wdat(uchar dat)//寫入顯示數(shù)據(jù)到LCD{ while(lcd_bz())。 rs = 1。 rw = 0。 P0 = dat。 delay_lcd(1)。 eq = 1。 eq = 0。}void lcd_init()//LCD初始化{ lcd_wcmd(0x38)。//顯示模式設(shè)置,*7點(diǎn)陣,位數(shù)據(jù)接口 while(lcd_bz())。 lcd_wcmd(0x0C)。//顯示開及光標(biāo)設(shè)置不顯示 lcd_wcmd(0x06)。//顯示光標(biāo)移動(dòng)設(shè)置 lcd_wcmd(0x01)。//顯示清屏}void Display_String(uchar *str,uchar lineno)//在液晶指定行顯示字符串{ uchar i。 lcd_wcmd(0x80 + lineno)。 for(i=0。 i16。 i++) { lcd_wdat(str[i])。 } }3)、仿真結(jié)果圖示鍵盤輸入仿真結(jié)果圖電子時(shí)鐘顯示模塊程序設(shè)計(jì)1)、設(shè)計(jì)框圖圖16 電子時(shí)鐘模塊程序流程圖2)、具體程序//向?qū)憯?shù)據(jù)void write_ds1302(uchar dat){uchar i。for(i=0。i8。i++){IO=dat amp。 0x01。 //保持最后一位為,讀狀態(tài)SCLK=1。delay(1)。SCLK=0。dat = 1。}}//從讀數(shù)據(jù)uchar read_ds1302(){uchar i,b=0x00。for(i=0。i8。i++){b |= _crol_((uchar)IO,i)。SCLK=1。delay(1)。SCLK=0。}return b/16*10+b%16。 //與BCD碼轉(zhuǎn)換}//從指定位置讀數(shù)據(jù)uchar read_data(uchar addr){uchar dat。RST=0。SCLK=0。RST=1。write_ds1302(addr)。dat=read_ds1302()。SCLK=1。RST=0。return dat。}//讀取當(dāng)前日期時(shí)間void read_date_time(){uchar i,addr=0x81。for(i=0。i7。i++){date_time[i]=read_data(addr)。addr+=2。}}void format_datetime(uchar d,uchar *p){p[0]=d/10+39。039。p[1]=d%10+39。039。}//時(shí)間顯示void xianshi(){while(change==0){read_date_time()。format_datetime(date_time[2],Time+7)。 //時(shí)間轉(zhuǎn)換format_datetime(date_time[1],Time+10)。format_datetime(date_time[0],Time+13)。Display_String(Time,0x40)。keys_scan()。if(k==15)change=1。}keys_scan()。Display_String(your password... ,0x00)。 //在第行顯示標(biāo)題Display_String( ,0x40)。 }void tgx() //時(shí)間更新{read_date_time()。format_datetime(date_time[2],Time+7)。 //時(shí)間轉(zhuǎn)換format_datetime(date_time[1],Time+10)。format_datetime(date_time[0],Time+13)。}3) 仿真結(jié)果圖示時(shí)間顯示仿真結(jié)果圖 密碼修改模塊程序1)、設(shè)計(jì)框圖圖17 密碼修改模塊程序流程2)、具體實(shí)現(xiàn)的程序如下void key_main() { P1 = 0xF0。 if(P1 != 0xF0) EA=0。 ET0=0。 TR0=0。 KeyNo = keys_scan()。 //掃描鍵盤獲取鍵序號(hào)KeyNo if(change==1) {switch ( KeyNo ) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if ( i= 5 ) //密碼限制在位以內(nèi) { //如果i為則執(zhí)行一次清屏 if (i==0) Display_String( ,0x40)。 UserPassword[i] = KeyNo + 39。039。 UserPassword[i+1] = 39。\039。 DSY_BUFFER[i] = 39。*39。 DSY_BUFFER[i+1] = 39。\039。 Display_String(DSY_BUFFER,0x40)。 if(flag==1amp。amp。flag1==0amp。amp。n==1) //當(dāng)點(diǎn)擊輸入新秘密時(shí)保存新密碼 { mima[i] = KeyNo + 39。039。 mima[i+1] = 39。\039。 } if(flag==1amp。amp。flag1==0amp。amp。n==2) //當(dāng)點(diǎn)擊輸入新秘密時(shí)保存新密碼 { mima1[i] = KeyNo + 39。039。 mima1[i+1] = 39。\039。 } // if(flag==1amp。amp。flag1==0amp。amp。n==3) //當(dāng)點(diǎn)擊輸入新秘密時(shí)保存新密碼 //{ // mima2[i] = KeyNo + 39。039。 // mima2[i+1] = 39。\039。 //} i++。 beep()。 //init()。 while(1) //一次的時(shí)間 { if(t1==100) //3000為設(shè)置的時(shí)間 {t1=101。 for(m=0。m10。m++) //時(shí)間報(bào)警 { beep()。 delay(5)。 } Display_String( ,0x40)。 Display_String(timeover inputagain ,0x00)。 //超時(shí)之后的顯示 Clear_Password()。 break。 EA=0。 ET0=0。 TR0=0。 } else { break。 EA=0。 ET0=0。 TR0=0。 } break。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1