單片機課程設(shè)計(數(shù)字時鐘)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設(shè)計報告</b></p><p><b>  課題名稱:數(shù)字時鐘</b></p><p><b>  一、設(shè)計目的:</b></p><p>  隨著半導體技術(shù)的不斷發(fā)展,各種微處理芯片的性價比越來越高,在各個領(lǐng)域的應(yīng)用也越來越廣泛,其中MCU在工業(yè)控制、航天航

2、空、民用家電、醫(yī)療設(shè)備等方面占有十分重要的地位。我們在之前所學習的MCS-51系統(tǒng)單片機就是MCU中的一員,作為低端的8位MCU它具有價格低、適配器件成熟種類多等優(yōu)勢,因此盡管現(xiàn)在32位、16位MCU不斷發(fā)展,但8位的MCU仍占有大約50%的市場份額,同時它也是我們學習MCU的必要的入門途徑,本次實習就是應(yīng)用我們所學習的MCS-51單片機進行一次實際制作,要經(jīng)過從硬件設(shè)計、軟件設(shè)計、實驗電路調(diào)試、軟件調(diào)試直至最后作品焊接成型,這對以前我

3、們所學習的理論知識進行進一步的鞏固和深化,更重要的是學習以MCU為控制核心的應(yīng)用的實際設(shè)計流程及基本的實踐動手能力。</p><p><b>  二、設(shè)計內(nèi)容</b></p><p>  應(yīng)用AT89S51及相關(guān)器件制做一個LED數(shù)碼顯示電子時鐘。所需使用的軟件及硬件具體內(nèi)容如下:</p><p><b>  使用軟件及器件</

4、b></p><p>  軟件:Keil uVision2(IDE集成開發(fā)環(huán)境)、ELITE-IV單片機開發(fā)系統(tǒng)、protel99se</p><p><b>  器材清單:</b></p><p><b>  三、實習步驟</b></p><p>  根據(jù)實習內(nèi)容及所提供元器件,設(shè)計硬件電路

5、,提供的參考電路見圖1,也可自行設(shè)計</p><p>  1)復位及晶振電路是單片機最小系統(tǒng)必備部分</p><p>  2)三個按鈕接在P3.0、P3.1、P3.2上用于調(diào)整時、分、秒</p><p>  3)P2口送LED數(shù)碼顯示的段碼</p><p>  4)P1.0至P1.5送數(shù)碼顯示控制的位碼</p><p>

6、;  根據(jù)設(shè)計的硬件電路,在面包板上搭接實驗電路</p><p>  在硬件基礎(chǔ)在keil上上進行軟件設(shè)計,調(diào)試</p><p>  調(diào)試通過后, 向AT89S51燒寫程序</p><p>  將燒寫好的AT89S51插接到實驗電路中,驗證是否正常,如果正常說明軟、硬件正確可進行電子時鐘焊接制做。</p><p>  焊接好電子時鐘后,再次上

7、電調(diào)試,驗證通過,實習圓滿完成。</p><p><b>  注意的問題:</b></p><p>  單片機在鎖緊座的正確放法:單片機缺口朝上。</p><p>  在面包板上接好電路后,先用萬用表測量一下電源及地是否會短路。</p><p>  接電源調(diào)試時不能帶電插拔元件</p><p>&

8、lt;b>  四、元件參數(shù)</b></p><p><b>  1.9012</b></p><p>  9012是一種最常用的普通三極管。 </p><p>  它是一種低電壓,大電流,小信號的PNP型硅三極管</p><p>  集電極電流Ic:Max -500mA </p><

9、p>  集電極-基極電壓Vcbo: -40V </p><p>  工作溫度:-55℃ to +150℃ </p><p>  主要用途: 開關(guān)應(yīng)用、射頻放大</p><p>  2.89S51管腳圖</p><p>  3.雙位共陰極數(shù)碼塊管腳圖</p><p><b>  部分程序參考流程圖<

10、/b></p><p>  ELITE-III系統(tǒng)硬件(V2.0)介紹</p><p>  ELITE-IV實物圖:</p><p><b>  硬件資源介紹: </b></p><p>  1.電源輸入(6V) </p><p><b>  2.電源開關(guān)按鈕</b>&

11、lt;/p><p><b>  3.電源正常指示燈</b></p><p>  4.700mA過流指示燈</p><p><b>  5.NE555 </b></p><p>  6.高檔一體化紅外接受頭</p><p><b>  7.流水等開關(guān)按鍵</b>

12、;</p><p><b>  8.Usb取電接口</b></p><p>  9.DS1302時鐘芯片</p><p><b>  10. 流水燈 </b></p><p>  11. 24C02 </p><p>  12. 93C46 </p><p

13、>  13. ADC0804 模數(shù)轉(zhuǎn)換芯片</p><p>  14. MAX232 </p><p><b>  15. 串口接口 </b></p><p>  16. AT89S**ISP切換鍵</p><p><b>  17. 蜂鳴器 </b></p><p>

14、<b>  18. 復位鍵 </b></p><p>  19. 華邦I(lǐng)SP切換</p><p><b>  20. COM1座</b></p><p>  21. MCU冷啟動</p><p>  22. COM1切換</p><p><b>  23. I2C接

15、口</b></p><p>  24. A/D內(nèi)外切換</p><p><b>  25. EA切換</b></p><p><b>  26. A/D輸入</b></p><p><b>  27. INTO </b></p><p>  

16、28. INT_TO </p><p><b>  29. SPI接口</b></p><p>  30. COM0測試</p><p>  31. 18B20溫度傳感器接口</p><p>  32. KEY_A </p><p>  33. KEY-B </p><p>

17、;<b>  34. 51單片機</b></p><p>  35. 單片機縮緊座 </p><p><b>  36. A/D調(diào)節(jié)</b></p><p>  37. LCD12864接口</p><p>  38. 74HC574 </p><p>  39. LCD16

18、02接口 </p><p>  40. ULN2003步進電機驅(qū)動芯片</p><p>  41. LCD12232接口</p><p>  42. 1602、12232LCD對比度</p><p>  43. 74HC244 </p><p>  44. LCD12864對比度調(diào)整旋鈕</p><

19、p><b>  45. 4*4鍵盤</b></p><p>  46. 8*8鍵盤擴展接口</p><p>  47. 輸出5V電源接口</p><p>  48. 6位8字數(shù)碼管</p><p>  49. 數(shù)碼管開關(guān)按鍵。 </p><p><b>  50. 步進電機 <

20、;/b></p><p>  (二)下載器的安裝和使用 </p><p>  一 AT89S系列下載器</p><p>  1. 打開隨機光盤中的“ISPSetup”文件夾,雙擊ISPSetup.exe執(zhí)行安裝程序。</p><p>  2.點擊“下一步”,出現(xiàn)圖6對話框,繼續(xù)點“下一步”。</p><p>&l

21、t;b>  3.選擇安裝路徑。</b></p><p>  4.點擊“完成”按鈕,完成安裝過程。</p><p>  說明:本軟件是對Atmel 的89S系列MCU進行在線下載程序,打開hex文件之前需要執(zhí)行“清空”操作,同時要按下開發(fā)板上的 S1和S2 按鈕。依次執(zhí)行“鑒別”—“擦除”—“寫入”操作后,彈起S1和S2按鈕,按復位鍵,單片機即可運行剛下載的新程序。<

22、/p><p> ?。ㄈ╇娮隅婋娐钒宀季€</p><p><b> ?。ㄋ模?shù)字鐘程序</b></p><p><b>  程序</b></p><p>  #include<reg51.h></p><p>  #include<absacc.h><

23、;/p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  /*七段共陰管顯示定義*/ </p><p>  uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0

24、x7F,0x6F,</p><p>  0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};</p><p>  /*定義并初始化變量*/</p><p>  uchar seconde=0;</p><p>  uchar minite=0;</p><p>  uc

25、har hour=12;</p><p>  uchar mstcnt=0;</p><p>  sbit P3_0=P3^0; // second 調(diào)整定義</p><p>  sbit P3_1=P3^1; //minite調(diào)整定義</p><p>  sbit P3_2=P

26、3^2; //hour調(diào)整定義</p><p><b>  /*函數(shù)聲明*/</b></p><p>  void delay(uchar k ); //延時子程序</p><p>  void time_pro( ); //時間處理子程序</p><p>  void d

27、isplay( ); //顯示子程序</p><p>  void keyscan( ); //鍵盤掃描子程序</p><p>  /*****************************/</p><p><b>  /*延時子程序*/</b></p><p>  /***

28、*************************/</p><p>  void delay (uchar k)</p><p><b>  {</b></p><p><b>  uchar j;</b></p><p>  while((k--)!=0)</p><p>

29、;<b>  {</b></p><p>  for(j=0;j<125;j++)</p><p><b>  {;}</b></p><p><b>  }</b></p><p><b>  } </b></p><p

30、>  /**************************/</p><p>  /*時間處理子程序*/</p><p>  /**************************/</p><p>  void time_pro( void)</p><p><b>  { </b></p>&l

31、t;p>  if(seconde==60) //秒鐘設(shè)為60進制</p><p>  { seconde=0;</p><p><b>  minite++;</b></p><p>  if( minite==60) //分鐘設(shè)為60進制</p><p&

32、gt;  { minite=0;</p><p><b>  hour++;</b></p><p>  if(hour==24) //時鐘設(shè)為24進制</p><p>  {hour=0; }</p><p><b>  }</b></p><p>

33、;<b>  }</b></p><p><b>  }</b></p><p>  /*****************************/</p><p>  /* 顯示子程序*/</p><p>  /*****************************/</p>&

34、lt;p>  void display(void) </p><p><b>  { </b></p><p><b>  P2=0xfe;</b></p><p>  P0=dispcode[hour/10]; //顯示小時的十位</p><p&g

35、t;<b>  delay(4);</b></p><p><b>  P2=0xfd;</b></p><p>  P0=(dispcode[(hour%10)])|0X80; //顯示小時的個位</p><p><b>  delay(4);</b></p><p

36、><b>  P2=0xfb;</b></p><p>  P0=dispcode[minite/10]; //顯示分的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xf7;</b></p><p

37、>  P0=(dispcode[minite%10])|0X80; //顯示分的個位</p><p><b>  delay(4);</b></p><p><b>  P2=0xef;</b></p><p>  P0=dispcode[seconde/10]; //顯示秒的十

38、位</p><p><b>  delay(4);</b></p><p><b>  P2=0xdf;</b></p><p>  P0=dispcode[seconde%10]; //顯示秒的個位</p><p>  delay(4); </p>

39、<p><b>  }</b></p><p>  /*******************************/</p><p>  /*鍵盤掃描子程序*/</p><p>  /*******************************/</p><p>  void keyscan (void)&

40、lt;/p><p><b>  { </b></p><p>  if(P3_0==0) //按鍵1秒的調(diào)整</p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_0==0)&l

41、t;/p><p><b>  {</b></p><p>  seconde++;</p><p>  if(seconde==60)</p><p>  {seconde=0; }</p><p><b>  }</b></p><p><b>

42、;  }</b></p><p>  if(P3_1==0) //按鍵2分的調(diào)整</p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_1==0)</p><p><b>  

43、{</b></p><p><b>  minite++;</b></p><p>  if(minite==60)</p><p>  {minite=0;}</p><p><b>  }</b></p><p><b>  }</b>&

44、lt;/p><p>  if(P3_2==0) //按鍵3小時的調(diào)整</p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_2==0)</p><p><b>  {</b><

45、/p><p><b>  hour++;</b></p><p>  if(hour==24)</p><p>  {hour=0; }</p><p><b>  }</b></p><p><b>  }</b></p><p>

46、<b>  }</b></p><p>  void timer0(void) interrupt 1 using 0 //定時器0方式1,50ms中斷一次</p><p><b>  {</b></p><p><b>  TH0=0x3c;</b></p><p>

