em mới nghiên cứu ledmatran,em muốn hiển thị chữ happy lên 4 ledmt, em dùng con hc138 để giải mã hàng, con hc595 làm con ghi dịch dữ liện.Sau khi mô phỏng, tại sao các chữ nó cứ lệch nhau một hàng.em rất mong những bác có kinh nghiệm về lmt chỉ dùm không biết em sai chổ nào. Cho em hỏi giờ mình muốn cho chữ chạy từ phải sang trai thì phải làm thế nào,em cảm ơn nhiều(xin lõi, em chưa biết tải file đính kèm, em sẽ nghiên cứu sau).Chương trình:
#include <16f877a.h>
#fuses NOWDT,HS,PUT,NOPROTECT
#use delay(clock=4000000)
int8 n,lap,i,m;
unsigned char quetcot[5][8]={ {0x42,0x42,0x42,0x7E,0x42,0x24,0x18,0x00},//H
{0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x00},//A
{0x40,0x40,0x40,0x7C,0x42,0x42,0x7C,0x00},//P
{0x40,0x40,0x40,0x7C,0x42,0x42,0x7C,0x00},//P
{0x40,0x20,0x10,0x18,0x24,0x42,0x42,0x00}};//Y;
unsigned char quethang[8]={0b00001111,0b00001110,0b00001101,0b00001100,0b00 001011,0b00001010,0b00001001,0b00001000};//quethang 74hc138
//.................................................. ......
void quet74hc595(int8 x)
{
#bit bien=x.7;
output_high(pin_b0);//Clock
for(i=0;i<8;i++)
{
if (bien==1)
output_high(pin_b1); //Dich 1 bit vao 74HC595
else output_low(pin_b1);
output_low(pin_b0); //tao xung Clock
output_high(pin_b0); //tao xung Clock
x = x<<1; //Dich trai 1 bit cua Data
}
output_low(pin_b2); //Chot 8 bit cho dau ra
output_high(pin_b2); //Chot 8 bit cho dau ra
}
//.................................................. ......
void main()
{
set_tris_b(0x00);
while(1)
{
for(m=0;m<5;m++)
{
for(lap=0;lap<25;lap++)
{
for (n=0;n<8;n++)
{
quet74hc595(quetcot[m][n]); //Gui ky tu
output_c(quethang[n]);
delay_ms(10); //Tao thoi gian tre
output_c(0x00);
output_b(0xff);
}
}
}
}
}