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

正文內容

基于單片機的電子密碼鎖畢業(yè)論文(編輯修改稿)

2025-04-03 12:02 本頁面
 

【文章內容簡介】 ext[]=Your Password...。 uchar DSY_BUFFER[10]=。 uchar UserPassword[10]=。 void LCD_Init()。 void Display_String(uchar *str, uchar LineNo)。 void IIC_24C04_Init()。 void Beep()。 uchar RecString(uchar Slave, uchar Subaddr, uchar *Buffer,uchar N)。 uchar SendString(uchar Slave, uchar Subaddr, uchar *Buffer, uchar N)。 uchar Keys_Scan()。 sbit LED_OPEN=P2^7。 sbit BEEP=P3^7。 void delayms(uint x) { uchar i。 while(x) { for(i=0。i120。i++)。 } } void Beep() { uchar i。 for(i=0。i100。i++) { delayms(1)。BEEP=~BEEP。 } BEEP=0。 13 } void Clear_Password() { UserPassword[0]=39。\039。 DSY_BUFFER[0]=39。\039。 } void main() { uchar i=0。 uchar IIC_Password[10]。 uchar IS_Valid_User=0。 P0=P1=P2=0xff。 TMOD=0x02。 TH0=175。 TL0=175。 TR0=1。 delayms(10)。 LCD_Init()。 IIC_24C04_Init()。 Display_string(Title_Text,0x00)。 RecString(0xa0,0,IIC_Password,6)。 IIC_Password[6]=39。\039。 while(1) { P1=0xf0。 if(P1!=0xf0) KeyNo=Keys_Scan()。 if(Pre_KeyNo!=KeyNo) { if(i10) { switch( KeyNo ) { case 0: case 1: case 2: case 3。 case 4: case 5: case 6: case 7: case 8: case 9: if(i=0) Display_String( ,0x40)。 UserPassword[i]=KeyNo+39。039。 UserPassword[i+1]=39。\039。 DSY_BUFFER[i]=39。*39。 14 DSY_BUFFER[i+1]=39。\039。 Display_String(DSY_BUFFER,0x40)。 i++。 break。 case 10: if(strcmp(UserPassword,IIC_Password)==0) { LED_OPEN=0。 Clear_Password()。 Display_String(Unlock ok! ,0x40)。 IS_Valid_User=1。 } else { LED_OPEN=1。 Clear_Password()。 DisPlay_String(error! ,0x40)。 IS_Valid_User=0。 } i=0。 break。 case 11: LED_OPEN=1。 Clear_Password()。 Display_string(Title_Text,0x00)。 Display_String(,0x40)。 i=0。 IS_Valid_User=0。 break。 case 12: if(!IS_Valid_User) Display_string(No rights! ,0x40)。 else { i=0。 Display_String(New Password: ,0x00)。 Display_String( ,0x40)。 } break。 case 13: if(!IS_Valid_User ) Display_string(No rights! ,0x40)。 else { SendString(0xa0,0,UserPassword,6)。 RecString(0xa0,0,IIC_Password,6)。 15 IIC_Password[6]=39。\039。 i=0。 Display_String(Title_Text,0x00)。 Display_String(Password Saved! , 0x40)。 } case 14: i=0。 Clear_Password()。 Display_String(Password saved!,0x40)。 } } Beep()。 Pre_KeyNo=KeyNo。 } delayms(100)。 } } 24C04 密碼存儲器子程序代碼如下: include include define uchar unsigned char define uint unsigned int define delay4us()。{_nop_()。_nop_()。_nop_()。_nop_()。} sbit SCL=P3^2。 sbit SDA=P3^3。 void start() { SDA=1。SCL=1。delay4us()。SDA=1。delay4us()。SCL=0。 } void stop() { SDA=0。SCL=1。delay4us()。SDA=1。delay4us()。SCL=0。 } void IIC_24C04_Init() { 16 SCL=0。stop()。 } void ACK() { SDA=0。SCL=1。delay4us()。SCL=0。SDA=1。 } void NO_ACK() { SDA=1。SCL=1。delay4us()。SCL=0。SDA=0。 } uchar RecByte() { uchar i,rd。 rd=0x00。 SDA=1。 for(i=0。i8。i++) { SCL=1。rd=1。rd|=SDA。delay4us()。SCL=0。delay4us()。 } SCL=0。 delay4us()。 return rd。 } uchar SendByte(uchar wd) { uchar i。 bit ack0。 for(i=0。i8。i++) { SDA= (bit)(wdamp。0x80)。 _nop_()。_nop_()。SCL=1。delay4us()。SCL=0。wd=1。 } delay4us()。 SDA=1。 SCL=1。 delay4us()。 ack0=!SDA。 17 SCL=0。 delay4us()。 return ack0。 } uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N) { uchar i。 start()。 if (!SendByte(Slave)) return 0。 if(!SendByte(Subaddr)) return 0。 for(i=0。iN。i++) { if(!SendByte(Buffer[i])) return 0。 } stop()。 return 1。 } uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N) { uchar i。 start()。 if (!SendByte(Slave)) return 0。 if(!SendByte(Subaddr)) return 0。 start()。 if(!SendByte(Slave+1)) return 0。 for(i=0。iN1。i++) { Buffer[i]=RecByte()。 ACK()。 } Buffer[N1]=RecByte()。 NO_ACK()。 stop()。 return 1。 } 按鍵程序代碼如下: include define uchar unsigned char define uint unsigned int 18 void delayms(uint x)。 uchar keys_scan() { uchar tmp,KeyNo=0。 P1=0x0f。 delayms(1)。 tmp=P1^0x0f。 switch(tmp) { case 1: KeyNo=0。 break。 case 2: KeyNo=1。 break。 case 4: KeyNo=2。 break。 case 8: KeyNo=3。 break。 default: KeyNo=16。 } P1=0xf0。 delayms(1)。 tmp=P14^0x0f。 switch(tmp) { case 1: KeyNo+=0。 break。 case 2: KeyNo+=4。 break。 case 4: KeyNo+=8。 break。 case 8: KeyNo+=12。 } return KeyNo。 } 調試過程 程序在 KEIL C51 上調試,采用模塊程序設計技術 ,則逐個模塊調好后再進行系統(tǒng)程序總調。 對于模塊結構程序.要一個個子程序分別調試。調試時 ,一定要符合入口條件和出口條件 ,調試可用單步運行和斷點運行方式 ,通過檢查用者系統(tǒng)的 CPU 現場情況、 RAM 的內容和 I/ O 口的狀態(tài) ,檢測程序執(zhí)行結果是否符合設計要求 ,有無循環(huán)錯誤、有無機器碼錯誤以及轉移地址的錯誤 ,同時 ,還可以發(fā)現系統(tǒng)中存在的硬件設計錯誤和軟件算法錯誤。 各程序模塊通過后 ,則可以把相關功能塊連在一起進行總調。這 個階段若有故障 ,可以考慮各子程序運行時是否破壞了現場 ,緩沖單元、工作寄存器是否發(fā)生沖突 ,標志位的建立和清除是否有誤 ,堆棧區(qū)是否有溢出 ,輸入設備的狀態(tài)是否正常等等 ,若用者系統(tǒng)是在開發(fā)機的監(jiān)控程序下運行時 ,還要考慮用者緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。 單步和斷點調試后 ,還應進行連續(xù)調試 ,用以確定定時精度、 CPU 的實時響應等問題。 19 當全部調試和修改完成后 ,將程序固化到 AT89C51 中。進行整機調試。各功能實現則調試完成。 Proteus仿真 ProtuesProtelPCB Protel 類似。此款軟件及繪制原理圖、 PCB 版圖和仿真于一身。 Protues 此款軟件的使用比較簡單。在運行ISIS P(從庫中選取 )器件就會顯示在放到接頭處就會顯示一個畫筆的標志此時按住鼠標左鍵就可進行連線了。 第四章 主要元器件介紹 主控芯片 AT89C51 單片機 AT89C51 功能介紹 AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器( FPEROM— Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處理器,俗稱單片機。 AT89C2051 是一種帶 2K 字節(jié)閃爍 可編程可擦除只讀存儲器的單片機。單片機的 20 可擦除只讀存儲器可以反復擦除 100 次。該器件采用 ATMEL 高密度非易失存儲器制造技術制
點擊復制文檔內容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1