找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機點陣程序怎樣讓移動后的箭頭后面燈熄滅呢?

查看數: 1883 | 評論數: 11 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-1-14 17:58

正文摘要:

單片機源程序如下: #include <reg51.h> //定義74HC595控制管腳 sbit SCK=P3^6; sbit RCK=P3^5; sbit SER=P3^4; unsigned char matrixLED1[8]={0x00,0x38,0x38,0x38,0xfe,0x7c,0x38,0x10};//LED點 ...

回復

ID:332444 發(fā)表于 2022-1-17 11:53
代碼簡潔源于精妙嚴謹推敲,看電路寫代碼,看代碼連接電路,看電路改代碼,看代碼改電路都是基礎,初學單片機時,雖然自己有想法能寫出來,也希望能多看看別人是如何寫的,于是周游論壇,遍覽群書,訪師尋友只是看看,自己歷練才能達到想要的結果。級聯595演示只有一個8*8數據,數組不再添加任何值,實現數據出現數據消失,90度轉向,實現4個方向花樣。

1.gif (562.88 KB, 下載次數: 30)

1.gif
ID:332444 發(fā)表于 2022-1-15 13:22
用得著寫那么多?原本數據不用添加消隱值,重點提示2句完成P0=[cs];QuDong595((cs+d<8?[cs+d]:0x00));數據逐漸消失,數據逐漸出現cs+8-d
ID:517466 發(fā)表于 2022-1-15 09:44
wulin提供代碼,可能需要修改點陣LED的接線圖,要把器件反轉180度后,照圖連接。這個需要特別注意。
ID:517466 發(fā)表于 2022-1-15 09:31
如果想使用595,那么修改一下代碼,增加595部分(紅色文字代碼)的處理即可:
                P2=rows[i+j];
                col_data(rows[i+j]);

                P0=(1<<j)^255;
電路修改為:

經測試,是一樣的效果
ID:517466 發(fā)表于 2022-1-15 09:24
這是執(zhí)行效果

demo.zip

346.96 KB, 下載次數: 3

流動箭頭的演示

ID:517466 發(fā)表于 2022-1-15 09:20
這是我修改后的代碼,沒有使用595,用P2口代替了
#include <reg51.h>
//定義74HC595控制管腳
sbit SCK=P3^6;
sbit RCK=P3^5;
sbit SER=P3^4;
unsigned char rows[24]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x1c,0x3e,0x7f,0x1c,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void delay(unsigned int a)
{
   while(a--);
   }
void col_data(unsigned char dat) {
    unsigned char i=0;
    //循環(huán)8次即可將一個字節(jié)寫入寄存器中
    for(i=0;i<8;i++) {
        SER=dat>>7;//!優(yōu)先傳輸一個字節(jié)中的高位
        dat<<=1;
        SCK=0;
        delay(1);
        SCK=1;
        delay(1); //上升沿時數據移位
    }
    RCK=0;
    delay(1);
    RCK=1;
}

void main() {
    unsigned char i,j;
    while(1) {
        for(i=0;i<16;i++) {
            for(j=0;j<8;j++) {
                P2=rows[i+j];
                P0=(1<<j)^255;
                delay(1300);
                P0=255;
            }


        }

    }
}

ID:213173 發(fā)表于 2022-1-15 08:36

  1. #include <reg51.h>
  2. //定義74HC595控制管腳
  3. sbit SCK=P3^6;
  4. sbit RCK=P3^5;
  5. sbit SER=P3^4;
  6. unsigned char matrixLED1[]={0x10,0x38,0x7c,0xfe,0x38,0x38,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//LED點陣高電平端口數據
  7. unsigned char temp[8];
  8. unsigned char matrixLED0[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED點陣低電平端口數據


  9. void delay(unsigned int a)
  10. {
  11.    while(a--);
  12. }
  13. void col_data(unsigned char dat)
  14. {
  15.         unsigned char i=0;
  16.         for(i=0;i<8;i++)//循環(huán)8次即可將一個字節(jié)寫入寄存器中
  17.         {
  18.                 SER=dat>>7;//!優(yōu)先傳輸一個字節(jié)中的高位
  19.                 dat<<=1;
  20.                 SCK=0;
  21.                 delay(1);
  22.                 SCK=1;
  23.                 delay(1); //上升沿時數據移位
  24.         }
  25.         RCK=0;
  26.         delay(1);
  27.         RCK=1;
  28. }
  29. void main()
  30. {
  31.         unsigned char i,j,k;
  32.         while(1)
  33.         {
  34.                 P0=0x00;
  35.                 col_data(matrixLED0[i]);
  36.                 P0=matrixLED1[i];
  37.                 i=++i%8;
  38.                 delay(100);
  39.                 j++;
  40.                 if(j>=100)
  41.                 {
  42.                         j=0;
  43.                         matrixLED1[16]=matrixLED1[0];
  44.                         for(k=0;k<16;k++)
  45.                                 matrixLED1[k]=matrixLED1[k+1];
  46.                 }
  47.         }
  48. }
復制代碼



ID:1001921 發(fā)表于 2022-1-14 21:52
suncat0504 發(fā)表于 2022-1-14 19:49
你先搞清楚思路。顯示滾動其實就是利用時間差,靜態(tài)顯示數據,形成動態(tài)的圖案。這個時間差,你可以根據實驗 ...

額。道理懂,但是我就是不太會改。我這就是掃描列,然后讓列移動。
ID:624769 發(fā)表于 2022-1-14 20:33
最簡單的方法,就是把 8x8的箭頭圖,變成 16x8 ,其中8x8還是你原來的箭頭,另外的8x8 為全0,然后讓它 滾起來。
ID:517466 發(fā)表于 2022-1-14 19:49
你先搞清楚思路。顯示滾動其實就是利用時間差,靜態(tài)顯示數據,形成動態(tài)的圖案。這個時間差,你可以根據實驗結果來調整。在某一個時刻A圖,間隔一定時間后,顯示B圖;再次間隔一定時間顯示C圖......
具體就是這個思路。按照這個思路,如果想在箭頭后清除畫面,就是發(fā)送能讓LED滅掉的數據而已?茨闾峁┑碾娐穲D,應該是在顯示箭頭后的數據中,向P0口發(fā)送全1數據即可。即P0=0xFF;
ID:1001921 發(fā)表于 2022-1-14 18:00
我想讓移動后無圖案的數組清0,應該就能熄滅,但不知道怎么弄

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表