淘到一個三色點陣,首先網(wǎng)上找引腳圖,沒有找到,然后就是自己測試。
圖123是單獨測顏色 ,圖4是匯總。
圖5是接線圖,直接32個IO口全上,沒有74hc595,
圖6是點亮單色
圖7是三色都點亮。
后續(xù)有時間再做個動態(tài)。
51hei截圖_20220111190658.png (26.14 KB, 下載次數(shù): 54)
下載附件
圖1
2022-1-11 19:51 上傳
51hei截圖_20220111190651.png (26.95 KB, 下載次數(shù): 63)
下載附件
圖2
2022-1-11 19:51 上傳
51hei截圖_20220111190642.png (27.95 KB, 下載次數(shù): 60)
下載附件
圖3
2022-1-11 19:51 上傳
51hei截圖_20220111195211.png (12.95 KB, 下載次數(shù): 59)
下載附件
圖4
2022-1-11 19:52 上傳
51hei圖片_20220111195315.jpg (83.74 KB, 下載次數(shù): 55)
下載附件
圖5
2022-1-11 19:53 上傳
51hei圖片_20220111195306.jpg (84.49 KB, 下載次數(shù): 64)
下載附件
圖6
2022-1-11 19:53 上傳
51hei圖片_20220111195319.jpg (104.61 KB, 下載次數(shù): 47)
下載附件
圖7
2022-1-11 19:53 上傳
附件里是代碼和三色動態(tài)測試視頻
單片機源程序如下:
- #include "reg52.h"
- //rotuse可以做到的 8*8點陣陽極接P2口,陰極接P1口,用下面的代碼就可以實現(xiàn)!
- #define uchar unsigned char
- #define uint unsigned int
- void Init_int();
- void Init_time();
- void display(int yin,int yang);
- uint num_num[33][8]={
- {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, //上電先全滅
- {0x99,0x00,0x00,0x00,0x81,0xc3,0xe7,0xff,}, //大愛心
- {0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF,}, //小愛心 //1
- {0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF,}, //環(huán)心 中空外圈
-
- {0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,0xFF,}, // 小心上 //4
- {0xFF,0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,}, // 小心下 //5
- {0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,0xFF,}, // 小心上 //4
- {0xFF,0x99,0x81,0x81,0xC3,0xE7,0xFF,0xFF,}, // 小心下 //5
- {0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF,}, //環(huán)心 中空外圈
- {0x99,0x00,0x00,0x00,0x81,0xc3,0xe7,0xff,}, //大愛心
- //10
- //注意:數(shù)組第一個要移到最后
- {0xE7,0xE7,0x81,0x99,0x99,0xFF,0xFF,0xFF,}, //坦克
- {0xFF,0xE7,0xE7,0x81,0x99,0x99,0xFF,0xFF,}, //坦克下移一位
- {0xFF,0xFF,0xE7,0xE7,0x81,0x99,0x99,0xFF,}, // 坦克再下移一位
- //13
-
- {0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,}, // 中間亮4點 //5
- {0xEF,0xEF,0xE0,0x7,0xF7,0xF7,0xF7,0xEF,}, // 四點加翅膀 //4
- {0xF7,0x6F,0xA3,0xC5,0xF6,0xEF,0xDF,0xFB,}, // 翅膀轉一度
- {0xBD,0xDB,0xE7,0xE7,0xD3,0xBD,0x7E,0x7E,}, // 翅膀打直
- //17
- {0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF,0xFF,}, // 翅膀收一格
- {0xFF,0xDB,0xE7,0xE7,0xDB,0xFF,0xFF,0xFF,}, // 翅膀再收格
- {0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,}, // 翅膀收完 只亮中間四點
- //20 //注意:數(shù)組第一個要移到最后
- {0x7E,0x7E,0x66,0x66,0x7E,0x7E,0x0,0x0,}, //中間四點, 外面一圈
- {0x81,0xBD,0xA5,0xA5,0xBD,0x81,0xFF,0xFF,}, //中間四點, 第二圈
- {0xFF,0xC3,0xDB,0xDB,0xC3,0xFF,0xFF,0xFF,}, //小內圈
- //23
- {0xBD,0xFF,0xE7,0xE7,0xFF,0xBD,0xFF,0xFF,}, //中間四點 中圈四點
- {0x9D,0xFD,0xE7,0xE7,0xBF,0xB9,0xFF,0xFF,}, //中間四點 中圈8點
- {0xCF,0xFD,0xE5,0xA7,0xBF,0xF3,0xFF,0xFF,}, //中間四點 中圈8點移動一位
- {0xE7,0xFF,0xA5,0xA5,0xFF,0xE7,0xFF,0xFF,} , //中間四點 中圈8點再移動一位
- {0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0xFF,}, //中間四點 中圈向中聚攏
- //28
- {0xFF,0xE7,0xDB,0xDB,0xE7,0xFF,0xFF,0xFF,}, //顯示空心小圓
- {0xC3,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,}, //顯示空心中圓
- {0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x81,0x81,}, //顯示空心大圓
- {0x99,0x00,0x00,0x00,0x81,0xc3,0xe7,0xff,}, //大愛心
- // {0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF,}, //小愛心 //1
- {0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF,}, //環(huán)心 中空外圈
- //33
- }; //9
- unsigned int count,i=1,weiyi,timer,shu,n=1;
- unsigned int YS,YS2;
- void main()
- {
- Init_time();
-
- while(1)
- {}
- }
- void Init_time() //定時器初始化
- {
- TMOD|=0x01;
- TH0=0xff;
- TL0=0x1F;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void time() interrupt 1 //定時器函數(shù)
- { // uchar xx;
- TH0=0xfE; //50微秒
- TL0=0xFF;
- count++;
- if(count>8)
- { // i=0;
- count=0;
- // if(xx==0){display(i,i);}
- //if(xx!=1){ display(i-1,i);}
- display(i-1,i);
- i++;
- if(i>8) //改變的是右邊顯示的亮滅
- i=1; // xx=1;
- }
- timer++;
- if(timer>1250)
- {
- timer=0;
- //weiyi++;
- weiyi=3; //讓位停在5,字就不會變了
- shu++;
- if(shu>32)
- shu=0; //此行反饋的數(shù),就是顯示的信息,讓SHU=0,就是一直顯示0
-
- if((shu>=0)&&(shu<12))YS=0;
- if((shu>=12)&&(shu<23))YS=1;
- if((shu>=23)&&(shu<40))YS=2;
-
- }
- }
- void display(int yin,int yang) //顯示函數(shù)
- {
- switch (YS)
- {
- case(0): //初次顏色值
- {
- P1=P3=0XFF;//亮此色時,其他色關閉
- P2 = ~(~num_num[shu][yin]<<weiyi);
- if(weiyi<3)
- {
- P2 = ~(~num_num[shu][yin]>>3-weiyi);
- }
- else
- {
- P2 = ~(~num_num[shu][yin]<<weiyi-3);
- }
- switch(yang)
- {
- case 0 : P0 = 0x01;break;
- case 1 : P0 = 0x02;break;
- case 2 : P0 = 0x04;break;
- case 3 : P0 = 0x08;break;
- case 4 : P0 = 0x10;break;
- case 5 : P0 = 0x20;break;
- case 6 : P0 = 0x40;break;
- case 7 : P0 = 0x80;break;
- default : P0 = 0x01; break;
- }
- } break;//顯示第0位
-
-
-
- case(1):
- {
- P2=P3=0XFF;//亮此色時,其他色關閉
- P1 = ~(~num_num[shu][yin]<<weiyi);
- if(weiyi<3)
- {
- P1 = ~(~num_num[shu][yin]>>3-weiyi);
- }
- else
- {
- P1 = ~(~num_num[shu][yin]<<weiyi-3);
- }
- switch(yang)
- {
- case 0 : P0 = 0x01;break;
- case 1 : P0 = 0x02;break;
- case 2 : P0 = 0x04;break;
- case 3 : P0 = 0x08;break;
- case 4 : P0 = 0x10;break;
- case 5 : P0 = 0x20;break;
- case 6 : P0 = 0x40;break;
- case 7 : P0 = 0x80;break;
- default : P0 = 0x01; break;
- }
-
- } break;//顯示第0位
- case(2): //亮紅燈,P3紅燈
- {
- P1=P2=0Xff;//亮此色時,其他色關閉
- // P0=0X00;//COM口重新打開
- P3 = ~(~num_num[shu][yin]<<weiyi);
- if(weiyi<3)
- {
- P3 = ~(~num_num[shu][yin]>>3-weiyi);
- }
- else
- {
- P3 = ~(~num_num[shu][yin]<<weiyi-3);
- }
- switch(yang)
- {
- case 0 : P0 = 0x01;break;
- case 1 : P0 = 0x02;break;
- case 2 : P0 = 0x04;break;
- case 3 : P0 = 0x08;break;
- case 4 : P0 = 0x10;break;
- case 5 : P0 = 0x20;break;
- case 6 : P0 = 0x40;break;
- case 7 : P0 = 0x80;break;
- default : P0 = 0x01; break;
- }
-
- } break;//顯示第0位
- }
- }
復制代碼 Keil代碼下載,以及實物的視頻:
Desktop.rar
(3.31 MB, 下載次數(shù): 7)
2022-1-13 19:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|