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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

16x16LED點陣屏制作

[復制鏈接]
跳轉到指定樓層
樓主
ID:88481 發表于 2016-3-18 23:26 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
趁著春節幾天假期,做個16x16點陣屏練練手。目的學習模擬串口,所以選用2塊164和2塊595驅動。164驅動電流較少,用三極管驅動選作行掃描,595作列顯示。LED選用5x5紅色方型。為了美觀,將驅動和顯示分開制作。
半個月后,終于制成了。通電調試時,發覺一個嚴重錯誤,每個LED亮度互相影響。怎么辦?后來想到用熱縮管包著每個LED(兩百多個LED,想想都怕)。但每個LED體積增大了,原來的板子不能再。無法,咬咬牙重做板子。結果,直到三月份才完成。

IMG_20160313_193237.jpg (45 KB, 下載次數: 293)

IMG_20160313_193237.jpg

IMG_20160318_091100.jpg (44.97 KB, 下載次數: 258)

IMG_20160318_091100.jpg

IMG_20160318_125820.jpg (70.16 KB, 下載次數: 334)

IMG_20160318_125820.jpg

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 2016-3-19 00:46 | 只看該作者
做工精美厲害啊,能分享一下 電路圖和點陣的源代碼嗎?
回復

使用道具 舉報

板凳
ID:88481 發表于 2016-3-19 17:19 來自手機 | 只看該作者
admin 發表于 2016-3-19 00:46
做工精美厲害啊,能分享一下 電路圖和點陣的源代碼嗎?

原理圖沒有畫LED,圖中1~16接LED正極,a~p接負極。程序都是參考別人修改過來的。

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define  SPEED  13

  4. void xmove(char dir,unsigned char *ptr,char n,char speed);
  5. void delay(unsigned int a);
  6. void display();
  7. void displaytime(char time);
  8. void init164();

  9. sbit  ADATA= P1^0;
  10. sbit  ASCK= P1^1;
  11. sbit  LATCH= P1^2;
  12. sbit  BDATA= P1^3;
  13. sbit  BCLK= P1^4;

  14. code unsigned char kai[32]={0x18,0x00,0x5A,0xF8,0x5A,0xF8,0x5A,0xD8,0x7E,0xD8,0x00,0xD8,0xFE,0xD8,0xFE,0xD8,
  15. 0x06,0xD8,0x7E,0xD8,0x60,0xD8,0x6E,0xD8,0x7D,0x9A,0x73,0x1E,0x02,0x0E,0x00,0x00};  /*--  文字:  凱  --*/


  16. code unsigned char yu[32]={ 0x00,0x78,0x3F,0xF8,0x3F,0x80,0x01,0x80,0x1F,0xF8,0x19,0x98,0x1F,0xF8,0x01,0x80,
  17. 0x3F,0xFE,0x3F,0xFE,0x31,0x86,0x31,0xA6,0x37,0xF6,0x37,0x1E,0x30,0x0C,0x00,0x00}; /*--  文字:  禹  --*/
  18.          
  19. code unsigned char duan[32]={0x03,0x00,0x03,0x00,0x3F,0xF8,0x3F,0xF8,0x33,0x18,0x33,0x18,0x3F,0xF8,0x33,0x18,
  20. 0x33,0x18,0x3F,0xF8,0x3F,0xF8,0x33,0x06,0x03,0x06,0x03,0xFE,0x01,0xFC,0x00,0x00};  /*--  文字:  電  --*/


  21. code unsigned char lu[32]={0x00,0xC0,0x7C,0xC0,0x7D,0xF8,0x6D,0x98,0x6F,0xD8,0x7C,0x70,0x18,0xF8,0x5B,0x9E,
  22. 0x5F,0x04,0x5D,0xF8,0x59,0x98,0x5D,0x98,0xFD,0xF8,0xE1,0xF8,0x01,0x98,0x00,0x00}; /*--  文字:  路  --*/

  23. unsigned char idata buffer[32];

  24. void main(void)
  25. {
  26.         unsigned char i;
  27.         init164();
  28.         while(1)
  29.         {        
  30.                 for(i=0;i<32;i++)
  31.                 buffer[i]=kai[i];
  32.                 displaytime(1);
  33.                 xmove(1,zhong,3,SPEED);
  34.                 displaytime(1);
  35.         }
  36. }
  37. /*************  子函數   ******************/
  38. void delay(unsigned int a)
  39. {
  40.         while(a--);
  41. }

  42. void display()
  43. {
  44.         unsigned char hang,ib,k,tmp;
  45.     P1= 0x00;
  46.         BDATA = 1;
  47.         for(hang=0;hang<16;hang++)
  48.         {
  49.                 ASCK =0;               
  50.                 LATCH=0;
  51.                 BCLK =0;
  52.                 for(ib=0;ib<2;ib++)
  53.                 {
  54.                         tmp = buffer[hang*2+ib];
  55.                         for(k=0;k<8;k++)
  56.                         {
  57.                                 tmp <<=1;
  58.                                 ASCK  =0;
  59.                                 ADATA =CY;
  60.                                 ASCK  =1;
  61.                         }
  62.                 }
  63.                 LATCH=1;
  64.                 BCLK=1;
  65.                 BDATA=0;
  66.         }
  67.         delay(64);
  68.         ASCK =0;
  69.         ASCK =1;
  70. }

  71. void displaytime(char time)
  72. {
  73.         unsigned char i;
  74.         while(time--)
  75.         {
  76.                 i=130;
  77.                 while(i--)
  78.                          display();
  79.         }
  80. }

  81. void init164()   //初始化164所有腳置0
  82. {
  83.         char i;
  84.         BDATA=0;
  85.         for(i=0;i<16;i++)
  86.         {
  87.                 BCLK =0;
  88.                 BCLK =1;
  89.         }
  90. }

  91. void xmove(char dir,unsigned char *ptr,char n,char speed)                                                         /*  dir 方向       n是要移動的漢字個數   speed移動速度*/        
  92. {
  93.         unsigned char  i=0,  ib=0;
  94.         unsigned int   tmp=0, speedm=0;
  95.         unsigned char  buffer2[16];         //半個漢字的緩存

  96.         n*=2;     //左半字和右半字,所以要x2            
  97.         for(i=0;i<16;i++)   //清零
  98.                 buffer2[i]=0;

  99. /****     向左移動    ****/
  100.         if(dir == 1)     
  101.         {
  102.                 for(n;n>0;n--)   
  103.                 {               
  104.                         if(ptr != 0)
  105.                         {
  106.                                 tmp = n%2;        //判斷是左半字還是右半字
  107.                                 for(i=0;i<16;i++)
  108.                                         buffer2[i]=ptr[i*2+tmp];
  109.         
  110.                                 if(tmp)                //tmp為1時,將地址指向下一個漢字
  111.                                         ptr+=32;
  112.                         }
  113.                         
  114.                         for(tmp=8;tmp>0;tmp--)  //要移動8列        
  115.                         {                                   
  116.                                 ib=0;        
  117.                                 for(i=0;i<16;i++)
  118.                                 {                //要移16行,共16個字節
  119.                        
  120.                                         buffer[ib] <<=1; //移第一個半字
  121.                                         if(buffer[ib+1] & 0x80)        
  122.                                                 buffer[ib]++;
  123.                                         ib++;                        
  124.         
  125.                                         buffer[ib]<<=1;                //移后半字
  126.                                         if(buffer2[i] & 0x80)           
  127.                                                 buffer[ib]++;
  128.                                         ib++;
  129.         
  130.                                         buffer2[i]<<=1;                //緩沖左半字向左移一位
  131.                                 }
  132.                                 
  133.                                 speedm=speed;        //更新點陣
  134.                                 while(speedm--)
  135.                                         display();
  136.                         }
  137.                 }
  138.         }
  139. //--------------------------------------------------//
  140.         else        
  141.         {
  142.    /******  向右移動   ******/
  143.                 for(n;n>0;n--)
  144.                 {               
  145.                         if(ptr != 0)
  146.                         {
  147.                                 tmp = (n+1) % 2  ;        //判斷左半字還是右半字
  148.                                 for(i=0;i<16;i++)
  149.                                         buffer2[i]=ptr[i*2+tmp];
  150.                                                                
  151.                                 if(tmp == 0)                //tmp為0時,將地址指向下一個漢字
  152.                                         ptr+=32;
  153.                         }
  154.                         
  155.                         for(tmp=8;tmp>0;tmp--)  //要移動8列        
  156.                         {                                   
  157.                                 ib=0;        
  158.                                 for(i=0;i<16;i++)
  159.                                 {                //要移16行,共16個字節
  160.                        
  161.                                         buffer[ib+1] >>= 1;             //移右半字
  162.                                         if(buffer[ib] & 0x01)        
  163.                                                 buffer[ib+1] |=0x80 ;                        
  164.         
  165.                                         buffer[ib] >>= 1;            //移左半字
  166.                                         if(buffer2[i] & 0x01)           
  167.                                                 buffer[ib] |= 0x80;
  168.                                         ib+=2;
  169.         
  170.                                         buffer2[i] >>=1;                //下個漢字的右半字向右移一位
  171.                                 }
  172.                                 
  173.                                 speedm=speed;        
  174.                                 while(speedm--)  //更新點陣
  175.                                         display();
  176.                         }
  177.                
  178.                 }
  179.         }
  180. }
