單片機課程設(shè)計-- 廣告燈的設(shè)計_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  信息與電氣工程學(xué)院</b></p><p><b>  單片機課程設(shè)計</b></p><p>  題 目 廣告燈的設(shè)計 </p><p>  學(xué) 院 信息與電氣工程學(xué)院 </p><p>  專 業(yè)

2、 電氣工程及其自動化 </p><p>  年 級 </p><p>  姓 名 </p><p>  學(xué) 號 </p><p>  指導(dǎo)教師

3、 </p><p>  時 間 </p><p><b>  目錄</b></p><p>  第一章 引言...........................................03</p><

4、p>  第二章 總體設(shè)計方案...................................04</p><p>  一:設(shè)計要求..........................................04</p><p>  二:硬件設(shè)計方案......................................04</p><p> 

5、 三:軟件設(shè)計程序......................................08</p><p>  第三章 調(diào)試及結(jié)果分析.................................14</p><p>  一:調(diào)試及結(jié)析結(jié)果分析................................14</p><p>  二:設(shè)計總結(jié).....

6、.....................................15</p><p>  參考文獻..............................................15</p><p>  附錄(一)............................................16</p><p>  附錄(二)....

7、..........................................</p><p><b>  引言:</b></p><p>  單片機具有體積小,可靠性高,功能強,靈活方便等許多優(yōu)點,廣泛應(yīng)用于國民經(jīng)濟的各個領(lǐng)域。單片機的應(yīng)用,從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法,以前由模擬電路和數(shù)字電路實現(xiàn)的大部分電路,現(xiàn)在都能用單片機通過軟件方法來

8、實現(xiàn)。</p><p>  單片機在工業(yè)控制中的應(yīng)用,特別是在實時監(jiān)測和自動控制的單片機應(yīng)用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面的知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,加以完善。廣告燈控制的出現(xiàn),對廣告夜景的美化和視覺享受,起到了十分重要的作用,也為一個城市商務(wù)區(qū)增添了一道亮麗的風(fēng)景線。</p><p>  STC89C52RC單片機簡

9、要介紹單片機應(yīng)用系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成。硬件系統(tǒng)是指單片機以及擴展的存儲器、I\O接口、外圍擴展的功能芯片以及接口電路。軟件系統(tǒng)包括監(jiān)控程序和各種應(yīng)用程序。在單片機應(yīng)用系統(tǒng)中,單片機是整個系統(tǒng)的核心,對整個系統(tǒng)的信息輸入、處理、信息輸出進行控制。</p><p>  本系統(tǒng)采用單片機為中心器件來設(shè)計廣告燈,單片機系統(tǒng)實用性強,操作簡單,擴展性好,靈活多變??梢岳闷浞奖憧旖莸倪M行實驗。在單片機應(yīng)用系統(tǒng)

10、在其中配置的鍵盤可以是獨立鍵盤,也可能是矩陣鍵盤。顯示器也為LED數(shù)碼管。但在此次實驗中運用的是矩陣鍵盤。來控制不同的發(fā)光二極管使之呈現(xiàn)出理想的效果,從而達到預(yù)期的目標(biāo)</p><p>  第二章 總體設(shè)計方案</p><p><b>  一、設(shè)計要求</b></p><p>  鍵盤輸入使8個led發(fā)光二極管作16種不同的變幻,控制矩陣鍵盤

11、。即用硬件設(shè)計和軟件設(shè)計相結(jié)合的方式,來進行此功能的實現(xiàn)。其中硬件的設(shè)計主要包括:電路的設(shè)計、選取元器件、編輯元器件,元器件的屬性設(shè)置、連插件,連接電路和檢測。軟件的設(shè)計主要包括:添加源程序,編輯源程序,生成目標(biāo)代碼文件(擴展名為.HEX)。最后兩種設(shè)計相結(jié)合,在單片機上體現(xiàn)出這種功能的實現(xiàn)。</p><p>  二、硬件電路的設(shè)計方案</p><p>  按照設(shè)計要求,確定硬件電路的總體

12、設(shè)計方案,以8052單片機為核心的控制電路,包括復(fù)位電路、定時電路,4*4矩陣鍵盤和二極管控制電路。</p><p>  2.1 復(fù)位電路設(shè)計</p><p>  單片機在可靠的復(fù)位之后,才會從0000H地址開始有序的執(zhí)行應(yīng)用程序。同時,復(fù)位電路也是容易受到外部噪聲干擾的敏感部分之一。因此,復(fù)位電路應(yīng)該具有兩個主要的功能:1.必須保證系統(tǒng)可靠的進行復(fù)位;2必須具有一定的抗干擾的能力。<

