色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > LED顯示搖棒全套方案及源程序

          LED顯示搖棒全套方案及源程序

          ——
          作者:nim 時(shí)間:2007-09-29 來(lái)源:http://www.21icbbs.com 收藏

            作者:nim    于 http://www.21icbbs.com    2005-1-7

              email: linyige@yahoo.com
                 
              本設(shè)計(jì)版權(quán)歸作者所有,請(qǐng)勿擅自用于商業(yè)目的,轉(zhuǎn)載請(qǐng)注明作者及出處。

              情人節(jié)我們做電的兄弟們送什么禮物給心儀已久的MM?在離情人節(jié)還有一個(gè)月的時(shí)間,給大家提供一個(gè)適合作為禮物的簡(jiǎn)單電路,自己動(dòng)手做的漂亮玩具一定會(huì)是送給MM的最好的禮物。

            顯示效果圖片upload/2005_01/050117013990931.jpg

            原理圖http://www.21icsearch.com/buzi/upimage/upfile/20047221015470.jpg

            曾經(jīng)在新手園地發(fā)過(guò)的帖子http://www.21icbbs.com/club/bbs/showAnnounce.asp?id=1288814

          以下是詳細(xì)說(shuō)明:

          圖形顯示的原理:

              利用人眼的視覺(jué)暫留效應(yīng),使手在擺動(dòng)到不同位置的時(shí)候,讓位于一條直線(xiàn)上的顯示二維圖像的不同的列,實(shí)現(xiàn)圖形掃描顯示。

          物理機(jī)制:

              當(dāng)我們?cè)跀[動(dòng)手臂的時(shí)候,短時(shí)間內(nèi)擺動(dòng)位置和左右幅度不會(huì)有太大變化,利用我們手臂的這個(gè)運(yùn)動(dòng)規(guī)律,只要能得到棒從一側(cè)擺動(dòng)到另一側(cè)的時(shí)間,然后把這個(gè)時(shí)間分成N份,然后在每一份的時(shí)間里顯示不同的花樣就能實(shí)現(xiàn)圖形的顯示。當(dāng)我們?cè)跀[動(dòng)手臂的時(shí)候,并不能預(yù)先得知此次擺動(dòng)需要的時(shí)間,怎樣得到從一側(cè)擺動(dòng)到另一側(cè)的時(shí)間呢?再想想,短時(shí)間內(nèi)我們手臂的擺動(dòng)頻率也不會(huì)有特別大的變化,我們只要能得到前一次擺動(dòng)所用的時(shí)間,然后用這個(gè)時(shí)間近似得到下一次擺動(dòng)所需要的時(shí)間,然后分N份就可以了。得到一次擺動(dòng)所需的時(shí)間的任務(wù)由光遮斷器完成,在棒上裝一個(gè)可以擺動(dòng)的用來(lái)遮擋光遮斷器光線(xiàn)的細(xì)桿,粗細(xì)比光遮斷器的狹縫稍寬,我用的是整流橋焊后剪下的一段管腳。每左右擺動(dòng)一次這個(gè)桿就會(huì)通過(guò)一次光遮斷器,使單片機(jī)產(chǎn)生一次中斷,兩次中斷之間的時(shí)間就是想要得到的時(shí)間,實(shí)現(xiàn)這個(gè)功能用掉2051的一個(gè)定時(shí)器T0和外部中斷INT0。然后用2051的另一個(gè)定時(shí)器T1,其定時(shí)時(shí)間是T0的N分之一,每次中斷依次顯示一列,就是照片上的效果。

              再細(xì)想一下,手臂擺動(dòng)的頻率大于2Hz的時(shí)候才大概能由視覺(jué)暫留看出圖形,再快也不過(guò)十幾Hz,由T0為16位定時(shí)器的最長(zhǎng)計(jì)時(shí)時(shí)間得到2051的時(shí)鐘頻率1MHz最合適,還有遮擋

          用的細(xì)桿的粗細(xì)也可以大概估算,使其不會(huì)對(duì)計(jì)時(shí)精度產(chǎn)生太大影響。

          所用元件:

             AT89C2051      8元
             高亮共8個(gè)   3.6元
             電池盒         0.5元
             單面萬(wàn)用板     8元    可以裁成3塊,做3個(gè)搖棒
             陶瓷諧振器     1元
             光遮斷器       2元
             電阻電容導(dǎo)線(xiàn)   2元
            外殼*          0.7元    可以裁成2塊

          可選元件:

            電源開(kāi)關(guān)       1元

            總成本不超過(guò)20元

          *外殼我用在家樂(lè)福買(mǎi)的半透明文件夾卷成的


              此電路電路非常簡(jiǎn)單,代碼短,但是用到了2051的外部中斷編程和T0、T1定時(shí)器編程,非常適合初學(xué)者練習(xí)。我制作這個(gè)玩具花費(fèi)了兩個(gè)晚上的時(shí)間。此電路和程序還有擴(kuò)展改進(jìn)

          的空間,如在長(zhǎng)時(shí)間不擺動(dòng)的情況下可以使單片機(jī)進(jìn)入省電模式,顯示不僅限于對(duì)稱(chēng)圖片等,大家可以試試。

          以下是源程序:

          /*************************************************************************/
          //        ---------------
          //          顯示搖棒
          //        ---------------
          //    作者:nim    于 http://www.21icbbs.com    2005-1-7
          //
          //    email: linyige@yahoo.com
          //       
          //    本設(shè)計(jì)版權(quán)歸作者所有,請(qǐng)勿擅自用于商業(yè)目的,轉(zhuǎn)載請(qǐng)注明作者及出處
          /*************************************************************************/
          #include <reg51.h>
          #define SEG 17        //每幀圖片分成17列來(lái)顯示
          #define INTERVAL 20    //每幅圖片在左右搖擺20次后換下一幅

          typedef unsigned char uchar;
          typedef unsigned int uint;

          code char pattern[17][3]={    //3幅圖片的字模
          {0xff,0xff,0xff},
          {0xff,0xff,0xff},
          {0xff,0xff,0xff},
          {0xff,0x9f,0xff},
          {0xff,0x6f,0xf9},
          {0xff,0x77,0x65},
          {0xfe,0xbb,0x1e},
          {0x7e,0xdd,0xfe},
          {0x00,0xee,0xfe},
          {0x7e,0xdd,0xfe},
          {0xfe,0xbb,0x1e},
          {0xff,0x77,0x65},
          {0xff,0x6f,0xf9},
          {0xff,0x9f,0xff},
          {0xff,0xff,0xff},
          {0xff,0xff,0xff},
          {0xff,0xff,0xff},
          };


          uchar phase,th1,tl1,index,count;


          main()
          {
              EA=0;
              EX0=1;
              ET1=1;
              PX0=1;       
              IT0=1;    
              TMOD=0x11;
              index=0;
              EA=1;
              while(1)
              {
              }
          }

          void Int0_Handle(void) interrupt 0 using 2
          {
              uint t0_time;
              TR0=0;
              TR1=0;
              TF1=0;
                  t0_time=TH0<<8|TL0;
              TL0=0;
              TH0=0;
              TR0=1;
              t0_time=65535-t0_time/SEG;
              th1=t0_time/256;
              TH1=th1;
              tl1=t0_time % 256;
              TL1=tl1;
              if (count<3*INTERVAL){        //3幅圖片循環(huán)
                  count++;
              }
              else{
                  count=0;
              }
              index=count/INTERVAL;
              if (th1!=0xff || tl1!=0xff){    //如果擺動(dòng)特別慢,定時(shí)器溢出就不顯示
                  phase=0;
                  TR1=1;
              }
              else{
                  TR1=0;
              }
          }

          void Timer1(void) interrupt 3 using 3
          {
              if (phase<SEG)            //17段依次顯示
              {
                  P1=pattern[phase][index];
                  phase++;
                  TH1=th1;
                  TL1=tl1;
              }
          }



          關(guān)鍵詞: LED 發(fā)光二極管 LED

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