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

正文內(nèi)容

基于單片機(jī)的電子密碼鎖設(shè)計(jì)畢業(yè)論文(2)-閱讀頁(yè)

2025-03-18 12:02本頁(yè)面
  

【正文】 何立民著,《單片機(jī)應(yīng)用技術(shù)選編》,北京:北京航空大學(xué)出版社, 2021 [8] 李華著,《 MCS51 系列單片機(jī) 使用接口技術(shù)》,北京航空航天大學(xué)出版社, 2021 [9] 潘永雄著,《新編單片機(jī)原理與應(yīng)用》,西安:西安電子科技大學(xué)出版社, 2021 [10] 童詩(shī)白著,華成英,《模擬電子技術(shù)基礎(chǔ)》,北京:高等教育出版社, 2021 [11] 閻石主著,《數(shù)字電子技術(shù)基礎(chǔ)》,北京:高等教育出版社, 2021 [12] 樊昌信著,《曹麗娜 .通信原理》,北京:國(guó)防工業(yè)出版社, 2021 [13] 李瀚蓀著,《電路分析基礎(chǔ)》,北京:高等教育出版社 2021 26 附 錄 附錄 A 系統(tǒng)設(shè)計(jì)源代碼 include include define LCM_Data P0 define uchar unsigned char define uint unsigned int define w 6 //定義密碼位數(shù) sbit lcd1602_rs=P2^5。 sbit lcd1602_en=P2^7。 //24C02 串行時(shí)鐘 sbit Sda=P3^5。 //報(bào)警 sbit KEY = P2^0。 //開(kāi)鎖指示燈 bit operation=0。 //密碼正確標(biāo)志 bit ReInputEn=0。 //3 秒按鍵標(biāo)志位 bit key_disable=0。 //t0 中斷計(jì)數(shù)器 ,秒計(jì)數(shù)器 void Delay5Ms(void)。 //控盤掃描控制表 unsigned char code start_line[] = {password: }。 //顯示名稱 unsigned char code Correct[] = { correct }。 27 //輸入錯(cuò)誤 unsigned char code codepass[] = { pass }。 //OPEN unsigned char code SetNew[] = {SetNewWordEnable}。 //INPUT unsigned char code ResetOK[] = {ResetPasswordOK }。 unsigned char code Er_try[] = {error,try again!}。 unsigned char InputData[6]。 //當(dāng)前密碼值 unsigned char TempPassword[6]。 //密碼輸入位數(shù)記數(shù) unsigned char ErrorCont。 //正確 輸入計(jì)數(shù) unsigned char ReInputCont。 //=====================5ms 延時(shí) ============================== void Delay5Ms(void) { unsigned int TempCyc = 5552。 } //===================400ms 延 時(shí) ============================== void Delay400Ms(void) { unsigned char TempCycA = 5。 while(TempCycA) { TempCycB=7269。 } } //=============================================================== 28 //=========================24C02================================= //=============================================================== void mDelay(uint t) //延時(shí) { uchar i。i125。} } } void Nop(void) //空操作 { _nop_()。 _nop_()。 } /*起始條件 */ void Start(void) { Sda=1。 Nop()。 Nop()。 Scl=1。 Sda=1。 } 29 /*應(yīng)答位 */ void Ack(void) { Sda=0。 Scl=1。 Scl=0。 Nop()。 Nop()。 } /*發(fā)送數(shù)據(jù)子程序, Data 為要求發(fā)送的數(shù)據(jù) */ void Send(uchar Data) { uchar BitCounter=8。 do { temp=Data。 Nop()。0x80)==0x80) Sda=1。 Scl=1。 Data=temp。 } while(BitCounter)。 } 30 /*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值 */ uchar Read(void) { uchar temp=0。 uchar BitCounter=8。 do{ Scl=0。 Scl=1。 if(Sda) temp=temp|0x01。0xfe。 temp=temp1。 } while(BitCounter)。 } void WrToROM(uchar Data[],uchar Address,uchar Num) { uchar i。 PData=Data。iNum。 Send(0xa0)。 Send(Address+i)。 Send(*(PData+i))。 Stop()。 } 31 } void RdFromROM(uchar Data[],uchar Address,uchar Num) { uchar i。 PData=Data。iNum。 Send(0xa0)。 Send(Address+i)。 Start()。 Ack()。 Scl=0。 Stop()。 for(x=xms。x) for(y=110。y)。//數(shù)據(jù) /指令選擇置為指令 lcd1602_rw=0。//送入數(shù)據(jù) delay(1)。//拉高使能端,為制造有效的下降沿做準(zhǔn)備 delay(1)。//en 由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令 } //寫(xiě)數(shù)據(jù) write_1602dat(uchar dat)//***液晶寫(xiě)入數(shù)據(jù)函數(shù) **** { lcd1602_rs=1。 //讀寫(xiě)選擇置為寫(xiě) P0=dat。 lcd1602_en=1。 lcd1602_en=0。//設(shè)置液晶工作模式,意思: 16*2 行顯示, 5*7 點(diǎn)陣, 8 位數(shù)據(jù) write_1602(0x0c)。//整屏不移動(dòng),光標(biāo)自動(dòng)右移 write_1602(0x01)。 switch(m) { case (0x18): k=1。 case (0x28): k=2。 33 case (0x48): k=3。 case (0x88): k=39。break。break。break。break。B39。 case (0x12): k=7。 case (0x22): k=8。 case (0x42): k=9。 case (0x82): k=39。break。*39。 case (0x21): k=0。 case (0x41): k=39。break。D39。 } return(k)。 P1=0xf0。0xf0)!=0xf0) { Delay5Ms()。 if((P1amp。 //確定行線 i=0。 //精確定位 while(i4) { if((P1amp。0xff)。 //已定位后提前退出 } else { i++。 34 } } } else { return 0。0xf0)!=0xf0)。 //行線與列線組合后返回 } else return 0。 Delay5Ms()。 } //====================二聲提示音,表示操作成功 ======================== void TwoAlam(void) { ALAM=0。 ALAM=1。 ALAM=0。 ALAM=1。 Delay5Ms()。 35 Delay5Ms()。 Delay5Ms()。 Delay5Ms()。 Delay5Ms()。 } //==============顯示輸入的 N 個(gè)數(shù)字,用 H 代替以便隱藏 =================== void DisplayOne(void) { // DisplayOneChar(9+N,1,39。)。 write_1602dat(39。)。 if(pass==1) { //DisplayListChar(0,1,LockOpen)。 for(i=0。i++) { write_1602dat(LockOpen[i])。 write_1602(er)。i16。 } } else 36 { //DisplayListChar(0,1,start_line)。 for(i=0。i++) { write_1602dat(start_line[i])。 if(CorrectCont==1) { //DisplayListChar(0,0,Input)。 for(i=0。i++) { write_1602dat(Input[i])。 unsigned char j。 DisplayChar()。 } else { if(ReInputEn==1) { if(N==6) { 37 ReInputCont++。i6。 else { //DisplayListChar(0,1,Error)。 for(j=0。j++) { write_1602dat(Error[j])。 //錯(cuò)誤提示 pass=0。 //關(guān)閉重置功能, ReInputCont=0。 break。 write_1602(er)。j16。 } TwoAlam()。 //將新密碼寫(xiě)入 24C02 存儲(chǔ) ReInputEn=0。 CorrectCont=0。 //DisplayListChar(0, 1, again)。 38 for(j=0。j++) { write_1602dat(again[j])。i6。 //將第一次輸入的數(shù)據(jù)暫存起來(lái) } } N=0。 { ALAM=~ALAM。 } } //==================取消所有 操作 ================================== void Cancel(void) { unsigned char i。 //DisplayListChar(0, 1, start_line)。 for(j=0。j++) { write_1602dat(start_line[j])。 //提示音 for(i=0。i++) 39 { InputData[i]=0。 //關(guān)閉鎖 ALAM=1。 //操作標(biāo)志位清零 pass=0。 //重置輸入充許標(biāo)志清零 ErrorCont=0。 //密碼正確輸入次數(shù)清零 ReInputCont=0。 s3_keydown=0。 N=0。 RdFromROM(CurrentPassword,0,6)。i6。 } else { ErrorCon
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1