13、;/p><p>  系統(tǒng)選用6MHz晶振,則一個機器周期為2us,那么復(fù)位脈沖寬度最小應(yīng)為4us。在實際應(yīng)用系統(tǒng)中,考慮到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復(fù)位的可靠性等因素,必須有足夠的余量。</p><p>  單片機在啟動時都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。8052系列單片機的復(fù)位信號是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正

14、常工作狀態(tài)時,且振蕩器穩(wěn)定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。</p><p>  2.2 定時電路設(shè)計</p><p>  CPU就是通過復(fù)雜的時序電路完成不同的指令功能的。時鐘信號可以由兩種方式產(chǎn)生:一種是內(nèi)部方式,利用芯片內(nèi)部的振蕩電路,產(chǎn)生時鐘信號;另一種為外部方式,時鐘信號由外部引入。本實驗中用到的是內(nèi)部定時電

15、路。從而實現(xiàn)對二極管開關(guān)的的時間長短,延時的長短進行控制,因此具有重要的意義。</p><p><b>  電路圖如下所示:</b></p><p>  2.3、4*4矩陣鍵盤的設(shè)計</p><p>  矩陣式鍵盤乃是當(dāng)今使用最為廣泛的鍵盤模式,該系統(tǒng)以N個端口連接控制N*N個按鍵顯示在LED數(shù)碼管上。用單片機的并行口P3連接4×4

16、矩陣鍵盤,并以單片機的P3.0-P3.3各管腳作輸入線,以單片機的P3.4-P3.7各管腳作輸出線。</p><p>  4*4矩陣鍵盤是用4條I/O線作為行線4條I/O線作為列線在行線和列線的交叉點上設(shè)置一個按鍵每個按鍵有它的行值和列值。開始先對第一列進行掃描,如果沒有按鍵,再對第二列、第三列、第四列分別進行掃描,如果沒有返回到開始。如果第一列有按鍵,分別對第一行、第二行、第三行、第四行進行掃描,判斷是哪

17、一個按鍵被按下。</p><p>  用AT89C51單片機對4*4矩陣鍵盤進行動態(tài)掃描,當(dāng)按鍵盤的鍵時,可以產(chǎn)生相應(yīng)的二極管亮滅的變化并實時顯示出來。</p><p><b>  矩陣鍵盤電路圖:</b></p><p>  2.4二極管控制電路</p><p>  二極管控制電路是整個實驗的重要部分,也是展示的主要部

18、分。芯片的并行口P2與二極管相連。通過編寫不同的延時程序,來實現(xiàn)不同的”shanshuo”子程序。并與矩陣鍵盤相連接,通過矩陣鍵盤的控制,來顯示相應(yīng)的效果。</p><p><b>  電路圖如下:</b></p><p>  Protel原理圖設(shè)計:</p><p>  在此次課程設(shè)計中,主要使用Protel 99SE來進行電路的設(shè)計Prot

19、el為設(shè)計者提供了一個集成的電路設(shè)計環(huán)境,包括原理圖設(shè)計和PCB布線工具、電路仿真和集成的設(shè)計文檔管理。而本次課程設(shè)計主要應(yīng)用其繪制電路原理圖。</p><p>  硬件設(shè)計原理圖見附錄一。</p><p><b>  三、軟件設(shè)計程序</b></p><p><b>  C語言程序代碼:</b></p>&

20、lt;p>  #include<reg52.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar num,temp;<

21、;/p><p>  void delay(uint x) //延時子程序</p><p><b>  {</b></p><p><b>  uint i,j;</b></p><p>  for(i=x;i>0;i--)</p><p>  for(j=100;j>

22、0;j--);</p><p><b>  }</b></p><p>  void liushuideng(uchar q,uint p)//流水燈控制子程序</p><p><b>  {</b></p><p>  uchar aa,i;</p><p><b&g

23、t;  aa=0xfe;</b></p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p><b>  P2=aa;</b></p><p><b>  delay(p);</b></p>&l

24、t;p>  aa=_crol_(aa,q);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void shanshuo1(uint w) //奇數(shù)燈和偶數(shù)燈交替閃爍子程序</p><p><b>  {</b>&

25、lt;/p><p><b>  P2=0x55;</b></p><p><b>  delay(w);</b></p><p><b>  P2=0xaa;</b></p><p>  delay(w); </p><p><b>  }&l

