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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 44382|回復: 44
打印 上一主題 下一主題
收起左側

51單片機搖搖棒制作的完全資料

  [復制鏈接]
跳轉到指定樓層
樓主
   “搖搖棒”是基于人眼視覺暫留原理而產生的, 當進行搖動時,由于人的視覺暫留會在發光二極管搖動區域產生一個視覺平面,從而達到在該視覺平面上傳達信息的作用。本文介紹了以STC89C52單片機控制為主控芯片、配合高亮度LED二極管以及水銀開關構成簡易搖搖棒的設計過程,通過分時刷新20個發光二極管來顯示輸出文字或圖案等信息。并在此基礎上,利用DS1302時鐘芯片顯示當前時間,可通過按鍵對時間進行設置

第一章 基本原理
1.1視覺暫留現象
  (Visual staying phenomenon,duration of vision)
  人眼在觀察景物時,光信號傳入大腦神經,需經過一段短暫的時間,光的作用結束后,視覺形象并不立即消失,這種殘留的視覺稱“后像”,視覺的這一現象則被稱為“視覺暫留”。
是光對視網膜所產生的視覺在光停止作用后,仍保留一段時間的現象,其具體應用是電影的拍攝和放映。原因是由視神經的反應速度造成的.其時值是二十四分之一秒。是動畫、電影等視覺媒體形成和傳播的根據。
視覺實際上是靠眼睛的晶狀體成像,感光細胞感光,并且將光信號轉換為神經電流,傳回大腦引起人體視覺。感光細胞的感光是靠一些感光色素,感光色素的形成是需要一定時間的,這就形成了視覺暫停的機理。
物體在快速運動時, 當人眼所看到的影像消失后,人眼仍能繼續保留其影像0.1-0.4秒左右的圖像,這種現象被稱為視覺暫留現象。是人眼具有的一種性質。人眼觀看物體時,成像于視網膜上,并由視神經輸入人腦,感覺到物體的像。但當物體移去時,視神經對物體的印象不會立即消失,而要延續0.1 -0.4秒的時間,人眼的這種性質被稱為“眼睛的視覺暫留”。

1.2 STC單片機簡介
STC單片機是一款增強型51單片機,完全兼容MCS-51,還增加了新的功能,比如新增兩級中斷優先級,多一個外中斷,內置EEPROM,硬件看門狗,具有掉電模式,512B內存等。還支持ISP下載,不用編程器,只要一個MAX232和一些廉價的元件就能寫程可擦寫10萬次。
        單片機最小系統:2

圖(1) 單片機最小系統電路圖
1.3 水銀開關
        搖搖棒在搖動時,只能在朝某一方向搖動時顯示,否則會出現鏡像字或鏡像畫面。所以通過接一個水銀開關來控制,使搖搖棒從左向右搖動時將內容正確顯示出來。
圖(2) 水銀開關結構圖

圖(3)水銀開關實物圖1
        水銀開關里的水銀柱很活躍,導致在接通時容易產生抖動。所以將水銀開關斜向上放置(尖端朝斜上方45°角),靠水銀自身重力的作用減少抖動。
        因為重力的關系,水銀水珠會隨容器中較低的地方流去,如果同時接觸到兩個電極的話,開關便會將電路閉合,開啟開關。
