![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#31 | |
Đệ tử 6 túi
|
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,
__________________
-------------------------------------------------------------------------------------- Phùng Minh Tuân Email: tuan.phmt@gmail.com "Cuộc đời sóng gió nuôi ta lớn Bao lần thất bại dạy ta khôn". |
|
![]() |
![]() |
![]() |
#32 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
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é |
|
![]() |
![]() |
![]() |
#33 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
[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 |
|
![]() |
![]() |
![]() |
#34 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
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 |
|
![]() |
![]() |
![]() |
#35 |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
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
|
![]() |
![]() |
![]() |
#36 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
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. thay đổi nội dung bởi: tungtot_vl, 14-01-2009 lúc 05:29 PM. Lý do: sai |
![]() |
![]() |
![]() |
#37 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
sao nó lại báo lỗi hả anh, báo ở chỗ số 1 ấy |
|
![]() |
![]() |
![]() |
#38 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
|
|
![]() |
![]() |
![]() |
#39 |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
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
|
![]() |
![]() |
![]() |
#40 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
lmd
|
![]() |
![]() |
![]() |
#41 |
Đệ tử 6 túi
|
Tôi giả xử bạn có màn hình led là 16x16, khii đó bạn khai báo Buff_mh như sau:
#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,
__________________
-------------------------------------------------------------------------------------- Phùng Minh Tuân Email: tuan.phmt@gmail.com "Cuộc đời sóng gió nuôi ta lớn Bao lần thất bại dạy ta khôn". |
![]() |
![]() |
![]() |
#42 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
|
|
![]() |
![]() |
![]() |
#43 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
lmd
Trích:
chúc vui! |
|
![]() |
![]() |
![]() |
#44 |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
|
![]() |
![]() |
![]() |
#45 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
lmd
bac nay duoc voi dòi tiên nhi. tôi chi có font 16 bác lấy về loc ra font 8 nhé.
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 |
![]() |
![]() |