Chip thấy trên mạng chưa có ai Share code led cube dùng 8051 + 74HC595 nên tính viết thử, nhưng thuật toán hiệu ứng load nặng quá..nhanh full bộ nhớ, Chip post lên chia sẻ để bạn nào có  ý tưởng hay thì phát triển tiếp, mong các bạn cũng chia sẻ lại. ^^


Code lập trình 74hc595:

#include <REGX51.H>//---------ChipKool_Online----www.echipkool.com---
#define xung P1_0
#define dulieu P1_1
#define chot P1_2
#define L1 P2_0
#define L2 P2_1
#define L3 P2_2
#define L4 P2_3
#define L5 P2_4
#define L6 P2_5
#define L7 P2_6
#define L8 P2_7
unsigned char temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8;
unsigned int j,p,y;
//----------------------
void delay(unsigned char ms )
{
   int l,m;
   for(l=0;l<ms;l++)
    {
for(m=0;m<800;m++);

}
}  
//----------------------------
void hienthi(unsigned char x)
{
 int k,tam;
 for(k=0;k<8;k++)
    {
tam=x;
tam=tam&0x80;
if(tam==0x80) dulieu=1;
else dulieu=0;
x=x<<1;
xung=0;
xung=1;
}
}

//--------------------------------
void xuat(unsigned char temp1,unsigned char temp2,unsigned char temp3,unsigned char temp4,unsigned char temp5,unsigned char temp6,unsigned char temp7,unsigned char temp8)
{
hienthi(temp1);
hienthi(temp2);
hienthi(temp3);
hienthi(temp4);
hienthi(temp5);
hienthi(temp6);
hienthi(temp7);
hienthi(temp8);
chot=0;   //xuat du lieu ra output
chot=1;
delay(50);
}
//-----------------------

//------------------------
void sangchayduoi()
{

unsigned char code chay1[1][9]={{0x01,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}};
for(p=1;p<=1;p++)
{
for(j=1;j<=9;j++)
 {
 y=chay1[p][j];
 xuat(y,y,y,y,y,y,y,y);// sang cung luc
 delay(20);
 }
}

}
void sangchaydan()
{
unsigned char code chay2[1][9]={{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}};
for(p=1;p<=1;p++)
{
for(j=1;j<=9;j++)
 {
 y=chay2[p][j];
 xuat(y,y,y,y,y,y,y,y);// sang cung luc
 delay(20);
 }
}
}
//=============================
void chaychu()
{

unsigned char code quet[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char code chaychu[8][9]={{0x01,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff},
 {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}};
for(p=1;p<=8;p++)
{
for(j=1;j<=9;j++)
 {
 P2=quet[p];
 y=chaychu[p][j];
 xuat(0,0,0,0,0,0,0,y);// day chu a ra
 xuat(0,0,0,0,0,0,y,0);// day chu a ra
 xuat(0,0,0,0,0,y,0,0);// day chu a ra
 xuat(0,0,0,0,y,0,0,0);// day chu a ra
 xuat(0,0,0,y,0,0,0,0);// day chu a ra
 xuat(0,0,y,0,0,0,0,0);// day chu a ra
 xuat(0,y,0,0,0,0,0,0);// day chu a ra
 xuat(y,0,0,0,0,0,0,0);// day chu a ra
 delay(20);
 }
 
}

}
//-------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>----------------<<<<<<<<<<<<<<<<<<<<<<<
void sangchay()
{
unsigned char code chay[9]={0x01,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//for(p=1;p<=2;p++)
//{
L1=L2=L3=L4=L5=L6=L7=L8=1;
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,0,0,0,chay[j]);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,0,0,chay[j],0);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,0,chay[j],0,0);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,chay[j],0,0,0);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,chay[j],0,0,0,0);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,chay[j],0,0,0,0,0);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,chay[j],0,0,0,0,0,0);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(chay[j],0,0,0,0,0,0,0);
//delay(20);
}

//}
}
//=============================================================
void sangdan()
{
unsigned char code dan[9]={0x01,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
//for(p=1;p<=2;p++)
//{
L1=L2=L3=L4=L5=L6=L7=L8=1;
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,0,0,0,dan[j]);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,0,0,dan[j],255);// thay 1 bang 255 se sang.
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,0,dan[j],255,255);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,0,dan[j],255,255,255);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,0,dan[j],255,255,255,255);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,0,dan[j],255,255,255,255,255);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(0,dan[j],255,255,255,255,255,255);
//delay(20);
}
for(j=1;j<=9;j++)
{
xuat(dan[j],255,255,255,255,255,255,255);
//delay(20);
}

