課程設計---基于單片機at89c51的數字鐘自動計時器_第1頁
已閱讀1頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  學院單片機課程設計</b></p><p>  基于51單片機的數字時鐘的設計</p><p>  學生姓名: </p><p>  學生學號: </p><p>  院(系): </p><p><b>  年級專業(yè): &

2、lt;/b></p><p><b>  指導教師: </b></p><p><b>  二〇一一年六月</b></p><p><b>  摘 要</b></p><p>  本文設計的是一個基于單片機AT89C51的數字鐘自動計時器,附有復位電路,顯示電路,按

3、鍵電路等。復位電路是單片機的初始化操作,除了正常的初始化外,為擺脫困境,通過復位電路可以重新開始。時鐘電路采用12MHz的晶振,作為系統(tǒng)的時鐘源,具有較高的準確性。</p><p>  在上電時LED顯示器開始顯示時間并自動計時,在按鍵電路中只設置了三個按鍵,通過檢測第一個按鍵按下的次數來實現(xiàn)調時、調分、調秒按鍵的作用,再通過LED顯示器顯示時、分、秒的改變。并且在P1端口處接了一個指示燈,指示按鍵的按下。在這里

4、主要是以AT89C51單片機為核心控制器,P0口接LED顯示模塊,P1口接按鍵的,通過按鍵輸入來控制顯示器的顯示。</p><p>  關鍵字 AT89C51,LED顯示器,數字時鐘</p><p><b>  ABSTRACT</b></p><p>  This design is based on AT89C51 single-chip

5、 digital clock auto-timer, with a reset circuit, display circuit, the key circuit. Reset circuit is a microcontroller initialization, in addition to the normal initialization, for the bail out through the reset circuit c

6、an begin again. 12MHz crystal clock circuit, as the system clock source, with high accuracy. </p><p>  LED display on power began to show time and automatic timing, set in the key circuit only three buttons,

7、 a button pressed by detecting the number of the first to achieve the transfer, the transfer points, transfer second key role, through the LED display hours, minutes, seconds to change. And then at the P1 port of a light

8、 to indicate the button press. Here is AT89C51 microcontroller as the core of the main controller, P0 port access the LED display module, P1 port access keys, keystrokes to con</p><p>  Keywords AT89C51, L

9、ED display, digital clock </p><p><b>  目 錄</b></p><p><b>  摘要Ⅰ</b></p><p>  ABSTRACTⅡ</p><p><b>  1 緒論2</b></p><p>

10、  1.1課程設計要求2</p><p>  1.2課程設計的基本原理2</p><p><b>  2 硬件設計3</b></p><p>  2.1振蕩電路的設計3</p><p>  2.2復位電路的設計3</p><p>  2.3 鍵盤接口電路設計4</p>&

11、lt;p>  2.4 顯示電路的設計4</p><p>  2.5整體電路的設計5</p><p><b>  3軟件設計6</b></p><p>  3.1 單片機資源使用6</p><p>  3.2 定時計數器中斷子函數6</p><p>  3.3判鍵子函數7</

12、p><p>  3.4按鍵調試流程8</p><p><b>  4仿真與測試9</b></p><p><b>  4.1自動計時9</b></p><p><b>  4.2按鈕調時9</b></p><p><b>  心得體會10

13、</b></p><p><b>  參考文獻11</b></p><p><b>  附錄12</b></p><p><b>  1 緒 論 </b></p><p><b>  1.1課程設計要求</b></p>&l

14、t;p>  1. 應用MCS-51單片機設計單片機實現(xiàn)數字鐘(LED顯示:小時、分、秒)仿真電路;</p><p>  2. 選用8位LED數碼顯示,實時顯示時、分、秒,采用組合按鍵實現(xiàn)時鐘對表功能,能調時、調分、調秒;</p><p>  3. 要求顯示范圍最大到23小時59分59秒,用定時中斷來實現(xiàn)。</p><p><b>  4.用鍵選位。&