復制代碼
回復

使用道具 舉報

地板
ID:114228 發表于 2016-4-27 17:36 | 只看該作者
原理圖看不清楚,希望能上個原版的原理圖文件
回復

使用道具 舉報

5#
ID:103831 發表于 2016-4-29 13:58 | 只看該作者
方形LED  哪里買的,能說下嘛
回復

使用道具 舉報

6#
ID:146734 發表于 2016-11-19 23:21 | 只看該作者
51黑有你更精彩!!!
回復

使用道具 舉報

7#
ID:157486 發表于 2016-12-25 12:41 | 只看該作者
學習一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www视频在线观看 | 亚洲网址在线观看 | 久草在线青青草 | 一区二区三区国产 | 99热.com | 精品日韩一区二区三区av动图 | 综合精品| 中文字幕av网站 | 精品日韩一区二区 | 成人h视频在线 | 免费看国产片在线观看 | 欧美日韩一区二区在线观看 | 精品免费在线 | 一区二区三区国产 | 国产在线色 | 精品一区二区三区在线观看国产 | 成人在线观看免费 | 国产精品久久久精品 | 免费看淫片 | 美女一级黄 | 9色网站| 精品成人av | 久久久久久国产免费视网址 | 久久精品欧美一区二区三区不卡 | 国产日韩欧美 | 亚洲男人的天堂网站 | 久久成人一区二区三区 | аⅴ资源新版在线天堂 | 伊人精品视频 | 91欧美 | 天堂资源 | 91视频麻豆 | 成人午夜在线视频 | 国产成人99久久亚洲综合精品 | 久草视频网站 | 天天干天天爽 | 欧美日韩在线视频一区二区 | 91精品国产91久久久久久 | 久久精品网 | 日韩精品视频在线观看一区二区三区 | 欧美高清性xxxxhd |