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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  課題名稱:基于單片機的電子密碼鎖</p><p><b>  班級:</b></p><p>  學號: </p><p><b>  姓名:</b></p><p><b>  指導老師:</b></p&g

2、t;<p><b>  時間:</b></p><p><b>  摘要</b></p><p>  在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。具有防盜報警等功能的

3、電子密碼鎖代替密碼量少、安全性差的機械式密碼鎖已是必然趨勢。隨著科學技術的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應運而生。密碼鎖具有安全性高、成本低、功耗低、易操作、記住密碼即可開鎖等優(yōu)點。 目前使用的電子密碼鎖大部分是基于單片機技術,以單片機為主要器件,其編碼器與解碼器的生成為軟件方式。 本系統(tǒng)由AT89C51單片機系統(tǒng)(主要是AT89C51單片機最小系

4、統(tǒng))、4×4矩陣鍵盤、1602LCD顯示和報警系統(tǒng)等組成,具有設置、修改六位用戶密碼、超次報警、密碼錯誤報警等功能(本設計由P0口控制LCD顯示,由P1口控制矩陣鍵盤含有0-9數字鍵和A-E功能鍵。初始密碼為“123456”。當輸入0~9的數字時,可以輸入密碼,不超過6位,輸入完成后按下“A”鍵開鎖,密碼正確時LED點亮,液晶</p><p>  關鍵詞 AT89C51 1602LCD 電子密碼

5、鎖 4×4鍵盤</p><p><b>  Abstract</b></p><p>  In the day-to-day living and working in the residential sector and the safety precautions, units of paper files, financial statements,

6、 and some personal information to the preservation of more than locking the solution to the problem. If the use of traditional mechanical key to unlock, people often need to carry more keys, a very inconvenient to use, a

7、nd after the loss of key security that is greatly reduced. With anti-theft alarm function instead of the password is less electronic lock, securit</p><p>  Key words AT89C51 1602LCD Electronic passwor

8、d lock 4×4 keyboard </p><p><b>  目錄</b></p><p><b>  摘要2</b></p><p><b>  第一章 緒論4</b></p><p>  1.1 電子密碼鎖簡介4</p>

9、<p>  1.2 本設計所要實現的目標5</p><p>  1.3 設計方案簡介5</p><p>  第二章 硬件電路設計5</p><p><b>  2.1設計原理5</b></p><p>  2.2總體電路圖6</p><p>  2.3 鍵盤電路7

10、</p><p>  2.4 顯示器電路8</p><p>  2.5 報警電路8</p><p>  2.6 密碼存儲電路9</p><p>  2.7 單片機電路10</p><p>  第三章 系統(tǒng)軟硬件設置及調試11</p><p>  3.1 Keil c51 簡介

11、11</p><p>  3.2 程序源代碼12</p><p>  3.3 調試過程19</p><p>  3.4 Proteus仿真19</p><p>  第四章 主要元器件介紹20</p><p>  4.1 主控芯片AT89C5120</p><p>  4

12、.2 存儲芯片24C04A22</p><p><b>  結論與展望23</b></p><p><b>  致謝24</b></p><p><b>  參考文獻24</b></p><p><b>  第一章 緒論</b></p>

13、<p>  1.1 電子密碼鎖簡介</p><p>  電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品?,F在應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現的。其性能和安全性已大大超過了機械鎖。其特點如下:</p><p>  1) 保密性好,編碼

14、量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零。</p><p>  2) 密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因 人員的更替而使鎖的密級下降。</p><p>  3) 誤碼輸入保護,當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動。</p><p>  4) 無活動零件,不會磨損,壽命長。</p><p>  5) 使用靈活性

15、好,不像機械鎖必須佩帶鑰匙才能開鎖。 </p><p>  6) 電子密碼鎖操作簡單易行,一學即會。</p><p>  1.2 本設計所要實現的目標</p><p>  本設計所要實現的目標本設計所要實現的目標本設計所要實現的目標 本設計采用單片機為主控芯片,結合外圍電路,組成電子密碼鎖,用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,密碼輸

16、入錯誤有提示,為了提高安全性,當密碼輸入錯誤三次將報警。密碼可以有用戶自己修改設定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入就的密碼,在輸入新密碼的時候要二次確認,以防止誤操作。 </p><p>  1.3 設計方案簡介</p><p>  采用以單片機為核心的控制方案 </p><p>  由于單片機種類繁多,各種型號都有其一定的應用環(huán)境,因此在選用時

