em đang làm cái quang bao 16x 64 dùng loại 2 màu anot chung và dùng giải thuật quét led theo hàng.......với sơ đồ như trong hình và cách tạo font nhưng em đang hơi bí lúc dịch chữ với kiểu quét theo hàng dùng 89... bởi mỗi lần dịch nó đi nguyên byte nên trong rất kì nếu dịch theo bít thì em sẽ chỉnh lại sao ? em viết bằng keilc
em mô tả lại cái chương trình //
sbit sda = p1^0 ; chân p1.0 của vdk làm nhiệm vụ cấp data cho ic 74hc595
sbit sck = p1^1 ; chân p1.1 làm nhiệm vụ cung cấp xung clock để dịch bit
sbit lat = p1^2; chân p1.2 làm nhiệm vụ bắt ic 74hc595 xuất data ra chân
mảng dử liệu để hiển thị "
unisigned char code display [] = { 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff// kí tự rống
0,68,56,0,56,66,198,198,254,254,198,198,198,0,0,0 //kí tự Ă
..............................................}
Hàm chuyển dứ liệu nối tiếp ra song song :
void nt2ss (unsigned char data_out)
{ int luutam;
luutam = data_out ; // cất tạm dữ liệu vào biến luutam
for(int i =0 ;i<=7 ;i++) // dịch đủ 1 byte dử liệu ra ic 74hc595
{
luutam =luutam&0x80 ; trích ra bit đầu tiên của byte
if(luutam =0x80)
sda =1 ; //xuất bít 1 vào 74hc..
else
sda =0 ; //xuất bít 0 vào 74hc..
sck =0;
sck =1 ; // tạo một xung clock để dịch bit vào ic
data_out * = 2; // dịch bít kế tiếp trong data_out để chuyển ra 74hc595
}
void main () // hàm chính
int j,m
while (1)
{ for (m=0;m <=15;m++) // quét đủ 16 hàng
{
for (int k =0 ;k <=15++) // vong lặp nạp đủ data cho 16 led matrix
{ nt2ss(display[n+8]); // n+ 8 để lần lượt lấy từng byte của mối kí tự theo kiểu có một hàng giả sử 5 người ban đầu em chém một phát đứt hết đầu tưng người rồi xếp ra led .. sau đó em lại chém phần thân của 5 người này rồi xuất ra led , rồi đến chân của họ và xuất led.. cuối cùng thì em nhìn thấy 5 người này xuất hiện trên bảng led matrix
lat =1 ; // xuất dữ liệu ra các chân của 74hc595
kichtransistor(m) // kích transistor tương ứng để cấp áp cho hàng led
delay(300); tạo trễ để quan sát ;
}
}
}
ở đây có 1 số hàm như delay và hàm kích transistor em không viết ra
Vấn đề lớn ở đây là cái matrix của em
xuất hiện hiệu ứng dịch hình nhưng cả byte tức kí tự em xuất led nó nhảy từng con led 16x8 .. mà không phải dịch từ từ từng điểm sáng.. chỗ này em đang bí...
ở trên em có mô tả cái khung có độ rộng là 8 bít sẽ di chuyển từ trái qua phải đủ 8 led matrix rồi lại từ trên xuống cho đủ 16 mối lần nó chỉ dịch 1 bít thôi để xuất ra 74hc595 tạo hiệu ứng dịch chữ từ từ mà không phải nhảy tưng con led 8x8.
Em đang bí chỗ này nên nhờ mấy anh chỉ cho em .. cám ơn nhé !
em mô tả lại cái chương trình //
sbit sda = p1^0 ; chân p1.0 của vdk làm nhiệm vụ cấp data cho ic 74hc595
sbit sck = p1^1 ; chân p1.1 làm nhiệm vụ cung cấp xung clock để dịch bit
sbit lat = p1^2; chân p1.2 làm nhiệm vụ bắt ic 74hc595 xuất data ra chân
mảng dử liệu để hiển thị "
unisigned char code display [] = { 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff// kí tự rống
0,68,56,0,56,66,198,198,254,254,198,198,198,0,0,0 //kí tự Ă
..............................................}
Hàm chuyển dứ liệu nối tiếp ra song song :
void nt2ss (unsigned char data_out)
{ int luutam;
luutam = data_out ; // cất tạm dữ liệu vào biến luutam
for(int i =0 ;i<=7 ;i++) // dịch đủ 1 byte dử liệu ra ic 74hc595
{
luutam =luutam&0x80 ; trích ra bit đầu tiên của byte
if(luutam =0x80)
sda =1 ; //xuất bít 1 vào 74hc..
else
sda =0 ; //xuất bít 0 vào 74hc..
sck =0;
sck =1 ; // tạo một xung clock để dịch bit vào ic
data_out * = 2; // dịch bít kế tiếp trong data_out để chuyển ra 74hc595
}
void main () // hàm chính
int j,m
while (1)
{ for (m=0;m <=15;m++) // quét đủ 16 hàng
{
for (int k =0 ;k <=15++) // vong lặp nạp đủ data cho 16 led matrix
{ nt2ss(display[n+8]); // n+ 8 để lần lượt lấy từng byte của mối kí tự theo kiểu có một hàng giả sử 5 người ban đầu em chém một phát đứt hết đầu tưng người rồi xếp ra led .. sau đó em lại chém phần thân của 5 người này rồi xuất ra led , rồi đến chân của họ và xuất led.. cuối cùng thì em nhìn thấy 5 người này xuất hiện trên bảng led matrix
lat =1 ; // xuất dữ liệu ra các chân của 74hc595
kichtransistor(m) // kích transistor tương ứng để cấp áp cho hàng led
delay(300); tạo trễ để quan sát ;
}
}
}
ở đây có 1 số hàm như delay và hàm kích transistor em không viết ra
Vấn đề lớn ở đây là cái matrix của em
xuất hiện hiệu ứng dịch hình nhưng cả byte tức kí tự em xuất led nó nhảy từng con led 16x8 .. mà không phải dịch từ từ từng điểm sáng.. chỗ này em đang bí...
ở trên em có mô tả cái khung có độ rộng là 8 bít sẽ di chuyển từ trái qua phải đủ 8 led matrix rồi lại từ trên xuống cho đủ 16 mối lần nó chỉ dịch 1 bít thôi để xuất ra 74hc595 tạo hiệu ứng dịch chữ từ từ mà không phải nhảy tưng con led 8x8.
Em đang bí chỗ này nên nhờ mấy anh chỉ cho em .. cám ơn nhé !
Comment