26、t;/b></p><p>  void shanshuo2(uint e) //后四個燈和前四個燈交替閃爍子程序</p><p><b>  {</b></p><p><b>  P2=0xf0;</b></p><p><b>  delay(e);</b>

27、</p><p><b>  P2=0x0f;</b></p><p>  delay(e); </p><p><b>  }</b></p><p>  void keys() //檢測4*4矩陣鍵盤哪個按下子程序</p><p><b>  {<

28、/b></p><p>  P3=0xfe; //判斷有無按鍵按下,進行第一列掃描</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0; //取行狀態(tài),對列狀態(tài)進行屏蔽</p><p>  if(temp!=0xf0)//如果有按鍵按下,計算其編碼

29、值</p><p><b>  {</b></p><p>  delay(10); //消除抖動</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;//排除普通機械抖動造成的影響</p><p>  if(

30、temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P3;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xee: //

31、按鍵0按下,其編碼值給num</p><p><b>  num=0;</b></p><p><b>  break;</b></p><p>  case 0xde: // 按鍵1按下,其編碼值給num</p><p><b>  num=1;</b></p>

32、<p><b>  break;</b></p><p>  case 0xbe: //按鍵2按下,其編碼值給num</p><p><b>  num=2;</b></p><p><b>  break;</b></p><p>  case 0x7e:

33、 //按鍵3按下,其編碼值給num</p><p><b>  num=3;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

34、;<b>  }</b></p><p>  P3=0xfd; //進行第二列掃描</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><