17、要多加比較,合理選擇,以期獲得最佳的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數量和優(yōu)先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內有無時鐘振蕩器、有無上電復位功能等。在開發(fā)過程中單片機還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應性、技術支持和服務等等因素]1

18、[。基于以上因素本設計選用單片機AT89C51作為本設計的核心元件,利用單片機靈活的編程設計和豐富的I/O端口,及其控制的準確性,實現基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接AT24C02芯片用于密碼的存儲,外接LCD1602顯示器用于顯示作用。當用戶需要開鎖時,先按鍵盤開鎖鍵之后按鍵盤的數字鍵0-9輸入密碼。密碼輸完后按下確認鍵,如果密碼輸入正確則開鎖,不正確顯示密碼錯誤重新輸入密碼,當三次

19、密碼錯誤則發(fā)出報警;當用戶需要修改密碼時,先按下鍵盤設置鍵</p><p>  第二章 硬件電路設計</p><p><b>  2.1設計原理</b></p><p>  本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數字密碼和進行各種功能的實現。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經過單片機對用

20、戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當然也可以用繼電器的常開觸點去控制電磁鐵吸合線圈。 本系統(tǒng)共有兩部分構成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分組成,軟件部分對應的由主程序、初始化程序、L

21、CD顯示程序、鍵盤掃描程序、啟動程序、關閉程序、建功能程序、密碼設置程序、EEPROM讀寫程序和延時程序等組成。</p><p><b>  2.2總體電路圖</b></p><p>  在確定了選用什么型號的單片機后,就要確定在外圍電路,其外圍電路包括電源輸入部分、鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分組成,根據實際情況鍵盤輸入

22、部分選擇4*4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲部分選用24C04A芯片來完成。</p><p><b>  其原理圖如圖所示:</b></p><p><b>  2.3 鍵盤電路</b></p><p>  由于本設計所用到的按鍵數量較多而不適合用獨立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由

23、行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設計中使用的這個4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比如清空顯示功能等。鍵盤的每個按鍵功能在程序設計中設置 。其大體功能(看鍵盤按鍵上的標記)及與單片機引腳接法如圖所示:</p><p><b>  2.4 顯示器電路</b></p>

24、<p>  為了提高密碼鎖的密碼顯示效果能力。本設計的顯示部分由液晶顯示器LCD1602取代普通的數碼管來完成。只有按下鍵盤上的開啟按鍵后,顯示器才處于開啟狀態(tài)。同理只有按下關閉按鍵后顯示器才處于關閉狀態(tài)。否則顯示器將一直處于初始狀態(tài),當需要對密碼鎖進行開鎖時,按下鍵盤上的開鎖按鍵后利用鍵盤上的數字鍵0-9輸入密碼,每按下一個數字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正

25、確的話, LCD子顯示“RIGHT”,單片機其中P2.0引角會輸出低電平,使三極管T2導通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“ERROR”,P2.0輸出的是高電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出密碼鎖所處的狀態(tài) 。其顯示部分引腳接口如圖所示:</p><p><b>  2.5 報警電路</b></p><p&g

26、t;  報警部分由陶瓷壓電發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當有鍵按下時,“?!甭?,每按一下,發(fā)聲一次,密碼正確時,密碼正確時LED點亮,液晶屏顯示開鎖成功,揚聲器不發(fā)聲直接開鎖,如圖所示。</p><p>  當密碼輸入錯誤時,單片機的P3.7引腳為低電平,三極管T3導喇叭發(fā)出噪鳴聲報警。如圖所示: </p><p>  2.6 密碼存儲電路</p><p&g

27、t;  24C04A是ATMEL公司的2KB字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。其電路如圖所示</p><p><b>  2.7 單片機電路</b></p><p>  AT89C51是一種帶4

28、K字節(jié)FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器

29、組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案</p><p>  第三章 系統(tǒng)軟硬件設置及調試</p><p>  本系統(tǒng)軟件設計由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、密碼設置程序、EEPROM讀寫程序和延時程序等組成</p>

30、<p>  3.1 Keil c51 簡介</p><p>  單片機的開發(fā)離不開必要的硬件同樣也離不開軟件編寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法一種是手工匯編另一種是機器匯編。隨著單片機開發(fā)技術的不斷發(fā)展單片機的開發(fā)軟件也在不斷的發(fā)展Keil軟件是目前最流行開發(fā)51單片機的軟件。 在硬件電路設計好的同時也需要軟件的開發(fā)及使用。目前單片機類的課程設計大多采用Keil

31、軟件來進行程序的編寫。Keil不僅支持C語言還支持匯編語言。支持不同型號的MCS系類的51單片機的型號。Keil軟件已從早期的第一代發(fā)展到第四代了有了更強大的功能。 這款軟件的操作方法也很簡單甚至有些必須采用很復雜的硬件電路才能完成的工作用軟件編程有時會變得很簡單這樣可以把復雜電路的輸入信號直接用信號發(fā)生器給定或是用電源來給定通過對電壓電流的調節(jié)來實現。Keil 工程的建立打開已安裝好的開發(fā)環(huán)境進入界面后選擇project然

32、后在其下拉菜單中選擇new project選項如圖所示</p><p>  3.2 程序源代碼</p><p><b>  主程序代碼如下:</b></p><p>  #include<reg51.h></p><p>  #include<string.h></p><

33、p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar Pre_KeyNo=16,KeyNo=16;</p><p>  uchar code Title_Text[]="Your Password...";</p>

34、<p>  uchar DSY_BUFFER[10]="";</p><p>  uchar UserPassword[10]=""; </p><p>  void LCD_Init();</p><p>  void Display_String(uchar *str, uchar LineNo);</p

35、><p>  void IIC_24C04_Init();</p><p>  void Beep();</p><p>  uchar RecString(uchar Slave, uchar Subaddr, uchar *Buffer,uchar N);</p><p>  uchar SendString(uchar Slave, uch

36、ar Subaddr, uchar *Buffer, uchar N);</p><p>  uchar Keys_Scan();</p><p>  sbit LED_OPEN=P2^7;</p><p>  sbit BEEP=P3^7;</p><p>  void delayms(uint x)</p><p>

37、;<b>  { </b></p><p><b>  uchar i;</b></p><p>  while(x--)</p><p><b>  {</b></p><p>  for(i=0;i<120;i++);</p><p><

38、b>  }</b></p><p><b>  }</b></p><p>  void Beep()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=0;i

39、<100;i++)</p><p><b>  {</b></p><p>  delayms(1);BEEP=~BEEP;</p><p><b>  }</b></p><p><b>  BEEP=0;</b></p><p><b&g

