




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、湖南大學(xué)電氣與信息工程學(xué)院本科生課程設(shè)計(jì)題目: 數(shù)字密碼鎖課程:單片機(jī)原理專業(yè):測控技術(shù)與儀器班級(jí):09級(jí)02班學(xué)號(hào):12345678姓名:xxxxxxx指導(dǎo)老師: xxxxxxx設(shè)計(jì)時(shí)間: 2012年6月目錄1、前言2、實(shí)驗(yàn)任務(wù)及方案3、硬件原理圖4、程序流程圖及程序5、使用說明書6、心得體會(huì)7、教師評(píng)語一、前言隨著社會(huì)物質(zhì)財(cái)富的日益增長和人們生活水平的提高,安全成為現(xiàn)代居民最關(guān)心的問題之一。而鎖自古以來就是把守門的鐵將軍,人們對(duì)它要求甚高,即要求可靠地防盜,又要使用方便。傳統(tǒng)的門鎖既要備有大量的鑰匙,又要擔(dān)心鑰匙丟失后的麻煩。隨著單片機(jī)的問世,出現(xiàn)了數(shù)字密碼鎖,其保密性高,使用靈活性好,安
2、全系數(shù)高,故受到廣大用戶的青睞。數(shù)字密碼鎖通常使用arm和單片機(jī)控制,單片機(jī)相對(duì)arm實(shí)現(xiàn)較為簡單,功能較為完善,因此使用單片機(jī)控制較多。用單片機(jī)控制的密碼鎖常使用匯編語言編寫程序,數(shù)碼管做顯示器 。但本設(shè)計(jì)使用移植性及可讀性強(qiáng)的c語言編寫;同時(shí)采用顯示清楚、功率消耗小而且壽命長的1602a液晶顯示器。從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用aduc848單片機(jī)設(shè)計(jì)出一種具有密碼設(shè)置、報(bào)警等功能的數(shù)字密碼鎖,并通過proteus軟件成功地進(jìn)行了仿真。二、實(shí)驗(yàn)任務(wù)及方案 1、方案比較方案一:以aduc848單片機(jī)為數(shù)字密碼鎖系統(tǒng)核心,使用4*4矩陣鍵盤作為數(shù)據(jù)輸入方式,驅(qū)動(dòng)1602a顯示器提示程序運(yùn)行過程和開
3、鎖的步驟,利用at24c02芯片實(shí)現(xiàn)掉電存儲(chǔ)。方案二:以74ls112雙jk觸發(fā)器構(gòu)成的數(shù)字邏輯電路控制方案。2、方案選擇由于利用單片機(jī)靈活的編程設(shè)計(jì)和強(qiáng)大的i/o端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還可以增添掉電存儲(chǔ)、聲光提示等功能,故選用方案一。三、硬件原理圖1、aduc848引腳圖pin14:(p1.0p1.3)作為矩陣式鍵盤或獨(dú)立按鍵的輸入,p1口只能用于輸入,默認(rèn)用于模擬輸入,作為數(shù)字輸入使用時(shí)應(yīng)先往p1口相應(yīng)引腳寫0,這里可以用p0&=0xf0。若p2、p3、p0口要作為輸入,則應(yīng)往相應(yīng)引腳寫1。pin5、6:avdd、agnd,模擬電源輸入。pin7、8:外部參考
4、電壓接入,pin7接agnd。片內(nèi)dac有2.5v內(nèi)部參考,adc有1.25v內(nèi)部參考。pin9、10:(p1.4、p1.5)兩路ad輸入,可做差分輸入,需要設(shè)置adc的寄存器。pin11、12:(p1.6、p1.7)各200ua激勵(lì)電流源,可配合rtd等做應(yīng)用。pin13:兩路ad輸入做普通輸入時(shí)的電壓參考端,ad輸入電壓不能低于此引腳電壓。pin14:片內(nèi)dac輸出。pin15:復(fù)位引腳。pin16、17:單片機(jī)rs232接口的rxd(p3.0) txd(p3.1)。pin18:(p3.2) 外部中斷0,用于紅外接收和ps/2接口。pin19:(p3.3)lcd1602,lcd12864a
5、的en引腳,控制第一位數(shù)碼管。pin20、21:dvdd、dgnd數(shù)字電源輸入。pin22:(p3.4)ps/2接口的data信號(hào)。pin23:(p3.5)lcd1602和lcd12864a的rw。pin24:(p3.6)lcd1602和lcd12864a的rs。pin25:lcd12864a的cs1。pin26:iic接口時(shí)鐘信號(hào)。pin27:iic接口data信號(hào)。pin28:(p2.0)spi接口時(shí)鐘信號(hào)。pin29:(p2.1)spi接口mosi信號(hào)、控制第6位數(shù)碼管的位碼。pin30:(p2.2)spi接口miso信號(hào)、控制第7位數(shù)碼管的位碼。pin31:(p2.3)spi接口ss信
6、號(hào)、控制第8位數(shù)碼管的位碼;p2.03也作為4x4矩陣式鍵盤的掃描輸出信號(hào)、步進(jìn)電機(jī)的控制信號(hào)、數(shù)碼管第數(shù)碼管第6、7、8位位碼。但是spi、4x4矩陣式鍵盤、步進(jìn)電機(jī)、數(shù)碼管第6、7、8位功能不能同時(shí)實(shí)現(xiàn)。pin32、pin33:接外部32.768khz晶振。pin34、pin35:dvdd、dgnd。pin36:(p2.4)lcd12864a的cs2。pin37:(p2.5)內(nèi)部pwm模塊輸出,控制紅外led。pin38:(p2.6)內(nèi)部pwm模塊輸出,控制蜂鳴器。pin39:(p2.7)內(nèi)部pwm模塊的外部時(shí)鐘輸入(也可以用內(nèi)部時(shí)鐘)。pin40:ea,低電平有效,正常使用時(shí)拉低。pin
7、41:psen,在此引腳電平為低時(shí)按復(fù)位鍵進(jìn)入debug模式,可以下載和調(diào)試程序。pin42:ale。pin47、pin48:dgnd、dvdd。pin43、44、45、46、49、50、51、52:p0口、lcd1602和lcd12864的數(shù)據(jù)總線,數(shù)碼管的段碼。2、電源模塊原理圖如圖1.2所示。本學(xué)習(xí)板共有如下3種供電方式: (1)5v電源適配器供電(開關(guān)往上撥、插針1下面兩腳接跳線帽)。將開關(guān)sw4第2、3腳接通(開關(guān)往上撥),電源網(wǎng)絡(luò)dvdd連接到插針1第2腳的輸出,將插針1的第1、2腳(插針1下面兩腳)接跳線帽,dvdd直接連接到電源適配器輸入端,即為5v電源適配器供電模式。(2)7
8、12v電源適配器供電(開關(guān)往上撥、插針1上面兩腳接跳線帽) 將開關(guān)sw4第2、3腳接通(開關(guān)往上撥),電源網(wǎng)絡(luò)dvdd連接到插針1第2腳的輸出,將插針1的第2、3腳(插針1上面兩腳)接跳線帽,dvdd連接到穩(wěn)壓芯片7805的輸出,而7805的輸入端連接到電源適配器輸入端,即為712v的電源適配器經(jīng)7805給學(xué)習(xí)板供電的模式。(3)usb供電(開關(guān)往下?lián)埽?。將開關(guān)sw4第1、2腳接通(開關(guān)往下?lián)埽娫淳W(wǎng)絡(luò)dvdd連接到usb電源輸入端。對(duì)dvdd網(wǎng)絡(luò)和avdd網(wǎng)絡(luò)設(shè)了測試點(diǎn),方便調(diào)試。3、rs232串口連接原理圖如圖1.5所示。圖1.5 rs232串口模塊該模塊中采用maxin公司的max23
9、2作電平轉(zhuǎn)換,為方便調(diào)試硬件,對(duì)rxd,txd信號(hào)設(shè)測試點(diǎn)和led。4、lcd顯示信號(hào)連接圖如圖1.7所示。圖1.7 lcd信號(hào)連接關(guān)鍵網(wǎng)絡(luò)名和引腳名解釋: (1)disctrl04:顯示控制信號(hào)。(2)d0d7、db0db7:數(shù)據(jù)總線。(3)e:lcd使能信號(hào)。(4)rs:數(shù)據(jù)、指令選擇信號(hào)。(5)rw:讀、寫選擇信號(hào)。(6)cs1、cs2:lcd12864由兩部分組成,cs1和cs2為選擇信號(hào)。板上接口4的上排位lcd12864的接口,下排位lcd1602的接口,排針和排母左對(duì)齊插入。5、按鍵輸入模塊該模塊原理如圖1.12所示。圖1.12 按鍵模塊由于p1口(用于行掃描)內(nèi)部無上拉電阻,為
10、使無鍵按下時(shí)行信號(hào)為高電平,故將行信號(hào)接上拉電阻,電阻大小10k即可。引腳復(fù)用:p2.0p2.3為4x4矩陣式鍵盤列掃描信號(hào),又復(fù)用作步進(jìn)電機(jī)控制信號(hào),spi信號(hào)、p2.1p2.3還復(fù)用為數(shù)碼管第5、6、7位位碼控制信號(hào)。參與復(fù)用的一項(xiàng)功能使用時(shí),其他參與復(fù)用的功能則不能使用。插針配置: (1)插針10上面兩腳接跳線帽,4x4矩陣式鍵盤輸入,行掃描信號(hào)為p1.0p1.3,列掃描信號(hào)為p2.02.3。(2)插針10下面兩腳接跳線帽,獨(dú)立按鍵輸入,該模式有4個(gè)獨(dú)立按鍵可用,按鍵掃描所用端口為p1.0p1.3。這4個(gè)按鍵為4x4矩陣鍵盤的左邊4個(gè)按鍵。四、程序流程圖及程序1、流程圖開始系統(tǒng)初始化調(diào)用
11、eeprom密碼顯示主界面輸入密碼判斷密碼鎖鍵盤led燈閃爍報(bào)警開鎖返回主界面2、程序模塊(1)、主程序void main(void) uchar temp; init(); while(1) if(lockflag) temp=keyscan(); if(temp!=no_key) aa=0; else temp=keyscan(); if(temp!=no_key) if(temp=12) reset(); startflag=1; if(startflag) enter_code(temp);if(temp=13) if(j!=6) fail_an(); else confirm();
12、if(conflag) succeed_an(); else fail_an(); if(temp=10)dipaly_your(); temp=keyscan(); if(temp=11) confirm(); if(conflag) display_new(); enter_code(temp); resavekey(); else fail_an(); if(temp=14) delete(); if(temp=15)timeshow(); (2)、鍵盤掃描模塊#includevoid keydelay(unsigned int keyjstime);void keydelayforti
13、me(unsigned int keyjstime);unsigned char keyscan();unsigned char keyscan()static unsigned char keyhavefree=1 ;static unsigned int keyjs=0;unsigned char temp,keytemp=0xff;p1&=0xf0; p2&=0xf0; temp=p1&0x0f; if(keyhavefree) if(temp!=0x0f) keydelay(15000);if(temp=(p1&0x0f) p2|=0x0e; /p2.00 switch(p1&0x0f
14、) case 0x0e:keytemp=3;break; case 0x0d:keytemp=7;break; case 0x0b:keytemp=11;break; case 0x07:keytemp=15;break; case 0x0f:break; default:keytemp= 0x80;break; p2&=0xf0; p2|=0x0d; switch(p1&0x0f) case 0x0e:keytemp= 2;break; case 0x0d:keytemp= 6;break; case 0x0b:keytemp= 10;break; case 0x07:keytemp= 14
15、;break; case 0x0f:break; default:keytemp= 0x81;break; p2&=0xf0; p2|=0x0b; switch(p1&0x0f) case 0x0e:keytemp= 1;break; case 0x0d:keytemp= 5;break; case 0x0b:keytemp= 9;break; case 0x07:keytemp= 13;break; case 0x0f:break; default:keytemp= 0x82;break; p2&=0xf0; p2|=0x07; switch(p1&0x0f) case 0x0e:keyte
16、mp= 0;break; case 0x0d:keytemp= 4;break; case 0x0b:keytemp= 8;break; case 0x07:keytemp= 12;break; case 0x0f:break; default:keytemp= 0x83;break; keyhavefree=0; /lcdprintnumber(6,11,5,keytemp); else keyjs+; if(keyjs70) keyhavefree=1; keyjs=66; if(temp=0x0f)keyhavefree=1;keyjs=0; keytemp=0xf0; return k
17、eytemp;(3)、時(shí)間模塊#include#include#define lcd_set 0x38 / 0011 1000 #define lcd_clear 0x01 / 0000 0001 #define lcd_display1 0x0f / 0000 1111 #define lcd_display2 0x0c / 0000 1100 #define lcd_mode 0x06 / 0000 0110 #define lcd_1_left 0x80 #define lcd_2_left (0x80+0x40) sbit rs = p36; sbit rw = p35; sbit e
18、 = p33; unsigned char second =50,minite=59,hour=23 ;void delay1()unsigned char i;for(i = 0;i 30;i+); void check_busy()p0 = 0xff; delay1();rs = 0;rw = 1;e = 1;delay1();while(p0&0x80);e = 0;rw = 0;p0 = 0x00;void delay_ms(unsigned int ms) unsigned int i,j; for(i=0;ims;i+) for(j=0;j1000;j+); void write_
19、command(unsigned char command) check_busy(); rs = 0 ; rw = 0 ; p0 = command ; e = 1 ; delay_ms(3); e = 0 ; void write_data(unsigned char data) check_busy(); rs = 1 ; rw = 0 ; p0 = data ; e = 1 ; delay_ms(3); e = 0 ; void lcd1602_init() e = 0;rw = 0;rs = 0; write_command(lcd_set); / write_command(lcd
20、_clear); write_command(lcd_display2); write_command(lcd_mode); / void lcd1602printfc(unsigned char line,unsigned char address,unsigned char data) if(line) write_command(0xc0+address); write_data(data); else write_command(0x80+address); write_data(data); void lcd1602_display(unsigned char *table1 ) u
21、nsigned char i; write_command( lcd_1_left ); delay_ms(1); for(i=0;i12;i+) write_data(table1i); delay_ms(20); void time_view() if(second = 60)second=0;minite +; if(minite = 60)minite=0;hour+; if(hour = 24)hour=0; lcd1602printfc(1,8,hour/10+0); lcd1602printfc(1,9,hour%10+0); lcd1602printfc(1,10,:); lc
22、d1602printfc(1,11,minite/10+0); lcd1602printfc(1,12,minite%10+0); lcd1602printfc(1,13,:); lcd1602printfc(1,14,second/10+0); lcd1602printfc(1,15,second%10+0); void time0init() tmod = 0x01; th0 = 0x3c; tl0 = 0xb0; et0 = 1; tr0 = 1; ea = 1; void timeshow()lcd1602_init(); time0init(); while(1) time_view
23、(); void time0(void)interrupt 1 static unsigned char time = 0; th0 = 0x3c; tl0 = 0xb0; time +; if(time = 40) time = 0;second +; 五、使用說明書012345678輸入9*#確認(rèn)刪除時(shí)間鍵盤布局如上圖所示,圖中“#”和“*”鍵位作為擴(kuò)展鍵位,將來可做他用。六、心得體會(huì)從基本方案的制定,到硬件電路的選擇,最后進(jìn)行程序調(diào)試在此期間我們遇到很多困難,但經(jīng)過兩個(gè)人的不懈努力,終于擊破了各個(gè)難點(diǎn),達(dá)到的所需要的效果。在這次設(shè)計(jì)中,我們深刻認(rèn)識(shí)到自身的不足缺少實(shí)戰(zhàn)經(jīng)驗(yàn)。與此同時(shí),也因
24、為這次設(shè)計(jì),我們得到一定的鍛煉,體會(huì)到理論與實(shí)踐相結(jié)合的重要意義。由于本次設(shè)計(jì)時(shí)間有限,一些設(shè)想沒有完全實(shí)現(xiàn),比如說:數(shù)字密碼鎖的網(wǎng)絡(luò)通信擴(kuò)展,人機(jī)界面智能化等。期待以后有機(jī)會(huì)對(duì)以上設(shè)想進(jìn)行進(jìn)一步研究踐。附錄:源程序#include#define uint unsigned int#define uchar unsigned char#define no_key 20 #define lcddata p0 sbit lcden= p33;sbit lcdrs= p36;sbit lcdrw= p35;sbit light= p07;uchar j ; uchar aa; uchar code
25、table= hello! ;uchar code table1= ok! ;uchar code table2= enter please: ;uchar code table4= your password: ;uchar code table5= new password: ;uchar code table6= wrong! ;uchar code key_table16 = 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15 ;uchar password=0,0,0,0,0,0; uchar save6; uchar conflag ; uchar l
26、ockflag; uchar startflag; void delay(uint z); void wright_com(uchar com); void wright_data(uchar date) ; void init(); void delete(); uchar keyscan() ; void enter_code(uchar t); void confirm(); void succeed_an(); void fail_an(); void lockkey(); void reset(); void display_enter(); void display_your();
27、void display_new();void display_ok();void main(void) uchar temp; init(); while(1) if(lockflag) temp=keyscan(); if(temp!=no_key) aa=0; else temp=keyscan(); if(temp!=no_key) if(temp=12) reset(); startflag=1; if(startflag) enter_code(temp);if(temp=13) if(j!=6) fail_an(); else confirm(); if(conflag) suc
28、ceed_an(); else fail_an(); if(temp=10)dipaly_your(); temp=keyscan(); if(temp=11) confirm(); if(conflag) display_new(); enter_code(temp); resavekey(); else fail_an(); if(temp=14) delete(); if(temp=15)timeshow(); void display_your()uchar num;wright_com(0x80);for(num=0;num16;num+)wright_data(table4num);void display_new()uchar num;wright_com(0x80);for(num=0;num16;num+)wright_data(table5num);void display_enter() uchar num;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力資源咨詢顧問合同書
- 產(chǎn)品售后服務(wù)情況說明表
- 制造業(yè)企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)策略研究
- 光纜遷移施工方案范本
- 橡膠跑道施工方案
- 涼山道路施工方案
- TCSMT YB011-2024 天然氣發(fā)熱量測量裝置測試技術(shù)規(guī)范
- 建筑工程人工費(fèi)承包合同-@-1
- 物業(yè)地面處理方案
- 透水砼路面施工方案
- 精細(xì)化工工藝學(xué)-第1章緒論講解課件
- 仰拱棧橋計(jì)算
- 中醫(yī)婦科 月經(jīng)過多課件
- 2022年江西制造職業(yè)技術(shù)學(xué)院單招語文試題及答案解析
- 穆斯林太巴熱咳慶念詞文
- 商標(biāo)一級(jí)授權(quán)書模板
- 軟硬結(jié)合板的設(shè)計(jì)制作與品質(zhì)要求課件
- 民營醫(yī)院組織架構(gòu)圖示
- 慢性心功能不全護(hù)理查房
- 初中 初二 物理 凸透鏡成像規(guī)律實(shí)驗(yàn)(習(xí)題課) 教學(xué)設(shè)計(jì)
- 消防維保方案 (詳細(xì)完整版)
評(píng)論
0/150
提交評(píng)論