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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機驅動LED發光矩陣的使用心得

[復制鏈接]
跳轉到指定樓層
樓主
從網上購得一枚發光矩陣,到網店查看相關資料,無賴找不到任何相關資料,只能從發光矩陣的標識入手尋找使用方法,器件上有
ELM-1882UYWB/S530-A3,C0506U。接口有八個引腳:5V,A,B,C,SER,SCK,RCK,GND。

到網上查找ELM-1882UYWB使用方法,沒找到,找SER,SCK,RCK相關資料,發現是串行移位寄存器的接口,其中5V,GND是電源引腳,SER是數據引腳,SCK是時鐘引腳,RCK是片選引腳,A,B,C行地址引腳。將ABC接P0口的012腳,SER、SCK、RCK接P0口345引腳,先按網上所述編寫字符顯示程序如下:

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit ser=P0^3;
sbit sck=P0^4;
sbit rck=P0^5;
int waitnum=1;
void delay(uint ii){uint i;for(i=0;i<ii;i++);}
void SendByte(uchar cc)
{uchar c=cc;int i;
  for(i=0;i<8;i++)
   {if(c&0x80)ser=1;
    else ser=0;
    c<<=1;
    sck=0;
    sck=1;
    }
    rck=0;
    rck=1;
}
uchar vc[][8]={{0x1c,0x22,0x32,0x2a,0x26,0x22,0x1c,0x00},//0
                 {0x08,0x0c,0x08,0x08,0x08,0x08,0x1c,0x00},//1
                 {0x1c,0x22,0x20,0x18,0x04,0x02,0x3e,0x00},//2
                 {0x1c,0x22,0x20,0x18,0x20,0x22,0x1c,0x00},//3
                 {0x10,0x18,0x14,0x12,0x3e,0x10,0x10,0x00},//4
                 {0x3e,0x02,0x1e,0x20,0x20,0x22,0x1c,0x00},//5
                 {0x18,0x04,0x02,0x1e,0x22,0x22,0x1c,0x00},//6
                 {0x3e,0x20,0x10,0x08,0x04,0x04,0x04,0x00},//7
                 {0x1c,0x22,0x22,0x1c,0x22,0x22,0x1c,0x00},//8
                 {0x1c,0x22,0x22,0x3c,0x20,0x10,0x0c,0x00},//9
                 {0x00,0x18,0x24,0x42,0x42,0x7e,0x42,0x42},//A
               {0x00,0x3c,0x44,0x44,0x3c,0x44,0x44,0x3c},//B
                 {0x00,0x38,0x44,0x04,0x04,0x44,0x38,0x00},//C
                };
void main()
{int i,j,k=0;
  while(1)
  {for(j=0;j<500;j++)
      for(i=0;i<8;i++)
         {P0=i;
          SendByte(vc[k][ i]);
          }
          delay(30000);
          k++;
   if(k==13)k=0;
   }
  }

發現能顯示,但有兩個問題,首先是顯示重景,每個字符都象是兩個字符錯位疊加,顯示不是很清楚,其次是顯示字符轉換時都帶著上個字符的最后一行數據,效果有些別扭。經分析,重影問題的產生是由于顯示時先傳送顯示數據,再改變顯示行,這樣數據傳送完成后,顯示行還沒變,在舊的顯示行就顯示新的數據,顯示行改變后,新的數據又在新的顯示行顯示,所以就重影。到于顯示有殘留是因為每個字符顯示完后,轉換顯示字符時,上一個字符的最后一行數據還在顯示,直到新字符的第一行顯示時才擦掉,解決這個問題就是字符顯示后將最后一行數據擦除,這樣顯示就清爽了。修改后的main()函數如下。
void main()
{int i,j,k=0;
  while(1)
  {for(j=0;j<500;j++)
      for(i=0;i<8;i++)
         {SendByte(vc[k][ i]);
          P0=i;
          }
          SendByte(0);
          k++;
   if(k==13)k=0;
   }
  }



評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:398162 發表于 2018-10-15 14:42 | 只看該作者
我今天中午用keil4 實測 用的樓主源碼,我的矩陣根本沒有顯示啊,只有數碼管有反應

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:398162 發表于 2018-10-15 15:10 | 只看該作者
我用keil4 用了樓主的源碼,因為我是開發板上的源碼,就改了下引腳借口,燒錄進去我的矩陣沒有反應,只有數碼管有反應,樓主知道怎么回事嗎

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:404797 發表于 2018-10-15 22:31 | 只看該作者
不知你引腳定義有沒有錯,A、B、C、接P0的0、1、2腳,P0的第3、4、5腳分別是SER,SCK,RCK,

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:398162 發表于 2018-10-16 12:30 | 只看該作者
借用樓主思想,改了一下。
#include<reg52.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit SRCLK=P3^6;
sbit rCLK=P3^5;
sbit SER=P3^4;