40、t;  }</b></p><p>  void Clear_Password()</p><p><b>  { </b></p><p>  UserPassword[0]='\0';</p><p>  DSY_BUFFER[0]='\0';</p><

41、;p><b>  }</b></p><p>  void main()</p><p><b>  { </b></p><p>  uchar i=0;</p><p>  uchar IIC_Password[10];</p><p>  uchar IS_Val

42、id_User=0;</p><p>  P0=P1=P2=0xff;</p><p>  TMOD=0x02;</p><p><b>  TH0=175;</b></p><p><b>  TL0=175;</b></p><p><b>  TR0=1;&l

43、t;/b></p><p>  delayms(10);</p><p>  LCD_Init();</p><p>  IIC_24C04_Init();</p><p>  Display_string(Title_Text,0x00);</p><p>  RecString(0xa0,0,IIC_Pass

44、word,6);</p><p>  IIC_Password[6]='\0';</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  P1=0xf0;</b></p><p

45、>  if(P1!=0xf0) KeyNo=Keys_Scan();</p><p>  if(Pre_KeyNo!=KeyNo)</p><p><b>  { </b></p><p><b>  if(i<10)</b></p><p><b>  { </b>

46、;</p><p>  switch( KeyNo )</p><p><b>  { </b></p><p>  case 0: case 1: case 2: case 3; case 4:</p><p>  case 5: case 6: case 7: case 8: case 9:</p>&

47、lt;p><b>  if(i=0)</b></p><p>  Display_String(" ",0x40);</p><p>  UserPassword[i]=KeyNo+'0';</p><p>  UserPassword[i+1]='\0';</p>&

48、lt;p>  DSY_BUFFER[i]='*';</p><p>  DSY_BUFFER[i+1]='\0';</p><p>  Display_String(DSY_BUFFER,0x40);</p><p><b>  i++;</b></p><p><b> 

49、 break;</b></p><p><b>  case 10: </b></p><p>  if(strcmp(UserPassword,IIC_Password)==0)</p><p><b>  {</b></p><p>  LED_OPEN=0;</p>

50、<p>  Clear_Password();</p><p>  Display_String("Unlock ok! ",0x40);</p><p>  IS_Valid_User=1;</p><p><b>  }</b></p><p><b>  else&l

51、t;/b></p><p><b>  { </b></p><p>  LED_OPEN=1;</p><p>  Clear_Password();</p><p>  DisPlay_String("error! ",0x40);</p><p>  IS_Va

52、lid_User=0;</p><p><b>  }</b></p><p><b>  i=0;</b></p><p><b>  break;</b></p><p><b>  case 11:</b></p><p> 

53、 LED_OPEN=1;</p><p>  Clear_Password();</p><p>  Display_string(Title_Text,0x00);</p><p>  Display_String("",0x40);</p><p><b>  i=0;</b></p>

54、<p>  IS_Valid_User=0;</p><p><b>  break;</b></p><p><b>  case 12:</b></p><p>  if(!IS_Valid_User) Display_string("No rights! ",0x40);</

55、p><p><b>  else</b></p><p><b>  { </b></p><p><b>  i=0;</b></p><p>  Display_String("New Password: ",0x00);</p><p

56、>  Display_String(" ",0x40);</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 13:</b></p><p>  if(!IS_Valid_

57、User ) Display_string("No rights! ",0x40);</p><p><b>  else</b></p><p><b>  {</b></p><p>  SendString(0xa0,0,UserPassword,6);</p><p>

58、  RecString(0xa0,0,IIC_Password,6);</p><p>  IIC_Password[6]='\0';</p><p><b>  i=0;</b></p><p>  Display_String(Title_Text,0x00);</p><p>  Display_S

59、tring("Password Saved!" , 0x40);</p><p><b>  }</b></p><p><b>  case 14:</b></p><p><b>  i=0;</b></p><p>  Clear_Password()

60、;</p><p>  Display_String("Password saved!",0x40);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  Beep();</b></p>

61、<p>  Pre_KeyNo=KeyNo;</p><p><b>  }</b></p><p>  delayms(100);</p><p><b>  }</b></p><p><b>  }</b></p><p>  24C04

62、密碼存儲器子程序代碼如下:</p><p>  #include<reg51.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><

63、;p>  #define delay4us();{_nop_();_nop_();_nop_();_nop_();}</p><p>  sbit SCL=P3^2;</p><p>  sbit SDA=P3^3;</p><p>  void start()</p><p><b>  {</b></p&

64、gt;<p>  SDA=1;SCL=1;delay4us();SDA=1;delay4us();SCL=0;</p><p><b>  }</b></p><p>  void stop()</p><p><b>  { </b></p><p>  SDA=0;SCL=1;de

65、lay4us();SDA=1;delay4us();SCL=0;</p><p><b>  }</b></p><p>  void IIC_24C04_Init()</p><p><b>  { </b></p><p>  SCL=0;stop();</p><p>

66、;<b>  }</b></p><p>  void ACK()</p><p><b>  { </b></p><p>  SDA=0;SCL=1;delay4us();SCL=0;SDA=1;</p><p><b>  }</b></p><p&

67、gt;  void NO_ACK()</p><p><b>  { </b></p><p>  SDA=1;SCL=1;delay4us();SCL=0;SDA=0;</p><p><b>  }</b></p><p>  uchar RecByte()</p><p&

68、gt;<b>  { </b></p><p>  uchar i,rd;</p><p><b>  rd=0x00;</b></p><p><b>  SDA=1;</b></p><p>  for(i=0;i<8;i++)</p><p&g

69、t;<b>  { </b></p><p>  SCL=1;rd<<=1;rd|=SDA;delay4us();SCL=0;delay4us();</p><p><b>  }</b></p><p><b>  SCL=0;</b></p><p>  de

70、lay4us();</p><p>  return rd;</p><p><b>  }</b></p><p>  uchar SendByte(uchar wd)</p><p><b>  { </b></p><p><b>  uchar i;<

71、/b></p><p><b>  bit ack0;</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  SDA= (bit)(wd&0x80);</p><p>  _nop_();

72、_nop_();SCL=1;delay4us();SCL=0;wd<<=1;</p><p><b>  }</b></p><p>  delay4us();</p><p><b>  SDA=1;</b></p><p><b>  SCL=1;</b><

73、;/p><p>  delay4us();</p><p>  ack0=!SDA;</p><p><b>  SCL=0;</b></p><p>  delay4us();</p><p>  return ack0;</p><p><b>  }</b

