![]() |
Trích:
pt=&buff_mh[0][0];//Đây là cách lấy điạ chỉ cho con trỏ. Bạn tìm hiểu thêm về con trỏ trong C nhé. Thân, |
lmd
[QUOTE=nguyennam8888;22125]
Trích:
tùy theo chuơng trình của bạn như thế nào mà bạn sử dụng nó cho thích hợp shift_right(mang,so byte,1 hoặc 0); dich các bit trong mãng sang phải 1 bit sau đó chèn vào giá trị đầu tiên là 1 hoặc 0 shift_left(mang,so byte,1 hoặc 0) rotate_right(mang,so byte); xoay phải các bit trong mang rotate_left(mang,so byte); ví dụ: mang[2] có các bit là: 0b11110000,0b00001111; shift_left(mang,2,1); ==>khi đó các bit trong mang là: 0b11100000,0b00011111; shift_left(mang,2,0); ==>khi đó các bit trong mang là: 0b11100000,0b00011110; rotate_left(mang,2);==>khi đó các bit trong mang là: 0b11100000,0b00011111; rotate_right(mang,2);==>khi đó các bit trong mang là: 0b11111000,0b00000111; các hàm này khi ứng dụng cho dịch trái hay phải thì còn tùy thuộc vào code bạn viết nhé |
[QUOTE=tungtot_vl;22143]
Trích:
em muốn dich phai byte thứ 4 trong mảng với bít đầu tiên của byte thứ 3 trong mảng thì phải làm như thế nào |
lmd
[QUOTE=nguyennam8888;22145]
Trích:
do đó bạn muốn dùng các hàm này để dịch chữ cho LMD thì tốt nhất bạn nên chia mãng hiển thị chữ của bạn ra làm nhiều mãng nhỏ rồi dịch các mãng nhỏ đó vì bạn dùng 595 để gửi data do đó mỗi data ra 595 là một byte nằm ngang của màn hình hiển thị. nên khi bạn dich byte này sang phải hay sang trái thì màn hình hiển thị sẽ dịch 1 hàng. nếu bạn dùng LMD 8 hàng thì nên chi làm 8 mãng, mỗi mãng là 1 hàng. do đó dịch mãng 1 sang 1 bước thì các điểm ảnh của màn hình hàng 1 cũng dịch sang 1 bước. do đó khi bạn dịch cả 8 mãng sang một bước thì toàn bộ màn hình cũng dịch sang 1 bước. làm như thế thì bạn đã dịch chữ được sang một bước rồi đó hi hi. cứ như thế lập lại cho đến hết màn hình là được. đơn giản mà phải không |
em hiểu rồi, nhưng nếu với nhiều hàng thì em có thể đổi mảng data từ mảng một chiều sang mảng hai chiều cũng được phải không, như thế có ổn không anh
|
toàn bộ font tôi điều dùng mãng 1 chiều cả
ví dụ chữ A chiếu 8 byte đầu tiên, chữ B chiếm 8 byte tiếp theo.. trong một mãng. còn các màn hình hiển thị sẽ chia làm 8 mãng, mỗi mãng lá 1 hàng. ta chỉ cần lấy data từ font lần lượt cho vào các mãng. để lấy chữ A ta lấy: mang1[0] = font[0]; mang2[0] = font[1];.. mang8[0] = font[7]; như vậy ta đã lấy chữ A trong font ra để hiển thị trên màn hình và khi đó dùng các lệnh dịch trên để dịch các mãng 1-8 thì chữ A sẽ dịch qua. Do đó trong mãng font bạn có thể chứa bao nhiêu ký tự đã mã hóa sẳn vẫn được, chỉ cần dùng ký tự nào là ta tìm đến vị trí của ký tự đó để lấy nó ra. |
Trích:
sao nó lại báo lỗi hả anh, báo ở chỗ số 1 ấy |
Trích:
|
1 Attachment(s)
bác lại giúp em nha, chương trình em viết giống gợi ý mà vẫn không ổn
|
lmd
Trích:
|
Trích:
#define BITMAP_HEIGHT_BYTE] 2 #define BITMAP_WIDTH_BIT 16 unsigned char buff_mh[BITMAP_HEIGHT_BYTE][BITMAP_WIDTH_BIT] ... Bây giờ giả xử bạn chọn tọa độ (0,0) là điểm led tại góc trái-phía duoi màn hình led. Bây giờ bạn muốn điểm có tọa độ là (0,0) sáng lên, ban chỉ cần goi hàm point(0,0); void point(int8 x,int8 y) { unsigned char *pt; int8 mask=0b00000001; int16 j; mask = mask << (y%8);//xác định vi tri y: pt=&buff_mh[0][0]; j=(y/8*BITMAP_WIDTH_BIT+x);//xác dinh vi tri x pt+=j; *pt|= mask; } Xin loi các bạn, doan code nay hom truoc mình viet nhầm hàng này: j=(y/8*BITMAP_WIDTH_BIT+x);//chia cho 8 chứ khong phai chia 6 Thân, |
Trích:
|
lmd
1 Attachment(s)
Trích:
chúc vui! |
Trích:
|
lmd
1 Attachment(s)
Trích:
font này mã hóa ngươc với font trong bài tôi làm cho bác. bác muốn dùng được nó thì có 2 cách: 1: đổi font ngược lại 2: đổi hàm display() ở các hàm output_hight(data); thành output_low(data); và output_low(data); thành output_hight(data);. còn trong hàm rotate thì đổi số 0 thành số 1 |
Múi giờ GMT. Hiện tại là 05:52 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam