2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  題目 ………………………………………………………...3</p><p>  內(nèi)容和要求………………………………………………….3</p><p>  目的和意義………………………………………………….4</p><p>  總體方案和設(shè)計(jì)思路…………………

2、…………………….6</p><p>  軟件設(shè)計(jì)(包括系統(tǒng)資源分配,軟件流程,源程序設(shè)計(jì)及關(guān)鍵模塊程序說明)……………………………………………….16</p><p>  課程設(shè)計(jì)總結(jié)心得體會……………………………………17</p><p>  參考文獻(xiàn)…………………………………………………….18</p><p>  一,題目:單片機(jī)電子

3、密碼鎖</p><p><b>  二,內(nèi)容和要求:</b></p><p>  以AT89C52單片機(jī)為核心設(shè)計(jì)單片機(jī)電子密碼鎖,其人機(jī)接口包括字符型液晶顯示器,鍵盤,喇叭,由繼電器控制模擬開鎖關(guān)鎖的指示燈。鍵盤包括下列鍵:0, 1, 2, 3, 4, 5, 6, 7, 8, 9,修改,確認(rèn)。密碼鎖首次加電會自動設(shè)置一個(gè)初始密碼8888. 密碼鎖平常處于待機(jī)關(guān)鎖狀態(tài)

4、。</p><p>  在待機(jī)關(guān)鎖狀態(tài)下,用戶在鍵盤上按數(shù)字鍵,密碼鎖認(rèn)為用戶開始輸入開鎖密碼,并自動記錄所按鍵值,待用戶在鍵盤上按“確認(rèn)”鍵后,密碼鎖開始比較用戶密碼是否正確。如果密碼正確,給繼電器線圈加電,指示燈亮,表示開鎖,如果密碼錯(cuò)誤,聲光報(bào)警器并提示用戶重新輸入正確的開鎖密碼,如果連續(xù)3次開鎖密碼錯(cuò)誤,系統(tǒng)自鎖10分鐘,10分鐘后,用戶可再次輸入開鎖密碼。</p><p>  在

5、待機(jī)關(guān)鎖狀態(tài)下,用戶在鍵盤上按“修改”按鈕,在顯示器提示輸入舊的密碼,輸入舊額的密碼后,在按“確認(rèn)”按鈕,如果舊密碼錯(cuò)誤。蜂鳴器報(bào)警,返回待機(jī)狀態(tài)。如舊密碼正確,在顯示器提示輸入新的密碼,輸入密碼后按“確定”按鈕,在顯示器提示再次輸入新的密碼,再次輸入新的密碼后按“確定”按鈕,如果兩次輸入的新密碼一致,在顯示器提示修改密碼成功,否則蜂鳴器報(bào)警,之后均返回待機(jī)關(guān)鎖狀態(tài)。</p><p>  除開鎖密碼錯(cuò)誤系統(tǒng)自鎖外

6、,密碼鎖在一分鐘內(nèi)如果沒有接收到任何按鍵的情況下,均自動返回待機(jī)關(guān)鎖狀態(tài)。</p><p><b>  目的和意義</b></p><p>  隨著電子技術(shù)和計(jì)算機(jī)技術(shù)的飛速發(fā)展,單片機(jī)性能不斷完善,性能價(jià)格比顯著提高,技術(shù)日趨完善。由于單片機(jī)具有體積小、重量輕、價(jià)格便宜、功耗低、控制功能強(qiáng)及運(yùn)算速度快等特點(diǎn),因而在國民經(jīng)濟(jì)建設(shè)、軍事及家用電器等各個(gè)領(lǐng)域均得到了廣泛的

7、應(yīng)用。本設(shè)計(jì)利用單片機(jī)及附加電子元器件實(shí)現(xiàn)數(shù)據(jù)采集和控制算法,來完成某一實(shí)際功能,檢驗(yàn)并提高同學(xué)對整體電路設(shè)計(jì)和把握能力,了解單片機(jī)系統(tǒng)設(shè)計(jì)流程,以及電路板的實(shí)際制作和調(diào)試能力。同時(shí)也加強(qiáng)對數(shù)字電路、單片機(jī)和微機(jī)原理等課程知識的實(shí)際應(yīng)用能力,也為同類產(chǎn)品的進(jìn)一步發(fā)展奠定理論和實(shí)踐基礎(chǔ)。</p><p>  隨著人們生活水平的提高和安全意識的加強(qiáng),對安全的要求也就越來越高。鎖自古以來就是把守護(hù)門的鐵將軍,人們對它要

