基于單片機at89c51控制的鍵控流水燈課程設計報告_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設 計 報 告</p><p>  論文題目 鍵控流水燈 </p><p>  專業(yè)班級 ___</p><p>  學生姓名 </p><p>  指導教師 _____</p><p>  

2、摘 要:單片機是一種集成電路芯片,采用超大規(guī)模技術,把具有數(shù)據(jù)處理能力的微處理器、隨機存取數(shù)據(jù)存儲器、只讀程序存儲器、輸入輸出電路、可能還包括定時計數(shù)器、串口通信口、顯示驅(qū)動電路,脈寬調(diào)制電路、模擬多路轉換器及A/D轉換器等電路集成到一塊芯片上,構成一個最小而完善的計算機系統(tǒng)。這些電路在軟件的控制下準確、迅速、高效地完成程序設計者事先規(guī)定的任務。</p><p>  鍵控流水燈設計通過編寫代碼實現(xiàn)16個LED燈

3、5種流水燈顯示方式。在設計中主要采用AT89C51這款芯片作為控制主體,用按鈕來切換流水燈的發(fā)光方式來顯示流水燈的發(fā)光模式。系統(tǒng)通過P1口外接16個發(fā)光二極管,P3口接2個按鍵,一個按鍵進行方式選擇,數(shù)碼管顯示方式編號;用一個鍵來控制流水燈流動的速度。數(shù)碼管接在AT89C51的P0和P2口上,而流水燈的發(fā)光二極管經(jīng)過電阻接在P1口上。設計中輔以簡單的設備和必要的電路,設計了一款流水燈,最終達到預期的目的。  

4、0;</p><p><b>  目錄</b></p><p><b>  概 述1</b></p><p><b>  1引言2</b></p><p><b>  2課題綜述2</b></p><p>  1.1課題來源與

5、意義3</p><p>  1.2面臨的問題3</p><p><b>  3 系統(tǒng)設計3</b></p><p><b>  3.1總體設計3</b></p><p><b>  3.2模塊設計5</b></p><p><b

6、>  3.3硬件設計9</b></p><p><b>  4代碼編寫9</b></p><p><b>  5系統(tǒng)調(diào)試16</b></p><p>  6系統(tǒng)運行結果與分析16</p><p>  7電路個人分工及組員分工16</p><p>&

7、lt;b>  結  論17</b></p><p><b>  參考文獻18</b></p><p><b>  附錄19</b></p><p><b>  1  引言 </b></p><p>  單

8、片機控制系統(tǒng)能夠取代以前利用復雜電子線路或者數(shù)字電路構成的控制系統(tǒng),可以軟件控制來實現(xiàn),并能夠?qū)崿F(xiàn)智能化?,F(xiàn)在的單片機的控制范疇無所不在,例如通信產(chǎn)品、家用電器、智能儀器儀表、過程控制和專用控制裝置等等,單片機的應用領域越來越廣泛。 </p><p><b>  2  課題綜述 </b></p><p>  2.1課題來源與意義

9、 </p><p>  隨著經(jīng)濟的發(fā)展、科技的突飛猛進,芯片業(yè)得到了迅速的發(fā)展,是單片機技術在各種民用和工業(yè)控制等領域得到更廣泛的應用。單片機憑借其低成本、高性能的不可代替優(yōu)勢已經(jīng)成為了微電腦 控制的主力軍。學習單片機的有效方法是將理論與實踐并重,因此通過對單片機可控流水燈的設計和研究,鼓勵學生在熟悉基本原理的前提下,與實際應用相聯(lián)系,提出自己的方案,來完善設計,使得他們更好的掌握單片機的應用

10、。 </p><p><b>  2.2面臨的問題 </b></p><p>  本次課程設計的要求是對16個LED燈設計5種流水燈顯示方式,用一個按鍵進行方式選擇,并用一個數(shù)碼管顯示方式編號;用一個鍵來控制流水燈流動的速度,并用一個數(shù)碼管顯示方式編號。 </p><p>  所要解決的問題有流水燈顯示方式的設計,

