單片機電子系統(tǒng)課程設(shè)計—紅外遙控密碼鎖_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  《電子系統(tǒng)設(shè)計》課程設(shè)計</p><p><b>  實訓報告</b></p><p><b>  姓 名:</b></p><p><b>  學 號:</b></p><p><b>  專業(yè)班級:</b><

2、;/p><p><b>  指導教師:</b></p><p>  設(shè)計題目:紅外遙控密碼鎖</p><p>  完成時間: 2011年6月20日</p><p><b>  摘 要 </b></p><p>  本文主要闡述一種基于51單片機和紅外接收管的紅外解碼的單

3、片機控制系統(tǒng)。文章詳細介紹了紅外遙控密碼鎖的硬件電路和軟件設(shè)計。硬件部分利用紅外接收頭的輸出接在AT89C52單片機INT1中斷口,通過跳變沿觸發(fā)的方式來觸發(fā)單片機INT1中斷,從而可以對編碼脈沖進行接收、存儲和解碼,然后和用戶所設(shè)置的密碼進行比較,來校對密碼的正確與否,如果密碼正確,伺服電機(步進電機)正反轉(zhuǎn)進行開鎖和關(guān)鎖,同時,還有三個LED來對系統(tǒng)的復位、紅外接收、電機轉(zhuǎn)動狀態(tài)進行指示。此外,為了防止密碼泄露,該系統(tǒng)還支持用戶重設(shè)

4、密碼,上電復位的起始密碼為0123,正確輸入密碼后,用戶可以更改密碼。最后,為了防止遙控器失竊,非法人員多次試探嘗試打開遙控鎖,該系統(tǒng)還增加了錯誤報警功能,按五次鍵輸入密碼錯誤后,蜂蜜器持續(xù)鳴叫一分鐘進行報警。軟件部分用C語言進行編程,采用模塊化設(shè)計思想。</p><p>  該系統(tǒng)硬件電路簡單,造價低廉,操作方便,完全符合設(shè)計要求,也具有很高的應用價值。例如可以作為汽車車門鎖(較常規(guī)的遙控鎖更安全),也可以作為

5、倉庫和家用門鎖等。</p><p>  關(guān)鍵詞:單片機、紅外、遙控、密碼鎖</p><p><b>  目 錄</b></p><p><b>  1 緒言1</b></p><p>  1.1 課題背景、發(fā)展及意義1</p><p>  1.2 課程的具體要求及任務1

6、</p><p>  1.2.1 設(shè)計任務1</p><p>  1.2.2 基本要求1</p><p>  1.2.3 發(fā)揮部分1</p><p>  2 紅外遙控鎖總體設(shè)計方案2</p><p>  2.1 任務分析與實現(xiàn)2</p><p>  2.2紅外遙控鎖硬件方案設(shè)計3&l

7、t;/p><p>  2.3 紅外遙控鎖軟件方案設(shè)計4</p><p>  3 紅外遙控鎖硬件電路設(shè)計方法及原理5</p><p>  3.1紅外遙控系統(tǒng)5</p><p>  3.1.1 調(diào)制5</p><p>  3.1.2發(fā)射系統(tǒng)5</p><p>  3.1.3紅外接收頭原理圖6

8、</p><p>  3.2 單片機的原理及應用7</p><p>  3.2.1 單片機原理簡介7</p><p>  3.2.2 單片機最小系統(tǒng)的介紹7</p><p>  3.2.3 單片機定時/計數(shù)功能的介紹8</p><p>  3.3 步進電機工作原理8</p><p> 

9、 3.3.1 步進電機原理8</p><p>  3.3.2 步進電機驅(qū)動電路8</p><p>  3.4 LED指示電路9</p><p>  3.5 蜂鳴器電路9</p><p>  3.6 系統(tǒng)原理圖及印刷板圖9</p><p>  3.6.1系統(tǒng)總原理圖9</p><p>

10、  3.6.2 印刷版圖10</p><p>  4軟件設(shè)計流程11</p><p>  4.1全部軟件12</p><p>  5 系統(tǒng)的調(diào)試與分析12</p><p>  5.1 硬件調(diào)試12</p><p>  5.2 軟件調(diào)試12</p><p>  6 結(jié)論與展望13&l

11、t;/p><p><b>  6.1 結(jié)論13</b></p><p><b>  6.2 展望13</b></p><p><b>  致謝14</b></p><p><b>  參考文獻14</b></p><p><

12、;b>  附錄114</b></p><p><b>  附錄215</b></p><p><b>  1 緒言</b></p><p>  1.1 課題背景、發(fā)展及意義</p><p>  由于紅外線遙控不具有像無線電遙控那樣穿過障礙物去控制被控對象的能力,所以,在設(shè)計家用

13、電器的紅外線遙控器時,不必要像無線電遙控器那樣,每套(發(fā)射器和接器)要有不同的遙控頻率或編碼(否則,就會隔墻控制或干擾鄰居的家用電器),所以同類產(chǎn)品的紅外線遙控器,可以有相同的遙控頻率或編碼,而不會出現(xiàn)遙控信號“串門”的情況。這對于大批量生產(chǎn)以及在家用電器上普及紅外線遙控提供了極大的方便。由于紅外線為不可見光,因此對環(huán)境影響很小,再由紅外光波動波長遠小于無線電波的波長,所以紅外線遙控不會影響其他家用電器,也不會影響臨近的無線電設(shè)備。隨著

14、科技的進步,人們對物質(zhì)生活的水平的要求也越來越高,以指代步,是人們對科技的要求。紅外技術(shù)的發(fā)展和紅外線的諸多特性,決定了它在短距里遙控上的應用。出于方便性和安全性和方便性的設(shè)計要求,我設(shè)計了紅外遙控密碼鎖。</p><p>  1.2 課程的具體要求及任務</p><p>  1.2.1 設(shè)計任務</p><p>  利用單片機、紅外遙控器、紅外接收頭、LED、蜂鳴

15、器等設(shè)計一個紅外遙控密碼鎖。</p><p>  1.2.2 基本要求</p><p>  1.根據(jù)方案設(shè)計原理電路</p><p>  2.供電電壓5V穩(wěn)壓電源,遙控最大操作距離8m。</p><p>  3.利用EDA仿真軟件對設(shè)計電路進行仿真</p><p>  1.2.3 發(fā)揮部分</p><

16、;p>  連續(xù)輸入密碼輸入N(N可以軟件設(shè)定)次,實現(xiàn)可調(diào)報警功能。</p><p>  2 紅外遙控鎖總體設(shè)計方案</p><p>  2.1 任務分析與實現(xiàn)</p><p>  本設(shè)計的任務是:以AT89C52單片機為處理核心,用紅外接收管接收來自遙控器的紅外波形,經(jīng)過接收管解調(diào)后轉(zhuǎn)化成的脈沖送入單片機進行處理。紅外波的解碼是通過AT89C52單片機對紅外

17、接收頭產(chǎn)生的信號的脈寬進行檢測,從而判斷接收到多少個0和1,最后合成為4個字節(jié)的8位代碼。通過軟件編碼,給該遙控器編寫相應的初始化密碼(啟動系統(tǒng)是可以修改成任意的四位密碼),然后通過解碼來識別密碼,以進行進一步的操作。</p><p>  本系統(tǒng)總體思路如下:根據(jù)遙控器的按鍵編碼值對遙控鎖進行編程,從而設(shè)置開鎖的初始化密碼。當系統(tǒng)啟動時,系統(tǒng)進入設(shè)正常工作狀態(tài),此時,如果用戶更改了初始密碼,用戶輸入新的密碼,步進

18、電機正轉(zhuǎn)90度開鎖。為了使用方便,專門設(shè)置了一個按鍵關(guān)鎖(電機反轉(zhuǎn))。采用初始密碼的操作同上。如果連續(xù)五次輸入的密碼均為錯誤,蜂鳴器會長鳴30秒報警(報警時間可以通過軟件設(shè)定)。</p><p>  要求達到的各項指標及實現(xiàn)方法如下:</p><p>  利用紅外接收頭接收來自紅外遙控器的編碼波形,經(jīng)紅外接收頭解調(diào)放大后的脈沖送入單片機進行處理。</p><p> 

19、 對脈沖信號的高低電平的時間長短進行存儲和計數(shù)。</p><p>  實現(xiàn):通過軟件編程,用單片機的定時和計數(shù)器對脈沖的高低電平進行計時和計數(shù)。</p><p>  對數(shù)據(jù)進行處理,根據(jù)紅外的編碼方式以脈寬為0.565ms、間隔0.56ms、周期為1.125ms 的組合表示二制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms 的組合表示二進制的“1”。解碼出的32位

20、二進制碼前16為位用戶識別碼,能識別不同的電器設(shè)備,后16位為8 位操作碼(功能碼)及其反碼。</p><p>  實現(xiàn):利用軟件編程,對數(shù)據(jù)進行處理得到相應按鍵對應的編碼值。</p><p>  最終實現(xiàn)目標:對遙控器的按鍵值進行識別、存儲和計數(shù),然后和設(shè)定的密碼組進行比較以識別密碼和控制步進電機開關(guān)鎖??傁到y(tǒng)框圖如圖2.1.1所示。</p><p>  圖2.

21、1.1 紅外電控鎖系統(tǒng)框圖</p><p>  2.2紅外遙控鎖硬件方案設(shè)計</p><p>  遙控鎖,首先要解決是編碼和解碼的問題。編碼部分采用編碼芯片為HT6221的遙控器面板,當發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms 的組合表示二制的“0”;以脈寬為0

