

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 《專業(yè)實習》報告</b></p><p> 題 目 單片機密碼鎖 </p><p> 計算機與電子工程學院</p><p><b> 2011年9月</b></p><p><b> 目 錄</b>&
2、lt;/p><p><b> 1 概述2</b></p><p> 1.1 設計前言2</p><p> 1.2 設計要求2</p><p><b> 2 設計方案2</b></p><p> 3 硬件電路設計3</p><p>
3、 3.1 晶振電路3</p><p> 3.2 電源電路4</p><p> 3.3 復位電路4</p><p> 3.4 上拉電阻5</p><p> 3.5 顯示電路設計5</p><p> 3.6 單片機電路6</p><p> 3.7 主要元器件6
4、</p><p> 4 PCB板制作6</p><p> 4.1 PCB板制作流程6</p><p> 4.2 焊接及測試7</p><p> 4.2.1 焊接元器件7</p><p> 4.2.2 測試8</p><p><b> 5 軟件設計9&l
5、t;/b></p><p> 5.1 程序流程圖9</p><p> 5.2 源程序11</p><p> 6 收獲與總結16</p><p><b> 參考文獻:17</b></p><p> 附錄一 電路原理圖18</p><p> 附錄
6、二 PCB電路原理圖18</p><p> 《專業(yè)實習》報告評審表</p><p><b> 單片機密碼鎖設計</b></p><p><b> 1 概述</b></p><p><b> 1.1 設計前言</b></p><p> 單片機
7、自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關注,應用很廣、發(fā)展很快。單片機體積小、重量輕、抗干擾能力強、環(huán)境要求不高、價格低廉、可靠性高、靈活性好、開發(fā)較為容易。由于具有上述優(yōu)點,在我國,單片機已廣泛地應用在工業(yè)自動化控制、自動檢測、智能儀器儀表、家用電器、電力電子、機電一體化設備等各個方面,而51單片機是各單片機中最為典型和最有代表性的一種。這次畢業(yè)設計通過對它的學習、應用,以AT89S51芯片為核心,輔以必要
8、的電路,設計了一個簡易的電子時鐘,它由4.5V直流電源供電,通過數碼管能夠準確顯示時間,調整時間,從而到達學習、設計、開發(fā)軟、硬件的能力。</p><p> 1.2 設計要求 </p><p> 設計一個四位密碼鎖:復位之后,自己設置一個密碼之后,當再次輸入密碼,驗證是否正確,正確就顯示YES,錯誤就顯示NO,復位之后可重新顯示密碼。</p><p><
9、b> 2 設計方案 </b></p><p> 設計思路及流程:根據上述功能介紹,密碼鎖系統(tǒng)可以分為用戶密碼輸入、顯示和控制報警3大功能,因此可以鍵盤模塊、顯示模塊、報警模塊、電子鎖控制模塊和單片機模塊。系統(tǒng)模塊圖如圖1所示。</p><p><b> 圖1</b></p><p><b> 3 硬件電路設
10、計</b></p><p><b> 3.1 晶振電路</b></p><p> 晶振電路由2個電容,一個晶振組成,如圖2所示。</p><p><b> 圖2</b></p><p> 單片機晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,便于各部分保持同步。
11、有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調整頻率的方法保持同步。單片機晶振有2個電容的作用:這2個電容叫晶振的負載電容,分別接在晶振的2個腳上和對地的電容,一般在幾十皮法。它會影響到晶振的振諧頻率和輸出幅度。晶振的負載電容=[(Cd*Cg)/(Cd+Cg)]+Cic+C。</p><p><b> 3.2 電源電路</b></p><p><b&g
12、t; 圖3</b></p><p><b> 3.3 復位電路</b></p><p> 復位電路由電容、電阻、復位組成,如圖4所示。</p><p><b> 圖4</b></p><p> 復位電路的原理是單片機RST引腳接收到2US以上的電平信號,只要保證電容的充放電時
13、間大于2US,即可實現復位,所以電路中的電容值是可以改變的。按鍵按下系統(tǒng)復位,是電容處于一個短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。基本功能是:系統(tǒng)上電時提供復位信號,制止系統(tǒng)電源穩(wěn)定后,撤銷復位信號。為可靠起見,電源穩(wěn)定后還要經過一定時間才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。單片機復位參數的選定必須在振蕩穩(wěn)定后保證復位高電平持續(xù)時間大于2個機器周期。</p><p&
14、gt;<b> 3.4 上拉電阻</b></p><p> 上拉電阻由8個電阻接在P0腳,如圖5所示。</p><p><b> 圖5</b></p><p> P0口是開漏的,不管它的驅動能力多大,相當于它是沒有電源的,需要外部的電路提供,絕大多數情況下P0口是必需加上拉電阻的。當p0口用來驅動PNP管子的時候
15、,就不需要上拉電阻,因為此時的低電平有效;當P0口用來驅動NPN管子的時候,就需要上拉電阻的,因為此時只有當P0為1時候,才能夠使后級端導通。</p><p> 3.5 鍵盤電路設計</p><p> 按鍵模塊采用2×5行列矩陣結構,由2條行線和5條列線構成。按鍵電路如圖6所示。</p><p><b> 圖6</b><
16、/p><p> 其中2根I/O接口線(P2.1~P2.2)作為行線,另外5根I/O接口線(P2.2~P2.7)作為列線,按鍵跨接在行線和列線上,按鍵按下時,行線和列線發(fā)生短路。</p><p> 軟件編程采用線翻轉法,該方法要求行線和列線上 都有上拉電阻。由于AT89C51單片機的P2口內部集成了上拉電阻,所以系統(tǒng)未加。第一行按鍵前兩個輸入密碼,最后一個為確認鍵</p>&l
17、t;p> 3.6 顯示電路設計</p><p> 顯示電路由4個共陰極數碼管構成。軟件編程時采用動態(tài)顯示方法,其結構圖如圖7所示。</p><p><b> 圖7</b></p><p> 數碼管其實是由發(fā)光二極管組成,有共陰極和共陽極之分,對于共陽極來說,一位數碼管由8個二極管組成,他們的陽極接在一起接+5v電源,而各個陰極與
18、某個端口,如p1的8個引腳相連,當某個引腳輸出低電平的時候數碼管對應的二極管亮。</p><p> 軟件編程時,按照下面的步驟顯示字符: </p><p> ?。?)首先從P0口輸出共陽極字符的段碼; </p><p> ?。?)然后從位選輸出低電平。 </p><p> 3.7 單片機電路</p><p>
19、單片機電路主要由單片機、振蕩電路和復位電路構成。由于AT89C51內部集成了12MHz的振蕩電路,所以系統(tǒng)外部未加。單片機電路圖如圖8所示。 </p><p><b> 圖8</b></p><p> AT89C51單片機的P0口用于輸出顯示器段碼。P1口的P1.0~P1.5用于6個LED的亮與滅。P2口用于構成行列矩陣鍵盤。此芯片是ATMEL公司一款低功耗,高性
20、能的CMOS 8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器,使該公司高密度非易失性存儲器制造,與MCS-51兼容。AT89C51單片機的主要工作特性:</p><p> ·內含4KB的FLASH存儲器,擦寫次數1000次;</p><p> ·內含28字節(jié)的RAM;</p><p> ·具有32根可編程I/O線;</p
21、><p> ·具有2個16位可編程定時器;</p><p> ·具有6個中斷源、5個中斷矢量、2級優(yōu)先權的中斷結構;</p><p> ·具有1個全雙工的可編程串行通信接口;</p><p> ·具有一個數據指針DPTR;</p><p> ·兩種低功耗工作模式,
22、即空閑模式和掉電模式;</p><p> ·具有可編程的3級程序鎖定定位;</p><p> AT89C51的工作電源電壓為5(1±0.2)V且典型值為5V,最高工作頻率為24MHz.</p><p> 3.8 主要元器件</p><p> AT89C51芯片、晶振、復位、電阻、電容、數碼管、按鍵、二極管。 &l
23、t;/p><p><b> 4 PCB板制作</b></p><p> 4.1 PCB板制作流程</p><p> PCB板是連接各個電子元器件,其次是固定元器件。一般的PCB板都是把圖紙交給工廠,工廠機器加工,這種方法對板子比較復雜而且加工工藝要求高,需要成批次生產,規(guī)模比較大。在這次做電路設計過程中,我們來到公司親自手工制作。具體步驟
24、如下:</p><p> ?。?)設計:把電路原理圖設計成印制電路布線圖。這需要對繪圖軟件有非常熟練地應用,目前比較主流的繪圖軟件有Protel,AD等。設計完成后需要做好電氣檢測,看設計是否合理,若不合理,就要反復修改,直到覺得設計合格了。 </p><p> ?。?)準備覆銅板:覆銅板就是在基板上覆了一層薄薄的銅,厚度各異,在制作過程中,1.6mm的板子就可以了。銅的厚度可以選擇稍微薄
25、一點,這樣比較好腐蝕,制作起來較快。量好尺寸用切板機或者其他工具把板子剪到合適的尺寸。 </p><p> (3)熱轉印電路圖形:把設計好的PCB布線圖轉到覆銅板。A:用激光打印機將設計好的布線圖反面打印在熱轉印紙上;B 處理好覆銅板表面后(就是把板子弄平整,干凈,去油污之類的),可將覆銅板放入服飾液中浸泡兩三秒中取出后水洗擦干;當然用其他的去污物質擦洗也是可以的。C:將打印好的圖紙附到板子表面,貼好固定。D:
26、將貼好圖紙的板子放到熱轉印機上進行熱轉印。 E:板子冷卻后接掉轉印紙,然后檢查板子上的圖形是否有短線或者轉印不是太好的地方,如果發(fā)現有的話,用油性筆補充好,待完善后準備腐蝕。</p><p> ?。?)腐蝕:首先配置腐蝕液,一般為:三氯化鐵、水(1:2)、過硫酸鈉、水(1:3),溫度在40-50度為宜,將配好的腐蝕液放入塑料盆中,然后將PCB板(有圖形面朝上)放入盆內開始腐蝕,腐蝕過程中可反復來回擺動,用毛筆輕輕
27、耍板子,加速腐蝕,待腐蝕得可差不多了即可把板子取出洗干凈,烘干。</p><p> ?。?)用鉆孔機鉆孔:板子上少不了有很多焊盤過孔之類的,這時需要打孔??讖酱蛳虏灰诉^大,大概比原件管腳直徑大過0.3mm左右。打孔可用臺式打孔機或手鉆。打孔時注意速度不要太快,以免打出毛刺。最后就是表面處理一下板子,使板子看起美觀,這樣自己制作的一塊印制板就算完成了。 </p><p> 4.2 焊接及
28、測試 </p><p> 4.2.1 焊接元器件</p><p> 領取所需元器件焊接在板子上,焊接過程注意綜合考慮各個期間的引腳及接電源的節(jié)點的情況,對接線路徑進行規(guī)劃,盡量避免線路的重疊,要求盡量美觀實用。焊接固定座槽,注意不要短路和短路,可以準備好電壓表在一邊變焊接邊測試,確保一步步準確無誤的進行,以免后面的返工。連接各條線路不要錯漏,不要重復。</p><
29、p> 焊接時,烙鐵到鼻子的距離應該不少于 20cm ,由于焊錫絲中含有一定比例的鉛,而鉛是對人體有害的一種重金屬,因此操作時應該戴手套或在操作后洗手,避免食入鉛塵。電烙鐵使用以后,一定要穩(wěn)妥地插放在烙鐵架上,并注意導線等其他雜物不要碰到烙鐵頭,以免燙傷導線,造成漏電等事故。</p><p> 基本操作分為五步:準備施焊,左手拿焊絲,右手握烙鐵,進入備焊狀態(tài)。要求烙鐵頭保持干凈,無焊渣等氧化物,并在表面鍍
30、有一層焊錫;加熱焊件,烙鐵頭靠在兩焊件的連接處,加熱整個焊件全體,時間大約為 1~2 秒鐘。對于在印制板上焊接元器件來說,要注意使烙鐵頭同時接觸兩個被焊接物;熔化焊料,焊件的焊接面被加熱到一定溫度時,焊錫絲從烙鐵對面接觸焊件。注意:不要把焊錫絲送到烙鐵頭上;移開焊錫,當焊絲熔化一定量后,立即向左上 45 度方向移開焊絲;移開烙鐵,焊錫浸潤焊盤和焊件的施焊部位以后,向右上 45 度方向移開烙鐵,結束焊接。從第三步開始到第五步結束,時間大約
31、也是12s。由于焊接技術的不純熟以及工具的有限,我們焊接的電路板存在一系列問題。</p><p><b> 4.2.2 測試</b></p><p> 測試時注意接上電源,不上CPU,電壓調為2-2.5V,盡量低點,測電阻。數碼管接低電壓,大約為2.5V 由于接上拉電阻。 檢查焊接是否牢固,是否存在虛焊非線。 焊接完畢檢查無誤后,裝上下載好程序的芯片,接通電源
32、,測試。</p><p> 測試時要求必須耐心、細心,目標是盡可能早一些找出電路板的缺陷,然后改正,最后達到測試成功的目的。每當遇到不懂的地方就會更進一步認識到自己的不足與知識的欠缺,于是要虛心請教,一切都得從頭開始</p><p><b> 5 程序設計</b></p><p> #include <reg52.h><
33、/p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit p20=P2^0;</p><p> sbit p21=P2^1;</p><p> sbit p22=P2^2;</p><
34、;p> sbit p23=P2^3;</p><p> sbit p24=P2^4;</p><p> sbit p25=P2^5;</p><p> sbit p26=P2^6;</p><p> uchar num[4]={0};</p><p> uchar num2[4]={0};</p
35、><p> uchar mima[4]={0};</p><p> uchar flag=0;</p><p> uint temp;</p><p> sbit bell=P3^7;</p><p> void delay(int n)</p><p><b> {</
36、b></p><p> uchar j=0;</p><p><b> uint k=0;</b></p><p> for(j=0;j<100;j++)</p><p> for(k=n;k>0;k--);</p><p><b> }</b>&
37、lt;/p><p> uchar code seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,</p><p> 0x07,0x7F,0x6F,0x77,0x7b,0x39,0x5e,0x79,0x73};</p><p> void main()</p><p><b> {</b>
38、;</p><p><b> uchar i;</b></p><p><b> p21=0;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b&g
39、t; P1=0xfe;</b></p><p> P0=seg[num[0]];</p><p><b> delay(5);</b></p><p><b> P1=0xfd;</b></p><p> P0=seg[num[1]];</p><p>
40、<b> delay(5);</b></p><p><b> P1=0xfb;</b></p><p> P0=seg[num[2]];</p><p><b> delay(5);</b></p><p><b> P1=0xf7;</b>&
41、lt;/p><p> P0=seg[num[3]];</p><p><b> delay(5);</b></p><p><b> if(!p22)</b></p><p><b> {</b></p><p> delay(10); //延時
42、一段時間,來消去抖動</p><p><b> if(!p22)</b></p><p><b> num[3]++;</b></p><p> while(!p22);//消去抖動</p><p><b> }</b></p><p><
43、;b> if(!p23)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間,來消去抖動</p><p><b> if(!p23)</b></p><p><b> num[2]++;</b>&
44、lt;/p><p> while(!p23);//消去抖動</p><p><b> }</b></p><p><b> if(!p24)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間
45、,來消去抖動</p><p><b> if(!p24)</b></p><p><b> num[1]++;</b></p><p> while(!p24);//消去抖動</p><p><b> }</b></p><p><b&g
46、t; if(!p25)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間,來消去抖動</p><p><b> if(!p25)</b></p><p><b> num[0]++;</b></
47、p><p> while(!p25);//消去抖動</p><p><b> }</b></p><p><b> if(!p26)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間,來消去
48、抖動</p><p><b> if(!p26)</b></p><p><b> {</b></p><p> for(i=0;i<4;i++)</p><p> mima[i]=num[i];</p><p><b> }</b>&l
49、t;/p><p> while(!p26);//消去抖動</p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b&
50、gt;</p><p> if(flag==1)</p><p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> P1=0xfe;</b&
51、gt;</p><p> P0=seg[num2[0]];</p><p><b> delay(5);</b></p><p><b> P1=0xfd;</b></p><p> P0=seg[num2[1]];</p><p><b> delay(
52、5);</b></p><p><b> P1=0xfb;</b></p><p> P0=seg[num2[2]];</p><p><b> delay(5);</b></p><p><b> P1=0xf7;</b></p><p
53、> P0=seg[num2[3]];</p><p><b> delay(5);</b></p><p><b> if(!p22)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間,來消去抖動</
54、p><p><b> if(!p22)</b></p><p> num2[3]++;</p><p> while(!p22);//消去抖動</p><p><b> }</b></p><p><b> if(!p23)</b></p&
55、gt;<p><b> {</b></p><p> delay(10); //延時一段時間,來消去抖動</p><p><b> if(!p23)</b></p><p> num2[2]++;</p><p> while(!p23);//消去抖動</p>
56、<p><b> }</b></p><p><b> if(!p24)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間,來消去抖動</p><p><b> if(!p24)</
57、b></p><p> num2[1]++;</p><p> while(!p24);//消去抖動</p><p><b> }</b></p><p><b> if(!p25)</b></p><p><b> {</b><
58、/p><p> delay(10); //延時一段時間,來消去抖動</p><p><b> if(!p25)</b></p><p> num2[0]++;</p><p> while(!p25);//消去抖動</p><p><b> }</b></p&
59、gt;<p><b> if(!p26)</b></p><p><b> {</b></p><p> delay(10); //延時一段時間,來消去抖動</p><p><b> if(!p26)</b></p><p><b> {&l
60、t;/b></p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p> if(num2[i]!=mima[i])</p><p><b> {</b></p><p><b> bell=1;&l
61、t;/b></p><p> delay(100);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(i==4)<
62、/b></p><p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> P1=0xfe;</b></p><p> P0=se
63、g[5];</p><p><b> delay(5);</b></p><p><b> P1=0xfd;</b></p><p> P0=seg[15];</p><p><b> delay(5);</b></p><p><b>
64、; P1=0xfb;</b></p><p> P0=seg[4];</p><p><b> delay(5);</b></p><p><b> P1=0xf7;</b></p><p><b> }</b></p><p>&
65、lt;b> }</b></p><p> while(!p26);//消去抖動</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b&g
66、t; }</b></p><p><b> }</b></p><p><b> 6 收獲與總結</b></p><p> 通過本密碼鎖的設計,使我對單片機有了更深的了解。特別是鍵盤掃描方法,以前只是理論上知識,而本次設計讓我有機會去實踐了這一知識。本設計只是一個簡單的密碼鎖,還有很多功能可以添加上去,
67、如密碼不必必須是5位,少于5位也可以;密碼的明碼顯示等單片機是一門實用很強的技術,要完全掌握它很難,也需要花很多時間。而單片機課程設計不僅是對單片機掌握程度的一個測試,也對單片機的了解有很大作用。我對單片機及附屬電路及PCB板子的制作流程有一定了解。提高了自己的動手能力,也深刻明白了自己的不足。我意識到實踐的重要性,同時也學到了很多書本上學不到的知識。</p><p> 這次課程設計的完成,是一個從無到有的過程
68、,經歷了興奮、自信、失落、奮發(fā)、所悟、完成幾個過程。剛開始做時,以為很難,但后面一步一步下來,查閱資料,老師教導,慢慢懂得一些。一分耕耘,一分收獲,有付出才有回報,就在這樣的痛苦與快樂的交換中,我學到了知識。</p><p><b> 參考文獻:</b></p><p> 【1】《51單片機C語言應用開發(fā)技術大全》龍脈工作室劉坤、宋戈、趙紅波、張憲棟編著,人民郵電
69、出版社</p><p> 【2】《51單片機應用設計與仿真——基于Keil與Proteus》丁明亮、唐前輝 主編,北京航空航天大學出版社</p><p> 【3】《單片機原理與應用及C51程序設計》唐穎主編,北京大學出版社</p><p><b> 附錄一 電路原理圖</b></p><p> 附錄二 PCB電路
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論