11、LED燈的驅(qū)動問題,七段顯示數(shù)碼管的驅(qū)動問題以及系統(tǒng)對外界按鈕的相應問題。下面將對各個問題展開論述。 </p><p><b>  3  系統(tǒng)設計 </b></p><p><b>  3.1總體設計 </b></p><p>  實現(xiàn)這個課題我們使用AT89C51作為控制

12、主體,使用十六個共陽極發(fā)光二極管作為LED顯示流水燈,兩個七段顯示數(shù)碼管來顯示流水燈顯示方式,外接兩個按鈕,其中用一個按鍵進行方式選擇,并用一個數(shù)碼管顯示方式編號;用一個鍵來控制流水燈流動的速度,并用一個數(shù)碼管顯示方式編號。外接一個晶振來提供外接時鐘脈沖。</p><p>  單片機課程設計 </p><p>  - 2 -

13、60;模塊圖如下: </p><p><b>  流程圖如下:</b></p><p><b>  3.2模塊設計</b></p><p>  3.2.1主體控制模塊</p><p>  芯片AT89C51是核心,P0、P1、P2、P3口均可以作為I/O口使用。兩個數(shù)碼管經(jīng)過電阻接在AT89C51的

14、P0和P2口上,P1口外接16個發(fā)光二極管,P3口接2個按鍵,一個按鍵進行方式選擇,數(shù)碼管顯示方式編號;用一個鍵來控制流水燈流動的速度,數(shù)碼管顯示方式編號。</p><p>  單片機課程設計 </p><p>  圖3-3主體控制模塊圖 </p><p>  3.2.2按鍵控制模塊、</p><p>

15、  按鍵控制模塊采用獨立式按鍵接口設計。獨立式按鍵是每一個按鍵占用一根I/O端線。特點:各個按鍵相互獨立,電路配置靈活;按鍵數(shù)量較多時,I/O端線耗費較多,電路復雜;軟件結構簡單</p><p>  圖3-4按鈕控制模塊圖</p><p>  3.2.3時鐘模塊 </p><p>  時鐘電路用于產(chǎn)生單片機工作時所需的時鐘信號,在芯片的外部通過18腳、19

16、腳接晶體振蕩器和微調(diào)電容,形成反饋電路,構成一個穩(wěn)定的自激振蕩器。電路中的C1、C2取30Pf左右,二晶體振蕩器的頻率范圍通常是1.2-12MHZ,晶體振蕩器的頻率越高,振蕩頻率越高。 </p><p>  圖3-5時鐘模塊圖 </p><p>  3.2.4 顯示模塊 </p><p>  顯示模塊主體是八段顯示數(shù)碼管。共陽極數(shù)碼管的

17、8個發(fā)光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動電路輸出端。當某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段導通并點亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。</p><p>  圖3-4顯示模塊圖</p><p>  3.2.5流水燈模塊</p><p>  發(fā)光二極管就是LED,是一種由磷化

18、鎵等半導體材料制成的、能直接將電能轉換成光能的發(fā)光顯示器件。當其內(nèi)部有一定電流通過時,就是發(fā)光。發(fā)光二極管具有功耗低、體積小、可靠性高、壽命長和相應快等優(yōu)點。 </p><p>  流水燈模塊采用16個LED發(fā)光二極管,通過代碼的編寫,實現(xiàn)五種流水移動,其中電阻的作用是保護二極管,向它提供較小的電流,防止二極管因為電流過大而燒毀。 </p><p>  設計中,發(fā)光二極

19、管是共陽極接法的,我們只需要將其初值不斷的左移就會看到LED輪流的被點亮,也就實現(xiàn)了流水燈的功能。</p><p>  圖3-5流水燈模塊圖</p><p><b>  3.3硬件設計</b></p><p>  圖3-6 鍵控流水燈圖</p><p><b>  代碼編寫 </b>&

20、lt;/p><p>  #include<reg51.h> </p><p>  #define smg1 P0</p><p>  #definelsd1P1</p><p>  #define smg2P2</p><p>  unsignedinti=1,u=7,j,n,c,k,h=7,s

21、=1;</p><p>  unsignedchar sj=20; </p><p>  unsignedchar js;</p><p>  code unsignedchara[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};</p><p>  code unsignedchar

22、b[]={0xf9,0xa4,0xb0,0x99,0x92};</p><p>  code unsignedchard[]={0xf9,0xa4,0xb0,0x99,0x92};</p><p>  bitwnen1=0;</p><p>  bitanj=0;</p><p>  sbitaj1=P3^0;</p>

