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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機矩陣LED不能實現的效果

[復制鏈接]
跳轉到指定樓層
樓主
ID:466499 發表于 2019-1-17 22:00 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
前幾天在論壇得到許多大佬的指導成功驅動了36個LED燈。目前還是很懵逼,12列全部高電平也就是LED1-12為全為1,y=0xfff;  第一行L1置低,第二第三行L2-L3置高x=0x6;第一行的綠燈全亮。如何實現,第一行的綠燈從1號燈開始一個一個滅到12號燈,在1號綠燈滅的同時第三行的從25號燈一個一個亮到36號,1滅,25亮。2滅,26亮。3滅,27亮。4滅,28亮。5滅29亮…。貌似靜態顯示和動態顯示都不能實現

IMG_20190111_112752.jpg (981.41 KB, 下載次數: 32)

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

使用道具 舉報

沙發
ID:21069 發表于 2019-1-18 02:39 | 只看該作者
貌似?當時誰提出來點亮幾十個LED時我說用點陣做,但是,你卻沒有按點陣的思路來操作!如果是按點陣方式來做應該是8個I/O取縱,其于取橫!這樣你要點一個燈時用取模軟件直接取模就得到數組值就OK的,也不用復雜的計算。這就同點陣點一個燈是一樣的。

評分

參與人數 1黑幣 +15 收起 理由
#include51.h + 15 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:123289 發表于 2019-1-18 08:20 | 只看該作者
你的空間想力不夠啊。
建議:
每6ms切換一行顯示,一直永遠循環。試試吧。
回復

使用道具 舉報

地板
ID:213173 發表于 2019-1-18 11:28 | 只看該作者
給你寫一個示例程序,因為用LED仿真視覺不好,用LED點陣屏代替演示。


#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit code0 =P2^0;//列
sbit code1 =P2^1;
sbit code2 =P2^2;
sbit code3 =P2^3;
sbit code4 =P2^4;
sbit code5 =P2^5;
sbit code6 =P2^6;
sbit code7 =P2^7;
sbit code8 =P0^0;
sbit code9 =P0^1;
sbit code10=P0^2;
sbit code11=P0^3;

sbit Column0=P1^0;//行
sbit Column1=P1^1;
sbit Column2=P1^2;       

uint  code table[]={0x001,0x002,0x004,0x008,0x010,0x020,0x040,0x080,0x100,0x200,0x400,0x800,0x0fff};
uint num=0x0000;
uchar i,j,k;
bit a;
void PX(uint i)                                        //寫入12位數據
{   
    code0 =i&0x01;i>>=1;       
    code1 =i&0x01;i>>=1;
    code2 =i&0x01;i>>=1;
    code3 =i&0x01;i>>=1;
    code4 =i&0x01;i>>=1;
    code5 =i&0x01;i>>=1;
    code6 =i&0x01;i>>=1;
    code7 =i&0x01;i>>=1;       
    code8 =i&0x01;i>>=1;
    code9 =i&0x01;i>>=1;
    code10=i&0x01;i>>=1;
    code11=i&0x01;
}
void Timer0Init(void)                //1毫秒@12.000MHz
{
        TMOD |= 0x01;                //設置定時器模式
        TL0 = 0x18;                //設置定時初值
        TH0 = 0xFC;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
        EA=1;                        //開總中斷
        ET0=1;                        //開T0中斷
}

void main()
{        
        Timer0Init();
        PX(0x0000);
        while(1)               
        {
                if(a==1)
                {
                        a=0;
                        switch(j)//動態逐行顯示
                        {
                                case 0:
                                        P1&=0xf8;//P1低3位清0
                                        P1|=0x01;//P1低3位賦值
                                        num&=0xf000;//num低12位清0
                                        num|=table;//num低12位賦值
                                        PX(num);j++;//num值寫入列端口
                                break;

                                case 1:
                                        P1&=0xf8;
                                        P1|=0x02;
                                        num&=0xf000;
                                        num|=table;
                                        PX(num);j++;
                                break;

                                case 2:
                                        P1&=0xf8;
                                        P1|=0x04;
                                        num&=0xf000;
                                        num|=table;
                                        PX(num);j=0;
                                break;
                        }
                        if(++k==3)//流水燈
                        {               
                                k=0;
                                i++;
                                if(i==12) i=0;
                        }
                }
        }                                                                               
}
void timer0() interrupt        1
{
        TL0 = 0x18;                //設置定時初值
        TH0 = 0xFC;                //設置定時初值
        a=1;
}

回復

使用道具 舉報

