久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8474|回復: 12
收起左側

AT89S52單片機16LED搖搖棒設計(含pcb文件,源程序等)

  [復制鏈接]
ID:353519 發表于 2018-8-21 10:33 | 顯示全部樓層 |閱讀模式
一、作品說明    搖搖棒是如今流行的一種玩具,在各種聚會、節日中均見得到它的身影。本設計也追隨著搖搖棒的原理,利用人眼的視覺暫留特性,通過AT89S52單片機對16只高亮度LED發光二極管進行控制, 配合手的左右搖晃就可呈現一幅完整的畫面。 該搖搖棒具有如下功能:1) 顯示  “歡迎使用神奇魔幻搖搖棒!”;2) 顯示  “o(∩_∩)o”微笑圖案;3) 顯示    心形圖案;4) 顯示   “LOVE”;5) 可以通過開關實現轉換,輪流顯示并循環。     

二、系統總體設計
1、總體方案比較與論證所謂的“搖搖棒”,其實就是一個循環的LED顯示,利用人的視覺滯留產生靜態顯示的現象。要實現這個目標,就要求延時部分做的比較小,所以采用石英晶體振蕩器。而目前能夠實現這種功能的器件有很多種,不同的類型的器件也能夠很好的完成。本作品本著方便、價格低廉的原則,采用單片機控制,由水銀開關的閉合對單片機產生外部中斷,從而對中斷進行采集。到達一定數量便進行圖象的轉換。整個系統由單片機控制模塊,開關及電源模塊和輸出顯示模塊三個部分構成。2、主要部件原理   (1)單片機控制模塊    用單片機想要控制LED顯示只需要定時輸出就可以,但每個人搖動的速度不一樣,如何準確的并穩定的變換圖案呢?這就需要用到外部中斷。將水銀開關的兩個引腳一端接VCC,一端接GND,這樣的話,當搖棒向一邊運動時LED按照程序編輯好的規律顯示,而向另一邊運動時LED全滅,此時一個周期就會產生一個下跳沿的信號,信號傳遞給單片機的nINT0產生中斷,對中斷的數量計數,當計到10時便轉換顯示的圖案,當依次顯示完后便回到初始狀態進行循環。由于人的視覺滯留時間長達0.1s,所以在每顯示完一列LED后加入一段合適的延時,如5ms,每個字之間加入延時如15ms,這樣,我們就能看到靜態的穩定的字,并且每個字之間是有空隙的。為了讓字能夠在空間的中部顯示,在啟動中斷顯示后延時一段合適的時間,使棒在半圓軌跡的大約1/4處開始顯示,這樣看到的字方向上才比較正。 (2水銀開關    水銀開關,又稱傾側開關,是電路開關的一種,以一接著電極的小巧容器儲存著一小滴水銀,容器中多數注入惰性氣體或真空。      仔細觀察水銀開關,實際上他是一個封閉的玻璃管,里面有兩個分開著的導線和一段水銀球,當玻璃管的平衡位置變化時,水銀球會來回移動,當水銀球移動到兩根導線時,因水銀是金屬-導體,故電路變為通路,此時接收器處于工作狀態;反之,水銀球遠離兩根導線時為斷路,此時接收器處于非工作狀態。本設計采用震動開關代替水銀開關,試驗測試發現,水銀開關多次高頻率的接通斷開后觸點會氧化,容易接觸不良,因此改用下面的震動開關。

3、系統設計    本系統包括單片機控制模塊,開關及電源模塊和輸出顯示模塊三個部分。單片機控制模塊由Keil C進行編寫,實現起來簡單,主要有三部分,主程序、中斷服務部分還有字符點陣。開關及電源模塊采用5V變壓器并配合水銀開關使用。輸出顯示模塊采用16個LED燈,在版上一字排開。      

三、硬件設計硬件連接上用水銀開關產生的電平轉換引發中斷,傳遞給單片機,再由單片機調用點陣文件輸出到LED上。AT89S52單片機作為控制器,在它的P0、P2口接有16只以共陽的方式連接的高亮度LED,由單片機輸出低電平點亮。P0口處接上拉電阻RA1。串在LED公共端的二極管D1會產生一定的壓降,用來保護LED。K1是畫面切換開關,用于切換顯示不同內容;S1為水銀開關。系統電源VCC為5V,實際使用時用3節干電池串聯4.5V即可。16只LED發光管作為畫面每一列的顯示,左右搖晃起到了掃描的作用,人眼的視覺暫留現象使得看到的是一幅完整的畫面。水銀開關的作用:棒在搖動時,只能在朝某一方向搖動時顯示,否則會出現鏡像字或鏡像畫面,所以通過接一只水銀開關來控制,使搖搖棒從左向右搖動時將內容顯示出來。

四、軟件設計軟件部分包括主函數程序、中斷服務程序、延時子程序以及四個顯示子程序。軟件設計流程如下:  五、系統調試與分析主要測試單片機的工作情況,能否正常用LED顯示出各圖案,并且記錄各圖案持續的時間和穩定顯示度以及一個循環周期所用的時間。并且檢查LED的發光亮度,使之可以明顯的分辯出來。圖    案穩定程序歡迎使用神奇魔幻搖搖棒較穩定心形較穩定笑臉較穩定LOVE較穩定經過測試,當擺動的幅度和速度適當時,各個畫面均可以明顯的顯示出來。整體來說,本方案設計比較成功。

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.jpg 0.png 0.png

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int    //宏定義
  4. sbit KEY=P1^0;
  5. uchar KY;    //KY作用在后面說明     
  6. uchar disp;     //顯示漢字指針
  7. uchar pic=0,num=0;     //pic為按鍵次數;num為中斷次數


  8. uchar code love[] = {

  9. 0x80,0x40,0x40,0x40,0x30,0x42,0x1E,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0xFF,0x7F,
  10. 0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x40,0x00,0x40,0x00,0x00,/*"生",0*/
  11. /* (16 X 16 , 宋體 ) */

  12. 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,
  13. 0x82,0x40,0x82,0x40,0x82,0x40,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"日",1*/
  14. /* (16 X 16 , 宋體 ) */

  15. 0x00,0x01,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x10,0x00,0x20,0x81,0x08,0x41,0x08,0x31,
  16. 0x08,0x0D,0xFF,0x03,0x08,0x0D,0x08,0x31,0xF8,0x41,0x00,0x81,0x00,0x81,0x00,0x00,/*"快",2*/
  17. /* (16 X 16 , 宋體 ) */

  18. 0x00,0x00,0x00,0x20,0xE0,0x10,0x9C,0x08,0x84,0x06,0x84,0x40,0x84,0x80,0xF4,0x7F,
  19. 0x82,0x00,0x82,0x00,0x83,0x02,0x82,0x04,0x80,0x08,0x80,0x30,0x00,0x00,0x00,0x00,/*"樂",3*/
  20. /* (16 X 16 , 宋體 ) */






  21. };


  22. uchar code loveyou[] = {

  23. 0x00,0x08,0x08,0x08,0x88,0x08,0x88,0x08,0x89,0x08,0x8E,0x08,0x88,0x08,0xF8,0xFF,
  24. 0x88,0x08,0x8C,0x08,0x8B,0x08,0x88,0x08,0x88,0x08,0x08,0x08,0x00,0x08,0x00,0x00,/*"羊",0*/
  25. /* (16 X 16 , 宋體 ) */

  26. 0x00,0x04,0x20,0x04,0x18,0x04,0xC7,0x07,0x44,0x04,0x44,0x04,0x44,0x04,0x44,0x04,
  27. 0xFC,0xFF,0x44,0x04,0x44,0x04,0x44,0x04,0x44,0x04,0x04,0x04,0x00,0x04,0x00,0x00,/*"年",1*/
  28. /* (16 X 16 , 宋體 ) */

  29. 0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,
  30. 0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,/*"大",2*/
  31. /* (16 X 16 , 宋體 ) */

  32. 0x08,0x00,0x08,0x00,0x88,0x00,0x88,0xFC,0x88,0x44,0x88,0x44,0x88,0x44,0xFF,0x44,
  33. 0x88,0x44,0x88,0x44,0x88,0x44,0x88,0xFC,0x88,0x00,0x08,0x00,0x08,0x00,0x00,0x00,/*"吉",3*/
  34. /* (16 X 16 , 宋體 ) */



  35. };

  36. uchar code hehe[] = {
  37. 0x40,0x80,0x48,0x7E,0x48,0x10,0xFF,0x3F,0x48,0x44,0x48,0x44,0x00,0x40,0xF8,0x4F,
  38. 0x08,0x44,0x08,0x50,0xFF,0x49,0x08,0x46,0x89,0x49,0x6A,0x5C,0x00,0x40,0x00,0x00,/*"越",0*/
  39. /* (16 X 16 , 宋體 ) */

  40. 0x00,0x21,0x08,0x21,0x08,0x11,0x28,0x11,0xC8,0x09,0x08,0x05,0x08,0x03,0xFF,0xFF,
  41. 0x08,0x03,0x08,0x05,0x88,0x09,0x68,0x11,0x08,0x11,0x08,0x21,0x00,0x21,0x00,0x00,/*"來",1*/
  42. /* (16 X 16 , 宋體 ) */

  43. 0x40,0x80,0x48,0x7E,0x48,0x10,0xFF,0x3F,0x48,0x44,0x48,0x44,0x00,0x40,0xF8,0x4F,
  44. 0x08,0x44,0x08,0x50,0xFF,0x49,0x08,0x46,0x89,0x49,0x6A,0x5C,0x00,0x40,0x00,0x00,/*"越",2*/
  45. /* (16 X 16 , 宋體 ) */

  46. 0x44,0x00,0x54,0xFF,0x54,0x15,0x7F,0x55,0x54,0x95,0x54,0x7F,0x44,0x00,0x00,0x80,
  47. 0xFE,0x63,0x02,0x1C,0xF2,0x03,0x02,0x7C,0x02,0x80,0xFE,0x83,0x00,0xE0,0x00,0x00,/*"靚",3*/
  48. /* (16 X 16 , 宋體 ) */


  49. };

  50. unsigned char code hanzi[] = {


  51. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
  52. /* (8 X 16 , 宋體 ) */

  53. 0x08,0x02,0x08,0x01,0x89,0x00,0xEE,0xFF,0x98,0x80,0x00,0x43,0x7E,0x20,0x42,0x18,
  54. 0xC2,0x07,0x42,0x00,0x42,0x00,0xC2,0x3F,0x42,0x40,0x7E,0x40,0x00,0x78,0x00,0x00,/*"祝",1*/
  55. /* (16 X 16 , 宋體 ) */
  56. 0x00,0x08,0x00,0x04,0x7F,0x02,0x55,0xFF,0xD5,0x55,0x55,0x55,0x7F,0x55,0x00,0x55,
  57. 0xFF,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x55,0x00,0x41,0x00,0x00,0x00,0x00,/*"瞿",2*/
  58. /* (16 X 16 , 宋體 ) */

  59. 0x82,0x00,0x62,0x00,0x2A,0xF8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xA8,0xFA,0xFB,
  60. 0x2A,0xA8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xF8,0xA2,0x00,0x62,0x00,0x00,0x00,/*"蕾",3*/
  61. /* (16 X 16 , 宋體 ) */

  62. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
  63. /* (8 X 16 , 宋體 ) */
  64. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
  65. /* (8 X 16 , 宋體 ) */

  66. 0x08,0x02,0x08,0x01,0x89,0x00,0xEE,0xFF,0x98,0x80,0x00,0x43,0x7E,0x20,0x42,0x18,
  67. 0xC2,0x07,0x42,0x00,0x42,0x00,0xC2,0x3F,0x42,0x40,0x7E,0x40,0x00,0x78,0x00,0x00,/*"祝",1*/
  68. /* (16 X 16 , 宋體 ) */
  69. 0x00,0x08,0x00,0x04,0x7F,0x02,0x55,0xFF,0xD5,0x55,0x55,0x55,0x7F,0x55,0x00,0x55,
  70. 0xFF,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x55,0x00,0x41,0x00,0x00,0x00,0x00,/*"瞿",2*/
  71. /* (16 X 16 , 宋體 ) */

  72. 0x82,0x00,0x62,0x00,0x2A,0xF8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xA8,0xFA,0xFB,
  73. 0x2A,0xA8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xF8,0xA2,0x00,0x62,0x00,0x00,0x00,/*"蕾",3*/
  74. /* (16 X 16 , 宋體 ) */

  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
  76. /* (8 X 16 , 宋體 ) */
  77. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
  78. /* (8 X 16 , 宋體 ) */

  79. 0x08,0x02,0x08,0x01,0x89,0x00,0xEE,0xFF,0x98,0x80,0x00,0x43,0x7E,0x20,0x42,0x18,
  80. 0xC2,0x07,0x42,0x00,0x42,0x00,0xC2,0x3F,0x42,0x40,0x7E,0x40,0x00,0x78,0x00,0x00,/*"祝",1*/
  81. /* (16 X 16 , 宋體 ) */
  82. 0x00,0x08,0x00,0x04,0x7F,0x02,0x55,0xFF,0xD5,0x55,0x55,0x55,0x7F,0x55,0x00,0x55,
  83. 0xFF,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x55,0x00,0x41,0x00,0x00,0x00,0x00,/*"瞿",2*/
  84. /* (16 X 16 , 宋體 ) */

  85. 0x82,0x00,0x62,0x00,0x2A,0xF8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xA8,0xFA,0xFB,
  86. 0x2A,0xA8,0xAA,0xAA,0xAF,0xAA,0xAA,0xAA,0x2A,0xF8,0xA2,0x00,0x62,0x00,0x00,0x00,/*"蕾",3*/
  87. /* (16 X 16 , 宋體 ) */

  88. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",4*/
  89. /* (8 X 16 , 宋體 ) */





  90. };                                                                        

  91. /*****函數聲明*****/
  92. void display1_ltor(void);
  93. void display2_ltor(void);
  94. void display2_rtol(void);
  95. void display3(void);
  96. void display4(void);






  97. /*****n(us)延時子程序*****/
  98. void DelayUs(uint N)
  99. {
  100. uint x;
  101. for(x=0; x<=N;x++);
  102. }

  103. /*****中斷服務程序*****/
  104. void intersvr0(void) interrupt 0
  105. {
  106. ;
  107. KY=~KY;      //每個搖動來回水銀開關會在擺幅兩端分別產生下降沿中斷,只提取其中一次(從左向右搖才顯示)
  108. if(KY==0)
  109. {
  110.    num++;     //計算中斷次數
  111.    switch(pic)      //選擇畫面
  112.    {
  113.         case 0:{display1_ltor();}break;
  114.     case 1:{display2_ltor();}break;
  115.     case 2:{display3();}break;
  116.     case 3:{display4();}break;
  117.     default:{display1_ltor();}  
  118.    }
  119. }

  120. }
  121. /*****顯示子程序1(漢字)*****/
  122. void display1_ltor(void)
  123. {
  124. uchar i;
  125. if(num>10){disp++;num=0;}     //12個漢字分為3次顯示完(每次顯示4個),每中斷10次切換
  126. if(disp>2)disp=0;
  127.   DelayUs(5200);     //此處延時時間依各硬件差別而各不相同,試著調整使得顯示內容居中即可
  128. for(i=0;i<64;i++)
  129. {
  130.      P0=~hanzi[disp*128+i*2];
  131.      P2=~hanzi[disp*128+i*2+1];
  132.      DelayUs(100);
  133. }
  134. }

  135. /*****顯示子程序2(LOVE)*****/
  136. void display2_ltor(void)
  137. {
  138. uchar i;
  139. DelayUs(4000);
  140. for(i=0;i<64;i++)
  141. {
  142.      P0=~love[i*2];
  143.      P2=~love[i*2+1];
  144.      DelayUs(140);
  145. }
  146. }
  147. /*****顯示子程序3(心形圖案)*****/
  148. void display3(void)
  149. {
  150. uchar i;
  151.   DelayUs(4000);
  152. for(i=0;i<64;i++)
  153. {
  154.      P0=~loveyou[i*2];
  155.      P2=~loveyou[i*2+1];
  156.      DelayUs(120);
  157. }
  158. }

  159. /*****顯示子程序4(呵呵o(∩_∩)o圖案)*****/
  160. void display4(void)
  161. {
  162. uchar i;
  163. DelayUs(4000);
  164. for(i=0;i<64;i++)
  165. {
  166.      P0=~hehe[i*2];
  167.      P2=~hehe[i*2+1];
  168. ……………………

  169. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

0.png
所有資料51hei提供下載:
搖搖棒.rar (8.42 MB, 下載次數: 250)



回復

使用道具 舉報

ID:84492 發表于 2019-1-29 17:24 | 顯示全部樓層
很感謝,中斷部分的說明
回復

使用道具 舉報

ID:399411 發表于 2019-2-25 11:02 | 顯示全部樓層
6666,正好需要這個,拿走了謝謝樓主
回復

使用道具 舉報

ID:348441 發表于 2019-3-12 14:33 | 顯示全部樓層
為什么下載了打不開
回復

使用道具 舉報

ID:514128 發表于 2019-4-17 20:45 | 顯示全部樓層
有沒有仿真部分?不知怎么弄仿真
回復

使用道具 舉報

ID:519743 發表于 2019-4-27 18:00 | 顯示全部樓層
好東西,收藏了
回復

使用道具 舉報

ID:451375 發表于 2019-11-7 22:27 | 顯示全部樓層
好東西,收藏了 !!!
回復

使用道具 舉報

ID:26429 發表于 2019-11-8 15:15 | 顯示全部樓層
謝謝,拿走了,弄兩個給孩子玩
回復

使用道具 舉報

ID:653537 發表于 2019-12-1 15:03 | 顯示全部樓層
上車啦謝謝老哥
回復

使用道具 舉報

ID:655165 發表于 2019-12-6 13:45 | 顯示全部樓層
好東西,值得看看
回復

使用道具 舉報

ID:601184 發表于 2020-1-10 14:29 | 顯示全部樓層
好人一生平安
回復

使用道具 舉報

ID:206082 發表于 2020-3-8 21:33 | 顯示全部樓層
非常感謝
回復

使用道具 舉報

ID:693609 發表于 2020-3-8 21:44 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av大片免费看 | 国产特级毛片aaaaaa喷潮 | 久久一区二区免费视频 | 欧美在线一区二区三区四区 | 亚洲伦理自拍 | 久久久久久国产精品 | 国产午夜精品福利 | 网站国产| 婷婷精品 | 国产一级在线视频 | 精品国产欧美 | 午夜影院在线 | 亚洲精品久久久久久久久久久久久 | 免费成人高清在线视频 | 欧美福利 | 日韩国产欧美一区 | 国产视频中文字幕 | 中文在线一区二区 | 精品一二 | 欧美日韩中文在线 | 亚洲高清视频一区 | 日韩看片 | 在线视频一区二区 | 夜夜骑av| 久久日韩精品 | 青青久久 | 爱爱视频在线观看 | 色婷婷av一区二区三区软件 | 亚洲视频二区 | 天天澡天天狠天天天做 | 伊人久久大香线 | 五月激情婷婷网 | 日韩视频一级 | 国产精品久久久久久婷婷天堂 | 免费久久久久久 | 亚洲在线电影 | 中文字幕国产 | 特黄色一级毛片 | 精品久久久久久久人人人人传媒 | 欧美日日日日bbbbb视频 | 国产成人精品免费 |