//}
}
//========================================
void chayvong()
{
// Canh 1
unsigned char z,q,o;
y=0x01;//00000001
xuat(0,0,0,0,0,0,0,y);
delay(20);
xuat(0,0,0,0,0,0,y,1);
delay(20);
xuat(0,0,0,0,0,y,1,1);
delay(20);
xuat(0,0,0,0,0,y,1,1);
delay(20);
xuat(0,0,0,0,y,1,1,1);
delay(20);
xuat(0,0,0,y,1,1,1,1);
delay(20);
xuat(0,0,y,1,1,1,1,1);
delay(20);
xuat(0,y,1,1,1,1,1,1);
delay(20);
xuat(y,1,1,1,1,1,1,1);
delay(20);
// canh 2
xuat(0x01,1,1,1,1,1,1,1);
delay(20);
xuat(0x03,1,1,1,1,1,1,1);
delay(20);
xuat(0x07,1,1,1,1,1,1,1);
delay(20);
xuat(0x0f,1,1,1,1,1,1,1);
delay(20);
xuat(0x1f,1,1,1,1,1,1,1);
delay(20);
xuat(0x3f,1,1,1,1,1,1,1);
delay(20);
xuat(0x7f,1,1,1,1,1,1,1);
delay(20);
xuat(0xff,1,1,1,1,1,1,1);
delay(20);
// canh 3
z=0x81;//10000001
xuat(0xff,z,1,1,1,1,1,1);
delay(20);
xuat(0xff,z,z,1,1,1,1,1);
delay(20);
xuat(0xff,z,z,z,1,1,1,1);
delay(20);
xuat(0xff,z,z,z,z,1,1,1);
delay(20);
xuat(0xff,z,z,z,z,z,1,1);
delay(20);
xuat(0xff,z,z,z,z,z,z,1);
delay(20);
xuat(0xff,z,z,z,z,z,z,z);
delay(20);
// canh 4
xuat(0xff,z,z,z,z,z,z,0x81);
delay(20);
xuat(0xff,z,z,z,z,z,z,0xc1);
delay(20);
xuat(0xff,z,z,z,z,z,z,0xe1);
delay(20);
xuat(0xff,z,z,z,z,z,z,0xf1);
delay(20);
xuat(0xff,z,z,z,z,z,z,0xf9);
delay(20);
xuat(0xff,z,z,z,z,z,z,0xfd);
delay(20);
xuat(0xff,z,z,z,z,z,z,0xff);
delay(20);
//canh 5
q=0x83;
xuat(0xff,z,z,z,z,z,q,0xff);
delay(20);
xuat(0xff,z,z,z,z,q,q,0xff);
delay(20);
xuat(0xff,z,z,z,q,q,q,0xff);
delay(20);
xuat(0xff,z,z,q,q,q,q,0xff);
delay(20);
xuat(0xff,z,q,q,q,q,q,0xff);
delay(20);
xuat(0xff,q,q,q,q,q,q,0xff);
delay(20);
//canh 6
xuat(0xff,0x83,q,q,q,q,q,0xff);
delay(20);
xuat(0xff,0x87,q,q,q,q,q,0xff);
delay(20);
xuat(0xff,0x8f,q,q,q,q,q,0xff);
delay(20);
xuat(0xff,0x9f,q,q,q,q,q,0xff);
delay(20);
xuat(0xff,0xbf,q,q,q,q,q,0xff);
delay(20);
xuat(0xff,0xff,q,q,q,q,q,0xff);
delay(20);
//canh 7
o=0xc3;//11000011
xuat(0xff,0xff,o,q,q,q,q,0xff);
delay(20);
xuat(0xff,0xff,o,o,q,q,q,0xff);
delay(20);
xuat(0xff,0xff,o,o,o,q,q,0xff);
delay(20);
xuat(0xff,0xff,o,o,o,o,q,0xff);
delay(20);
xuat(0xff,0xff,o,o,o,o,o,0xff);
delay(20);
//canh 8
xuat(0xff,0xff,o,o,q,q,0xe3,0xff);
delay(20);
xuat(0xff,0xff,o,o,o,q,0xf3,0xff);
delay(20);
xuat(0xff,0xff,o,o,o,o,0xfb,0xff);
delay(20);
xuat(0xff,0xff,o,o,o,o,0xff,0xff);
delay(20);
//canh 9














}
//=========================
void main()
{
while(1)
{
chayvong();
//sangchay(); // sang chay tung cot
//sangdan(); // sang dan tung cot
//sangchayduoi(); //
//sangchaydan();
//chaychu();

}
}



( Mô phỏng Protues 8.0 + Code C Compile By Keil C 4)
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút  hiện ra ở góc phải phía trên, nhấn vào để đến trang download
Echipkool.com - Điện Tử | Tin Học - Chia sẻ kiến thức - Kết nối đam mê điện tử
Nhãn:

Đăng nhận xét

Đăng nhận xét

Author Name



Tôi là Ngọc Anh. Tôi đến từ Nghệ An. Tôi tốt nghiệp một trường đại học tại Sài Gòn. Hiện tôi đang phát triển công ty riêng. Liên lạc với tôi qua:






Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.