22、.565ms、間隔1.685ms、周期為2.25ms 的組合表示二進制的“1”。上述“0”和“1”組成的32 位二進制碼經(jīng)38kHz 的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的,然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。HT6221 產(chǎn)生的遙控編碼是連續(xù)的32 位二進制碼組,其中前16 位為用戶識別碼,能區(qū)別不同的電器設(shè)備,防止不同機種遙控碼互相干擾。該芯片的用戶識別碼固定為十六進制01H;后16位為8 位操作碼(功能

23、碼)及其反碼。UPD6121G 最多額128 種不同組合的編碼。在解碼的時候,可以通過單片機對紅外接收頭產(chǎn)生的信號的脈寬進行檢測,從而判斷接收到多少個0和1,最后合成為4個字節(jié)的8位代碼。接收部分,采用紅外接收頭和單片機系統(tǒng)。紅外接收頭把接收到的紅外波形轉(zhuǎn)化成紅外脈</p><p>  本設(shè)計用到的紅外接收頭來接收、放大和解調(diào)接收到的紅外波,只要把該接收頭的輸出引腳連接單片機的外部中斷口,就可以搭建簡單的紅外接收

24、電路。通過對紅外接收頭輸出的正負脈沖進行計時和計數(shù),通過計算就可以得到按鍵編碼對應的二進制數(shù)組。通過該數(shù)組獲得按鍵值。利用紅外接收頭來接收紅外編碼信號,電路簡單,很容易操作實現(xiàn),硬件開銷小。</p><p>  紅外信號收發(fā)系統(tǒng)的典型電路如圖1所示,紅外接收電路通常被廠家集成在一個元件中,成為一體化紅外接收頭。 內(nèi)部電路包括紅外監(jiān)測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。紅外監(jiān)測二極管監(jiān)測到紅外信

25、號,然后把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平,而不論紅外發(fā)射器和接收器的距離遠近。交流 信號進入帶通濾波器,帶通濾波器可以通過30khz到60khz的副載波,通過解調(diào)電路和積分電路進入比較器,比較器輸出 高低電平,還原出發(fā)射端的信號波形。注意輸出的高低電平和發(fā)射端是反相的,這樣的目的是為了提高接收的靈敏度。 </p><p>  紅外接收頭的種類很多,引腳定義也不相同,一般都有三個引腳,包括

26、供電腳,接地和信號輸出腳。根據(jù)發(fā)射端調(diào)制 載波的不同應選用相應解調(diào)頻率的接收頭。 </p><p>  大體積紅外接收頭IRM38A引腳說明</p><p>  紅外接收頭內(nèi)部放大器的增益很大,很容易引起干擾,因此在接收頭的供電腳上須加上濾波電容,一般在22uf以上。 有的廠家建議在供電腳和電源之間接入330歐電阻,進一步降低電源干擾。 </p><p>  紅外發(fā)

27、射器可從遙控器廠家定制,也可以自己用單片機的PWM產(chǎn)生,家庭遙控推薦使用紅外發(fā)射管(L5IR4-45)的可產(chǎn)生37.91KHz的PWM, PWM占空比設(shè)置為1/3, 通過簡單的定時中斷開關(guān)PWM, 即可產(chǎn)生發(fā)射波形。 </p><p>  2.3 紅外遙控鎖軟件方案設(shè)計</p><p>  通過軟件控制單片機的功能是單片機的主要特點和優(yōu)點,程序的設(shè)計要考慮合理性和可讀性,遵循模塊化設(shè)計的原

28、則,采用自頂向下的設(shè)計方法。模塊化設(shè)計使程序的可讀性好、修改及完善方便。</p><p>  軟件設(shè)計包括主程序,密碼校驗子程序,步進電機正反準子程序,定時器0和外部中斷1初始化子程序,延時子程序,紅外解碼子程序,蜂鳴器子程序等等。</p><p>  密碼校驗子程序用來將解碼得到的密碼數(shù)組和設(shè)定的密碼數(shù)組進行比較,從而判斷密碼正誤。</p><p>  步進電機正

29、反轉(zhuǎn)子程序用來控制步進電機正反轉(zhuǎn),從而實現(xiàn)開關(guān)鎖。</p><p>  定時器0和外部中斷一用來對定時器0和外部中斷1進行初始化。</p><p>  紅外解碼程序用來將接收到的紅外脈沖的時間數(shù)據(jù)轉(zhuǎn)換成二進制表示的數(shù)據(jù),然后進一步解碼為按鍵編碼值。</p><p>  3 紅外遙控鎖硬件電路設(shè)計方法及原理</p><p><b> 

30、 3.1紅外遙控系統(tǒng)</b></p><p><b>  紅外遙控的概述: </b></p><p>  紅外線的光譜位于紅色光之外, 波長是0.76~1.5μm,比紅光的波長還長。紅外遙控是利用紅外線進行傳遞信息的一種控制方式,紅外遙控具有抗干擾,電路簡單,容易編碼和解碼,功耗小,成本低的優(yōu)點。紅外遙控幾乎適用所有家電的控制。 </p>&