74、></p><p>  uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)</p><p><b>  { </b></p><p><b>  uchar i;</b></p><p><b>  s

75、tart();</b></p><p>  if (!SendByte(Slave)) return 0;</p><p>  if(!SendByte(Subaddr)) return 0;</p><p>  for(i=0;i<N;i++)</p><p><b>  { </b></

76、p><p>  if(!SendByte(Buffer[i])) return 0;</p><p><b>  }</b></p><p><b>  stop();</b></p><p><b>  return 1;</b></p><p><

77、;b>  }</b></p><p>  uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>

78、<b>  start();</b></p><p>  if (!SendByte(Slave)) return 0;</p><p>  if(!SendByte(Subaddr)) return 0;</p><p><b>  start();</b></p><p>  if(!Se

79、ndByte(Slave+1)) return 0;</p><p>  for(i=0;i<N-1;i++)</p><p><b>  { </b></p><p>  Buffer[i]=RecByte();</p><p><b>  ACK();</b></p>

80、<p><b>  }</b></p><p>  Buffer[N-1]=RecByte();</p><p><b>  NO_ACK();</b></p><p><b>  stop();</b></p><p><b>  return 1;<

81、;/b></p><p><b>  }</b></p><p><b>  按鍵程序代碼如下:</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  

82、#define uint unsigned int</p><p>  void delayms(uint x);</p><p>  uchar keys_scan()</p><p><b>  { </b></p><p>  uchar tmp,KeyNo=0;</p><p><b