15、lt;/b></p><p>  1.2課程設計基本原理</p><p>  通過對以上功能要求可知其基本原理,以AT89C51單片機為核心控制器,P0口接LED顯示模塊,P1口接按鍵,通過按鍵輸入來控制顯示器的顯示。在上電時LED顯示器開始顯示時間并自動計時,自動計時采用單片機內部T0中斷實現(xiàn),在按鍵電路中只設置了三個按鍵,通過檢測第一個按鍵按下的次數來實現(xiàn)調時、調分、調秒按鍵的作

16、用,再通過LED顯示器顯示時、分、秒的改變。</p><p><b>  2 硬件設計</b></p><p>  2.1振蕩電路的設計</p><p>  單片機內部有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(電容和一般取33pF)。這樣就構成一個穩(wěn)定

17、的自激振蕩器。 振蕩電路脈沖經過二分頻后作為系統(tǒng)的時鐘信號,再在二分頻的基礎上三分頻產生ALE信號,此時得到的信號時機器周期信號。振蕩電路如圖2.1所示:</p><p>  圖2.1 振蕩電路</p><p>  2.2復位電路的設計 </p><p>  復位操作有兩種基本形

18、式:一種是上電復位,另一種是按鍵復位。按鍵復位具有上電復位功能外,若要復位,只要按圖中的RESET鍵,電源VCC經電阻R1、R2分壓,在RESET端產生一個復位高電平。上電復位電路要求接通電源后,通過外部電容充電來實現(xiàn)單片機自動復位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時間(2個機器周期),單片機就可以進行復位操作。按鍵復位電路圖如圖2.2所示。&

19、lt;/p><p>  圖2.2 復位電路</p><p>  鍵盤接口電路的設計 </p><p>  獨立式鍵盤:獨立式鍵盤中,每個按鍵占用一根I/O口線,每個按鍵電路相對獨立。I/O口通過按鍵與地相連,I/O口有上拉電阻

20、,無鍵按下時,引腳端為高電平,有鍵按下時,引腳電平被拉低。I/O口內部有上拉電阻時,外部可不接上拉電阻。鍵盤接口電路如圖2.3所示:</p><p>  圖2.3 鍵盤接口電路</p><p>  2.4顯示電路的設計</p><p>  對于現(xiàn)實電路我們可以采用數碼管,也可以采用液晶顯示在這里我采用8位的LED顯示器。顯示電路如圖2.4所示: </

21、p><p>  圖2.4 顯示電路 </p><p>  2.5整體電路的設計</p><p>  圖2.5 整體電路設計</p><p><b>  3 軟件設計</b></p><p>  3.1單片機資源使用</p><p>  在本次設計中像電路鍵盤用到了P1口,

22、其中P1.0到P1.2口作為鍵盤的輸入,指示燈用P1.4口控制,LED顯示用到了P0口和P3口,P0口外接鎖存器控制LED顯示的段選,P3口控制LED顯示的位選。</p><p>  3.2定時計數器中斷子函數</p><p>  對于中斷程序,只要定時器計數滿就會產生中斷50ms中斷一次,共計20次,秒鐘加1,秒鐘計滿60秒,分鐘加1,分鐘記滿60,小時加1.當小時加到23時全部清零。

23、以下是中斷子函數的流程圖如圖3.1所示:</p><p>  圖3.2 定時計數器中斷子函數流程圖</p><p>  3.3 判鍵子函數</p><p>  對于獨立式鍵盤判鍵,首先看有鍵按下不,如果有鍵按下則延時一會兒,在判斷是否真的有鍵按下,如果確實有鍵按下,在判鍵釋放,最后執(zhí)行鍵功能程序。判鍵子函數的流程框圖如圖3.2所示: </p&g

