資源描述:
《單片機(jī)課程項(xiàng)目4實(shí)訓(xùn)報(bào)告2》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、單片機(jī)課程項(xiàng)目4實(shí)訓(xùn)報(bào)告項(xiàng)目名稱:密碼鎖系別:信息技術(shù)系班級(jí):通信3112組別:第22組姓名:張龍斌37號(hào)鄭友凍45號(hào)指導(dǎo)教師:林志謀報(bào)告日期:2013年5月6日1.預(yù)期功能4A3思考:依次按四次按鍵后,這四個(gè)按鍵的鍵號(hào)在四位LED數(shù)碼管上按順序同時(shí)顯示出來(lái)。密碼正確時(shí)發(fā)出“滴”聲并開鎖,密碼不正確則發(fā)出“嘀-嘀-嘀”2.設(shè)計(jì)方案依次按四次按鍵后,這四個(gè)按鍵的鍵號(hào)在四位LED數(shù)碼管上按順序同時(shí)顯示出來(lái)。密碼正確時(shí)發(fā)出“滴”聲并開鎖,不正確密碼則發(fā)出“嘀-嘀-嘀”3.硬件部分由C52芯片LED顯示燈、行列式鍵盤、蜂
2、鳴器構(gòu)成4.軟件部分利用編程軟件跟與單片機(jī)控制機(jī)臺(tái)連接的軟件實(shí)現(xiàn)控制4.1.程序流程圖4A3開始結(jié)束設(shè)置初始密碼向數(shù)碼管輸入密碼判斷密碼是不是4位數(shù)否是判斷密碼是否正確“嘀”響一聲是“嘀嘀嘀”響三聲否4.2.程序設(shè)計(jì)說(shuō)明4A3#include#defineucharunsignedcharuchartable[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,//0,1,2,3,4,5,60xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86
3、,0x8e,0xBF};//7,8,9,A,B,C,D,E,F,-sbitbee=P1^0;//蜂鳴器驅(qū)動(dòng)線uchartemp;ucharcount=0;//用于統(tǒng)計(jì)按鍵的次數(shù)ucharkey,hang,lie;ucharshu=0;//key用于保存按鍵號(hào)hang用于保存按鍵行號(hào);lie用于保存按鍵列號(hào);ucharkeynum[4]={0xBF,0xBF,0xBF,0xBF};//用于保存鍵號(hào)對(duì)應(yīng)的段碼ucharmima[]={0,1,2,3};ucharbaocun[4]={0xBF,0xBF,0xBF,0x
4、BF};voidbeep();//函數(shù)用于驅(qū)動(dòng)音頻電路發(fā)音voiddelay(unsignedintx);voidkeyscan();//函數(shù)用于掃描鍵所在行號(hào)和列號(hào),并獲取鍵號(hào)。voidkey_down();//查詢鍵是否按下,統(tǒng)計(jì)按鍵次數(shù)voiddisplay();//LED數(shù)碼管顯示函數(shù)/**************************************主函數(shù)*********************************/voidmain(void){while(1){if(P1^2==1){
5、key_down();if(count>3&&baocun[0]==mima[0]&&baocun[1]==mima[1]&&baocun[2]==mima[2]&&baocun[3]==mima[3]){P0=0xc0;P2=0XF0;count=0;key=0;hang=0;lie=0;shu=0;key_down();if(count>3){mima[0]=baocun[0];mima[1]=baocun[1];mima[2]=baocun[2];mima[3]=baocun[3];display();co
6、unt=0;key=0;hang=0;lie=0;shu=0;}}}key_down();if(count>3&&baocun[0]==mima[0]&&baocun[1]==mima[1]&&baocun[2]==mima[2]&&baocun[3]==mima[3]){beep();delay(100);while(P1^3==0)display();}if(count>3){beep();delay(100);beep();delay(100);beep();delay(100);while(P1^3==0
7、)display();}}}/*********************************延時(shí)子程序*********************************/voiddelay(unsignedintx){ucharj;while((x--)!=0){for(j=0;j<125;j++){;}}}/*********************************鍵掃描子程序********************************/voidkeyscan(void){P1=0x0F;//低
8、四位輸入,開始對(duì)鍵盤進(jìn)行行掃描delay(1);temp=P1;//讀P1口temp=temp&0x0F;//屏蔽高4位,保留低4位。temp=~(temp
9、0xF0);//將高4位置1,并按位取反。if(temp==1)//第1行,首鍵值為0hang=0;elseif(temp==2)//第2行hang=1;elseif(temp==4)//第3行hang=2;else