31、lt;p>  紅外遙控系統(tǒng)的主要部分為調(diào)制、發(fā)射和接收,如圖 所示: </p><p><b>  圖1 紅外遙控系統(tǒng)</b></p><p><b>  3.1.1 調(diào)制</b></p><p>  紅外遙控是以調(diào)制的方式發(fā)射數(shù)據(jù),就是把數(shù)據(jù)和一定頻率的載波進行“與”操作,這樣既可以提高發(fā)射效率又可以降低電源 功

32、耗。 </p><p>  調(diào)制載波頻率一般在30khz到60khz之間,大多數(shù)使用的是38kHz,占空比1/3的方波,如圖2所示,這是由發(fā)射端所使用的 455kHz晶振決定的。在發(fā)射端要對晶振進行整數(shù)分頻,分頻系數(shù)一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。 </p><p>  3.1.2發(fā)射系統(tǒng)

33、 </p><p>  目前有很多種芯片可以實現(xiàn)紅外發(fā)射,可以根據(jù)選擇發(fā)出不同種類的編碼。由于發(fā)射系統(tǒng)一般用電池供電,這就要求芯片 的功耗要很低,芯片大多都設(shè)計成可以處于休眠狀態(tài),當有按鍵按下時才工作,這樣可以降低功耗芯片所用的晶振應該有 足夠的耐物理撞擊能力,不能選用普通的石英晶體,一般是選用陶瓷共鳴器,陶瓷共鳴器準確性沒有石英晶體高,但通常 一點誤差可以忽略不計。 </p&

34、gt;<p>  紅外線通過紅外發(fā)光二極管(LED)發(fā)射出去,紅外發(fā)光二極管(紅外發(fā)射管)內(nèi)部構(gòu)造與普通的發(fā)光二極管基本相同,材料和普通發(fā)光二極管不同,在紅外發(fā)射管兩端施加一定電壓時,它發(fā)出的是紅外線而不是可見光。 </p><p>  圖3b 射擊輸出驅(qū)動電路</p><p>  圖3a 簡單驅(qū)動電路</p><p>  如圖3a和圖3b是LED的驅(qū)

35、動電路,圖3a是最簡單電路, 選用元件時要注意三極管的開關(guān)速度要快,還要考慮到LED的正向 電流和反向漏電流,一般流過LED的最大正向電流為100mA,電流越大,其發(fā)射的波形強度越大。 </p><p>  圖3a電路有一點缺陷,當電池電壓下降時,流過LED的電流會降低,發(fā)射波形強度降低,遙控距離就會變小。圖3b所示的 射極輸出電路可以解決這個問題,兩個二極管把三級管基極電壓鉗位在1.2V左右,因此三級管發(fā)射極電

36、壓固定在0.6V左右, 發(fā)射極電流IE基本不變,根據(jù)IE≈IC,所以流過LED的電流也基本不變,這樣保證了當電池電壓降低時還可以保證一定的遙 控距離。 </p><p>  3.1.3紅外接收頭原理圖</p><p>  紅外接收頭和復位電路電路原理圖如圖3.1.3所示。</p><p>  圖 3.1.3紅外接收頭和復位電路電路原理圖</p><

37、;p>  3.2 單片機的原理及應用</p><p>  3.2.1 單片機原理簡介</p><p>  單片機是指集成在一個芯片上的微型計算機,也就是把組成微型計算機的各種功能部件,包括CPU、隨機存儲器RAM、只讀存儲器ROM、基本輸入/輸出接口電路。定時器/計數(shù)器等部件都制作在一塊芯片上,構(gòu)成一個完整的微型計算機從而實現(xiàn)微型計算機的基本功能。單片機內(nèi)部結(jié)構(gòu)示意圖如圖3.2.1所

38、示。</p><p>  圖 3.2.1單片機內(nèi)部結(jié)構(gòu)示意圖</p><p>  3.2.2 單片機最小系統(tǒng)的介紹</p><p>  AT89C52提供以下標準功能:8K字節(jié)Flash閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,5個中斷源,一個全雙工串行通信口,片內(nèi)具有振蕩器及時鐘電路。單片機最小系統(tǒng)如圖3.4所示。</p&g

39、t;<p>  圖 3.2.2單片機最小系統(tǒng)</p><p>  3.2.3 單片機定時/計數(shù)功能的介紹</p><p>  AT89C52單片機定時/計數(shù)器的工作有兩個特殊功能寄存器控制。TMOD用于設(shè)置其工作方式:TCON用于控制其啟動和中斷請求。</p><p>  3.3 步進電機工作原理</p><p>  3.3.1

40、 步進電機原理</p><p>  步進電機是一種感應電機,它的工作原理是利用電子電路,將直流電變成分時供電的,多相時序控制電流,用這種電流為步進電機供電,步進電機才能正常工作,驅(qū)動器就是為步進電機分時供電的,多相時序控制器 </p><p>  雖然步進電機已被廣泛地應用,但步進電機并不能象普通的直流電機,交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可使用。