83、>  P1=0x0f;</b></p><p>  delayms(1);</p><p>  tmp=P1^0x0f;</p><p>  switch(tmp)</p><p><b>  { </b></p><p>  case 1: KeyNo=0; break;&l

84、t;/p><p>  case 2: KeyNo=1; break;</p><p>  case 4: KeyNo=2; break;</p><p>  case 8: KeyNo=3; break;</p><p>  default: KeyNo=16;</p><p><b>  }</b>

85、</p><p><b>  P1=0xf0;</b></p><p>  delayms(1);</p><p>  tmp=P1>>4^0x0f;</p><p>  switch(tmp)</p><p><b>  { </b></p>&l

86、t;p>  case 1: KeyNo+=0; break;</p><p>  case 2: KeyNo+=4; break;</p><p>  case 4: KeyNo+=8; break;</p><p>  case 8: KeyNo+=12;</p><p><b>  }</b></p>

87、;<p>  return KeyNo;</p><p><b>  }</b></p><p>  3.3 調試過程</p><p>  程序在KEIL C51上調試,采用模塊程序設計技術,則逐個模塊調好后再進行系統(tǒng)程序總調。 對于模塊結構程序.要一個個子程序分別調試。調試時,一定要符合入口條件和出口條件,調試可用單

88、步運行和斷點運行方式,通過檢查用者系統(tǒng)的CPU現場情況、RAM的內容和I/O口的狀態(tài),檢測程序執(zhí)行結果是否符合設計要求,有無循環(huán)錯誤、有無機器碼錯誤以及轉移地址的錯誤,同時,還可以發(fā)現系統(tǒng)中存在的硬件設計錯誤和軟件算法錯誤。 各程序模塊通過后,則可以把相關功能塊連在一起進行總調。這個階段若有故障,可以考慮各子程序運行時是否破壞了現場,緩沖單元、工作寄存器是否發(fā)生沖突,標志位的建立和清除是否有誤,堆棧區(qū)是否有溢出,輸入設備的狀態(tài)

89、是否正常等等,若用者系統(tǒng)是在開發(fā)機的監(jiān)控程序下運行時,還要考慮用者緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。 </p><p>  單步和斷點調試后,還應進行連續(xù)調試,用以確定定時精度、CPU的實時響應等問題。 當全部調試和修改完成后,將程序固化到AT89C51中。進行整機調試。各功能實現則調試完成。</p><p>  3.4 Proteus仿真</p>&l

