淘到一個(gè)三色點(diǎn)陣,首先網(wǎng)上找引腳圖,沒(méi)有找到,然后就是自己測(cè)試。
圖123是單獨(dú)測(cè)顏色 ,圖4是匯總。
圖5是接線圖,直接32個(gè)IO口全上,沒(méi)有74hc595,
圖6是點(diǎn)亮單色
圖7是三色都點(diǎn)亮。
后續(xù)有時(shí)間再做個(gè)動(dòng)態(tài)。
圖1
圖2
圖3
圖4
圖5
圖6
圖7
附件里是代碼和三色動(dòng)態(tài)測(cè)試視頻
單片機(jī)源程序如下:
- #include "reg52.h"
- //rotuse可以做到的 8*8點(diǎn)陣陽(yáng)極接P2口,陰極接P1口,用下面的代碼就可以實(shí)現(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,}, //大愛(ài)心
- {0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF,}, //小愛(ài)心 //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,}, //大愛(ài)心
- //10
- //注意:數(shù)組第一個(gè)要移到最后
- {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點(diǎn) //5
- {0xEF,0xEF,0xE0,0x7,0xF7,0xF7,0xF7,0xEF,}, // 四點(diǎn)加翅膀 //4
- {0xF7,0x6F,0xA3,0xC5,0xF6,0xEF,0xDF,0xFB,}, // 翅膀轉(zhuǎn)一度
- {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,}, // 翅膀收完 只亮中間四點(diǎn)
- //20 //注意:數(shù)組第一個(gè)要移到最后
- {0x7E,0x7E,0x66,0x66,0x7E,0x7E,0x0,0x0,}, //中間四點(diǎn), 外面一圈
- {0x81,0xBD,0xA5,0xA5,0xBD,0x81,0xFF,0xFF,}, //中間四點(diǎn), 第二圈
- {0xFF,0xC3,0xDB,0xDB,0xC3,0xFF,0xFF,0xFF,}, //小內(nèi)圈
- //23
- {0xBD,0xFF,0xE7,0xE7,0xFF,0xBD,0xFF,0xFF,}, //中間四點(diǎn) 中圈四點(diǎn)
- {0x9D,0xFD,0xE7,0xE7,0xBF,0xB9,0xFF,0xFF,}, //中間四點(diǎn) 中圈8點(diǎn)
- {0xCF,0xFD,0xE5,0xA7,0xBF,0xF3,0xFF,0xFF,}, //中間四點(diǎn) 中圈8點(diǎn)移動(dòng)一位
- {0xE7,0xFF,0xA5,0xA5,0xFF,0xE7,0xFF,0xFF,} , //中間四點(diǎn) 中圈8點(diǎn)再移動(dòng)一位
- {0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0xFF,}, //中間四點(diǎn) 中圈向中聚攏
- //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,}, //大愛(ài)心
- // {0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF,}, //小愛(ài)心 //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() //定時(shí)器初始化
- {
- TMOD|=0x01;
- TH0=0xff;
- TL0=0x1F;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void time() interrupt 1 //定時(shí)器函數(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,字就不會(huì)變了
- 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;//亮此色時(shí),其他色關(guān)閉
- 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;//亮此色時(shí),其他色關(guān)閉
- 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;//亮此色時(shí),其他色關(guān)閉
- // P0=0X00;//COM口重新打開(kāi)
- 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位
- }
- }
復(fù)制代碼 Keil代碼下載,以及實(shí)物的視頻:
Desktop.rar
(3.31 MB, 下載次數(shù): 7)
2022-1-13 19:34 上傳
點(diǎn)擊文件名下載附件
|