41、因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業(yè)知識。 </p><p>  步進電機作為執(zhí)行元件,是機電一體化的關(guān)鍵產(chǎn)品之一, 廣泛應用在各種自動化控制系統(tǒng)中。隨著微電子和計算機技術(shù)的發(fā)展,步進電機的需求量與日俱增,在各個國民經(jīng)濟領(lǐng)域都有應用。</p><p>  3.3.2 步進電機驅(qū)動電路</p><p>  步進電機驅(qū)動電路原理圖如圖3.

42、2.2所示。</p><p>  圖3.3.2 步進電機驅(qū)動電路原理</p><p>  3.4 LED指示電路</p><p>  LDE指示電路原理圖如圖3.4.1。</p><p>  圖3.4.LED指示電路原理圖</p><p><b>  3.5 蜂鳴器電路</b></p>

43、<p>  蜂鳴器電路原理圖如圖3.5.1所示。</p><p>  圖3.5.1 蜂鳴器電路原理圖</p><p>  3.6 系統(tǒng)原理圖及印刷板圖</p><p>  3.6.1系統(tǒng)總原理圖</p><p>  系統(tǒng)總原理圖如圖3.6.1所示。</p><p>  圖3.6.1 系統(tǒng)總原理圖圖<

44、/p><p>  3.6.2 印刷版圖</p><p>  系統(tǒng)印刷板圖如圖3.6.2</p><p>  圖3.6.2 系統(tǒng)印刷板圖</p><p><b>  4軟件設(shè)計流程</b></p><p><b>  4.1全部軟件</b></p><p>

45、<b>  相關(guān)代碼見附錄</b></p><p>  5 系統(tǒng)的調(diào)試與分析</p><p><b>  5.1 硬件調(diào)試</b></p><p>  首先,找到所有所需的元器件并歸類放好。然后將做好的PCB板放到電腦面前,對應畫好的PCB圖紙,將原件一一對應的插入到板子上,并并稍稍固定以防止焊接過程中原件的掉落。原件放好

46、后便可以拿到后面去一一焊接。焊接完畢后按要求調(diào)試。調(diào)試故障及原因分析如下。</p><p>  1.接收不到紅外信號</p><p>  原因:紅外接收頭插反。</p><p>  調(diào)試過程:紅外遙控對接收頭按鍵,蜂鳴器不叫,說明紅外接收管沒有接收到紅外信號,或者是程序沒有正確處理紅外信號。</p><p>  結(jié)論:紅外接收管種類很多,但常

47、用的只有兩三種,這兩三種輸出引腳不同,使用的時候要正確識別。</p><p><b>  2.蜂鳴器叫聲小</b></p><p>  原因:跟蜂鳴器串聯(lián)的電阻過大</p><p>  調(diào)試:更換與蜂鳴器串聯(lián)的電阻,換成阻值較小的電阻。</p><p>  結(jié)論:正確識別和讀取色環(huán)電阻。</p><p

48、><b>  5.2 軟件調(diào)試</b></p><p>  具體的說這個應該屬于是軟硬件聯(lián)合調(diào)試,在硬件調(diào)試好的情況下,調(diào)試軟件應該還是比較容易的。調(diào)試故障及原因分析如下。</p><p>  1.只是燈沒有正常工作</p><p>  原因分析:三個LED指示燈有一個沒有正常工作,經(jīng)檢查是壞的</p><p> 

49、 結(jié)論:在焊接元件前要進行元件檢測,確保元件是好的。</p><p><b>  2.步進電機不工作</b></p><p>  原因分析:在開發(fā)箱上別寫的程序在移植到系統(tǒng)板上的時候沒有修改所用的引腳。</p><p>  結(jié)論:在開發(fā)箱上的程序,移植到自己的功能電路中時要認真檢查所用的引腳,把該修改的地方要正確修改,確保移植無誤。</p

50、><p><b>  6 結(jié)論與展望</b></p><p><b>  6.1 結(jié)論</b></p><p>  該課程的主要任務是開發(fā)一個以AT89C52單片機為核心的紅外遙控密碼鎖。本設(shè)計主要分硬件部分和軟件部分,硬件部分著重考慮硬件電路的簡單性,故盡可能簡單硬件電路,節(jié)省線路板的空間,達到硬件電路最優(yōu)化設(shè)計。軟件采用C

51、語言編寫,采用模塊化設(shè)計思想,程序可讀性強,能滿足設(shè)計要求,達到設(shè)計指標,實現(xiàn)了遙控開鎖、關(guān)鎖啟動系統(tǒng)修改密碼,多次輸入錯誤報警等功能。速度</p><p>  本設(shè)計符合設(shè)計要求,操作簡單,方便易用,功能性較強,具有一定的實踐意義和使用價值,但也有一些不足,如沒有設(shè)計忘記密碼的應急措施和掉電保護功能,功能有待完善。</p><p><b>  6.2 展望</b>&