23、<p>  sbitaj2=P3^1;</p><p>  voidwnlsd1(void);</p><p>  voidwnlsd2(void);</p><p>  voidwnlsd3(void);</p><p>  voidwnlsd4(void);</p><p>  voidw

24、nlsd5(void);</p><p>  voidsjms1(void);</p><p>  voidsjms2(void);</p><p>  voidsjms3(void);</p><p>  voidsjms4(void);</p><p>  voidsjms5(void);</p&g

25、t;<p>  voidmsms1(void);</p><p>  voidmsms2(void);</p><p>  voidmsms3(void);</p><p>  void msms4(void);</p><p>  voidmsms5(void);</p><p>  void

26、zd1(void);</p><p>  voidzd2(void);</p><p>  voidcsh(void);</p><p>  voidsjkz(void);</p><p>  voidddh(void);</p><p><b>  main()</b></p&g

27、t;<p><b>  {</b></p><p><b>  csh();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  if(anj)</

28、b></p><p><b>  {</b></p><p><b>  anj=0;</b></p><p><b>  sjkz();</b></p><p><b>  ddh();</b></p><p>&l

29、t;b>  }</b></p><p><b>  if(i==1)</b></p><p><b>  {</b></p><p>  if (wnen1)</p><p><b>  {</b></p><p><b>

30、  wnen1=0;</b></p><p>  wnlsd1(); </p><p>  sjms1();</p><p><b>  }</b></p><p><b>  } </b></p><p>  else if(i==2)&l

31、t;/p><p><b>  {</b></p><p><b>  if(wnen1)</b></p><p><b>  {</b></p><p><b>  wnen1=0;</b></p><p><b>  wnl

32、sd2();</b></p><p><b>  sjms2();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(i==3)</p><p><b>

33、  {</b></p><p><b>  if(wnen1)</b></p><p><b>  {</b></p><p><b>  wnen1=0;</b></p><p><b>  wnlsd3();</b></p>

34、<p><b>  sjms3();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(i==4)</p><p><b>  {</b></p>&l

35、t;p><b>  if(wnen1)</b></p><p><b>  {</b></p><p><b>  wnen1=0;</b></p><p><b>  wnlsd4();</b></p><p><b>  sjms4()

36、;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(i==5)</p><p><b>  {</b></p><p><b>  if(wne

37、n1)</b></p><p><b>  {</b></p><p><b>  wnen1=0;</b></p><p><b>  wnlsd5();</b></p><p><b>  sjms5();</b></p>&

38、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  if(s==1)</b></p><p><b>  {</b></p><p>  msms1(); </p><p>

39、<b>  }</b></p><p>  else if(s==2)</p><p><b>  {</b></p><p><b>  msms2();</b></p><p><b>  }</b></p><p>  el

40、se if(s==3)</p><p><b>  {</b></p><p><b>  msms3();</b></p><p><b>  }</b></p><p>  else if(s==4)</p><p><b>  {

41、</b></p><p><b>  msms4();</b></p><p><b>  }</b></p><p>  elseif(s==5)</p><p><b>  {</b></p><p><b>  msms5(

42、);</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  voidcsh(void)</p><p><b>  {</b>

43、;</p><p><b>  TMOD=1;</b></p><p><b>  TH0=0x3c;</b></p><p><b>  TL0=0xb0;</b></p><p><b>  TH1=0xec;</b></p><p

44、><b>  TL1=0x78;</b></p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  ET1=1;</

45、b></p><p><b>  TR1=1;</b></p><p><b>  js=sj;</b></p><p><b>  }</b></p><p>  voidzd1(void) interrupt 1</p><p><b

46、>  {</b></p><p>  TH0=0x3c;</p><p>  TL0=0xb0;</p><p><b>  js=js-4;</b></p><p><b>  if(js==0)</b></p><p><b>  {&l

47、t;/b></p><p><b>  wnen1=1;</b></p><p><b>  js=sj;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void

48、zd2(void) interrupt 3</p><p><b>  {</b></p><p><b>  TH1=0xec;</b></p><p><b>  TL1=0xb0;</b></p><p><b>  anj=1;</b></p

49、><p><b>  }</b></p><p>  voidsjkz(void)</p><p><b>  {</b></p><p>  if(aj1==0)</p><p><b>  {</b></p><p>  whi

50、le(!aj1);</p><p><b>  sj=sj-4;</b></p><p><b>  if(sj==0)</b></p><p><b>  {</b></p><p><b>  sj=20;</b></p><p&g

51、t;<b>  }</b></p><p><b>  js=sj;</b></p><p><b>  s=s+1;</b></p><p><b>  if(s>5)</b></p><p><b>  {</b></

52、p><p><b>  s=1;</b></p><p>  } </p><p><b>  } </b></p><p><b>  }</b></p><p>  voidddh(void)</p><

53、;p><b>  {</b></p><p>  if(aj2==0)</p><p><b>  {</b></p><p>  while(!aj2);</p><p><b>  i=i+1;</b></p><p><b>  i

54、f(i>5)</b></p><p><b>  {</b></p><p><b>  i=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

55、;b>  }</b></p><p>  voidwnlsd1(void)</p><p><b>  {</b></p><p>  lsd1=a[n];</p><p><b>  n++;</b></p><p><b>  if(n&g

56、t;7)</b></p><p><b>  {</b></p><p><b>  n=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

57、 voidwnlsd2(void)</p><p><b>  {</b></p><p>  lsd1=a[n];</p><p><b>  n=n+2;</b></p><p><b>  if(n>7)</b></p><p><

58、b>  {</b></p><p><b>  n=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  voidwnlsd3(void)</p><p><b&g

59、t;  {</b></p><p>  lsd1=a[u];</p><p><b>  u=u-2;</b></p><p><b>  if(u==-1)</b></p><p><b>  {</b></p><p><b>

60、  u=7;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  voidwnlsd4(void)</p><p><b>  {</b></p><p>  lsd1=a[c];&l

61、t;/p><p><b>  c=c+4;</b></p><p><b>  if(c>7)</b></p><p><b>  {</b></p><p><b>  c=0;</b></p><p><b>  }

62、</b></p><p><b>  }</b></p><p>  voidwnlsd5(void)</p><p><b>  {</b></p><p>  lsd1=a[h];</p><p><b>  h--;</b></

63、p><p><b>  if(h==-1)</b></p><p><b>  {</b></p><p><b>  h=7;</b></p><p><b>  }</b></p><p><b>  }</b>

64、;</p><p>  voidsjms1(void)</p><p><b>  {</b></p><p>  smg1=b[0];</p><p><b>  }</b></p><p>  voidsjms2(void)</p><p>&

65、lt;b>  {</b></p><p>  smg1=b[1];</p><p><b>  }</b></p><p>  voidsjms3(void)</p><p><b>  {</b></p><p>  smg1=b[2];</p&g

66、t;<p><b>  }</b></p><p>  voidsjms4(void)</p><p><b>  {</b></p><p>  smg1=b[3];</p><p><b>  }</b></p><p>  void

67、sjms5(void)</p><p><b>  {</b></p><p>  smg1=b[4];</p><p><b>  }</b></p><p>  voidmsms1(void)</p><p><b>  { </b></

68、p><p>  smg2=d[0];</p><p><b>  }</b></p><p>  voidmsms2(void)</p><p><b>  {</b></p><p>  smg2=d[1];</p><p><b>  }&

69、lt;/b></p><p>  voidmsms3(void)</p><p><b>  {</b></p><p>  smg2=d[2];</p><p><b>  }</b></p><p>  voidmsms4(void)</p>&l

70、t;p><b>  {</b></p><p>  smg2=d[3];</p><p><b>  }</b></p><p>  voidmsms5(void)</p><p><b>  {</b></p><p>  smg2=d[4];

71、</p><p><b>  5  系統(tǒng)調(diào)試</b></p><p>  通過對編寫好的代碼用keil進行編譯后,由于對軟件不是很熟悉導致編好的代碼一直找不到目標,然后請同學幫忙后,很快就編寫成功了</p><p>  6  系統(tǒng)運行結果與分析</p><p>  通過接線端子口接

72、通提供電源后,再通過穩(wěn)壓電路將12V交流電壓轉換成5V直流電壓,數(shù)碼管和led燈能正常顯示,數(shù)碼管顯示1,led燈以兩個燈亮的形式開始右移,當顯示完畢后,按下第一個鍵,數(shù)碼管顯示2,led燈以兩個燈亮的形式開始跳兩個燈顯示。類似的,能夠顯示5種方式。另外一個鍵控制led的顯示的速度,通電就數(shù)碼管就顯示1,按下第二個鍵,數(shù)碼管顯示2,led燈加速運行,類似的5種速度。由于電路上少加了一組可以控制按下按鈕后數(shù)碼管的顯示數(shù)字亂跳的電路,在制作

73、的時候也沒有想到,還有在畫PCB的時候?qū)?shù)碼管的管腳接錯了,使得打印在PCB板上的數(shù)碼管上的線路接錯了,檢查維修好后,整體就有點不整潔,使整個電路整體觀上顯的不足之處。</p><p>  7電路個人分工及組員分工圖</p><p><b>  結  論</b></p><p>  通過這次的課程設計,讓我學習到了很多知識以

74、及認識到了很多問題。同時我意識到了一個很重要的問題,那就是課程設計之前的準備工作也是很重要的,包括提前預習設計的題目,上網(wǎng)和去圖書館查閱資料。我也清楚的知道了,資料也是那么重要,否則在一個新穎的題目面前,你將無從下手。通過準備工作,這樣可以保正在設計的時候,有了充足的準備,使得自己不會在真正要開始課程設計的時候,對著題目發(fā)呆,沒有什么進展。因此,我們覺得這個也是對待學習的一種好的態(tài)度,以后在學習中,也要一直以這種好的態(tài)度對待。 

75、;</p><p>  除此之外,讓我發(fā)現(xiàn)這次的鍵控流水燈設計,對于我們以前的學習如數(shù)碼管顯示、led燈等的知識,不僅是一次很好的運用,而且讓我再次花心思去復習了以前學習的知識點,運用之初相互結合知識點,使得知識點可以聯(lián)系起來,對我的學習有了很大的好處。 </p><p>  在程序設計的過程中,也遇到了好多的問題,剛開始在代碼調(diào)試的時候,一直會存在錯誤,也有過很失望的時候,在通

76、過老師的幫助后,經(jīng)過很多次的修改以后,終于把程序代碼改好。但是在代碼燒入芯片中,以及數(shù)碼管的顯示等問題上面,我們還是花費了好多時間,但是還是沒有頭緒。最終還是在老師同學的幫助下,以及幫我們把代碼進行了修改,才得以完成了鍵控流水燈基本功能。 </p><p>  總的來說,這次設計獲益勝多。因為本次課程設計是一個團隊的合作,所以,不僅使得我們團結合作,學習到了知識,還讓我們更加的學會溝通。不僅培養(yǎng)了實踐能

77、力,還培養(yǎng)了設計思維,同時也鍛煉了動手實際操作能力,在摸索該如何設計電路使之實現(xiàn)所需功能的過程中,鍛煉了運用所學知識的靈活性,加深了對知識的理解及提高了解決問題的能力。在體會到設計電路的艱辛的同時,更能體會到成功喜悅和快樂。 </p><p>  在這次的設計中,我學習了很多,也享受到了其中的樂趣。從這次課程設計中我了解到流水燈的設計還是很好玩的,以前在路上夜景中的流水燈看上去很復雜,現(xiàn)在自己編程以后,

78、知道了原理,相信在器件的允許下,我們也是可以完成那種效果的</p><p><b>  參考文獻</b></p><p>  [1]《單片機原理及及應用》王迎旭編 機械工業(yè)出版社 2001</p><p>  [2]《單片機應用程序設計技術》 周航慈 著 北京航空航天大學出版社 </p><p>  [3] 張

79、洪潤 單片機應用技術教程 北京:清華大學出版社,1997</p><p>  [4]《單片機實用教程》 毛宏光 劉福祥 陳弢 編 機械工業(yè)出版社</p><p><b>  附錄</b></p><p>  圖3-7 鍵控流水燈PCB圖</p><p>  圖3-8 鍵控流水燈 實物圖</p>

溫馨提示

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

評論

0/150

提交評論