90、t;p>  Protues是目前使用比較廣泛的單片機類的仿真系統(tǒng)的軟件之一它可以實現的功能比較多??梢詫崿F程序與原理圖的連調也可以單獨作為繪制原理圖的工具使用與Protel有著過之不及的功能于此同時還可以進行PCB版圖的生成在方法中與Protel類似。此款軟件及繪制原理圖、PCB版圖和仿真于一身。Protues此款軟件的使用比較簡單。在運行環(huán)境搭載好的前提下打開ISIS直接進入到主界面在左邊欄框中有一個快捷鍵P(從庫

91、中選取)點擊后出現一個對話框然后輸入想要查找的元器件即可。之后在單擊確定按鍵所選器件就會顯示在界面左上角的小框中此時點擊鼠標左鍵就會放到圖層中然后直接把鼠標放到接頭處就會顯示一個畫筆的標志此時按住鼠標左鍵就可進行連線了。</p><p>  第四章 主要元器件介紹</p><p>  4.1 主控芯片AT89C51</p><p>  單片機AT89C51功能

92、介紹 </p><p>  AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制

93、造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p><b>  主要特性: ·</b></p><p>  與MCS-51 兼容

94、 · </p><p>  4K字節(jié)可編程閃爍存儲器 ·</p><p>  壽命:1000寫/擦循環(huán) ·</p><p>  數據保留時間:10年 ·</p><p>  全靜態(tài)工作:0Hz-24Hz ·</p><p>  三級程序存儲器鎖定 ·<

95、/p><p>  128*8位內部RAM ·</p><p>  32可編程I/O線 </p><p>  ·兩個16位定時器/計數器 </p><p><b>  ·5個中斷源 ·</b></p><p><b>  可編程串行通道 ·&

96、lt;/b></p><p>  低功耗的閑置和掉電模式 </p><p>  · 片內振蕩器和時鐘電路 </p><p><b>  管腳說明: </b></p><p>  下面按其引腳功能分為四部分敘述這40條引腳的功能。 </p><p>  1、主電源引腳V

97、SS和VSS </p><p>  AT89S51芯片引腳圖 </p><p>  VSS——(40腳)接+5V電壓;</p><p>  VSS——(20腳)接地。</p><p>  外接晶體引腳XTAL1和XTAL2 </p><p>  XTAL1(19腳

98、)接外部晶體的一個引腳。在單片機內部,它是一個反相放大器的輸入端,這個放大器構成了片內振蕩器。當采用外部振蕩器時,對HMOS單片機,此引腳應接地;對SHMOS單片機,此引腳作為驅動端。</p><p>  XTAL2(18腳)接外晶體的另一端。在單片機內部,接至上述振蕩器的反相放大器的輸出端。采用外部振蕩器時,對HMOS單片機,該引腳接外部振蕩器的信號,即把外部振蕩器的信號直接接到內部時鐘發(fā)生器的輸入端;對XHM

99、OS,此引腳應懸浮。 </p><p>  3、控制或與其它電源復用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP </p><p>  ①RST/VPD(9腳)當振蕩器運行時,在此腳上出現兩個機器周期的高電平將使單片機復位。推薦在此引腳與VSS引腳之間連接一個約8.2k的下拉電阻,與VSS引腳之間連接一個約10μF的電容,以保證可靠地復位。 </p><

100、;p>  VSS掉電期間,此引腳可接上備用電源,以保證內部RAM的數據不丟失。當VSS主電源下掉到低于規(guī)定的電平,而VPD在其規(guī)定的電壓范圍(5±0.5V)內,VPD就向內部RAM提供備用電源。 </p><p> ?、贏LE/PROG(30腳):當訪問外部存貯器時,ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍以不變的頻率周期性地出現正脈沖信號,此頻率為振

101、蕩器頻率的1/6。因此,它可用作對外輸出的時鐘,或用于定時目的。然而要注意的是,每當訪問外部數據存儲器時,將跳過一個ALE脈沖。ALE端可以驅動(吸收或輸出電流)8個LS型的TTL輸入電路。 對于EPROM單片機(如8751),在EPROM編程期間,此引腳用于輸入編程脈沖(PROG)。</p><p> ?、跴SEN(29腳):此腳的輸出是外部程序存儲器的讀選通信號。在從外部程序存儲器取指令(或常數)期間,每個機

102、器周期兩次PSEN有效。但在此期間,每當訪問外部數據存儲器時,這兩次有效的PSEN信號將不出現。PSEN同樣可以驅動(吸收或輸出)8個LS型的TTL輸入。 </p><p>  ④EA/VPP(引腳):當EA端保持高電平時,訪問內部程序存儲器,但在PS(程序計數器)值超過0FFFH(對851/8751/80S51)或1FFFH(對8052)時,將自動轉向執(zhí)行外部程序存儲器內的程序。當EA保持低電平時,則只訪問外部

103、程序存 儲器,不管是否有內部程序存儲器。對于常用的8031來說,無內部程序存儲器,所以EA腳須常接地,這樣才能只選擇外部程序存儲器。 </p><p>  對于EPROM型的單片機(如8751),在EPROM編程期間,此引腳也用于施加21V的編程電源(VPP)。 </p><p>  4.控制或與其它電源復用引腳 RST/Vpd,ALE/PROG,PSEN 和EA/Vpp。</p&

104、gt;<p>  RST/Vpd 當振蕩器運行時。在此引腳上出現兩個機器同期的高電平(由低到高跳變),將使單片機復位。 在 VSS</p><p>  掉電期間,此引腳可接上備用電源,由 Vpd向內部 RAM提供備用電源,以保持內部RAM中的數據。 </p><p>  ALE/PROG 正常操作時為ALE功能(允許地址錢存),提供把地址的低字節(jié)鎖存到外部鎖存器。ALE引腳以

105、不變的頻率(振蕩周期的1/6)周期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。但要注意,每當訪問外部數據存儲器時,將跳過一個 ALE脈沖。 ALE端可以驅動(吸收或輸出電流)八個 LSTTL電路。</p><p>  對于 EPROM型單片機,在 EPROM編程期間,此引腳接收編程脈沖(PROG功能)。 </p><p>  PSEN 外部程序存儲器讀選通信號輸出端。

106、在從外部程序存儲器取指令(或數據)期間;PSEN 在每個機器周期內兩次有效。 PSEN 同樣可以驅動八個LSTTL輸入。 </p><p>  EA/Vpp EA為內部程序存儲器和外部程序存儲器選擇端。當EA為高電平時,訪問內部程序存儲器(PS值小于4K)。當EA為低電平時,則訪問外部程序存儲器。對于EPROM型單片機,在EPROM編程期間,此引腳上加21VEPROM編程電源(Vpp)。</p>&

107、lt;p>  5、輸入/輸出(I/O)引腳P0、P1、P2、P3(共32根) </p><p> ?、貾0口(39腳至32腳):是雙向8位三態(tài)I/O口,在外接存儲器時,與地址總線的低8位及數據總線復用,能以吸收電流的方式驅動8個LS型的TTL負載。</p><p> ?、赑1口(1腳至8腳):是準雙向8位I/O口。由于這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向I/O

108、口。P1口能驅動(吸收或輸出電流)4個LS型的TTL負載。對8052、8032,P1.0引腳的第二功能為T2定時/計數器的外部輸入,P1.1引腳的第二功能為T2EX捕捉、重裝觸發(fā),即T2外部控制端。對EPROM編程和程序驗證時,它接收低8位地址。 </p><p>  ③P2口(21腳至28腳):是準雙向8位I/O口。在訪問外部存儲器時,它可以作為擴展電路高8位地址總線送出高8位地址。在對EPROM編程和程序驗

109、證期間,它接收高8位地址。P2可以驅動(吸收或輸出電流)4個LS型的TTL負載。</p><p> ?、躊3口(10腳至17腳):是準雙向8位I/O口,在MSS-51中,這8個引腳還用于專門功能,是復用雙功能口。P3能驅動(吸收或輸出電流)4個LS型的TTL負載。</p><p>  作為第一功能使用時,就作為普通I/O口用,功能和操作方法與P1口相同。作為第二功能使用時,各引腳的定義如表

110、所示。 </p><p>  值得強調的是,P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。</p><p><b>  P3口管腳備選功能</b></p><p>  4.2 存儲芯片24C04A</p><p>  各引腳主要功能介紹:</p><p>  1 NC:空

111、</p><p>  2 A1:器件地址選擇引腳 </p><p>  3 A2:器件地址選擇引腳 </p><p>  4 GND:地 </p><p>  5 SDA:串行數據輸入輸出 </p><p>  6 SCK;串行移位時鐘輸入 </p><p&g

112、t;  7 WP:硬件寫保護控制引腳 </p><p>  8 VCC:電源 </p><p><b>  結論與展望</b></p><p>  以上為畢業(yè)期間所作的畢業(yè)論文---基于單片機的電子密碼鎖設計,它經過多次修改和整理,可以滿足設計的基本要求。 通過對該課題的研究,加深對所學知識的理解,提高對課外知識的學習能力,增強

