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 21-01-2009, 12:30 AM   #1
dientudong
Đệ 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 .
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-01-2009, 12:03 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 dientudong View Post
*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 .
Tấc cả các hàm này là do bạn tự viết ra đấy chứ. Nó không có sẵn đâu bạn.
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".
longtu 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:09 PM   #3
dientudong
Đệ 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
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-02-2009, 07:28 AM   #4
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 dientudong View Post
#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
Với khai báo như vậy, sẽ cho bộ đệm màn hình có 16x16(16 cột x16 hàng)

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 24-01-2009, 09:08 PM   #5
dientudong
Đệ 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);
          }
}
Bạn nào làm ơn chỉ cho mình gấp : mình phải khai báo thế nào để mảng 2 chiều trên và các lệnh làm sáng led có hiệu lực trên led ma trận .Mình đang thử dùng mấy lệnh mà bạn longtu giới thiệu nhưng chưa biết sử dụng thế nào.

thay đổi nội dung bởi: namqn, 24-01-2009 lúc 09:17 PM.
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-02-2009, 07:24 AM   #6
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 dientudong View Post
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);
          }
}
Bạn nào làm ơn chỉ cho mình gấp : mình phải khai báo thế nào để mảng 2 chiều trên và các lệnh làm sáng led có hiệu lực trên led ma trận .Mình đang thử dùng mấy lệnh mà bạn longtu giới thiệu nhưng chưa biết sử dụng thế nào.
Bạn cho mình xem phần cứng kết nối của bạn di, mình sẽ giúp bạn.

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 02-02-2009, 11:15 AM   #7
dientudong
Đệ tử 5 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 95
:
hình đây bạn
File Kèm Theo
File Type: rar hinh.rar (9.3 KB, 72 lần tải)
dientudong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-02-2009, 04:47 PM   #8
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
Thumbs down

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".
longtu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-02-2009, 07:03 AM   #9
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
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".
longtu 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:56 PM   #10
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
gửi bạn nha
File Kèm Theo
File Type: rar chucmayman.rar (449.6 KB, 336 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 05-02-2009, 11:28 PM   #11
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
Cám ơn bạn nhiều nhiều
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-02-2009, 05:03 PM   #12
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
có sư huynh nào có tài liệu về giao tiếp cho Pic bằng VB6 thì post cho minh với nha
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-02-2009, 12:02 PM   #13
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
quét hàng

Em muốn hỏi các anh quét hàng và quét cột khác nhau như thế nào, và người ta thường dùng IC gì để quét hàng
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2009, 09:22 AM   #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 dungbk49 View Post
Em muốn hỏi các anh quét hàng và quét cột khác nhau như thế nào, và người ta thường dùng IC gì để quét hàng
quét hàng là bạn đưa data ra cột rồi sau đó thực hiện quét hàng để hiển thị , còn quét cột là đưa data ra hàng rồi thực hiện quét cột, tuy nhiên nếu làm nhiều cột thì tần số quét cột phải đảm bảo để hiển thị đươc .Và để làm được bảng quang báo lớn thì người ta sẽ sử dụng các modum ghép lại.Phương pháp quét cột sẽ tốn nhiều chân của VXL trong khi đó nếu quét hàng thì tốn it hơn.Con 74ls138 thường sử dụng để quét hàng ( 8 hàng ) để quét 16 hàng bạn phải ghép 2 con 74ls138 hoẳc con 74hc154.
Chúc bạn thành công
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-03-2009, 12:49 AM   #15
hoc_picpicpic
Đệ tử 6 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 127
:
bác tungtot_vl ơi cho em hỏi . em mới cho chạy được có vài kí tự mà pic6f877a đã báo đầy Ram rồi . giờ em muốn sử dụng Ram & Rom ngoài thì làm thế nào hả bác . Cám ơn bác trước nhé

thay đổi nội dung bởi: hoc_picpicpic, 06-03-2009 lúc 11:29 AM.
hoc_picpicpic 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à 03:57 PM.


Đượ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