52、lt;/p><p>  本操作簡單,易于實現(xiàn)。硬件部分采用的器件應用比較廣泛,且價格低廉,如AT89C52單片機、紅外遙控器、紅外接收管、uln2003驅(qū)動芯片、步進電機、發(fā)光二極管等。這意味著所用的器件功能比較強大、穩(wěn)定,尤其是本次設(shè)計的核心元件的核心元件AT89C52單片機,軟件技術(shù)成熟。這類微處理器既可用作控制器有適合于做數(shù)據(jù)處理,而且成本低廉。軟件采用模塊化設(shè)計,可讀性強,方便二次開發(fā)。</p>

53、<p>  這個紅外要空密碼鎖系統(tǒng),具有較低的成本和穩(wěn)定的可靠性,具有較好的開發(fā)前景。</p><p><b>  致謝</b></p><p>  在本次設(shè)計過程中我獲益匪淺,在當中我遇到了許多問題。比如在畫圖過程中,封裝不會畫,沒有根據(jù)實物畫,在PCB圖連線時,線的粗細,焊盤的大小都沒有設(shè)定,在同學的幫助下,最后成功畫出了PCB與,并制作出了PCB板。

54、調(diào)試過程中,在老師的幫助下,發(fā)現(xiàn)了不少問題,并都解決了。</p><p>  在這我非常感謝他們,是他們幫助我順利完成了我的設(shè)計。</p><p><b>  參考文獻</b></p><p>  李朝青.單片機原理與接口技術(shù).北京航空大學出版社,1994</p><p>  劉燦軍.使用傳感器.國防工業(yè)出版社.2004

55、</p><p>  何希才.傳感器及其應用. 國防工業(yè)出版社.2004</p><p>  童詩白華成英主編. 模擬電子技術(shù)基礎(chǔ). 高等教育出版社。2006</p><p>  【5】 李金平 沈明山 姜余祥編著. 電子系統(tǒng)設(shè)計. 電子工業(yè)出版社2009</p><p><b>  附錄1</b></p>

56、<p><b>  紅外遙控鎖元件清單</b></p><p><b>  附錄2</b></p><p>  /**********************************************************************</p><p><b>  紅外遙控鎖全部程

57、序</b></p><p>  ***********************************************************************/</p><p>  #include<reg52.h></p><p>  #define uint unsigned int</p><p>

58、;  #define uchar unsigned char</p><p>  uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; </p><p>  uchar code table1[]={0x80,0x40,0x20,0x

59、10};</p><p>  uchar code table2[]={0x10,0x20,0x40,0x80};</p><p>  sbit P2_0=P2^0;</p><p>  sbit P0_0=P0^0;</p><p>  sbit P0_1=P0^1;</p><p>  sbit P0_2=P0^2

60、;</p><p>  uchar htime;//紅外時間變量</p><p>  uchar startflag;//紅外數(shù)據(jù)開始提取變量</p><p>  uchar hdata[33];//紅外數(shù)據(jù)的數(shù)組</p><p>  uchar bytenumber;</p><p>  uchar endflag;

61、</p><p>  uchar date[4];</p><p><b>  uchar hp;</b></p><p>  uchar disp[8];</p><p>  void delay1(uint a)</p><p>  {while(a--);</p><p&

62、gt;<b>  }</b></p><p>  void delay(uint del)</p><p>  {uint i,j;</p><p>  for(i=0;i<del;i++)</p><p>  for(j=0;j<110;j++);</p><p><b>

63、  }</b></p><p>  void time0_init()</p><p>  {TMOD=0x02;</p><p><b>  TH0=0x00;</b></p><p><b>  TL0=0x00;</b></p><p><b> 

64、 EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void int1init()</p><p><b&

65、gt;  {EA=1;</b></p><p><b>  EX1=1;</b></p><p><b>  IT1=1;</b></p><p><b>  }</b></p><p>  //紅外數(shù)據(jù)提取函數(shù)</p><p>  void

66、 hpros()</p><p>  {uchar k=1,i,j;</p><p>  uchar value;</p><p>  for(j=0;j<4;j++)</p><p><b>  {</b></p><p>  for(i=0;i<8;i++)</p>

67、<p>  { value=value>>1;</p><p>  if(hdata[k]>6)</p><p>  {value=value|0x80;</p><p><b>  }</b></p><p><b>  k++;</b></p><

68、p><b>  }</b></p><p>  date[j]=value;</p><p><b>  }</b></p><p><b>  hp=1;</b></p><p><b>  }</b></p><p>  

69、//紅外數(shù)據(jù)處理函數(shù)</p><p>  void hchuli()</p><p>  {disp[0]=date[0]/16;</p><p>  disp[1]=date[0]%16;</p><p>  disp[2]=date[1]/16;</p><p>  disp[3]=date[1]%16;</

70、p><p>  disp[4]=date[2]/16;</p><p>  disp[5]=date[2]%16;</p><p>  disp[6]=date[3]/16;</p><p>  disp[7]=date[3]%16;</p><p><b>  }</b></p>&l

71、t;p>  //蜂鳴器發(fā)聲和Led亮</p><p>  void BEEP()</p><p>  {uchar m=20;</p><p><b>  P0_0=0;</b></p><p>  while(m--)</p><p><b>  {P2_0=1;</b&g

