![]() |
|
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 |
![]() |
#46 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
CHÚC CÁC BÁC ĐÓN TẾT VUI VẺ!!! thay đổi nội dung bởi: nguyennam8888, 18-01-2009 lúc 05:27 PM. |
|
![]() |
![]() |
![]() |
#47 |
Đệ tử 6 túi
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 |
![]() |
![]() |
![]() |
#48 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
*point(x,y)//cho phép sáng 1 điểm có tọa độ là (x,y)trên màn hình led
*line(x1,y1,x2,y2)// cho phép sáng 1 đoan thẳng có tọa độ điểm đầu là (x1,y1) và tọa độ điểm cuối (x2,y2). *area(x1,y1,x2,y2)//cho phep sang 1 vung. Bạn longtu à , cho mình hỏi là hình như trong CCS mình không tìm thấy mấy câu lệnh trên . |
![]() |
![]() |
![]() |
#49 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#50 | |
Đệ tử 6 túi
|
Trích:
Ban xem them luong này nhé #41. 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". |
|
![]() |
![]() |
![]() |
#51 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
#define BITMAP_HEIGHT_BYTE] 2
#define BITMAP_WIDTH_BIT 16 unsigned char buff_mh[BITMAP_HEIGHT_BYTE][BITMAP_WIDTH_BIT] Bạn có thể giải thích rõ số 2 và số 16 là gì vậy bạn và bạn giải thích sơ qua về mấy dòng lệnh trên |
![]() |
![]() |
![]() |
#52 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
Code:
#include "C:\Program Files\PICC\Examples\lenhmoi.h" #define BITMAP_HEIGHT_BIT 2 #define BITMAP_WIDTH_BIT 16 unsigned char buff_mh[BITMAP_HEIGHT_BIT][BITMAP_WIDTH_BIT ]; void point(int8 x,int8 y) { unsigned char *pt; int8 mask=0b00000001; int16 j; mask = mask << (y%8); pt=&buff_mh[0][0]; j=(y/8*16+x);//xác dinh vi tri x pt+=j; *pt|= mask; } void main() { while(1) { point(0,0); delay_ms(500); point(1,1); delay_ms(500); } } thay đổi nội dung bởi: namqn, 24-01-2009 lúc 09:17 PM. |
![]() |
![]() |
![]() |
#53 | |
Đệ tử 6 túi
|
Trích:
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". |
|
![]() |
![]() |
![]() |
#54 | |
Đệ tử 6 túi
|
Trích:
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". |
|
![]() |
![]() |
![]() |
#55 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
hình đây bạn
|
![]() |
![]() |
![]() |
#56 |
Đệ tử 6 túi
|
![]() Mình đã xem hình của bạn, ma trận led của bạn là 8cot x 8 hàng, bạn bắt đầu làm như sau nhé:
Mình giả sử bạn 8 cột bạn nối với PortB, 8 hàng bạn nối với portD. bạn khai báo Buff_mh như sau: #define BITMAP_HEIGHT_BYTE] 1//chiêu cao của buff_mh tính theo byte; 1 byte= 8bit-->8hàng #define BITMAP_WIDTH_BIT 8//chiều rộng buff_mh tính theo bit; 8bit-->8cột unsigned char buff_mh[BITMAP_HEIGHT_BYTE][BITMAP_WIDTH_BIT] ; Bạn viết 1 chương trình lần lượt cấp điện cho từng cột(phương pháp ở dây là quét cột:cấp diện cho cột thứ 1, sau đó ngắt điện cột thứ 1 và cấp điện cho cột thứ 2...). Tương ứng với mỗi làn cấp điện cho từng cột, bạn lấy nội dung của 1 phần từ tương ứng của buff_mh, ví dụ như: bạn muốn cột thứ nhất sáng, dâu tiên bạn phải cấp diên cho cột thứ nhất(portB=0b00000001), sau dó bạn cho PortD=buff_mh[0][0]...portB=0b00000010và portD=buff_mh[0][1], portB=0b00000100và portD=buff_mh[0][2]...Bạn nên dùng Timer de viet doan chuong trinh này, lý do là dể cho viec này thuc hien 1 cách tư dong...(mai mình viet tiep nhé, het gio làm viec o cong ty mat roi)
__________________
-------------------------------------------------------------------------------------- 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". |
![]() |
![]() |
![]() |
#57 |
Đệ tử 6 túi
|
Buff_mh: là noi chứa dựng nhưng thông tin bạn càn hiển thị trên matran, muốn thay đổi hiển thị bạn chỉ cần thay doi nội dung của buff_mh(lưu ý là công việc quet led và lấy dữ liệu bạn nên làm 1 cách tự động như trên--> công việc còn lại là thay dổi dữ liệu trong buff_mh-->thay đổi nội dung hiển thị)
Khi bạn làm được những gì như tôi đã nói, lúc đó bạn có thể sử dụng các hàm point(x,y)...bât cứ ở dâu trong chuong trình của bạn vì mục dích của nó là làm thay đổi nội dung của buff_mh(việc quet led và lấy dữ liệu hiển thị đã diễn ra tự động) từ đó làm thay dổi nội dung hiển thị. Nhìn vào hàm point(x,y): void point(int8 x,int8 y) { unsigned char *pt; int8 mask=0b00000001; int16 j; mask = mask << (y%8); pt=&buff_mh[0][0]; j=(y/8*16+x);//xác dinh vi tri x pt+=j; *pt|= mask; } Hiểu rõ đoạn chương trình này, bạn sẽ thấy nó thực chất là các lệnh xoay dữ liệu làm thay đổi 1 bit nào đó ở vị trì tương ứng trong buff_mh. Trở lại đoạn chương trình bạn đã viết ở #53, chắc bạn cũng nhận ra rằng bạn thiếu mất đoạn chương trình quét và lấy dữ liệu, bạn chỉ thay đổi được nội dung trong buff_mh nhưng những thay đổi đó dâu có được hiển thị. Bạn làm thử và post lên cho mọi người biết kết quả của bạn 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". |
![]() |
![]() |
![]() |
#58 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
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) |
|
![]() |
![]() |
![]() |
#59 | |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
Trích:
|
|
![]() |
![]() |
![]() |
#60 |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
gửi bạn nha
|
![]() |
![]() |