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

正文內容

基于單片機語音智能密碼鎖設計-預覽頁

2025-04-04 17:50 上一頁面

下一頁面
 

【正文】 本設計通過對電平頻率的控制從而實現(xiàn)不同的響聲。 圖 初始密碼程序設定流程圖 密碼輸入 初始化畫面顯示 鍵盤掃描 按鍵 C是 否按下 Y 鍵盤掃描 顯示設置密碼 開始 結束 按鍵 D 是否按下 Y N N 10 開始系統(tǒng)初始化信息提示報警、語音播報開鎖狀態(tài)信息提示判斷密碼是否正確NOYES 密碼輸入、語音提示是否重設密碼鍵盤掃描 輸入密碼、語音提示NOYES閉鎖 圖 密碼鎖工作主程序流程圖 11 1)寫初始密碼部分: LCD 顯示初始化狀態(tài),系統(tǒng)進入鍵盤掃描,僅當 C 鍵按下后,系統(tǒng)進入密碼設定階段,其他鍵對系統(tǒng)不產生作用,進入設定階段后,可以自定義設定六位的密碼。僅當按下 A鍵后,蜂鳴器響三聲, LCD 顯示請輸入密碼提示進入開鎖進程,此時有三次輸入密碼機會。 主要程序設計 1)初始密碼設定 在程序中包含蜂鳴器驅動子函數(shù)、延時子函數(shù)、 4*4 鍵盤掃描函數(shù)、開機液晶顯示子函數(shù)、寫密碼子函數(shù)、讀密碼子函數(shù) 、 1602 驅動子頭文件函數(shù)、 AT24C04驅動頭文件函數(shù)(見附件)。 lcd_init()。 while(line1_data[i] != 39。 } lcd_wcmd(0x40|0x80)。) { lcd_wdat(line2_data[i])。 if(key==0x0c)WriteCode()。其主函數(shù)如下所示: void main() { 13 TMOD=0x21。 //開總中斷 ET0=1。 //波特率 9600bps fosc=11.0592MHz TL1 = 0xfd。 //液晶初始化 I2C_init()。//開機畫面顯示 read_nbyte (0xa0,0x00,code_buf,6)。//鍵盤掃描 if(key!=0x0a)goto SCAN。 beep()。 //調用密碼輸入函數(shù) while(1) { if(flag_p==1) { MatrixKey()。 //若按下了 E 鍵 ,則跳轉到標志 START 處重新開始 } if(key==0x0e)goto START。TL0=0x00。 } if(sec==2) { flag_2s=1。再把密碼鎖工作程序生成的 hex 導入單片機中, E 鍵位功能復位鍵,按下 A 鍵系統(tǒng)進入密碼輸入狀態(tài),輸入密碼后,按下 B 鍵后系統(tǒng)進入密碼重設狀態(tài)。 圖 設定初始密碼讀密碼仿真圖 密碼鎖工作仿真 導入密碼鎖工作 hex 文件后,系統(tǒng)進入初始狀態(tài),仿真圖同圖 所示。 圖 若連續(xù)三次輸入密碼錯誤, LCD 提示密碼輸入,仿真圖如圖 所示。 本設計也存在不足,缺陷一,單重的密碼鎖不能滿足較高的安全需要。在這次設計中還讓 ,讓我了解了實時控制的原理,懂得怎樣合理的使用芯片,發(fā)揮其功能。 sbit SCL = P3^3。 void I2C_stop()。 uchar RecByte()。 void delayNOP() { _nop_()。 } void I2C_start() { SDA = 1。 23 delayNOP()。 delayNOP()。 } void I2C_init() { SCL = 0。 delayNOP()。 SCL = 1。 } uchar RecByte() { uchar i,read_data。 i 8。 delayNOP()。 delayNOP()。 i 8。 _nop_()。 write_data = 1。 delayNOP()。 delayNOP()。 SendByte(SLA)。 for(s=0。 pdat++。 I2C_start()。 if(ack==0) return(0)。 for(s=0。 pdat++。 } 1602頭文件 include include define uchar unsigned char define uint unsigned int 27 sbit LCD_RS=P2^0。 bit lcd_busy()。 void lcd_init() 。i) for(j=110。 LCD_RS = 0。 _nop_()。0x80)。 LCD_RS = 0。 _nop_()。 _nop_()。 _nop_()。 } void lcd_wdat(uchar dat) { while(lcd_busy())。 P0 = dat。 _nop_()。 _nop_()。 Delay_ms(5)。 lcd_wcmd(0x38)。 lcd_wcmd(0x0c)。 lcd_wcmd(0x01)。 uchar temp。 BEEP=1。 temp=P1。 temp=P1。 switch(temp) { case 0xee:key=0。 case 0xeb:key=2。 } temp=P1。 while(temp!=0x0f) { temp=P1。 P1=0xdf。 if (temp!=0x0f) { 32 Delay_ms(10)。 if (temp!=0x0f) { temp=P1。break。break。 0x0f。 } } } P1=0xff。 0x0f。 0x0f。 case 0xbd:key=9。 case 0xb7:key=11。 temp=temp amp。 0x0f。 temp=temp amp。 34 temp=temp amp。break。break。 beep()。 temp=temp amp。 uchar code line2_data[] = { PASSWORD }。 uchar code R_line2_data[] = {NUM: }。 if(P1!=0xf0) { MatrixKey()。 lcd_wcmd((0x44+lcd_x)|0x80)。 } } }while(count6)。 lcd_clr()。\039。 i = 0。 i++。 lcd_clr()。\039。 i = 0。 i++。j++) 37 { lcd_wcmd((0x44+j)|0x80)。 start: Delay_ms(10)。 i = 0。 i++。\039。 if(P1!=0xf0) 38 { MatrixKey()。 } } } 密碼鎖工作程序 include include include include define uchar unsigned char define uint unsigned int uchar code_buf[6]。 sbit BEEP=P3^7。 bit flag_p=0。 。 //重新設定密碼 //const uchar suoding[]=G 請稍后再試。 BEEP=1。 //等待發(fā)送完成 TI = 0。 TI=0。 temp=P1。 temp=P1。 switch(temp) { case 0xee:key=0。 case 0xeb:key=2。 } temp=P1。 while(temp!=0x0f) { temp=P1。 41 P1=0xdf。 if (temp!=0x0f) { Delay_ms(10)。 if (temp!=0x0f) { temp=P1。break。break。 0x0f。 } } } P1=0xff。 0x0f。 0x0f。 case 0xbd:key=9。 case 0xb7:key=11。 temp=temp amp。 0x0f。 43 temp=temp amp。 temp=temp amp。break。break。 beep()。 temp=temp amp。 44 /************密碼輸入畫面 *******************/ uchar code in_line1[] = { PLEASE INPUT }。 /************密碼輸入錯誤畫面 *******************/ uchar code inerr_line1[] = {INPUT PASSWORD }。 /************密碼修改成功畫面 *******************/ uchar code setok_line1[] = {MODIFY PASSWORD }。 lcd_wcmd(0x00|0x80)。) { lcd_wdat(line1_data[i])。 while(line2_data[i] != 39。 } } /********以下是密碼輸入畫面顯示函數(shù) ********/ void CodeInDisp() { uchar i。 while(in_line1[i] != 39。 } lcd_wcmd(0x40|0x80)。) { lcd_wdat(in_line2[i])。 46 lcd_wcmd(0x00|0x80)。) { lcd_wdat(inerr_line1[i])。 while(inerr_line2[i] != 39。 } } /********以下是密碼輸入正確顯示函數(shù) ********/ void CodeInOk() { uchar i。 while(inok_line1[i] != 39。 } lcd_wcmd(0x40|0x80)。) 47 { lcd_wdat(inok_line2[i])。 lcd_wcmd(0x00|0x80)。) { lcd_wdat(modify_line1[i])。 while(modify_line2[i] != 39。 } } /********以下是密碼設置成功畫面顯示函數(shù) ********/ void CodeSetOk() { uchar i。 while(setok_line1[i] != 39。 } lcd_wcmd(0x40|0x80)。) { lcd_wdat(setok_line2[i])。 //密 碼計數(shù)器,注意是靜態(tài)局部變量 static uchar code_n=0。 //密碼輸入畫面 do{ P1=0xf0。 if((key=0)amp。 lcd_wdat(0x2a)。 //密碼小于 6位 if(count=6){count=0。 beep()。//設置標志位 code_n=0。 if(code_n=3) { 50 CodeInErr()。 } } /*****************密碼設置函數(shù) *****************/ void PassSet() { static uchar lcd_x=0。//開機顯示函數(shù) Uart_SendString(chongse)。 while(P1!=0xf0)。//存入鍵值 lcd_wcmd((0x49+lcd_x)|0x80)。 } 51 } }while(count6)。beep()。 lcd_clr()。 //5ms 定時初值 TL0=0x00。 //串口工作方式為 1 , 串行允許接收 TR1 = 1。 //開串口中斷 Delay_ms(10)。//繼電器關閉 lcd_clr()。 while(P1==0xf0)。 //語音播報密碼錯誤 TR0=1。//若 2s到 ,則將 2s標志位清 0 else goto SCAN。 //調入密碼設置函數(shù) MatrixKey()。 if(key==0x0e)goto START。 if(count_5ms==200) { count_5ms=0。 } }
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1