24、t;<p>  圖3.3 判鍵子程序流程圖</p><p><b>  3.4按鍵調時流程</b></p><p>  按鍵k1為選調按鈕,當con=1時為調秒,con=2時為調分按鈕,con=3時為調時按鈕,con=4時退出按鈕調節(jié)。k3、k2按鈕分別為調減和調增按鈕。</p><p>  圖3.4 按鍵調時流程圖<

25、;/p><p><b>  4 仿真與測試</b></p><p><b>  4.1自動計時</b></p><p>  圖4.1 自動計時仿真</p><p><b>  4.2按鈕調試</b></p><p>  圖4.2 調試仿真</p&

26、gt;<p><b>  心得體會</b></p><p>  通過這次的課程設計讓我學到了很多東西,也夯實了我在書本上所學的知識,通過一個課題的設計,讓我明白了如何很好的設計一個項目,從課題的入手到中間過程的修改的設置,再到最后的仿真與測試。每一個過程自己都去親自實施和設計從而讓自己在這個過程中學到了自己應該熟練掌握的知識和技能。</p><p>  

27、編程軟件keil的使用自己通過這次的課程設計也已熟練掌握了,并且自己的編程能力也得到了好大的提高,仿真測試軟件proteus自己也很好的掌握了,自己能夠獨立的應用proteus完成各項仿真與測試。</p><p>  總之,這一次的單片機課程設計讓我學到了很多有用的知識和技能。</p><p><b>  參考文獻</b></p><p>  

28、[1] 李廣弟,朱月秀,冷祖祁.單片機基礎[M].第3版.北京航空航天大學出版社,2007年1月</p><p>  [2]李華.MCS-51系列單片機實用接口技術[M].北京航空航天大學出版社,1996</p><p>  [3] 馬忠梅,張凱,馬巖,單片機的C語言應用程序設計,[M],北京:北京航空航天大學出版社,2003.11;</p><p>  [4] 胡

29、輝,單片機原理及應用設計—21世紀高等院校規(guī)劃教材[M],水利水電出版社,2005.7;</p><p>  [5] 劉守義,單片機應用技術[M],西安:西安電子科技大學出版社,1996.8;</p><p><b>  附 錄</b></p><p><b>  數字時鐘源代碼</b></p><p

30、>  //本程序實現(xiàn)一個按鈕來控制兩個按鈕功能,按一下調秒(調增或減),</p><p>  //按兩下調分(增或減),按三下時(增或減),按四下時退出。</p><p>  #include<reg51.h></p><p>  unsigned int m=0,f=0,s=0,con=0;</p><p>  uns

31、igned char</p><p>  d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//段選</p><p>  unsigned char x=0x00;</p><p>  #define uint unsigned int</p><p&

32、gt;  #define uchar unsigned char</p><p>  sbit k1=P1^0;//按鈕</p><p>  sbit k2=P1^1;</p><p>  sbit k3=P1^2;</p><p>  sbit s1=P1^4;</p><p>  void delay(unsig

33、ned int x)//延時1ms</p><p><b>  {</b></p><p>  unsigned char j;</p><p>  while(x--)</p><p><b>  {</b></p><p>  for(j=0;j<125;j++)

34、</p><p><b>  {;} </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void display()//顯示</p><p>  { P3=0x01;//顯示小時的十位<

35、;/p><p>  P0=d[s/10];</p><p><b>  delay(5);</b></p><p>  P3=0x02;//顯示小時個位</p><p>  P0=d[s%10];</p><p><b>  delay(5);</b></p>&l

36、t;p>  P3=0x04;//顯示--</p><p><b>  P0=d[11];</b></p><p><b>  delay(5);</b></p><p>  P3=0x08;//顯示分十位</p><p>  P0=d[f/10];</p><p>&l

37、t;b>  delay(5);</b></p><p>  P3=0x10;//顯示分個位</p><p>  P0=d[f%10];</p><p><b>  delay(5);</b></p><p>  P3=0x20;//顯示--</p><p><b>  