8、求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電子技術(shù)的發(fā)展,各類電子產(chǎn)品應(yīng)運(yùn)而生,電子密碼鎖就是其中之一。據(jù)有關(guān)資料介紹,電子密碼鎖的研究從20世紀(jì)30年代就開始了,在一些特殊場所早就有所應(yīng)用。這種鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼量)極大,可以與機(jī)械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無需攜帶金

9、屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實(shí)用的還是按鍵式電子密碼鎖。</p><p>  20世紀(jì)80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場合,且需要有電源提供能量,使用還局限在一定范圍,難以普及,所以對它的研究一直沒有明顯 進(jìn)展。</p>

10、<p>  在我國電子鎖整體水平尚處于國際七十年代左右,電子密碼鎖的成本還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進(jìn)國際先進(jìn)水平,現(xiàn)國內(nèi)有幾個(gè)廠生產(chǎn)供應(yīng)市場。但國內(nèi)自行研制開發(fā)的電子鎖,其市場結(jié)構(gòu)尚未形成,應(yīng)用還不廣泛。國內(nèi)的不少企業(yè)也引進(jìn)了世界上先進(jìn)的技術(shù),發(fā)展前景非??捎^。希望通過不斷的努力,使電子密碼鎖在我國也能得到廣泛應(yīng)用。</p><p>  四,總體方案和設(shè)計(jì)思路<

11、;/p><p>  1,總體方案:此次設(shè)計(jì)采用一種是用以AT89C52單片機(jī)為核 心的單片機(jī)控制方案。</p><p>  選用單片機(jī)AT89C52 作為本設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼鎖功能。在單片機(jī)的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接字符型液晶顯示器用于顯示。</p><p> 

12、 2,設(shè)計(jì)思路:根據(jù)上述功能介紹,密碼鎖系統(tǒng)可以分為用戶密碼輸入、顯示和控制報(bào)警3大功能,因此可以鍵盤模塊、顯示模塊、報(bào)警模塊、電子鎖控制模塊和單片機(jī)模塊。系統(tǒng)模塊圖如圖1所示。</p><p><b>  鍵盤電路設(shè)計(jì)</b></p><p>  功能鍵有確認(rèn)和復(fù)位,計(jì)數(shù)鍵。 </p><p><b>  顯示電路設(shè)計(jì)</b&

13、gt;</p><p>  顯示電路由4個(gè)共陽極數(shù)碼管構(gòu)成。軟件編程時(shí)采用動態(tài)顯示方法。</p><p>  軟件編程時(shí),按照下面的步驟顯示字符:</p><p> ?。?)、首先從P0口輸出共陽極字符的段碼;</p><p> ?。?)、然后從LCONi輸出低電平。</p><p><b>  報(bào)警電路設(shè)計(jì)

14、</b></p><p>  報(bào)警電路主要由PNP三極管和蜂鳴器構(gòu)成。</p><p>  LS1為一個(gè)5V的壓電蜂鳴器,當(dāng)對其1、2號引腳施加5V電壓時(shí),便會鳴叫。 當(dāng)ALARMCON輸出低電平時(shí),三極管飽和導(dǎo)通,蜂鳴器鳴叫;當(dāng)ALARMCON輸出高電平時(shí),三極管飽截止,蜂鳴器停止鳴叫。通過控制ALARMCON輸出低電平的時(shí)間長短來控制蜂鳴器長叫或短叫。</p>

15、<p><b>  電子鎖控制電路</b></p><p>  電子鎖控制電路主要由繼電器、三極管和發(fā)光二極管構(gòu)成。</p><p>  繼電器線圈的一個(gè)引腳接電源正極,另一端接NPN三極管的集電極。三極管的基極通過一個(gè)電阻接單片機(jī)的引腳。當(dāng)LOCKCON輸出高電平時(shí),三極管導(dǎo)通,繼電器線圈得電,觸點(diǎn)閉合,發(fā)光二極管發(fā)光,相當(dāng)于電子鎖閉鎖;當(dāng)LOCKCO

16、N輸出低電平時(shí),三極管截止,繼電器線圈失電,觸點(diǎn)釋放,發(fā)光二極管熄滅,相當(dāng)于電子鎖開鎖。圖中普通二極管是繼電器線圈的續(xù)流二極管,為感應(yīng)電動勢提供回路,以免損壞三極管。</p><p><b>  單片機(jī)電路</b></p><p>  單片機(jī)電路主要由單片機(jī)、振蕩電路和復(fù)位電路構(gòu)成。由于AT89C52內(nèi)部集成了12MHz的振蕩電路,所以系統(tǒng)外部未加。</p>

17、;<p><b>  五,軟件設(shè)計(jì)</b></p><p><b>  1,系統(tǒng)資源分配</b></p><p>  電子密碼鎖全部采用片內(nèi)程序寄存器。默認(rèn)寄存器組為00,在子寄存器中可切換為01,10.預(yù)定義R0為地址指針,R4為存儲計(jì)數(shù)值,R3用來做暫存器,R5、R6、R7用于延時(shí)子程序。系統(tǒng)的初始密碼沒有采用外接ROM設(shè)計(jì),直

18、接存于程序寄存器中,加電時(shí)傳輸,用于比較。故需要密碼緩存區(qū)用于存儲當(dāng)前輸入的密碼,密碼存儲區(qū)用于存儲當(dāng)前的正確密碼(復(fù)位后密碼存儲區(qū)應(yīng)為初始密碼,修改后為新的修改密碼)。所以預(yù)先定義數(shù)據(jù)存儲器的30H—35H的6個(gè)單元作為密碼緩存區(qū),36H—3BH的6個(gè)單元作為密碼存儲區(qū)。作為顯示輸出,應(yīng)設(shè)顯示存儲區(qū),故預(yù)定義40H—45H的6個(gè)單元作為顯示緩存區(qū)。比較應(yīng)有標(biāo)志位表示正確與否,故預(yù)先定義采用程序狀態(tài)的第五位即PSW.5作為比較結(jié)果標(biāo)志位

19、,規(guī)定等于1為錯(cuò)誤,等于0為正確。</p><p><b>  2,軟件流程圖設(shè)計(jì)</b></p><p>  3,源程序設(shè)計(jì)及關(guān)鍵模塊程序說明</p><p>  #include<reg52.h></p><p>  #include<intrins.h></p><p&g

20、t;  sbit input_code_but = P1^5; //輸入密碼鍵</p><p>  sbit ensure_code_but = P1^4; //確定密碼及移到下一位輸入鍵</p><p>  sbit reset_code_but = P1^3; //重置密碼鍵

21、</p><p>  sbit code_right_light = P1^2;//密碼正確指示燈</p><p>  sbit code_wrong_light = P1^1; //密碼錯(cuò)誤指示燈</p><p>  sbit code_wrong_ring = P1^

22、0; //密碼錯(cuò)誤報(bào)警器</p><p>  unsigned show[]={40,235,50,162,225,164,36,234,32,160};</p><p>  unsigned char code_dat[4],f_code_dat[4];</p><p>  unsigned char key,added,key1,added1,ch,ch1

23、,ch2;</p><p>  void delay(unsigned int ms);</p><p>  void show_code(unsigned char val,unsigned char val1,unsigned char val2,unsigned char val3);</p><p>  void judge_reset_bu

24、t(void);</p><p>  void judge_input(void);</p><p>  void judge_input_but(void);</p><p>  void judege_ensure_but(void);</p><p>  void show_dat(unsigned int n);</p>