35、;b>  {</b></p><p>  delay(10);</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b

36、></p><p><b>  temp=P3;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xed:</p><p><b>  num=4;</b></p&

37、gt;<p><b>  break;</b></p><p>  case 0xdd:</p><p><b>  num=5;</b></p><p><b>  break;</b></p><p>  case 0xbd:</p><p

38、><b>  num=6;</b></p><p><b>  break;</b></p><p>  case 0x7d:</p><p><b>  num=7;</b></p><p><b>  break;</b></p>

39、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  P3=0xfb; //進行第三列掃描</p><p><b>  temp=P3;</b></p>

40、<p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  temp=P3;</b></p><p>  tem

41、p=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P3;</b></p><p>  switch(temp)</p><p><b>  {</b

42、></p><p>  case 0xeb:</p><p><b>  num=8;</b></p><p><b>  break;</b></p><p>  case 0xdb:</p><p><b>  num=9;</b></p

43、><p><b>  break;</b></p><p>  case 0xbb:</p><p><b>  num=10;</b></p><p><b>  break;</b></p><p>  case 0x7b:</p><

44、;p><b>  num=11;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

45、;<p>  P3=0xf7; //進行第四列掃描</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p>&l

46、t;p>  delay(10);</p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p><b>

47、;  temp=P3;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xe7:</p><p><b>  num=12;</b></p><p><b>  break;&

48、lt;/b></p><p>  case 0xd7:</p><p><b>  num=13;</b></p><p><b>  break;</b></p><p>  case 0xb7:</p><p><b>  num=14;</b>

49、;</p><p><b>  break;</b></p><p>  case 0x77:</p><p><b>  num=15;</b></p><p><b>  break;</b></p><p><b>  }</b&g

50、t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void xiaoguo()</p><p><b>  {</b></p>

51、;<p>  switch(num)</p><p><b>  {</b></p><p>  case 0: //當(dāng)編碼值為0時,二極管亮后四個燈</p><p><b>  P2=0xf0;</b></p><p><b>  break;</b><

52、;/p><p>  case 1: //當(dāng)編碼值為1時,二極管亮第一三五七個燈</p><p><b>  P2=0x55;</b></p><p><b>  break;</b></p><p>  case 2: //當(dāng)編碼值為2時,二極管亮兩邊兩個燈</p><p>

53、;<b>  P2=0x7e;</b></p><p><b>  break;</b></p><p>  case 3: //當(dāng)編碼值為3時,亮第二個第七個燈</p><p><b>  P2=0xbd;</b></p><p><b>  break;<

54、;/b></p><p>  case 4: //當(dāng)編碼值4時,二極管亮前四個燈</p><p><b>  P2=0x0f;</b></p><p><b>  break;</b></p><p>  case 5: //當(dāng)編碼值為5時,兩第二四六八個燈</p><

55、;p><b>  P2=0xaa;</b></p><p><b>  break;</b></p><p>  case 6: //當(dāng)編碼值為6時,亮第三個燈和第五個燈</p><p><b>  P2=0xdb;</b></p><p><b>  br

56、eak;</b></p><p>  case 7: //當(dāng)編碼值為7時,亮第四個和第五個燈</p><p><b>  P2=0xe7;</b></p><p><b>  break;</b></p><p>  case 8: //當(dāng)編碼值為8時,前四個燈和我后四個燈慢

57、速交替閃爍</p><p>  shanshuo2(2000);</p><p><b>  break;</b></p><p>  case 9: //當(dāng)編碼值為9時,奇數(shù)燈和偶數(shù)燈慢速交替閃爍</p><p>  shanshuo1(2000);</p><p><b>  

58、break;</b></p><p>  case 10: //當(dāng)編碼值為10時,燈從最右邊向左每隔一個慢速流水閃</p><p>  liushuideng(2,1500);</p><p><b>  break;</b></p><p>  case 11: //當(dāng)編碼值為11時,燈從最右邊

59、慢速先做流水閃</p><p>  liushuideng(1,1500);</p><p><b>  break;</b></p><p>  case 12: //當(dāng)編碼值為12時,前四個燈和后四個燈快速交替閃爍</p><p>  shanshuo2(800); </p><p&

60、gt;<b>  break;</b></p><p>  case 13: //當(dāng)編碼值為13時,奇數(shù)燈和偶數(shù)燈快速閃爍</p><p>  shanshuo1(800); </p><p><b>  break;</b></p><p>  case 14: //當(dāng)編碼值為14時

61、,燈從最右邊向左每隔一個快速流水閃</p><p>  liushuideng(2,500);</p><p><b>  break;</b></p><p>  case 15: //當(dāng)編碼值為15時,燈從最右邊以此向左快速流水閃</p><p>  liushuideng(1,500);</p>

62、<p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  { </b></p><p&

63、gt;  while(1) //主程序 ,無條件循環(huán)以下環(huán)節(jié)</p><p><b>  {</b></p><p>  keys(); //判斷是哪個按鍵按下子程序</p><p>  xiaoguo();//在二極管上顯示對應(yīng)的按鍵效果</p><p><b>  }</b></p&g

64、t;<p><b>  }</b></p><p>  第三章 調(diào)試及結(jié)果分析</p><p><b>  一、調(diào)試及結(jié)果分析</b></p><p>  矩陣鍵盤掃描所對應(yīng)的編碼,為按鍵的序列號,通過調(diào)試,其最終結(jié)果為:</p><p>  當(dāng)按下為0鍵時,二極管亮后四個燈</

65、p><p>  當(dāng)按下為2鍵時,二極管亮第一三五七個燈</p><p>  當(dāng)按下為2鍵時,二極管亮兩邊兩個燈</p><p>  當(dāng)按下為3鍵時,亮第二個第七個燈</p><p>  當(dāng)按下為4鍵時,二極管亮前四個燈</p><p>  當(dāng)按下為5鍵時,亮第二四六八個燈</p><p>  當(dāng)按下

66、為6鍵時,亮第三個燈和第五個燈</p><p>  當(dāng)按下為7鍵時,亮第四個和第五個燈</p><p>  當(dāng)按下為8鍵時,前四個燈和后四個燈慢速交替閃爍</p><p>  當(dāng)按下為9鍵時,奇數(shù)燈和偶數(shù)燈慢速交替閃爍</p><p>  當(dāng)按下為10鍵時,燈從最右邊向左每隔一個慢速流水閃</p><p>  當(dāng)按下為

67、11鍵時,燈從最右邊慢速先做流水閃</p><p>  當(dāng)按下為12鍵時,前四個燈和后四個燈快速交替閃爍</p><p>  當(dāng)按下為13鍵時,奇數(shù)燈和偶數(shù)燈快速閃爍</p><p>  當(dāng)按下為14鍵時,燈從最右邊向左每隔一個快速流水閃</p><p>  當(dāng)按下為15鍵時,燈從最右邊以此向左快速流水閃</p><p&g

68、t;<b>  二、設(shè)計總計</b></p><p>  通過這次課程設(shè)計,我得到了一次用專業(yè)知識專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我對單片機有了一個較高層次的認(rèn)識,使我在單片機的基本原理,單片機應(yīng)用系統(tǒng)的基本原理,單片機應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編程設(shè)計思路技巧的掌握方面都能向前邁了一大步。獲得豐富理論知識的同時,極大地提高了實踐能力,動手能力。把知識與實際相結(jié)合,對今后單片機進一

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論