#define COMMONPORTS                P0
//áDÑ¡
unsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
//¶ÎÑ¡
unsigned char code CHARCODE[18][8]=
{

{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0

{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1

{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2

{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3

{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4

{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5

{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6

{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7

{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8

{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9

{0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P

{0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R

{0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E

{0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C

{0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H

{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I

{0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N

{0x38,0x44,0x42,0x21,0x21,0x42,0x44,0x38}};  //°®DÄ

void delay(unsigned int time )
{
        unsigned int i,j;
        for(i=0;i<time;i++)
                for(j=0;j<121;j++);
}


void hc595send(u8 dat)
{
        u8 a;
        SRCLK=0;
        rCLK=0;
        for(a=0;a<8;a++)
        {
                SER=dat>>7;
                dat<<=1;

                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;
        }
        rCLK=1;
        _nop_();
        _nop_();
        rCLK=0;
}


void main()
{
         unsigned char tab,j;
         unsigned int i;
         while(1)
         {
                 for(i=0;i<50;i++)
                {
                        for(tab=0;tab<8;tab++)
                        {
                                hc595send(0x00);
                                COMMONPORTS=TAB[tab];
                                hc595send(CHARCODE[j][tab]);
                                delay(2);
                        }
                }
                j++;
                if(j==18)
                {
                        j=0;
                }
         }
}

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:398162 發表于 2018-10-16 12:35 | 只看該作者
這是效果圖

微信圖片_20181016123235.jpg (42.62 KB, 下載次數: 69)

微信圖片_20181016123235.jpg

微信圖片_20181016123242.jpg (46.98 KB, 下載次數: 75)

微信圖片_20181016123242.jpg

微信圖片_20181016123224.jpg (54.34 KB, 下載次數: 79)

微信圖片_20181016123224.jpg

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:404797 發表于 2018-10-16 14:06 | 只看該作者
佩服,你之前失敗是什么原因?還有你用的是什么單片機,我的單片機只能定義少數變量,像你這樣定義一個8X18數組編譯不過,會報數據段太大,只能128個字節以內,所以我本想定義0-F十六進制的十六個字符,但受限變量規模不行。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:409682 發表于 2018-10-16 16:47 | 只看該作者
樓主,這跟數碼管靜態顯示的消影是一個道理
回復

使用道具 舉報

9#
ID:404797 發表于 2018-10-16 18:36 | 只看該作者
wlsbll 發表于 2018-10-16 16:47
樓主,這跟數碼管靜態顯示的消影是一個道理

謝謝,我剛玩單片機,還沒有消影這個概念,你的這回復對我很有幫助。
回復

使用道具 舉報

10#
ID:399179 發表于 2018-10-16 19:12 來自觸屏版 | 只看該作者
謝謝樓主分享!單片機學習中
回復

使用道具 舉報

11#
ID:398162 發表于 2018-10-17 08:03 | 只看該作者
wlsbll 發表于 2018-10-16 16:47
樓主,這跟數碼管靜態顯示的消影是一個道理

我的是51單片機,之前失敗的原因,具體我也不清楚,我覺得是你發送字符函數,跟我的板子,不太一樣吧。
回復

使用道具 舉報

12#
ID:566742 發表于 2019-6-19 14:12 | 只看該作者
dumn 發表于 2018-10-16 12:30
借用樓主思想,改了一下。
#include
#include

你好!我想學你的心形矩陣led怎么做的。特別想做,但是沒有學單片機很吃力哦
這么聯系你嗎?
回復

使用道具 舉報

13#
ID:283883 發表于 2019-6-19 18:23 | 只看該作者
好像有鬼影?什么模塊
回復

使用道具 舉報

14#
ID:404797 發表于 2019-6-20 06:15 | 只看該作者
周栩樂 發表于 2019-6-19 18:23
好像有鬼影?什么模塊

是有重影,原因是當時程序沒有消影,只要做消影處理就好。模塊是從網上買的,什么型號不太清楚,模塊上有如下標注:ELM-1882UYWB/S530-A3,C0506U。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天堂一区二区三区四区 | 亚洲婷婷一区 | 久久久精品综合 | 成人字幕网zmw| 午夜精品久久 | 国产又色又爽又黄又免费 | 狠狠爱一区二区三区 | 涩涩视频在线播放 | 久久久久久久一区 | 久久国产精品-久久精品 | 亚洲永久免费观看 | 中文字幕第二区 | 成人免费视频网址 | 三级在线视频 | 欧美精品一二三 | 欧美一区视频 | 日韩成人在线免费视频 | 少妇无套高潮一二三区 | 成人超碰 | 亚洲人成网亚洲欧洲无码 | 日韩一区二区在线播放 | 99精品亚洲国产精品久久不卡 | 日韩欧美国产一区二区 | av色噜噜| 久久精品中文 | 欧美黄色片 | 亚洲精品9999 | 一区二区三区免费在线观看 | 国产午夜精品视频 | 中文字幕 欧美 日韩 | 国产精品片aa在线观看 | 欧美色999 | 亚洲视频二区 | 美女视频久久 | 午夜精品一区二区三区免费视频 | 久久久综合久久 | 日韩欧美二区 | 99av成人精品国语自产拍 | 国产精品久久久久久亚洲调教 | 国产成人精品视频在线观看 | 亚洲日本国产 |