25、<p>  void main()</p><p><b>  {</b></p><p>  unsigned int i,fault_pass3,ad1,ad2,ad3,ad4,val;</p><p>  unsigned char fault;</p><p>  f_code_dat[0]=f_co

26、de_dat[1]=f_code_dat[2]=f_code_dat[3]=8; //設(shè)置初始 密碼為8888</p><p>  ch1=0; //以下程序?yàn)橛脩糨斎朊艽a</p><p><b>  fault=0;</b></p><p><b>  while(1)</b></p><

27、;p><b>  {</b></p><p><b>  i=0;</b></p><p>  ad1=ad2=ad3=ad4=10;</p><p>  judege_ensure_but();</p><p>  if(key1==1)</p><p><

28、b>  {</b></p><p><b>  key1=0;</b></p><p><b>  ch1+=1;</b></p><p>  added1=1;</p><p><b>  }</b></p><p>  if(0=

29、=ch1)</p><p><b>  {</b></p><p>  while(ad1--)</p><p><b>  {</b></p><p>  judge_input();</p><p>  code_dat[0]=ch;</p><p&

30、gt;  show_code(code_dat[0],0,0,0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(1==ch1)</p><p><b>  {</b></p><p>  w

31、hile(ad2--)</p><p><b>  {</b></p><p>  judge_input();</p><p>  code_dat[1]=ch;</p><p>  show_code(code_dat[0],code_dat[1],0,0);</p><p><

32、b>  }</b></p><p><b>  }</b></p><p>  if(2==ch1)</p><p><b>  {</b></p><p>  while(ad3--)</p><p><b>  {</b>&

33、lt;/p><p>  judge_input();</p><p>  code_dat[2]=ch;</p><p>  show_code(code_dat[0],code_dat[1],code_dat[2],0);</p><p><b>  }</b></p><p><b> 

34、 }</b></p><p>  if(3==ch1)</p><p><b>  {</b></p><p>  while(ad4--)</p><p><b>  {</b></p><p>  judge_input();</p>&

35、lt;p>  code_dat[3]=ch;</p><p>  show_code(code_dat[0],code_dat[1],code_dat[2],code_dat[3]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(4

36、==ch1)</p><p><b>  {</b></p><p>  if((f_code_dat[0]==code_dat[0])&&(f_code_dat[1]==code_dat[1])&&(f_code_dat[2]==code_dat[2])&&(f_code_dat[3]==code_dat[3]))//

37、驗(yàn)證用戶所輸入的密碼是否正確</p><p><b>  {</b></p><p><b>  val=10;</b></p><p>  while(val--)</p><p><b>  {</b></p><p>  code_right_li

38、ght=0; //用戶密碼輸入正確指示燈亮,表示密碼鎖已解開</p><p>  delay(100); </p><p><b>  }</b></p><p>  code_right_light=1;</p><p>  if(!reset_code_but)</p>&l

39、t;p><b>  {</b></p><p><b>  ch1=0;</b></p><p>  judge_reset_but();</p><p><b>  }</b></p><p><b>  }</b></p><

40、p>  else//以下實(shí)現(xiàn)當(dāng)用戶輸入的密碼3次錯(cuò)誤時(shí),聲光報(bào)警即指示燈閃爍的同時(shí)蜂鳴器報(bào)警</p><p><b>  {</b></p><p><b>  i=100;</b></p><p>  while(i--)</p><p><b>  {</b><

41、/p><p>  code_wrong_light=!code_wrong_light;</p><p>  delay(10);</p><p>  code_wrong_ring=!code_wrong_ring;</p><p>  delay(10);</p><p><b>  }</b>

42、</p><p>  fault+=1;</p><p><b>  }</b></p><p><b>  ch1=0;</b></p><p><b>  }</b></p><p>  if(!reset_code_but)</p>

43、<p>  judge_reset_but();</p><p>  if(3==fault) //判斷密碼是否輸錯(cuò)三次</p><p><b>  {</b></p><p>  fault_pass3=6000;</p><p>  while(fault_pass3--)</p>

44、<p><b>  {</b></p><p>  show_dat(fault_pass3);</p><p><b>  }</b></p><p><b>  fault=0;</b></p><p><b>  } </b&

45、gt;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void judge_reset_but(void) //重置密碼</p><p><b>  {</b></p><p>  unsign

46、ed int i,fault_pass3,val;</p><p>  unsigned char ah1,ah2,ah3,ah4,fault;</p><p>  while(!reset_code_but);</p><p>  while(reset_code_but)</p><p><b>  {</b>&l

47、t;/p><p>  ah1=ah2=ah3=ah4=10;</p><p>  f_code_dat[0]=f_code_dat[1]=f_code_dat[2]=f_code_dat[3]=8; //初始密碼為8888</p><p>  judege_ensure_but();</p><p>  if(key1==1)</p>

48、;<p><b>  {</b></p><p><b>  key1=0;</b></p><p><b>  ch1+=1;</b></p><p>  added1=1;</p><p><b>  }</b></p>

49、<p>  if(0==ch1)</p><p><b>  {</b></p><p>  while(ah1--)</p><p><b>  {</b></p><p>  judge_input();</p><p>  code_dat[0]=ch;<

50、;/p><p>  show_code(code_dat[0],0,0,0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(1==ch1)</p><p><b>  {</b></p>

51、;<p>  while(ah2--)</p><p><b>  {</b></p><p>  judge_input();</p><p>  code_dat[1]=ch;</p><p>  show_code(code_dat[0],code_dat[1],0,0);</p>&l

52、t;p><b>  }</b></p><p><b>  }</b></p><p>  if(2==ch1)</p><p><b>  {</b></p><p>  while(ah3--)</p><p><b>  {<

53、/b></p><p>  judge_input();</p><p>  code_dat[2]=ch;</p><p>  show_code(code_dat[0],code_dat[1],code_dat[2],0);</p><p><b>  }</b></p><p><

54、;b>  }</b></p><p>  if(3==ch1)</p><p><b>  {</b></p><p>  while(ah4--)</p><p><b>  {</b></p><p>  judge_input();</p>

55、<p>  code_dat[3]=ch;</p><p>  show_code(code_dat[0],code_dat[1],code_dat[2],code_dat[3]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  i

56、f(4==ch1)</p><p><b>  {</b></p><p>  if((f_code_dat[0]==code_dat[0])&&(f_code_dat[1]==code_dat[1])&&(f_code_dat[2]==code_dat[2])&&(f_code_dat[3]==code_dat[3])

57、) //判斷輸入的舊密碼是否正確</p><p><b>  {</b></p><p><b>  val=10;</b></p><p>  while(val--)</p><p><b>  {</b></p><p>  code_right_

58、light=0; //舊密碼正確指示燈亮</p><p>  delay(100); </p><p><b>  }</b></p><p>  code_right_light=1;</p><p>  while(!reset_code_but); //以下為輸入重置密碼</p&

59、gt;<p>  while(reset_code_but)</p><p><b>  {</b></p><p>  ah1=ah2=ah3=ah4=10;</p><p>  judege_ensure_but();</p><p>  if(key1==1)</p><p>

60、;<b>  {</b></p><p><b>  key1=0;</b></p><p><b>  ch2+=1;</b></p><p>  added1=1;</p><p><b>  }</b></p><p>  

61、if(0==ch2)</p><p><b>  {</b></p><p>  while(ah1--)</p><p><b>  {</b></p><p>  judge_input();</p><p>  f_code_dat[0]=ch;</p>

62、<p>  show_code(f_code_dat[0],0,0,0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(1==ch2)</p><p><b>  {</b></p><

63、p>  while(ah2--)</p><p><b>  {</b></p><p>  judge_input();</p><p>  f_code_dat[1]=ch;</p><p>  show_code(f_code_dat[0],f_code_dat[1],0,0);</p><

64、;p><b>  }</b></p><p><b>  }</b></p><p>  if(2==ch2)</p><p><b>  {</b></p><p>  while(ah3--)</p><p><b>  {</

65、b></p><p>  judge_input();</p><p>  f_code_dat[2]=ch;</p><p>  show_code(f_code_dat[0],f_code_dat[1],f_code_dat[2],0);</p><p><b>  }</b></p><p

66、><b>  }</b></p><p>  if(3==ch2)</p><p><b>  {</b></p><p>  while(ah4--)</p><p><b>  {</b></p><p>  judge_input();<

67、;/p><p>  f_code_dat[3]=ch;</p><p>  show_code(f_code_dat[0],f_code_dat[1],f_code_dat[2],f_code_dat[3]);</p><p><b>  }</b></p><p><b>  }</b></p&

68、gt;<p>  if(4==ch2)</p><p><b>  {</b></p><p><b>  ch1=0;</b></p><p><b>  break;</b></p><p><b>  }</b></p>

69、<p><b>  }</b></p><p>  } else //以下為輸入舊密碼錯(cuò)誤時(shí)光聲報(bào)警器報(bào)警程序</p><p><b>  {</b></p><p><b>  i=100;</b></p><p>  while(i--)</p

70、><p><b>  {</b></p><p>  code_wrong_light=!code_wrong_light; </p><p>  delay(10);</p><p>  code_wrong_ring=!code_wrong_ring;</p><p>  delay(10);

71、</p><p><b>  }</b></p><p>  fault+=1;</p><p><b>  }</b></p><p><b>  ch1=0;</b></p><p><b>  }</b></p

72、><p>  if(3==fault)</p><p><b>  {</b></p><p>  fault_pass3=6000;//自鎖計(jì)時(shí)60s</p><p>  while(fault_pass3--)</p><p><b>  {</b></p>&

73、lt;p>  show_dat(fault_pass3);</p><p><b>  }</b></p><p><b>  fault=0;</b></p><p><b>  } </b></p><p><b>  }</b>

74、</p><p><b>  }</b></p><p>  void delay(unsigned int ms)</p><p><b>  {</b></p><p>  unsigned int i;</p><p>  while(ms--)</p>

75、<p><b>  {</b></p><p><b>  i=1000;</b></p><p>  while(i--);</p><p><b>  }</b></p><p><b>  }</b></p><p

76、>  void show_code(unsigned char val,unsigned char val1,unsigned char val2,unsigned char val3) //顯示用戶輸入的數(shù)字</p><p><b>  {</b></p><p><b>  P3=7;</b></p><p>

77、;  P2=show[val];</p><p><b>  delay(2);</b></p><p><b>  P3=11;</b></p><p>  P2=show[val1];</p><p><b>  delay(2);</b></p><p

78、><b>  P3=13;</b></p><p>  P2=show[val2];</p><p><b>  delay(2);</b></p><p><b>  P3=14;</b></p><p>  P2=show[val3];</p><

79、p><b>  delay(2);</b></p><p><b>  }</b></p><p>  void judge_input(void)</p><p><b>  {</b></p><p>  judge_input_but();</p>&

80、lt;p>  if(key==1)</p><p><b>  {</b></p><p><b>  added=1;</b></p><p><b>  ch+=1;</b></p><p><b>  key=0;</b></p>

81、<p><b>  }</b></p><p>  if(ch==10)</p><p><b>  ch=0;</b></p><p><b>  }</b></p><p>  void judge_input_but(void)</p><

82、p><b>  {</b></p><p>  unsigned char i,j;</p><p><b>  i=4,j=0;</b></p><p>  if(0==input_code_but) //judge the press button </p><p><b&

83、gt;  {</b></p><p>  delay(10);</p><p>  while(i--)</p><p><b>  {</b></p><p>  if(0==input_code_but) //really press the button </p><p&g

84、t;<b>  j++;</b></p><p>  if((j>2)&&(added==0)) </p><p><b>  key=1;</b></p><p><b>  }</b></p><p><b>  }</b>

85、;</p><p><b>  else </b></p><p><b>  {</b></p><p><b>  key=0;</b></p><p><b>  added=0;</b></p><p><b> 

86、 }</b></p><p><b>  }</b></p><p>  void judege_ensure_but(void)</p><p><b>  {</b></p><p>  unsigned char i,j;</p><p><b&g

87、t;  i=4,j=0;</b></p><p>  if(0==ensure_code_but) //judge the press button </p><p><b>  {</b></p><p>  delay(10);</p><p>  while(i--)</p>&

88、lt;p><b>  {</b></p><p>  if(0==ensure_code_but) //really press the button </p><p><b>  j++;</b></p><p>  if((j>2)&&(added1==0)) </p&g

89、t;<p><b>  key1=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b>&

90、lt;/p><p><b>  key1=0;</b></p><p><b>  added1=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void show_

91、dat(unsigned int n) //連續(xù)3次開鎖密碼錯(cuò)誤,系統(tǒng)自鎖計(jì)時(shí)顯示程序</p><p><b>  {</b></p><p>  unsigned int qw,bw,sw,gw;</p><p>  qw=n/1000; //千位</p><p>  bw=(n/100)%10;//百位

92、</p><p>  sw=(n/10)%10; // 十位</p><p>  gw=n%10; // 個(gè)位</p><p><b>  P3=14;</b></p><p>  P2=show[gw];// 顯示個(gè)位</p><p><b>  delay(2)

93、;</b></p><p><b>  P3=13;</b></p><p>  P2=show[sw]; // 顯示十位</p><p><b>  delay(2);</b></p><p><b>  P3=11;</b></p><

94、;p>  P2=show[bw]; // 顯示百位</p><p><b>  delay(2);</b></p><p><b>  P3=7;</b></p><p>  P2=show[qw]; //顯示千位</p><p>  delay(2);</p><

95、;p><b>  }</b></p><p><b>  六,心得體會</b></p><p>  這次的課程設(shè)計(jì),在老師的指導(dǎo)及要求下,我們開始了為期2周的單片機(jī)電子密碼鎖的課程設(shè)計(jì)。與以前相比,這次的課程設(shè)計(jì)可謂是要完全靠我們自己,在沒有老師的督促引導(dǎo)下要完成老師布置的課程設(shè)計(jì)內(nèi)容,這一點(diǎn)相對于我們而言是很難的。但是,我們知道在做課程設(shè)

96、計(jì)的過程中肯定會遇到很多的問題。特別是在程序編寫的過程中,我們可能會費(fèi)很大的力氣去編寫程序,我想再這個(gè)過程中是很困難的,但是,我們不怕這些?;貋砗螅紫龋铱戳艘幌聦?shí)驗(yàn)指導(dǎo)書的內(nèi)容和要求,對課程設(shè)計(jì)的要求做了一些了解。再者,我為了要能夠編寫出程序,對課程設(shè)計(jì)要求看了很多遍,熟練掌握了各種復(fù)雜的邏輯關(guān)系,還有怎樣通過程序去實(shí)現(xiàn)各種邏輯關(guān)系,還有編程的規(guī)范性,也是要我們小心的,學(xué)會利用標(biāo)準(zhǔn)去實(shí)現(xiàn)編程。</p><p>

97、;  而且,在此次課程設(shè)計(jì)中,我還對keil軟件進(jìn)行編程,進(jìn)行了進(jìn)一步的了解與應(yīng)用。在這個(gè)過程中讓我深刻的學(xué)習(xí)各種軟件的利用以及各種軟件對相應(yīng)程序的應(yīng)用,特別是在仿真軟件的應(yīng)用中,是我對各種軟件的應(yīng)用有了更大一步的提高,用仿真來實(shí)現(xiàn)程序的功能能否實(shí)現(xiàn)。</p><p>  另外,此次的課程設(shè)計(jì)也使我明白了平時(shí)要注重理論與實(shí)踐的統(tǒng)一,這是很重要的。只有把理論與實(shí)踐相結(jié)合,才能達(dá)到真正的理解效果。同時(shí),也培養(yǎng)我們在困

98、難中,怎樣去認(rèn)識自己的不足,與不懂的地方然后去慢慢學(xué)習(xí),去鞏固自己的不足,加強(qiáng)學(xué)習(xí),努力提升自己。</p><p>  在整個(gè)課程設(shè)計(jì)過程中,我懂得了很多東西,遇到問題不會的主動與他人討論,向他人請教,雖然是問別人的,但是還是能做到把它化為自己的東西,為自己培養(yǎng)了思考和設(shè)計(jì)的能力。雖然,這個(gè)課程設(shè)計(jì)只有短短的2周,但是,我還是學(xué)會了很多東西,很有意義。希望以后能再接再厲,爭取做得更好。</p>&l

99、t;p><b>  七,參考文獻(xiàn)</b></p><p>  《51單片機(jī)C語言應(yīng)用開發(fā)技術(shù)大全》龍脈工作室 劉坤、宋戈、趙紅波、張憲棟 編著,人民郵電出版社</p><p>  《51單片機(jī)應(yīng)用設(shè)計(jì)與仿真——基于Keil與Proteus》丁明亮、唐前輝 主編,北京航空航天大學(xué)出版社</p><p>  《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)——基

溫馨提示

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

評論

0/150

提交評論