72、t;</p><p><b>  delay(1);</b></p><p><b>  P2_0=0;</b></p><p><b>  delay(1);</b></p><p><b>  }</b></p><p><

73、;b>  P0_0=1;</b></p><p><b>  }</b></p><p>  void main()</p><p>  {uint i=0,k,flag=0,b=0,d=0,FLAG=1,rflag=1,RFLAG=1,alarm=0,G=0,g=0,rag=0;</p><p>  

74、uchar key[8]={4,5,4,6,4,7,4,4},key1[8],key2[8]={4,0,4,3,0,7,1,5};//電控鎖密碼數(shù)組為key,key2為正轉(zhuǎn)和反轉(zhuǎn),key1為轉(zhuǎn)載紅外數(shù)據(jù)的數(shù)組</p><p>  time0_init();</p><p>  int1init();</p><p><b>  while(1)</b

75、></p><p>  { if(endflag)</p><p><b>  {hpros();</b></p><p>  endflag=0;</p><p><b>  }</b></p><p><b>  if(hp)</b></

76、p><p>  {hchuli();</p><p><b>  hp=0;</b></p><p>  flag=1;//按鍵按下蜂鳴器發(fā)聲和led亮的標志</p><p><b>  }</b></p><p><b>  //電控鎖復位標志</b>&l

77、t;/p><p>  if((disp[4]==1)&&(disp[5]==6))</p><p><b>  {uchar a;</b></p><p>  for(a=0;a<8;a++)</p><p>  {key1[a]=0;}</p><p><b>  F

78、LAG=1;</b></p><p><b>  rflag=1;</b></p><p><b>  alarm=0;</b></p><p><b>  RFLAG=1;</b></p><p><b>  i=0;</b></p&g

79、t;<p><b>  }</b></p><p><b>  if(flag)</b></p><p><b>  {BEEP();</b></p><p>  key1[i]=disp[4];</p><p>  key1[i+1]=disp[5];</

80、p><p><b>  i=i+2;</b></p><p><b>  flag=0;</b></p><p><b>  rag=1;</b></p><p><b>  alarm++;</b></p><p><b>

81、  if(i==8)</b></p><p><b>  {i=0;}</b></p><p><b>  }</b></p><p><b>  //修改密碼</b></p><p>  if((disp[4]==1)&&(disp[5]==9))

82、</p><p>  { uchar a;</p><p>  for(a=0;a<8;a++)</p><p>  {key1[a]=0;}</p><p><b>  RFLAG=0;</b></p><p><b>  i=0;</b></p>&l

83、t;p><b>  }</b></p><p>  //進入修改密碼的具體的實現(xiàn)</p><p>  if(RFLAG==0)</p><p><b>  {</b></p><p>  //確認要修改的密碼的原密碼</p><p>  if((key[0]==key1

84、[0])&&(key[1]==key1[1])&&(key[2]==key1[2])&&(key[3]==key1[3])&&(key[4]==key1[4])&&(key[5]==key1[5])&&(key[6]==key1[6])&&(key[7]==key1[7]))</p><p><b

85、>  {uint H;</b></p><p><b>  G=1;</b></p><p>  for(H=0;H<10;H++)</p><p>  { P0_1=0;</p><p>  delay(20);</p><p><b>  P0_1=1;&l

86、t;/b></p><p>  delay(20);</p><p><b>  }</b></p><p>  for(H=0;H<8;H++)</p><p>  {key1[H]=0;}</p><p><b>  i=0;</b></p>

87、<p><b>  rag=0;</b></p><p><b>  }</b></p><p>  if((key2[0]==key1[0])&&(key2[1]==key1[1])&&(key2[2]==key1[2])&&(key2[3]==key1[3])&&(ke

88、y2[4]==key1[4])&&(key2[5]==key1[5])&&(key2[6]==key1[6])&&(key2[7]==key1[7]))</p><p><b>  {uint h;</b></p><p><b>  g=1;</b></p><p>  f

89、or(h=0;h<10;h++)</p><p><b>  {P0_2=0;</b></p><p>  delay(30);</p><p><b>  P0_2=1;</b></p><p>  delay(30);</p><p><b>  }<

90、;/b></p><p>  for(h=0;h<8;h++)</p><p>  {key1[h]=0;}</p><p><b>  i=0;</b></p><p><b>  rag=0;</b></p><p><b>  }</b>

91、;</p><p>  //修改密碼,輸入新密碼</p><p><b>  if(G)</b></p><p><b>  {if(rag)</b></p><p><b>  { uint B;</b></p><p>  key[b]=disp[4

92、];</p><p>  key[b+1]=disp[5];</p><p><b>  b=b+2;</b></p><p><b>  if(b==8)</b></p><p><b>  {b=0;</b></p><p><b>  G

93、=0;</b></p><p><b>  RFLAG=1;</b></p><p><b>  alarm=0;</b></p><p>  for(B=0;B<8;B++)</p><p>  {key1[B]=0;</p><p><b> 

94、 }</b></p><p>  for(B=0;B<10;B++)</p><p><b>  {P0_1=0;</b></p><p>  delay(20);</p><p><b>  P0_1=1;</b></p><p>  delay(20);

95、</p><p><b>  }</b></p><p><b>  i=0;</b></p><p><b>  }</b></p><p><b>  rag=0;</b></p><p><b>  }</b&