47、  TMOD = 0x11;</p><p><b>  mstcnt++;</b></p><p>  if(mstcnt==20)</p><p><b>  {</b></p><p>  seconde++;</p><p>  mstcnt=0; //對計數(shù)單

48、元的清零</p><p>  } </p><p><b>  }</b></p><p>  /**************************/</p><p><b>  /*主函數(shù)*/</b></p><p>  /**********

49、****************/</p><p>  void main(void)</p><p>  { P1=0xff; //初始化p1口,全設(shè)為1 </p><p>  TMOD = 0x11; //time0為定時器,方式1</p><p>  TH0=0x3c;

50、 //預置計數(shù)初值</p><p><b>  TL0=0xb0;</b></p><p><b>  EA=1; </b></p><p><b>  ET0=1; </b></p><p><b>  TR0=1; </b></p>

51、<p><b>  while (1)</b></p><p><b>  { </b></p><p>  keyscan( ); //按鍵掃描</p><p>  time_pro( ); //時間處理</p><p>  display( ); //顯示時間

52、 </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  附流水燈實驗程序:</b></p><p>  #include <reg51.h></p><p>  #define

53、uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uint count,i=0;</p><p>  void main()</p><p><b>  {</b></p><p>  TMOD=0x01;//定時器

54、0工作方式1</p><p>  TH0=0x3c;//裝定時器初值高8位,50ms中斷一次 (65536-50000)/256</p><p>  TL0=0xb0;//裝定時器初值低8位,50ms中斷一次 (65536-50000)%256</p><p>  EA=1;//開中斷</p><p>  TR0=1;//定時器0開始<

55、/p><p>  ET0=1;//定時器0允許中斷</p><p>  while(1);//等待中斷</p><p><b>  }</b></p><p>  void timer0()interrupt 1</p><p><b>  {</b></p>&l

56、t;p>  TH0=0x3c;//重新設(shè)置初值 </p><p>  TL0=0xb0;//重新設(shè)置初值 </p><p><b>  count++;</b></p><p>  if(count==20)</p><p><b>  {</b></p><p>&l

57、t;b>  count=0;</b></p><p>  P1=~(0X01<<i); //P1接8個LED</p><p>  if(++i==8)</p><p><b>  i=0;</b></p><p><b>  }</b></p><p

58、><b>  }</b></p><p><b>  實習心得</b></p><p>  時光飛逝,一轉(zhuǎn)眼,一個學期又接進尾聲了,本學期的單片機綜合課程設(shè)計也在一周前完成了。</p><p>  俗話說“好的開始是成功的一半”。說起課程設(shè)計,我認為最重要的就是做好設(shè)計的預習,認真的研究下老師所給的題目。其次,老師對

59、實驗的講解要一絲不茍的去聽去想,因為只有都明白了,做起設(shè)計來才會事半功倍,如果沒有弄明白,就迷迷糊糊的去做,到頭來一點收獲也沒有。最后,要重視程序的模塊化,修改的方便,也要注重程序的調(diào)試,掌握其方法。</p><p>  雖然這次的課程設(shè)計算起來在實驗室的時間只有五天,不過因為我們每個小組都有自己的實驗板,所以可以自己帶回宿舍里做,時間還是蠻充裕的。硬件的設(shè)計跟布線都要我們自己動手去連接,軟件的編程也要我們不斷的

60、調(diào)試,最終一個能完成課程設(shè)計的勞動成果出來了,很高興它能按著設(shè)計的思想與要求運動起來。當然,這其中也存在著很多問題,可以總結(jié)如下:</p><p>  第一、不夠細心比如由于粗心大意接錯了線,導致有些數(shù)碼管不亮等等,還有由于對課本理論知識的不熟悉導致編程出現(xiàn)錯誤。</p><p>  第二、是在學習態(tài)度上,這次課設(shè)是對我的學習態(tài)度的一次檢驗。對于這次單片機課程實習,我的第一大心得體會就是作

61、為一名工程技術(shù)人員,要求具備的首要素質(zhì)絕對應(yīng)該是嚴謹。我們這次實習所遇到的問題多數(shù)都是由于我們不夠嚴謹不夠細心照成的。</p><p>  第三、在做人上,我認識到,無論做什么事情,只要你足夠堅強,有足夠的毅力與決心,有足夠的挑戰(zhàn)困難的勇氣,就沒有什么辦不到的。</p><p>  在這次難得的課程設(shè)計過程中我鍛煉了自己的思考能力和動手能力。通過程序的編寫以及設(shè)計電路的過程,加強了我思考問

62、題的完整性和理論聯(lián)系實際的可行性。通過各個I/O口的接線,使我們對單片機的各個管腳的功能也有了進一步的認識。還鍛煉我們個人的查閱技術(shù)資料的能力,動手能力,發(fā)現(xiàn)問題,解決問題的能力。并且使我們熟練掌握了有關(guān)器件的性能及測試方法。</p><p>  再次感謝老師的輔導以及同學們的幫助,是他們讓我有了一個更好的認識,無論是學習還是生活,生活是實在的,要一步一個腳印的走。課程設(shè)計時間雖然很短,但我還是學習了很多的東西,

63、使我眼界打開,感受頗深。</p><p><b>  實習心得</b></p><p>  通過這一周的單片機的實訓,讓我有了不少體會。</p><p>  首先,通過老師對單片機C51程序設(shè)計基礎(chǔ)的講解,我對C語言程序中的數(shù)組、指針以及函數(shù)的一些只是有了更深一步的認識,并且通過老師對C51時鐘芯片實時讀寫程序,接口電路設(shè)計實例程序和液晶模塊實

64、例程序的讀取,讓我對時鐘芯片和液晶顯示的功能有了更深的了解。</p><p>  然后,在上機實訓中,老師先讓我們調(diào)試從課堂中認識的流水燈程序和電子時鐘程序,通過對這兩個程序的調(diào)試,我對液晶顯示屏、時鐘芯片的工作原理有了更深的理解,并且通過一些改編,讓我們發(fā)現(xiàn)了一些問題,并通過自己修改,最后完成實驗。</p><p>  最后,在開始設(shè)計實驗時,先通過老師對我們的演示,使我們對程序設(shè)計有了

65、初步了解,讓后通過自己實踐動手,自己發(fā)現(xiàn)解決問題,最后達到完成程序的問題,在這過程中,發(fā)現(xiàn)自己平時基本功不夠扎實,不能及時有效的解決問題,而且不能善于思考問題,不能對問題有本質(zhì)上的了解,而老師的一些點撥讓我有些了解,進而解決問題,這次實訓還是有了不少收獲,對單片機的認識更加深了,自己動手能力也提高一些。</p><p>  這次實訓雖然其中會有些錯誤和失敗,但總的來說是受益匪淺,在運用中發(fā)現(xiàn)問題,解決問題,就是最

溫馨提示

  • 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

提交評論