38、P0=d[11];</b></p><p>  delay(5); </p><p>  P3=0x40;//顯示秒</p><p>  P0=d[m/10];</p><p>  delay(5);</p><p><b>  P3=0x80;</b></p><

39、;p>  P0=d[m%10];</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  void key()//按鍵判斷選擇按鍵</p><p><b>  {</b></p><p>

40、;  EA=0;//中斷關閉</p><p><b>  if(k1==0)</b></p><p><b>  { </b></p><p>  delay(30); </p><p>  while(k1==0); </p><p><b>  s1=~s1

41、;</b></p><p>  delay(20);</p><p>  con++;TR0=0;ET0=0;</p><p>  if(con>=4)</p><p><b>  {</b></p><p>  con=0;TR0=1;ET0=1;</p><

42、;p><b>  } </b></p><p><b>  }</b></p><p>  if(con==1)//按了一下表示調秒</p><p><b>  { </b></p><p>  if(k2==0)//增加</p><p>&

43、lt;b>  {</b></p><p>  delay(30);</p><p>  while(k2==0);</p><p><b>  m++;</b></p><p><b>  if(m==59)</b></p><p><b>  {

44、m=0;}</b></p><p><b>  }</b></p><p>  if(k3==0)//減</p><p><b>  {</b></p><p>  delay(30);</p><p>  while(k3==0);</p><

45、;p><b>  m--;</b></p><p><b>  if(m>=60)</b></p><p><b>  {m=59;}</b></p><p><b>  }</b></p><p><b>  }</b>

46、</p><p>  if(con==2)</p><p><b>  {</b></p><p><b>  if(k2==0)</b></p><p><b>  {</b></p><p>  delay(30);</p><p

47、>  while(k2==0);</p><p><b>  f++;</b></p><p><b>  if(f==59)</b></p><p><b>  {f=0;}</b></p><p><b>  } </b></p>

48、<p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  delay(30);</p><p>  while(k3==0);</p><p><b>  f--;</b></p><p>&l

49、t;b>  if(f>=60)</b></p><p><b>  {f=59;}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(con==3)</p><p>

50、<b>  {</b></p><p><b>  if(k2==0)</b></p><p><b>  {</b></p><p>  delay(30);</p><p>  while(k2==0);</p><p><b>  s++

51、;</b></p><p><b>  if(s==23)</b></p><p><b>  {s=0;}</b></p><p><b>  } </b></p><p><b>  if(k3==0)</b></p><

52、;p><b>  {</b></p><p>  delay(30);</p><p>  while(k3==0);</p><p><b>  s--;</b></p><p>  if(s>=24)//實現(xiàn)循環(huán)減</p><p><b>  {s=

53、23;}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  EA=1;//中斷開啟 </p><p><b>  } </b></p><p>  void main()//設

54、置定時50ms</p><p><b>  {</b></p><p>  TH0=(65535-50000)/256;</p><p>  TL0=(65535-50000)%256;</p><p>  TMOD=0X01;ET0=1;TR0=1;EA=1;//開啟定時中斷</p><p>&

55、lt;b>  while(1)</b></p><p><b>  { key();</b></p><p>  display();</p><p><b>  }</b></p><p><b>  }</b></p><p>  

56、void int0() interrupt 1//中斷服務程序</p><p><b>  {ET0=0;</b></p><p><b>  TR0=0;</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;

57、</p><p><b>  TR0=1;</b></p><p><b>  x++;</b></p><p>  if(x==20)//計數20恰好為1秒</p><p><b>  { </b></p><p><b>  x=0;m++

58、;</b></p><p>  if(m==60)//秒到60</p><p><b>  {</b></p><p><b>  m=0;f++;</b></p><p>  if(f==60)//分到60</p><p><b>  f=0;s++;

59、</b></p><p><b>  if(s==24)</b></p><p><b>  {</b></p><p><b>  s=0;</b></p><p><b>  }</b></p><p><b&

溫馨提示

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

評論

0/150

提交評論