113、知識的應用能力,提高解決實際問題的能力,培養(yǎng)自我創(chuàng)新意識。積累實踐經驗,為以后的發(fā)展打下基礎,也為以后我們自己在這方面的發(fā)展打下基礎,并能夠在這方面培養(yǎng)自己的興趣。 在設計中我們必須首先熟悉和掌握單片機的結構及工作原理,單片機的接口技術及相關外圍芯片的外特性,控制方法。以單片機核心的電路設計的基本方法和技術了解表關電路參數的計算方法。單片機不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。概括的講:一塊芯片就成了一臺計

114、算機。它的體積小、質量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。同時,學習使用單片機了解計算機原理與結構的最佳選擇。 目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業(yè)自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的</p><p>  通過這次畢業(yè)設計

115、,無論從選題到定稿,從理論到實踐都使我學到了很多東西,它不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。同時也明白了理論與實踐相結合的重要性,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。 </p><p><b>  致謝</b></p><p

116、>  三年的大學生活不知不覺中就要結束了,在這段難忘的生活中,有許多美好的回憶,在畢業(yè)論文設計之中,我的老師和我的同學都不吝賜教。我需要感謝的人太多太多,首先要感謝我的學校,感謝在這三年中讓我領悟到誠實做人,踏實做事,扎實做學問的深刻道理,讓我從一個懵懂得高中生變成一個成熟的大學生,其次我要感謝的是我的導師朱曉玲老師。雖然朱老師平日里工作繁多,但在我做畢業(yè)設計的每個階段,都給予我悉心的指導和幫助,關心我們每個階段所做的工作。當然,

117、還要感謝寢室的兄弟們在我完成論文的過程中給予我的幫助和鼓勵,也是他們陪我度過了這三年的生活,感謝能有這段美好的記憶。 現在即將揮別我的學校、老師、同學,還有我三年的大學生活,雖然依依不舍,但是對未來的路,我充滿了信心。最后,感謝在大學期間認識我和我認識的所有人,有你們的陪伴,才有我大學生活的絢麗多彩。</p><p><b>  作者:</b></p><p>  2

118、012年10月 日</p><p><b>  參考文獻</b></p><p>  [1] 童詩白,華成英. 模擬電子技術基礎[第四版]. 高等教育出版社,2000</p><p>  [2] 閻 石. 數字電子技術基礎[第五版].高等教育出版社.1998.11</p><p>  [3] 張毅剛. 單片機原理

119、及應用. 高等教育出版社.2003 </p><p>  [4] 樓苗然,李光飛. 單片機課程設計指導. 北京航空航天大學出版社2007 </p><p>  [5] 蔡朝洋. 單片機控制實習與專題制作. 北京航空航天大學出版社2006 </p><p>  [6] 陳連坤. 單片機原理及接口技術. 北京交通大學出版社2010 </p><

120、;p>  [7] 李學海. 標準8051單片機基礎教程. 北京航空航天大學出版,2006</p><p>  [8] 何立民. 單片機高級教程. 北京航空航天大學出版社, 2006 </p><p>  [9] 周立功. 單片機實驗與實踐教程. 北京航空航天大學出版社, 2006 </p><p>  [10] 江志紅. 51單片機技術與應用系統(tǒng)開發(fā).

121、 清華大學出版社, 2008</p><p>  [11] 祖龍起. 一種新型可編程密碼鎖. 大連輕工業(yè)學院學報,2002,(01); </p><p>  [12] 李明喜. 新型電子密碼鎖的設計. 機電產品開發(fā)與創(chuàng)新,2004,(03)</p><p>  [13] 王寬仁. 可靠安全的智能密碼鎖.電子技術應用.2001年第2期 </p><

122、p>  [14] 董繼成. 一種新型安全的單片機密碼鎖. 電子技術,2004,(03) </p><p>  [15] 任艷艷. 基于AT89C51單片機多功能密碼鎖的研究. 重慶職業(yè)技術學院學報.2008.5 </p><p>  [16] 周鑫,何建新, 劉琥. 基于單片機的電子密碼鎖控制電路設計. 成都信息工程學院學報. 2009,(08) </p><p

溫馨提示

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

評論

0/150

提交評論