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

正文內(nèi)容

基于單片機(jī)語音智能密碼鎖設(shè)計-在線瀏覽

2024-11-01 17:43本頁面
  

【正文】 圖 密碼輸入 初始化畫面顯示 鍵盤掃描 按鍵 C是 否按下 Y 鍵盤掃描 顯示設(shè)置密碼 開始 結(jié)束 按鍵 D 是否按下 Y N N 10 開始系統(tǒng)初始化信息提示報警、語音播報開鎖狀態(tài)信息提示判斷密碼是否正確NOYES 密碼輸入、語音提示是否重設(shè)密碼鍵盤掃描 輸入密碼、語音提示NOYES閉鎖 圖 密碼鎖工作主程序流程圖 11 1)寫初始密碼部分: LCD 顯示初始化狀態(tài),系統(tǒng)進(jìn)入鍵盤掃描,僅當(dāng) C 鍵按下后,系統(tǒng)進(jìn)入密碼設(shè)定階段,其他鍵對系統(tǒng)不產(chǎn)生作用,進(jìn)入設(shè)定階段后,可以自定義設(shè)定六位的密碼。其設(shè)計流程圖如圖 所示。僅當(dāng)按下 A鍵后,蜂鳴器響三聲, LCD 顯示請輸入密碼提示進(jìn)入開鎖進(jìn)程,此時有三次輸入密碼機(jī)會。若輸入密碼錯誤 ,蜂鳴器將會發(fā)出報警聲,連續(xù)三次輸入錯誤密碼,系統(tǒng)將會對鍵盤鎖定一段時間,按下 E 鍵后,系統(tǒng)進(jìn)入讀密碼初始狀態(tài)。 主要程序設(shè)計 1)初始密碼設(shè)定 在程序中包含蜂鳴器驅(qū)動子函數(shù)、延時子函數(shù)、 4*4 鍵盤掃描函數(shù)、開機(jī)液晶顯示子函數(shù)、寫密碼子函數(shù)、讀密碼子函數(shù) 、 1602 驅(qū)動子頭文件函數(shù)、 AT24C04驅(qū)動頭文件函數(shù)(見附件)。 BEEP=0。 lcd_init()。 lcd_wcmd(0x00|0x80)。 while(line1_data[i] != 39。) { 12 lcd_wdat(line1_data[i])。 } lcd_wcmd(0x40|0x80)。 while(line2_data[i] != 39。) { lcd_wdat(line2_data[i])。 } while(1) { P1=0xf0。 if(key==0x0c)WriteCode()。 if(key==0x0e)goto start。其主函數(shù)如下所示: void main() { 13 TMOD=0x21。 //5ms 定時初值 TL0=0x00。 //開總中斷 ET0=1。 //串口工作方式為 1 , 串行允許接收 TR1 = 1。 //波特率 9600bps fosc=11.0592MHz TL1 = 0xfd。 //開串口中斷 Delay_ms(10)。 //液晶初始化 I2C_init()。//繼電器關(guān)閉 lcd_clr()。//開機(jī)畫面顯示 read_nbyte (0xa0,0x00,code_buf,6)。 while(P1==0xf0)。//鍵盤掃描 if(key!=0x0a)goto SCAN。 //語音播報密碼錯誤 TR0=1。 beep()。//若 2s 到 ,則將 2s 標(biāo)志位清 0 else goto SCAN。 //調(diào)用密碼輸入函數(shù) while(1) { if(flag_p==1) { MatrixKey()。 //調(diào)入密碼設(shè)置函數(shù) MatrixKey()。 //若按下了 E 鍵 ,則跳轉(zhuǎn)到標(biāo)志 START 處重新開始 } if(key==0x0e)goto START。 if(key==0x0e)goto START。TL0=0x00。 if(count_5ms==200) { count_5ms=0。 } if(sec==2) { flag_2s=1。 } } 6 系統(tǒng)仿真 系統(tǒng)仿真環(huán)境及參數(shù)設(shè)置 本設(shè)計在 Protues 的 ISIS 或者更高版本的軟件環(huán)境下打開電路仿真圖,接下來將設(shè)計好的程序在 Keil C51 μVision3 開發(fā)集成環(huán)境上編譯成機(jī)器語言,生成 .hex 文件。再把密碼鎖工作程序生成的 hex 導(dǎo)入單片機(jī)中, E 鍵位功能復(fù)位鍵,按下 A 鍵系統(tǒng)進(jìn)入密碼輸入狀態(tài),輸入密碼后,按下 B 鍵后系統(tǒng)進(jìn)入密碼重設(shè)狀態(tài)。 圖 設(shè)定密碼初始狀態(tài)仿真圖 按下掃描按鍵 C,系統(tǒng)進(jìn)入密碼設(shè)定輸入狀態(tài), LCD 上提示輸入密碼,仿真結(jié)17 果如圖 所示。 圖 設(shè)定初始密碼讀密碼仿真圖 密碼鎖工作仿真 導(dǎo)入密碼鎖工作 hex 文件后,系統(tǒng)進(jìn)入初始狀態(tài),仿真圖同圖 所示。18 圖 碼仿真圖 輸入正確密碼時, LCD 提示密碼輸入成功,鎖打開,綠色 LED 燈亮,仿真圖如圖 所示。 圖 若連續(xù)三次輸入密碼錯誤, LCD 提示密碼輸入,仿真圖如圖 所示。 7 使用說明 使用本設(shè)計宜按以下步驟進(jìn) 行:首先加載設(shè)定初始密碼 hex 文件,按下 C鍵,進(jìn)入密碼設(shè)定輸入狀態(tài),設(shè)定密碼后按下 D 鍵讀取自己所設(shè)密碼;再加載密碼鎖工作 hex 文件,進(jìn)入密碼鎖工作狀態(tài),按下 A 鍵,輸入所設(shè)密碼,輸入密碼正確后,按下 B 鍵可以自定義重設(shè)密碼,按下 E 鍵進(jìn)入初始狀態(tài)。 本設(shè)計也存在不足,缺陷一,單重的密碼鎖不能滿足較高的安全需要。缺點(diǎn)三,在按鍵按下時,按鍵聲不夠響亮清晰,在仿真時顯得反映21 比較慢,假如能采用語音模塊,能用語音播報按鍵時密碼所處狀態(tài),密碼鎖將會更具人性化。在這次設(shè)計中還讓 ,讓我了解了實(shí)時控制的原理,懂得怎樣合理的使用芯片,發(fā)揮其功能。總之,這次課程設(shè)計使在電路設(shè)計方面受益匪淺。 sbit SCL = P3^3。 void delayNOP()。 void I2C_stop()。 void I2C_Ack()。 uchar RecByte()。 uchar read_nbyte (uchar SLA,uchar SUBA,uchar *pdat,uchar n)。 void delayNOP() { _nop_()。 _nop_()。 } void I2C_start() { SDA = 1。 delayNOP()。 23 delayNOP()。 } void I2C_stop() { SDA = 0。 delayNOP()。 delayNOP()。 } void I2C_init() { SCL = 0。 } void I2C_Ack() { SDA = 0。 delayNOP()。 SDA = 1。 SCL = 1。 24 SCL = 0。 } uchar RecByte() { uchar i,read_data。 SDA=1。 i 8。 read_data = 1。 delayNOP()。 delayNOP()。 delayNOP()。 } uchar SendByte(uchar write_data) { uchar i。 i 8。 0x80)。 _nop_()。 delayNOP()。 write_data = 1。 SDA = 1。 delayNOP()。 else ack=1。 delayNOP()。 } uchar write_nbyte(uchar SLA,uchar SUBA,uchar *pdat,uchar n) { uchar s。 SendByte(SLA)。 SendByte(SUBA)。 for(s=0。 s++) { SendByte(*pdat)。 pdat++。 return(1)。 I2C_start()。 if(ack==0) return(0)。 if(ack==0) return(0)。 SendByte(SLA+1)。 for(s=0。 s++) { *pdat=RecByte()。 pdat++。 I2C_stop()。 } 1602頭文件 include include define uchar unsigned char define uint unsigned int 27 sbit LCD_RS=P2^0。 sbit LCD_EN=P2^2。 bit lcd_busy()。 void lcd_wdat(uchar dat) 。 void lcd_init() 。 for(i=xms。i) for(j=110。j)。 LCD_RS = 0。 LCD_EN = 1。 _nop_()。 _nop_()。0x80)。 return result。 LCD_RS = 0。 LCD_EN = 0。 _nop_()。 _nop_()。 _nop_()。 LCD_EN = 1。 _nop_()。 _nop_()。 } void lcd_wdat(uchar dat) { while(lcd_busy())。 LCD_RW = 0。 P0 = dat。 29 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCD_EN = 0。 Delay_ms(5)。 lcd_wcmd(0x38)。 lcd_wcmd(0x38)。 lcd_wcmd(0x38)。 lcd_wcmd(0x0c)。 lcd_wcmd(0x06)。 lcd_wcmd(0x01)。 } 設(shè)定初始密碼程序 include include include define uchar unsigned char define uint unsigned int uchar code_buf[6]={1,2,3,4,5,6}。 uchar temp。 void beep() { BEEP=0。 BEEP=1。 } void MatrixKey() { P1=0xff。 temp=P1。 0x0f。 temp=P1。 0x0f。 switch(temp) { case 0xee:key=0。 case 0xed:key=1。 case 0xeb:key=2。 case 0xe7:key=3。 } temp=P1。 temp=temp amp。 while(temp!=0x0f) { temp=P1。 0x0f。 P1=0xdf。 temp=temp amp。 if (temp!=0x0f) { 32 Delay_ms(10)。 temp=temp amp。 if (temp!=0x0f) { temp=P1。break。break。break。break。 beep()。 0x0f。 temp=temp amp。 } } } P1=0xff。 temp=P1。 0x0f。 33 temp=P1。 0x0f。 switch(temp) { case 0xbe:key=8。 case 0xbd:key=9。 case 0xbb:key=10。 case 0xb7:key=11。 } temp=P1。 temp=temp amp。 while(temp!=0x0f) { temp=P1。 0x0f。 P1=0x7f。 temp=temp amp。 if (temp!=0x0f) { Delay_ms(10)。 34 temp=temp amp。 if (temp!=0x0f) { temp=P1。break。break。break。break。 beep()。 0x0f。 temp=temp amp。 } } } } uchar code line1_data[] = { WRITE amp。 uchar code line2_data[] = { PASSWORD }。 uchar code W_line2_data[] = { NUM: }。 uchar code R_line2_data[] = {NUM: }。 static uchar count=0。 if(P1!=0xf0) { MatrixKey()。amp。 lcd_wcmd((0x44+lcd_x)|0x80)。 count++。 } } }while(co
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1