96、gt;</p><p><b>  }</b></p><p><b>  if(g)</b></p><p>  { if(rag)</p><p><b>  {uint D;</b></p><p>  key2[d]=disp[4];</

97、p><p>  key2[d+1]=disp[5];</p><p><b>  d=d+2;</b></p><p><b>  if(d==8)</b></p><p><b>  {d=0;</b></p><p><b>  g=0;<

98、;/b></p><p><b>  RFLAG=1;</b></p><p><b>  alarm=0;</b></p><p>  for(D=0;D<8;D++)</p><p>  {key1[D]=0;</p><p><b>  }<

99、/b></p><p>  for(D=0;D<10;D++)</p><p><b>  {P0_2=0;</b></p><p>  delay(20);</p><p><b>  P0_2=1;</b></p><p>  delay(20);</p

100、><p><b>  }</b></p><p><b>  i=0;</b></p><p><b>  }</b></p><p><b>  rag=0;</b></p><p><b>  }</b><

101、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  //紅外控制電控鎖旋轉(zhuǎn)</p><p><b>  if(RFLAG)</b></p><p><b>  {</b></p>

102、;<p>  if((key[0]==key1[0])&&(key[1]==key1[1])&&(key[2]==key1[2])&&(key[3]==key1[3])&&(key[4]==key1[4])&&(key[5]==key1[5])&&(key[6]==key1[6])&&(key[7]==key1[

103、7]))</p><p>  {uint j=128;</p><p><b>  if(FLAG)</b></p><p><b>  {P0_1=0;</b></p><p>  while(j--)</p><p>  {for(k=0;k<4;k++)</

104、p><p>  {P2=table1[k];</p><p>  delay1(800);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P0_1=1;</b></p><p&

105、gt;<b>  FLAG=0;</b></p><p><b>  rflag=1;</b></p><p><b>  alarm=0;</b></p><p><b>  i=0;</b></p><p><b>  }</b>

106、</p><p><b>  }</b></p><p>  if((key2[0]==key1[0])&&(key2[1]==key1[1])&&(key2[2]==key1[2])&&(key2[3]==key1[3])&&(key2[4]==key1[4])&&(key2[5]==k

107、ey1[5])&&(key2[6]==key1[6])&&(key2[7]==key1[7]))</p><p>  { uint j=128;</p><p><b>  if(rflag)</b></p><p><b>  {P0_2=0;</b></p><p&g

108、t;  while(j--)</p><p>  {for(k=0;k<4;k++)</p><p>  {P2=table2[k];</p><p>  delay1(800);</p><p><b>  }</b></p><p><b>  }</b></

109、p><p><b>  P0_2=1;</b></p><p><b>  rflag=0;</b></p><p><b>  FLAG=1;</b></p><p><b>  alarm=0;</b></p><p><b&

110、gt;  i=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if((disp[4]==0)&&(disp[5]==9))</p><p><b>  {if(FLAG)</b><

111、;/p><p><b>  {uchar n;</b></p><p>  for(n=0;n<10;n++)</p><p><b>  {P0_1=0;</b></p><p>  delay(20);</p><p><b>  P0_1=1;</b&

112、gt;</p><p>  delay(20);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(rflag)</b></p><p><b>  {uchar m;</b

113、></p><p>  for(m=0;m<10;m++)</p><p><b>  {P0_2=0;</b></p><p>  delay(20);</p><p><b>  P0_2=1;</b></p><p>  delay(20);</p&g

114、t;<p><b>  }</b></p><p><b>  }</b></p><p>  disp[4]=0;</p><p>  disp[5]=0;</p><p><b>  i=0;</b></p><p><b>

115、  }</b></p><p>  if(alarm>5)</p><p>  {uint f=20;</p><p>  while(f--)</p><p><b>  {BEEP();}</b></p><p><b>  i=0;</b></p

116、><p><b>  alarm=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b><

117、/p><p>  void time0() interrupt 1</p><p><b>  {htime++;</b></p><p><b>  }</b></p><p>  void int1() interrupt 2</p><p><b>  { <

118、;/b></p><p>  if(startflag)</p><p><b>  {</b></p><p>  if(htime>35)</p><p>  bytenumber=0;</p><p>  hdata[bytenumber]=htime;</p>&

119、lt;p><b>  htime=0;</b></p><p>  bytenumber++;</p><p>  if(bytenumber==33) </p><p>  {bytenumber=0;</p><p>  endflag=1;</p><p><b>  }&l

120、t;/b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  startflag=1;</p><p><b>  htime=0;<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論