主要作用:
1. 觸發EXT1中斷,在中斷程序中顯示畫面。
2. 水銀開關斷開時,進入設置狀態。(
1.4 時鐘芯片
DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片,附加31字節靜態RAM,采用SPI三線接口與CPU進行通信,并可采用突發方式一次傳送多個字節的時鐘信號和RAM數據。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調整,且具有閏年補償功能。工作電壓寬達2.5~5.5V。采用雙電源供電(主電源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。

圖(4) DS1302引腳分配圖)
各引腳的功能為:
8、Vcc1:備用電池端;
1、Vcc2:5V電源。當Vcc2>Vcc1+0.2V時,由Vcc2向DS1302供電,當Vcc2< Vcc1時,由Vcc1向DS1302供電。
7、SCLK:串行時鐘,輸入;  
6、I/O:數據輸入輸出口;
5、CE/RST:復位腳
2、3、X1、X2 是外接晶振腳 (32.768KHZ的晶振)
4、地(GND)
基本電路:
:
圖(5) DS1302電路圖
1.5 按鍵
圖(6)按鍵外觀/
主要作用:切換畫面以及時間設置。
1.6 LED
LED是發光二極管(Light Emitting Diode,LED)的簡稱,也稱作發光二極管。這種半導體組件可以作為指示燈、顯示板,它不但能夠高效率地直接講點能轉化為光能,而且擁有最長達數萬小時的使用壽命,同時具備不如傳統燈泡易碎,節能省電等優點。
在設計中的作用:作為此設計的顯示模塊,進行字符的顯示。

圖(7) LED結構圖
第二章 原理圖;
圖(8)總原理圖
第三章 實物說明圖

圖(9)總體實物圖
1.        水銀開關:傳感器
2.        20位LED:顯示器
3.        DS1302: 時鐘芯片
4.        STC89C52單片機:主控芯片
5.        電源開關:供電
6.        功能按鍵(四個):○1切換畫面。○2設置時間。 ○3時間加。 ○4時間減。
7.        時鐘芯片備用電池:當電源關閉時為時鐘芯片供電,保證時間的實時性。

圖(10) IC座里隱藏元件
IC座里隱藏元件,這樣做既美觀又能節省空間,還可以保護元件。

第四章 使用說明
步驟一:將電源連接好。


圖(11)電源開關及按鍵
步驟二:將電源開關打開。
此時20位LED開始閃爍,搖動搖搖棒將會看到如下效果:

圖(12)初始效果圖
步驟三:進入按鍵功能狀態。
方法如下:
將搖搖棒LED一側向下放置,即使水銀開關兩個引腳不導通(如圖13)。(此狀態是實現所有按鍵功能的通用狀態。若不在此狀態,按鍵將都不可用。時間設置同樣是在此狀態下進行的)。

圖(13)按鍵功能狀態
此時按下【換字】鍵,再搖動搖搖棒,畫面會切換,將會看到如下效果(如圖14):

圖(14)切換畫面
本搖搖棒系統共存儲5個畫面,通過【換字】按鍵進行循環切換。其中第五個換面顯示的是實時時間,時間信息由時鐘芯片提供。
步驟四:設置時間
        首先進入按鍵功能狀態。【將搖搖棒LED一側向下放置,即使水銀開關兩個引腳不導通(如圖13)】。
        設置狀態下LED顯示說明:
        如下圖所示,從右至左四個LED分別表示:調秒標志位、調分標志位、調時標志位、設置狀態標志位。時間信息的個位和十位分別由四個LED以二進制碼的形式顯示。

圖(15)設置狀態下LED顯示說明圖
按下【設置】按鍵,設置狀態標志位點亮,調時標志位點亮,對小時設置。按【加】按鍵或【減】按鍵可以對小時進行設置,時間信息以二進制形式顯示。
再按下【設置】按鍵,設置狀態標志位點亮,調分標志位點亮,對分鐘設置。設置方法同上。
再按下【設置】按鍵,設置狀態標志位點亮,調秒標志位點亮,對秒設置。設置方法同上。

圖(16)設置小時

圖(17)設置分鐘

圖(18)設置秒
步驟五:退出設置
設置完成后再按一下【設置】按鍵,退出設置狀態,此時20個LED全滅。否則搖搖棒顯示將不正確。(

第五章 軟件設計3
5.1 設計思路-
由于搖搖棒在搖動時,只能在朝某一方向搖動時顯示,否則會出現鏡像字或鏡像畫面,所以通過接一個水銀開關來控制。

        在搖搖棒左向右搖動時,水銀開關導通,觸發單片機的外部中斷,運行中斷程顯示預設畫面。
        在搖搖棒右向左搖動時,水銀開關斷開,運行主程檢測按鍵,實現畫面切換及時間設置。
5.2 系統工作流程
1.顯示預設圖形,并按鍵切換。
2.按鍵設置時間。
3.顯示時間。,
5.3主程序流程圖(

圖(19)主程序流程圖"

第六章 部分效果圖

圖(20)效果圖 電信0802班


  1. /*************************************************************
  2.                       旋轉LED字體程序
  3. 單片機 STC89C52
  4. 字模軟件用的PC2002
  5. 逐列取模方式
  6. ***************************************************************/
  7. #include "SYSTEM.H"
  8. #include <reg52.h>
  9. #include <DIG.h>
  10. #define uchar unsigned char
  11. #define uint unsigned int    //宏定義
  12. uint i=0 ;
  13. uint j=0 ;
  14. sbit key=P3^7;
  15. sbit she=P2^7;
  16. sbit shi=P2^6;
  17. sbit fen=P2^5;
  18. sbit mia=P2^4;
  19. uchar        h1;
  20. uchar        h2;
  21. uchar        m1;
  22. uchar         m2;
  23. uchar        s1;
  24. uchar         s2;



  25. uchar K1J,K2J,K3J;        //鍵值
  26. //char Set_Mode = 0;

  27. extern uchar k;        
  28. extern uchar Set;        //調整值

  29. unsigned char code   Disp_Tab[] = {0xff,0x7f,0xbf,0x3f,0xdf,0x5f,0x9f,0x1f,0xef,0x6f};  //段碼控制
  30. /*****n(us)延時子程序*****/
  31. void DelayUs(uint N)
  32. {
  33.     uint x ;
  34.     for(x=0;x<=N;x++);
  35. }


  36. /*--------------------------------------------------------------*/
  37. //鍵盤掃描
  38. void Keysan(void)
  39. {        
  40.                                         if(!key) //換字
  41.                                         {  DelayUs(7000);
  42.                                                 if(!key)
  43.                                                 {
  44.                                                  j++;
  45.                                                 }
  46.                                                 if(j==5) { j=0;        }
  47.                                         }     
  48.         
  49.     if(~P2_3&K1J)   { k++;  }
  50.           K1J=~(~P2_3);

  51.     if(~P2_2&K2J)    { Set=1; }
  52.            K2J=~(~P2_2);

  53.         if(~P2_1&K3J)    { Set=-1; }
  54.           K3J=~(~P2_1);
  55.         
  56.            if(k == 4)        {k = 0; }
  57.         

  58.         switch(k)
  59.         {                //case 4:         break;
  60.                         case 3: she=0;shi=1;fen=1;mia=0;        DS1302_AddTime(DS1302_SECOND, Set);P1=Disp_Tab[s1];P0=Disp_Tab[s2];Set=0; break;          //設置秒
  61.                         case 2: she=0;shi=1;fen=0;mia=1;    DS1302_AddTime(DS1302_MINUTE, Set);P1=Disp_Tab[m1];P0=Disp_Tab[m2];Set=0; break;          //設置分
  62.                         case 1: she=0;shi=0;fen=1;mia=1;        DS1302_AddTime(DS1302_HOUR  , Set);P1=Disp_Tab[h1];P0=Disp_Tab[h2];Set=0; break;          //設置時
  63.                         case 0:        P0=0xff;P1=0xff;P2=0xff;Set=0; break;         
  64.                         default: break;
  65.         }
  66. }



  67. /*****主函數*****/
  68. void main(void)
  69. {  k=0;
  70.         DS1302_Initial();//DS1302初始化
  71.         while(1)
  72.     {  
  73.         EA=1;//開總中斷
  74.         EX0=1;//開外部中斷0
  75.         //全滅         
  76.         P0=0xff;
  77.         P1=0xff;
  78.         P2=0xff;
  79.         //讀出時間
  80.         h1=(Read1302(DS1302_HOUR)&0x70)>>4;
  81.         h2=(Read1302(DS1302_HOUR)&0x0f);
  82.         m1=(Read1302(DS1302_MINUTE)&0x70)>>4;
  83.         m2=(Read1302(DS1302_MINUTE)&0x0f);
  84.         s1=(Read1302(DS1302_SECOND)&0x70)>>4;
  85.         s2=(Read1302(DS1302_SECOND)&0x0f);

  86.         Keysan();
  87.     }
  88. }
  89. /*************外部中斷函數(顯示)*******************/
  90. void exter0() interrupt 0
  91. {


  92.                      for(i=0;i<160;i++)
  93.             {                                
  94.              switch(j)
  95.                          {case 0:  P0=love0[i*3];P1=love0[i*3+1];P2=love0[i*3+2];DelayUs(30);break;
  96.               case 1:  P0=love1[i*3];P1=love1[i*3+1];P2=love1[i*3+2];DelayUs(30);break;
  97.                           case 2:  P0=love2[i*3];P1=love2[i*3+1];P2=love2[i*3+2];DelayUs(20);break;
  98.                           case 3:  P0=love3[i*3];P1=love3[i*3+1];P2=love3[i*3+2];DelayUs(30);break;
  99.                           case 4:        if(i<50){P0=0xFF;P1=0xFF;P2=0xFF;DelayUs(20);}
  100.                                                 if((i>49)&&(i<60)){P0=dig[h1][(i-50)*3];P1=dig[h1][(i-50)*3+1];P2=dig[h1][(i-50)*3+2];DelayUs(20);}
  101.                                                 if((i>59)&&(i<70)){P0=dig[h2][(i-60)*3];P1=dig[h2][(i-60)*3+1];P2=dig[h2][(i-60)*3+2];DelayUs(20);}
  102.                                                 if((i>69)&&(i<80)){P0=dig[10][(i-70)*3];P1=dig[10][(i-70)*3+1];P2=dig[10][(i-70)*3+2];DelayUs(20);}
  103.                                                 if((i>79)&&(i<90)){P0=dig[m1][(i-80)*3];P1=dig[m1][(i-80)*3+1];P2=dig[m1][(i-80)*3+2];DelayUs(20);}
  104.                                                 if((i>89)&&(i<100)){P0=dig[m2][(i-90)*3];P1=dig[m2][(i-90)*3+1];P2=dig[m2][(i-90)*3+2];DelayUs(20);}
  105.                                                 if((i>99)&&(i<110)){P0=dig[10][(i-100)*3];P1=dig[10][(i-100)*3+1];P2=dig[10][(i-100)*3+2];DelayUs(20);}
  106.                                                 if((i>109)&&(i<120)){P0=dig[s1][(i-110)*3];P1=dig[s1][(i-110)*3+1];P2=dig[s1][(i-110)*3+2];DelayUs(20);}
  107.                                                 if((i>119)&&(i<130)){P0=dig[s2][(i-120)*3];P1=dig[s2][(i-120)*3+1];P2=dig[s2][(i-120)*3+2];DelayUs(20);}
  108.                                                 if(i>129){P0=0xFF;P1=0xFF;P2=0xFF;DelayUs(20);}
  109.                                                 break;
  110.                           }                 
  111.             }
  112. }
復制代碼


代碼下載(Keil2工程文件):
搖搖棒2.3軟件版本3.1 時鐘顯示.7z (16.53 KB, 下載次數: 305)

評分

參與人數 2黑幣 +15 收起 理由
muzhi + 5 很給力!
YJGG + 10 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏27 分享淘帖 頂13 踩
回復

使用道具 舉報

沙發
ID:116826 發表于 2017-3-7 17:06 | 只看該作者
感謝樓主費心分享,希望看到更多有趣的制作。
回復

使用道具 舉報

板凳
ID:134810 發表于 2017-3-13 16:24 來自手機 | 只看該作者
就感覺這種led很高級,但是做不出來。。
回復

使用道具 舉報

地板
ID:266857 發表于 2017-12-26 00:39 | 只看該作者
厲害!厲害!想試試
回復

使用道具 舉報

5#
ID:266955 發表于 2017-12-26 10:55 | 只看該作者
厲害,厲害
回復

使用道具 舉報

6#
ID:282266 發表于 2018-2-5 12:33 | 只看該作者
學習一下
回復

使用道具 舉報

7#
ID:300115 發表于 2018-3-31 21:41 | 只看該作者
樓主看到回我一下
回復

使用道具 舉報

8#
ID:222798 發表于 2018-4-1 19:54 | 只看該作者
為什么我的顯示不正常
回復

使用道具 舉報

9#
ID:299588 發表于 2018-4-1 22:02 來自手機 | 只看該作者
樓主好牛。!
回復

使用道具 舉報

10#
ID:300115 發表于 2018-4-8 19:02 | 只看該作者
樓主可否發一下程序了
回復

使用道具 舉報

11#
ID:297157 發表于 2018-4-26 17:27 | 只看該作者
厲害了~
回復

使用道具 舉報

12#
ID:342911 發表于 2018-6-1 15:26 | 只看該作者
多謝樓主 專門注冊了論壇回復你
回復

使用道具 舉報

13#
ID:343198 發表于 2018-6-1 22:36 | 只看該作者
很不錯,收藏了
回復

使用道具 舉報

14#
ID:359150 發表于 2018-6-27 14:09 | 只看該作者
剛好要用到,前來學習一下。但是我的黑幣被無故吞掉了
回復

使用道具 舉報

15#
ID:360276 發表于 2018-6-27 15:39 | 只看該作者
牛逼非常牛逼
回復

使用道具 舉報

16#
ID:360276 發表于 2018-6-27 15:40 | 只看該作者
大佬大佬大佬
回復

使用道具 舉報

17#
ID:356047 發表于 2018-7-4 23:13 | 只看該作者
樓主您好.請問能否使用ta89c2051代替.原因是c2051體積小,根主要是手上有多片二手貨,加以利用.謝謝
回復

使用道具 舉報

18#
ID:364969 發表于 2018-7-5 16:50 | 只看該作者
您好,我是蘇州鋒馳單片機原廠,本司可替代松瀚2711,義隆飛凌153系列,價格低廉質量好售后優,如有需要致電張R:15050229229
回復

使用道具 舉報

19#
ID:400986 發表于 2018-9-21 14:14 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

20#
ID:130743 發表于 2018-9-28 21:05 | 只看該作者
樓主很厲害啊,我也想復制一個出來
回復

使用道具 舉報

21#
ID:399179 發表于 2018-9-29 07:57 來自手機 | 只看該作者
水銀開關用震動開關行不?
回復

使用道具 舉報

22#
ID:89286 發表于 2018-10-10 20:20 | 只看該作者
thanks for sharing
回復

使用道具 舉報

23#
ID:355694 發表于 2018-11-11 10:55 | 只看該作者

感謝樓主費心分享,希望看到更多有趣的制作。
回復

使用道具 舉報

24#
ID:443026 發表于 2018-12-10 09:16 來自手機 | 只看該作者
哇,這個資料很棒,謝謝樓主。
回復

使用道具 舉報

25#
ID:440142 發表于 2018-12-21 20:28 | 只看該作者
這些天買材料試試看能不能搞出來,蠻好玩的
回復

使用道具 舉報

26#
ID:440142 發表于 2018-12-22 08:13 | 只看該作者
沒有原理圖,哎!
回復

使用道具 舉報

27#
ID:451098 發表于 2018-12-23 12:23 | 只看該作者
好厲害!
回復

使用道具 舉報

28#
ID:511844 發表于 2019-5-8 19:34 | 只看該作者
感謝樓主!
回復

使用道具 舉報

29#
ID:110278 發表于 2019-8-8 09:41 | 只看該作者
好用。。。。
回復

使用道具 舉報

30#
ID:484435 發表于 2019-8-8 19:17 | 只看該作者
謝謝分享
回復

使用道具 舉報

31#
ID:98493 發表于 2019-9-27 11:38 | 只看該作者
好東西   支持支持
回復

使用道具 舉報

32#
ID:8222 發表于 2019-9-28 22:49 | 只看該作者
謝謝分享,跟大師學習。
回復

使用道具 舉報

33#
ID:208849 發表于 2019-9-29 13:32 | 只看該作者
不貼完整的圖紙嗎?
回復

使用道具 舉報

34#
ID:631873 發表于 2019-11-25 20:00 | 只看該作者
請問轉動的板子上怎么供電?不會纏繞嗎?
回復

使用道具 舉報

35#
ID:631873 發表于 2019-11-25 20:04 | 只看該作者
這個轉動的板子上是如何解決供電問題的。坎粫p繞嗎
回復

使用道具 舉報

36#
ID:625113 發表于 2019-11-25 23:34 來自手機 | 只看該作者
厲害厲害,好酷炫,想做做看
回復

使用道具 舉報

37#
ID:650409 發表于 2019-11-26 23:24 | 只看該作者
或許是我們自己制作的硬件問題,我們自己所做的搖搖棒始終達不到我所要的要求。。但還是得給樓主鼓勵,加油,很棒
回復

使用道具 舉報

38#
ID:701875 發表于 2020-3-3 17:22 | 只看該作者
十分感謝!。
回復

使用道具 舉報

39#
ID:206082 發表于 2020-3-8 21:32 | 只看該作者
感謝樓主
回復

使用道具 舉報

40#
ID:695749 發表于 2020-3-8 23:04 | 只看該作者
感謝樓主的分享!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91国产在线播放 | 国产精品一区二区久久久久 | 日韩欧美三区 | 精品国产伦一区二区三区观看体验 | 国产精品欧美一区二区 | 91免费版在线 | 欧美在线 | 久久大| 五十女人一级毛片 | 97超碰人人 | 日本中出视频 | 日韩精品一二三区 | 国产精品射 | 久久一区二区免费视频 | 在线观看精品视频网站 | 欧美一区2区三区4区公司二百 | 色在线免费视频 | 福利社午夜影院 | 色婷婷久久久久swag精品 | 国内自拍视频在线观看 | 黄色三级在线播放 | 日韩在线中文字幕 | 欧美午夜激情在线 | 久久免费视频观看 | 欧美不卡一区二区三区 | 黄色国产大片 | 国产精品入口 | 91在线精品视频 | 福利网站在线观看 | 亚洲一区在线观看视频 | 爱爱爱av | 日韩在线看片 | 奇米超碰在线 | 国产高清一区二区 | 欧美精品一区在线 | 国产精品区二区三区日本 | 国产一区二区三区视频 | 天堂网色 | 亚洲一区二区中文字幕在线观看 | 日韩一区二区三区视频 | 欧美日韩综合 |