E mới làm led ma trận 2 màu p10. mong anh chị và các bạn giúp đỡ
TRÊN MODULE P10 CÓ 1 IC DỊCH 16 BIT E NGHĨ NÓ LÀ MBI5026. IC ĐỆM 245, IC GIẢI MÃ 138.
E CÓ VIẾT DÒNG CODE ĐỂ DỊCH NHƯ SAU, NHƯNG DỮ LIỆU E MUỐN HIỂN THỊ LÀ CHỮ DIV NHUNG NÓ CHỈ SÁNG CÓ 4 HÀNG DUY NHẤT. E NGHĨ MÌNH ĐÃ DỊCH SAI.
#INCLUDE <18F4550.H>
#DEVICE ADC=10
#FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP,CPUDIV1
#USE I2C(MASTER,SLOW,SDA=PIN_B0,SCL=PIN_B1)
#USE DELAY(CLOCK=20000000)
#DEFINE BT_UP PIN_C0
#DEFINE BT_DW PIN_C1
#DEFINE BT_MOD PIN_C2
#DEFINE A PIN_D6
#DEFINE B PIN_D5
#DEFINE OE PIN_D7
#DEFINE CLK PIN_C7
#DEFINE XUAT PIN_D4
#DEFINE DR PIN_C6
#DEFINE DG PIN_C5
unsigned char ma[16][4]=
{
0x00,0x00,0x00,0x00,0x3F,0x06,0x30,0xC0,0x3F,0x86,0x30,0xC0,0x30,0xC0,0x30,0xC0,
0x30,0xC6,0x30,0xC0,0x30,0xC6,0x31,0xC0,0x30,0xC6,0x19,0x80,0x30,0xC6,0x0F,0x00,
0x30,0xC6,0x06,0x00,0x30,0xC6,0x06,0x00,0x30,0xC6,0x06,0x00,0x30,0xC6,0x06,0x00,
0x30,0xC6,0x06,0x00,0x3F,0x86,0x06,0x00,0x3F,0x06,0x06,0x00,0x00,0x00,0x00,0x00
};
VOID HANG(UNSIGNED CHAR SOHANG)
{
switch(SOHANG)
{
case 1:{OUTPUT_LOW(A);OUTPUT_LOW(B);OUTPUT_high(OE);break;}
case 2:{OUTPUT_HIGH(A);OUTPUT_LOW(B);OUTPUT_high(OE);break;}
case 3:{OUTPUT_LOW(A);OUTPUT_HIGH(B);OUTPUT_high(OE);break;}
case 4:{OUTPUT_HIGH(A);OUTPUT_HIGH(B);OUTPUT_high(OE);break;}
}
}
void chuyen(unsigned char DL)
{
unsigned char i;
UNSIGNED INT16 DT; //SHORT BSERI;
#BIT BSERIX = DT.15
for(i=0;i<16;i++)
{
//OUTPUT_BIT(DR,BSERIX);
OUTPUT_BIT(DG,BSERIX);
// Tao xung dich du lieu
OUTPUT_LOW(CLK);
OUTPUT_HIGH(CLK);
DT=DL & (0x80>>i);
}
}
void hienthi()
{
unsigned char y,z,x;
for(x=1;x<5;x++)
{
for(y=0;y<4;y++)
{
for(z=16;z>0;z=z-4)
{
chuyen(~ma[z-x][y]);
}
}
OUTPUT_LOW(XUAT);
OUTPUT_HIGH(XUAT);
hang(5-x);
delay_MS(200);
OUTPUT_LOW(OE);
delay_MS(1000-400);
}
}
VOID MAIN ()
{
WHILE(TRUE)
{
hienthi();
}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?