5#
ID:466499 發表于 2019-1-18 12:41 來自手機 | 只看該作者
yzwzfyz 發表于 2019-1-18 08:20
你的空間想力不夠啊。
建議:
每6ms切換一行顯示,一直永遠循環。試試吧。

動態顯示確實讓我很懵逼,6ms切換一行一直循環人眼看到的就是全亮了啊。1號燈滅的同時25號燈亮,逐個移位過去,靜態和動態都不能實現
回復

使用道具 舉報

6#
ID:466499 發表于 2019-1-18 12:43 來自手機 | 只看該作者
weidoit 發表于 2019-1-18 12:05

謝謝大神!我試試
回復

使用道具 舉報

7#
ID:466499 發表于 2019-1-18 12:44 來自手機 | 只看該作者
真心感謝你們
回復

使用道具 舉報

8#
ID:149389 發表于 2019-1-18 12:48 | 只看該作者

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit Green_En=P1^0;
  5. sbit Blue_En=P1^1;
  6. sbit Red_En=P1^2;
  7. uchar index;
  8. uchar num;

  9. //綠色逐個熄滅
  10. uint code Green[]=
  11. {
  12.   0x0fff,0x07ff,0x03ff,0x01ff,0x00ff,0x007f,0x003f,0x001f,0x000F,0x0007,0x0003,0x0001,0x0000,
  13. };
  14. //藍色拉幕效果
  15. uint code Blue[]=
  16. {
  17.   0x0801,0x0402,0x0204,0x0108,0x0108,0x0090,0x0060,0x00f0,0x01F8,0x03FC,0x7FE,0x0FFF,0x0000,
  18. };
  19. //紅色逐個點亮
  20. uint code Red[]=
  21. {
  22.   0x0000,0x0001,0x0003,0x0007, 0x000F,0x001f,0x003f,0x007f,0x00ff,0x01ff,0x03ff,0x07ff,0x0fff,
  23. };
  24. //延時
  25. void delay5ms(void)   //誤差 0us
  26. {
  27.     unsigned char a,b;
  28.     for(b=185;b>0;b--)
  29.         for(a=12;a>0;a--);
  30. }
  31. //主程序
  32. void main()
  33. {
  34.   while(1)
  35.   { //從數組中讀取數據送至 P3 和 P2 口顯示
  36.     for (index=0;index<60;index++)                //累計xx次,換下一幀效果。
  37.     {
  38.       P3=Green[num]/256;
  39.       P2=Green[num]%256;
  40.       Green_En=0;
  41.       delay5ms();
  42.       Green_En=1;

  43.       P3=Blue[num]/256;
  44.       P2=Blue[num]%256;
  45.       Blue_En=0;
  46.       delay5ms();
  47.       Blue_En=1;

  48.       P3=Red[num]/256;
  49.       P2=Red[num]%256;
  50.       Red_En=0;
  51.       delay5ms();
  52.       Red_En=1;
  53.     }
  54.     num++;
  55.     num=num%13; //到達幀數,從新開始。
  56.   }
  57. }



復制代碼
附上Proteus仿真結果。






回復

使用道具 舉報

9#
ID:466499 發表于 2019-1-18 12:48 來自手機 | 只看該作者
wulin 發表于 2019-1-18 11:28
給你寫一個示例程序,因為用LED仿真視覺不好,用LED點陣屏代替演示。



非常感謝!無以言表我試試,雖然現在還不是很理解
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频一区二区三区四蜜臂 | 国产精品精品久久久 | 夜夜草 | 久热m3u8| 久久精品免费观看 | 中文字幕亚洲一区二区三区 | 欧美一区二区三区视频在线观看 | eeuss国产一区二区三区四区 | 亚洲精品粉嫩美女一区 | 午夜精品一区二区三区在线观看 | 欧美国产日韩在线观看成人 | 欧美激情亚洲 | 中文字幕欧美日韩 | 请别相信他免费喜剧电影在线观看 | 亚洲精品大全 | 久久久久久亚洲欧洲 | av三级在线观看 | aaaaa毛片 | 亚洲一区二区三区免费观看 | 国产乱码精品1区2区3区 | 国产精品伦理一区 | 久久久久成人精品 | 久久久久国产 | av永久免费 | 97人人澡人人爽91综合色 | 国内久久| 久久免费大片 | 黄色91在线 | 最近中文字幕第一页 | 婷婷去俺也去 | 精品一区二区三区四区 | 伊人网国产 | 男人影音 | 亚洲国产精品一区 | 国产精品久久久久久 | www成人免费 | 日韩免费网站 | 久久久久久久久淑女av国产精品 | 欧美一级高清片 | 91免费在线视频 | 少妇一级淫片免费播放 |