【正文】
總覺得自己自己似乎應(yīng)該去做點什么,或者寫點什么。s actions.CSKA said they were surprised and disappointed by Toure39。for the racist behaviour of their fans durings 150th anniversary celebrations and will attend City39。To find your nearest CAB, including those that give advice by , click ont charge you more than 35% of your pensation against the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any pensation awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are plaining about happened. If your application is received after this time limit, the tribunal will not usually accept it.If you are worried about how the time limits apply to you, take advice from one of the organisations listed under your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seei)。 _nop_()。 y //refresh_display(0,1,tab1)。 //refresh_display(0,1,cls)。} refresh_display(0,1,cls)。 //else refresh_display(0,0,tab3)。 //refresh_display(0,0,message[tempamp。 WrToROM_dword(PASSWORD_ADDR,default_passwords)。 LCD_Init()。 TR0=1。 TH0=(6553650000)/256。 case 14:PasswordUnLock()。 delay2(1000)。 //refresh_display(0,1,cls)。 preserve_set_password(SETUP_PASSWORD1)。 if(input_password(amp。 delay2(1000)。 //temp=get_preserve_password()。SETUP_PASSWORD1)。 while(status){ refresh_display(0,1,cls)。 delay(1000)。 return。 delay2(1000)。INPUT_PASSWORD)。}void PasswordUnLock(){ dword INPUT_PASSWORD=0。 else dispassword_=0。amp。keycounts==PASSWORD_LENGTH)break。 } } if(key==12){ keycounts=0。*39。 if(key=0amp。 refresh_display(0,1,cls)。*/}/***********************待擴(kuò)展**************************************///void DO_OTHERTHING()。 delay(3000)。 delay2(1000)。i++){ temp=(DData(8*i))amp。}void preserve_set_password(dword passwords){ WrToROM_dword(PASSWORD_ADDR,passwords)。 if((!getkeycode(amp。 } } else if(keystatusflagamp。//確定 default: break。 // 解鎖 break。//改密碼 break。 break。 //鎖定鍵 break。 case 0xbd:key=5。 case 0xed:key=3。 case 0xbe:key=2。temp)) { switch(temp) { case 0xee:key=0。amp。 return 1。 temp_l=keypadamp。 temp_h=keypadamp。 } EX1 = 1。//改密 (CH) case 0x47:key=10。//解鎖(CH—) case 0x09:key=11。 //串口發(fā)送08 case 0x41:key=9。 //串口發(fā)送06 case 0x42:key=7。led=1。break。break。0x0f))。 if(IRCOM[6]9) { IRCOM[6]=IRCOM[6]+0x37。 0x0F。 //數(shù)據(jù)最高位補“1” } N=0。 return。} while (!IRIN) //等 IR 變?yōu)楦唠娖? delay(1)。j++) //收集四組數(shù)據(jù) { for (k=0。 } //確認(rèn)IR信號出現(xiàn)/**/ while (!IRIN) //等IR變?yōu)楦唠娖?,跳過9ms的前導(dǎo)低電平信號。 EX1 = 0。}/*****************************24C02驅(qū)動*********************************//***************************定時器1中斷*********************************/void IR_IN() interrupt 1{ unsigned char j,k,N=0。}void init_24C02() //初始化{ sda=1。 delay2(1)。i++){ temp=RdFromROM_Byte(address+3i)。 dword indata=0。 WrToROM_Byte(address+i,temp)。0xff。 //refresh_display(0,1,cls)。 indata=read_byte()。 respons()。 start()。 write_byte(indata)。 write_byte(AddWr)。 scl=0。i8。 delay11()。 sda=1。 scl=1。 scl=0。 temp=indata。(i250)) i++。 scl=1。 scl=0。 scl=1。 delay11()。 delay11()。)//若到達(dá)字串尾則退出 { if (X = 0xF)//X坐標(biāo)應(yīng)小于0xF { DisplayOneChar(X, Y, DData[ListLength])。 X amp。}/*******************1602按指定位置顯示一串字符函數(shù)*********************/void DisplayListChar(uchar X, uchar Y, uchar code *DData){ uchar ListLength。// 算出指令碼 LCD_WriteCommand(X)。= 0xF。 //讀寫一個字符后,地址指針及光標(biāo)加一,且光標(biāo)加一整屏顯示不移動 LCD_WriteCommand(0x80)。 en=0。 rw=0。 LCD_Data=WDLCD。y)。 for(x=t。void DisplayOneChar(uchar X, uchar Y, uchar DData)。sbit led=P2^3。uchar code message[16]={0123456789abcdef}。uchar code tab8[]={Complete! }。uchar code tab4[]={Wele enter }。uchar key=0,keycounts=0,t_num=0。sbit scl=P2^5。//蜂鳴器void delay(unsigned char x) //x*{ unsigned char i。void delay1(int ms)。/****紅外延時函數(shù)聲明*****/void delay(uint)。_nop_()。另外,還要感謝趙老師,總是在百忙之余指導(dǎo)我,幫我解決了不少難題,讓我順利完成了設(shè)計。每一次失敗都會離成功又進(jìn)一步。由于相同功能的芯片有很多,經(jīng)過對比其實用性,是否易操作,外圍電路以及程序設(shè)計難易等等來選擇較合理的芯片。若兩次密碼相同,則1602顯示plete。 調(diào)試結(jié)果本次設(shè)計整體調(diào)試結(jié)果:給電路板送入+5V電源,1602第一行中間顯示wele,然后按解鎖鍵,1602第一行顯示input code 此時輸入密碼再按確定鍵。4)紅外遙控模塊首先寫一個紅外遙控發(fā)送接收程序,看是否將字符正確顯示到1602上。經(jīng)過對程序的調(diào)試,讓此時存儲器隨機出現(xiàn)的密碼顯示到1602上,然后再在開鎖時鍵入對應(yīng)的密碼,此時密碼正確。此時程序中還要進(jìn)行密碼的對比,若正確,led亮,說明鎖已經(jīng)打開。一般按鍵如果電路正確,并且程序和硬件都無差錯則在仿真中運行正確實物也可以輕松實現(xiàn)器功能。將1602的顯示程序通過學(xué)習(xí)板燒到做好的電路板中,檢測1602是否正常顯示,若1602只亮屏不顯示字符此時調(diào)節(jié)滑動變阻器改變對比度。因此,先寫矩陣鍵盤控制密碼鎖的程序。實際電路中,管腳3應(yīng)接10K滑動變阻器,管腳15接10歐電阻。本設(shè)計的主流程圖如下圖所示:開始有紅外中斷?接收碼正確否?密碼對否?調(diào)用中斷解碼程序紅外解碼報警開鎖中斷返回 圖20 主程序流程圖5 系統(tǒng)仿真與硬件調(diào)試 系統(tǒng)仿真和調(diào)試方案根據(jù)上述各個模塊的功能以及PCB設(shè)計可用PROTEUS來進(jìn)行仿真,修改程序。所以,當(dāng)密碼錯誤時,給IO口送低電平即可達(dá)到報警效果。另外,密碼鎖是用發(fā)光二極管來模擬,只需用高低電平來控制IO口即可。先寫24c02的驅(qū)動程序,時鐘信號,讀寫數(shù)據(jù)等等,要考慮怎么將密碼寫入到24c02中,以及從中讀取等問題。第二行用來顯示密碼。電源部分采用的是USB給單片機提供+5V的電源,發(fā)光二極管來指示有沒有給單片機供電。以至于單片機的I/O 口是無法直接驅(qū)動,所以要使用放大電路用以驅(qū)動蜂鳴器,本次設(shè)計采用三極管來進(jìn)行蜂鳴器的驅(qū)動。外觀如下: 圖15 紅外接收頭VS_1838b由于密碼采用雙控模式,在主控模塊采用矩陣鍵盤進(jìn)行密碼的輸入及修改,因此,將紅外接收端接到單片機的外部中斷1來檢測是否有紅外信號,進(jìn)而判斷遙控器是否有按鍵按下,并進(jìn)行密碼的輸入與修改。由于本次設(shè)計用到的遙控器采用的是NEC編碼協(xié)議,下面將重點描述NEC碼特性。管腳圖如圖7所示: 圖7 AT24c02管腳圖表1