PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 14-01-2009, 11:22 PM   #1
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi longtu View Post
buff_mh[BITMAP_HEIGHT_BYTE][BITMAP_WIDTH_BIT] :mình coi ma trận led là màn hình Leds, thì đây chính là bộ đệm màn hình Leds(buffer_manhinh) đó, khi mình thay đổi dữ liệu trên bộ đệm này tức là mình đã thay đổi sự hiện thị trên màn hình Leds. Ban tìm hiểu thêm về mảng trong C nhé.

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,
j=(y/6*BITMAP_WIDTH_BIT+x);cái hàng này em không hiểu
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2009, 12:27 PM   #2
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
Trích:
Nguyên văn bởi nguyennam8888 View Post
j=(y/6*BITMAP_WIDTH_BIT+x);cái hàng này em không hiểu
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".
longtu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 12:22 PM   #3
nguyennam8888
Đệ 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
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 05:28 PM   #4
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
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
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 11:20 PM   #5
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi tungtot_vl View Post
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.
rotate_left(mang1[0], 1);
sao nó lại báo lỗi hả anh, báo ở chỗ số 1 ấy
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2009, 07:41 AM   #6
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
lmd

Trích:
Nguyên văn bởi nguyennam8888 View Post
rotate_left(mang1[0], 1);
sao nó lại báo lỗi hả anh, báo ở chỗ số 1 ấy
nên viết là: rotate_left(mang1, 1);
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2009, 04:48 PM   #7
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi tungtot_vl View Post
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.
bác có thể viết mẫu cho em được không, phần cứng mô phỏng trong Protus em gửi ở trên ấy, cảm ơn bác
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2009, 06:22 PM   #8
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
lmd

Trích:
Nguyên văn bởi nguyennam8888 View Post
bác có thể viết mẫu cho em được không, phần cứng mô phỏng trong Protus em gửi ở trên ấy, cảm ơn bác
lần này tôi phá giới nhé. lần sau chắc ko rảnh đâu
chúc vui!
File Kèm Theo
File Type: rar ledmatrix.rar (50.4 KB, 211 lần tải)
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2009, 11:00 PM   #9
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi tungtot_vl View Post
lần này tôi phá giới nhé. lần sau chắc ko rảnh đâu
chúc vui!
bác cho em font.c luôn nha, font chữ của bac đẹp quá
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-01-2009, 08:21 AM   #10
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
lmd

Trích:
Nguyên văn bởi nguyennam8888 View Post
bác cho em font.c luôn nha, font chữ của bac đẹp quá
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
File Kèm Theo
File Type: rar font7.rar (2.1 KB, 92 lần tải)
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2009, 02:12 AM   #11
nguyennam8888
Đệ 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
File Kèm Theo
File Type: rar ledmatrix.rar (19.0 KB, 50 lần tải)
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-01-2009, 02:08 PM   #12
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
làm quang báo thì nên dùng pic 18f thì tốt hơn.
pic 16f chỉ cho phép khai báo mãng tối đa khoảng 80 byte còn pic 18f thì khai báo tự do.
pic 18f có nhiều loại dung lượng rom, ram rất lớn như 18f4580 , 18f4680 . bạn có thể lưu font và các thứ vớ vẫn khác vào 2 con này mà ko cần phải sợ thiếu rom hay ram.
hơn nữa pic 16f chỉ ngắt 1 cấp nên khi sử dụng nhiều ngắt đồng thời thì ko dùng được
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-01-2009, 01:51 AM   #13
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi tungtot_vl View Post
...
hơn nữa pic 16f chỉ ngắt 1 cấp nên khi sử dụng nhiều ngắt đồng thời thì ko dùng được
Các PIC tầm trung (đa số là PIC16) có ngăn xếp cứng 8 cấp, còn PIC18 dùng ngăn xếp mềm (chỉ bị giới hạn bởi dung lượng RAM còn trống). Các PIC tầm trung cải tiến (enhanced mid-range) sắp ra mắt trong năm nay sẽ có ngăn xếp cứng 16 cấp.

Nếu bạn nói về mức ưu tiên thì vẫn có thể dùng nhiều ngắt với PIC16 chỉ có một mức ưu tiên ngắt. Ngay cả có nhiều mức ưu tiên ngắt thì việc xử lý ngắt vẫn diễn ra tuần tự, một cách có ưu tiên, chứ vẫn không thể diễn ra đồng thời.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-02-2009, 02:21 PM   #14
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi tungtot_vl View Post
làm quang báo thì nên dùng pic 18f thì tốt hơn.
pic 16f chỉ cho phép khai báo mãng tối đa khoảng 80 byte còn pic 18f thì khai báo tự do.
pic 18f có nhiều loại dung lượng rom, ram rất lớn như 18f4580 , 18f4680 . bạn có thể lưu font và các thứ vớ vẫn khác vào 2 con này mà ko cần phải sợ thiếu rom hay ram.
hơn nữa pic 16f chỉ ngắt 1 cấp nên khi sử dụng nhiều ngắt đồng thời thì ko dùng được
với sự chỉ dẫn của bác em đã làm được matran 16*64 cho chữ chạy , cảm ơn bác nhe !
mong bác chỉ em thêm vài cái nữa nhé : em đang tìm hiểu cho chữ chạy dich từng nét xuống và chạy tửng chữ ra giống hết cái bài của bác pots lên đấy. thú thật tại vì nhìn thấy bài của bác chạy " đã quá " nên em mê làm matran rồi. mong bác hướng dẫn cho em. (có thể chỉ em qua mail : nguyen_nam8888@yahoo.com)
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-02-2009, 07:34 PM   #15
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi nguyennam8888 View Post
với sự chỉ dẫn của bác em đã làm được matran 16*64 cho chữ chạy , cảm ơn bác nhe !
mong bác chỉ em thêm vài cái nữa nhé : em đang tìm hiểu cho chữ chạy dich từng nét xuống và chạy tửng chữ ra giống hết cái bài của bác pots lên đấy. thú thật tại vì nhìn thấy bài của bác chạy " đã quá " nên em mê làm matran rồi. mong bác hướng dẫn cho em. (có thể chỉ em qua mail : nguyen_nam8888@yahoo.com)
bác nào giúp em với.Cảm ơn
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 10:48 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam