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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數: 2839 | 評論數: 8 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2019-1-17 22:00

正文摘要:

前幾天在論壇得到許多大佬的指導成功驅動了36個LED燈。目前還是很懵逼,12列全部高電平也就是LED1-12為全為1,y=0xfff;  第一行L1置低,第二第三行L2-L3置高x=0x6;第一行的綠燈全亮。如何實現,第一行的綠 ...

回復

ID:466499 發表于 2019-1-18 12:48
wulin 發表于 2019-1-18 11:28
給你寫一個示例程序,因為用LED仿真視覺不好,用LED點陣屏代替演示。



非常感謝!無以言表我試試,雖然現在還不是很理解
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仿真結果。






ID:466499 發表于 2019-1-18 12:44
真心感謝你們
ID:466499 發表于 2019-1-18 12:43
weidoit 發表于 2019-1-18 12:05

謝謝大神!我試試
ID:466499 發表于 2019-1-18 12:41
yzwzfyz 發表于 2019-1-18 08:20
你的空間想力不夠啊。
建議:
每6ms切換一行顯示,一直永遠循環。試試吧。

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

ID:123289 發表于 2019-1-18 08:20
你的空間想力不夠啊。
建議:
每6ms切換一行顯示,一直永遠循環。試試吧。
ID:21069 發表于 2019-1-18 02:39
貌似?當時誰提出來點亮幾十個LED時我說用點陣做,但是,你卻沒有按點陣的思路來操作!如果是按點陣方式來做應該是8個I/O取縱,其于取橫!這樣你要點一個燈時用取模軟件直接取模就得到數組值就OK的,也不用復雜的計算。這就同點陣點一個燈是一樣的。

評分

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

查看全部評分

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产鲁一鲁一区二区张丽 | 国产欧美日韩一区二区三区 | 电影在线| 欧美日韩综合一区 | 天堂成人国产精品一区 | 欧美日韩一区在线播放 | aaa级片| 日本 欧美 国产 | 毛片大全| 男人阁久久 | 午夜爱爱毛片xxxx视频免费看 | 国产成人免费视频网站高清观看视频 | 一区二区不卡 | 一区二区视频在线 | 美女日批免费视频 | 一级毛片免费看 | 欧美操操操 | 综合久久久| 美女国内精品自产拍在线播放 | 亚洲一级av毛片 | 精品伊人久久 | 一区二区在线不卡 | 日本一区二区高清视频 | 国产999精品久久久久久 | 国产成人在线一区二区 | 黄毛片| 色婷婷九月 | 日韩精品一区二区三区中文字幕 | 久久久久久91香蕉国产 | 在线免费黄色 | 欧美成人一区二区三区片免费 | 国产一区精品在线 | 精品成人免费一区二区在线播放 | 国产视频中文字幕在线观看 | 日韩一二三区视频 | 在线视频成人 | 九九热在线视频免费观看 | 成人免费视频网站在线看 | 久久国产欧美日韩精品 | 又爽又黄axxx片免费观看 | 久久无毛 |