PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

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

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-05-2011, 09:23 PM   #1
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
Question pic 16f877a và hiển thị led matran

chào các bác!!!!!!!!!11
mình đang làm đề tài quang báo hiển thị led matran vấn đề mình gặp phải chưa giải quyết được là khi từ máy tính đẩy một chuỗi dữ liệu xuống thì làm sao xử lý chuỗi đó hiển thị led matran(ở đây mình đã làm hiển thị được ký tự rồi nhưng xử lý chuỗi từ pc xuống vẫn chưa được)
vd :truyền chuỗi từ pc xuống pic là"*picvietnam.com#"
khi pic nhận dc ký tự # rồi thì sẽ xử lý chuỗi vậy làm sao mình lấy từng ký tự hiển thị led matran(mình nghĩ lấy từng ký tự tra mảng rồi hiển thị nhưng vẫn không biết tách từng ký tự trong 1 chuỗi như thế nào)
mong bác nào đã làm qua có thể chỉ mình cách viết được không...........cám ơn các bác
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 09:34 PM   #2
tanbka
Đệ tử 5 túi
 
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
:
Từ máy tình truyền nối tiếp xuống xuống PIC mà, bạn chỉ lấy từng byte từ bộ đệm ra thôi. Không bít có đúng ý bạn muốn hỏi không?
tanbka vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 10:31 PM   #3
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
nhưng cách lấy mình lấy như thế nào mình muốn hỏi là vậy
một chuỗi là vậy nhưng lấy 1 ký tự hiện thì mình vẫn chưa làm được
bạn biết cách lấy ko chỉ mỉnh dc không?
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 10:33 PM   #4
stupid11
Đệ tử 6 túi
 
stupid11's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TP.Hồ Chí Minh
Bài gửi: 133
:
Send a message via Yahoo to stupid11
cái này bạn chỉ việc trong hàm ngắt nhận bạn đưa data vào 1 mảng.Sau đó bạn lấy từng byte trong mảng đem tham chiếu vào bảng mã Font =>Quét hiển thị lên led ma trận

Trong hàm ngắt bạn viết như sau:
Code:
#int_RDA
void ngat()
{
data=getc()
if(data='#')
{
index=0;
}
else
{
mangdata[index]=data;
index++;
}
}

thay đổi nội dung bởi: stupid11, 15-05-2011 lúc 12:25 PM.
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 10:36 PM   #5
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
vậy bạn stupid xử lý chuỗi pic hiển thị lên như thế nào để lấy từng ký tự ra rồi xuất lên led matrix
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 10:41 PM   #6
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
mong các bạn đóng góp ý kiến giúp mình làm đồ án tốt nghiệp
nếu làm xong thì mình sẽ post len toàn bộ cho bạn nào chưa làm hay muốn nghiên cứu về led matran
mong các bác pro nào đã từng làm chỉ giáo giúp mình.........thanks


..............**********Học thầy không tày học bạn*********...............
..............******ở nhà nhờ ba mẹ,ra đường nhờ bạn bè******..............
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 11:47 AM   #7
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi friend_1990 View Post
mong các bạn đóng góp ý kiến giúp mình làm đồ án tốt nghiệp
nếu làm xong thì mình sẽ post len toàn bộ cho bạn nào chưa làm hay muốn nghiên cứu về led matran
mong các bác pro nào đã từng làm chỉ giáo giúp mình.........thanks


..............**********Học thầy không tày học bạn*********...............
..............******ở nhà nhờ ba mẹ,ra đường nhờ bạn bè******..............
một gợi ý cho bạn:
vd bạn nhận được một chuỗi là ic#
bạn lưu nó vào vùng luu_chuỗi[]
đọc luu_chuỗi[] so sánh nếu không phải là kí tự #
so sánh xem nó là kí tự gì rồi lấy font kí tự đó lưu vào vùng nhớ :hien_thị[]
lúc này chỉ cần lấy data từ vùng nhớ:hien_thị[] đưa ra matrix là xong.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 10:43 AM   #8
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
sao không ai giúp thế nhỉ?
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 04:46 PM   #9
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
mình đã nghĩ tới phương pháp đó nhưng viết mãi vẫn không lấy ký tự ra được
bạn có thể post 1 đoạn chương trình làm vd được không

mong bạn giúp mình nha!!!!!!!!!!!

...........********Những điều ta biết là 1 hạt cát*********..............
...........******những điều ta chưa biết là cả 1 sa mạc*****.............
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 04:58 PM   #10
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi friend_1990 View Post
mình đã nghĩ tới phương pháp đó nhưng viết mãi vẫn không lấy ký tự ra được
bạn có thể post 1 đoạn chương trình làm vd được không

mong bạn giúp mình nha!!!!!!!!!!!

...........********Những điều ta biết là 1 hạt cát*********..............
...........******những điều ta chưa biết là cả 1 sa mạc*****.............
bạn gởi file mô phỏng lên đây.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 06:09 PM   #11
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
mình gửi cả file mo phỏng và code lên mình chỉ mới hiển thị được ký tự mặc định thôi chứ chưa lấy dc ký tự bất ký bạn xem và chỉ giúp mình nha

cám ơn tdm nha!!!!!!!!!!!!!!!
File Kèm Theo
File Type: rar file mo phong va code.rar (20.1 KB, 223 lần tải)
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 06:12 PM   #12
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
nếu ai làm được thì post lên diễn đàn mọi người cùng tham khảo và cùng làm nha
cám ơn mọi người đã xem qua!!!!!!!!!!!!!!!!!!!!!!
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2011, 10:16 PM   #13
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
sao ko thấy ai trả lời dùm hết vậy ta
a admin giúp dùm em đi!!!!!!!!!!!!!
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 10:53 AM   #14
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi friend_1990 View Post
sao ko thấy ai trả lời dùm hết vậy ta
a admin giúp dùm em đi!!!!!!!!!!!!!
một đọan code cho bạn ,bạn tìm hiểu thêm rồi phát triển thêm nhé.
hi vọng nó có ích cho bạn.
Code:
//lay mang du lieu so sanh voi font luu font vao vung nho hien thi
//mo phong proteus 7.6 ps2 OK
#include <16f877a.h>
#fuses nowdt,noprotect,nolvp,hs,put
#use delay(clock=20000000)
#use fast_io(b)
#byte portb=0x06
#bit b0=portb.0
#bit b1=portb.1
#bit b2=portb.2
#bit b3=portb.3
#bit b4=portb.4
#bit b5=portb.5
void lay_font(char * textptr);
unsigned char a,bi,temp,chieu_dai=0;
unsigned char hien_thi[64];
char du_lieu[] = "tdm_16f877a#";//
const BYTE TEXT[51][5] ={0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
                         0x00, 0x00, 0x5F, 0x00, 0x00, // !
                         0x00, 0x03, 0x00, 0x03, 0x00, // "
                         0x14, 0x3E, 0x14, 0x3E, 0x14, // #
                         0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
                         0x43, 0x33, 0x08, 0x66, 0x61, // %
                         0x36, 0x49, 0x55, 0x22, 0x50, // &
                         0x00, 0x05, 0x03, 0x00, 0x00, // '
                         0x00, 0x1C, 0x22, 0x41, 0x00, // (
                         0x00, 0x41, 0x22, 0x1C, 0x00, // )
                         0x14, 0x08, 0x3E, 0x08, 0x14, // *
                         0x08, 0x08, 0x3E, 0x08, 0x08, // +
                         0x00, 0x50, 0x30, 0x00, 0x00, // ,
                         0x08, 0x08, 0x08, 0x08, 0x08, // -
                         0x00, 0x60, 0x60, 0x00, 0x00, // .
                         0x20, 0x10, 0x08, 0x04, 0x02, // /
                         0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
                         0x04, 0x02, 0x7F, 0x00, 0x00, // 1
                         0x42, 0x61, 0x51, 0x49, 0x46, // 2
                         0x22, 0x41, 0x49, 0x49, 0x36, // 3
                         0x18, 0x14, 0x12, 0x7F, 0x10, // 4
                         0x27, 0x45, 0x45, 0x45, 0x39, // 5
                         0x3E, 0x49, 0x49, 0x49, 0x32, // 6
                         0x01, 0x01, 0x71, 0x09, 0x07, // 7
                         0x36, 0x49, 0x49, 0x49, 0x36, // 8
                         0x26, 0x49, 0x49, 0x49, 0x3E, // 9
                         0x00, 0x36, 0x36, 0x00, 0x00, // :
                         0x00, 0x56, 0x36, 0x00, 0x00, // ;
                         0x08, 0x14, 0x22, 0x41, 0x00, // <
                         0x14, 0x14, 0x14, 0x14, 0x14, // =
                         0x00, 0x41, 0x22, 0x14, 0x08, // >
                         0x02, 0x01, 0x51, 0x09, 0x06, // ?
                         0x3E, 0x41, 0x59, 0x55, 0x5E, // @
                         0x7E, 0x09, 0x09, 0x09, 0x7E, // A
                         0x7F, 0x49, 0x49, 0x49, 0x36, // B
                         0x3E, 0x41, 0x41, 0x41, 0x22, // C
                         0x7F, 0x41, 0x41, 0x41, 0x3E, // D
                         0x7F, 0x49, 0x49, 0x49, 0x41, // E
                         0x7F, 0x09, 0x09, 0x09, 0x01, // F
                         0x3E, 0x41, 0x41, 0x49, 0x3A, // G
                         0x7F, 0x08, 0x08, 0x08, 0x7F, // H
                         0x00, 0x41, 0x7F, 0x41, 0x00, // I
                         0x30, 0x40, 0x40, 0x40, 0x3F, // J
                         0x7F, 0x08, 0x14, 0x22, 0x41, // K
                         0x7F, 0x40, 0x40, 0x40, 0x40, // L
                         0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
                         0x7F, 0x02, 0x04, 0x08, 0x7F, // N
                         0x3E, 0x41, 0x41, 0x41, 0x3E, // O
                         0x7F, 0x09, 0x09, 0x09, 0x06, // P
                         0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
                         0x7F, 0x09, 0x09, 0x09, 0x76};// R

const BYTE TEXT2[44][5]={0x26, 0x49, 0x49, 0x49, 0x32, // S
                         0x01, 0x01, 0x7F, 0x01, 0x01, // T
                         0x3F, 0x40, 0x40, 0x40, 0x3F, // U
                         0x1F, 0x20, 0x40, 0x20, 0x1F, // V
                         0x7F, 0x20, 0x10, 0x20, 0x7F, // W
                         0x41, 0x22, 0x1C, 0x22, 0x41, // X
                         0x07, 0x08, 0x70, 0x08, 0x07, // Y
                         0x61, 0x51, 0x49, 0x45, 0x43, // Z
                         0x00, 0x7F, 0x41, 0x00, 0x00, // [
                         0x02, 0x04, 0x08, 0x10, 0x20, // \
                         0x00, 0x00, 0x41, 0x7F, 0x00, // ]
                         0x04, 0x02, 0x01, 0x02, 0x04, // ^
                         0x40, 0x40, 0x40, 0x40, 0x40, // _
                         0x00, 0x01, 0x02, 0x04, 0x00, // `
                         0x20, 0x54, 0x54, 0x54, 0x78, // a
                         0x7F, 0x44, 0x44, 0x44, 0x38, // b
                         0x38, 0x44, 0x44, 0x44, 0x44, // c
                         0x38, 0x44, 0x44, 0x44, 0x7F, // d
                         0x38, 0x54, 0x54, 0x54, 0x18, // e
                         0x04, 0x04, 0x7E, 0x05, 0x05, // f
                         0x08, 0x54, 0x54, 0x54, 0x3C, // g
                         0x7F, 0x08, 0x04, 0x04, 0x78, // h
                         0x00, 0x44, 0x7D, 0x40, 0x00, // i
                         0x20, 0x40, 0x44, 0x3D, 0x00, // j
                         0x7F, 0x10, 0x28, 0x44, 0x00, // k
                         0x00, 0x41, 0x7F, 0x40, 0x00, // l
                         0x7C, 0x04, 0x78, 0x04, 0x78, // m
                         0x7C, 0x08, 0x04, 0x04, 0x78, // n
                         0x38, 0x44, 0x44, 0x44, 0x38, // o
                         0x7C, 0x14, 0x14, 0x14, 0x08, // p
                         0x08, 0x14, 0x14, 0x14, 0x7C, // q
                         0x00, 0x7C, 0x08, 0x04, 0x04, // r
                         0x48, 0x54, 0x54, 0x54, 0x20, // s
                         0x04, 0x04, 0x3F, 0x44, 0x44, // t
                         0x3C, 0x40, 0x40, 0x20, 0x7C, // u
                         0x1C, 0x20, 0x40, 0x20, 0x1C, // v
                         0x3C, 0x40, 0x30, 0x40, 0x3C, // w
                         0x44, 0x28, 0x10, 0x28, 0x44, // x
                         0x0C, 0x50, 0x50, 0x50, 0x3C, // y
                         0x44, 0x64, 0x54, 0x4C, 0x44, // z
                         0x00, 0x08, 0x36, 0x41, 0x41, // {
                         0x00, 0x00, 0x7F, 0x00, 0x00, // |
                         0x41, 0x41, 0x36, 0x08, 0x00, // }
                         0x02, 0x01, 0x02, 0x04, 0x02};// ~
   

int8 i,x=0,y,z,m,t;
int8 n;
void dich(void);
void xuat(unsigned char bi);
void main()
{ 
   set_tris_b(0b00000000);
   set_tris_d(0b00000000);
 lay_font(du_lieu);      // Write character set to matrix
 while(1) 
{
for(t=0;t<=100;t++)
{
b1=1;
b0=1;
b2=1;
b0=0;
b2=0;
x=0;
for(m=0;m<=63;m++)
{
n=hien_thi[m];
n=~n;
xuat(n);
delay_us(1000);
dich();
}
}
}
}

void dich()
{
b1=0;
b0=1;
b0=0;
b2=1;
b2=0;
}
void xuat(unsigned char temp)
{
#bit flag_bit = temp.7
b4=0;
for(i=0;i<=7;i++)
{
if(flag_bit)
{b4=1;}
else
{b4=0;}
b3=1;
b3=0;
temp<<=1;
}
b5=1;
b5=0;
}
void lay_font(char * textptr)
{
   int i, j;//
   BYTE pixelData[5];                     // Stores character data
   
   for(i=0; textptr[i] != '\0'; ++i ) // Loop through the passed string
   { 
      if(textptr[i] == '#')
      break;
       if(textptr[i] < 'S') // Checks if the letter is in the first text array
         memcpy(pixelData, TEXT[textptr[i]-' '], 5);
      else if(textptr[i] <= '~') // Check if the letter is in the second array
         memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);
      else
         memcpy(pixelData, TEXT[0], 5);   // Default to space
    for(j=0;j<=4;j++)
    {
     hien_thi[chieu_dai]=(pixelData[j]);
     chieu_dai++;
    }
     
       }
      }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.

thay đổi nội dung bởi: tdm, 12-05-2011 lúc 11:08 AM.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2011, 11:47 AM   #15
friend_1990
Đệ tử 3 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 56
:
void lay_font(char * textptr);????????? dòng này khai báo trong ngặoc là gì vậy bạn


for(m=0;m<=63;m++)
{
n=hien_thi[m];
n=~n;??????????????????? toán tử ~ là gì nhỉ?
xuat(n);
delay_us(1000);

}




giải thích tiếng việt dùm mình void lấy font dc ko bạn những lệnh dưới mình chưa sử dung bao giờ nên đọc không hiểu cho lắm


void lay_font(char * textptr)
{
int i, j;//
BYTE pixelData[5]; // Stores character data

for(i=0; textptr[i] != '\0'; ++i ) // Loop through the passed string
{
if(textptr[i] == '#')
break;
if(textptr[i] < 'S') // Checks if the letter is in the first text array
memcpy(pixelData, TEXT[textptr[i]-' '], 5);
else if(textptr[i] <= '~') // Check if the letter is in the second array
memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);
else
memcpy(pixelData, TEXT[0], 5); // Default to space
for(j=0;j<=4;j++)
{
hien_thi[chieu_dai]=(pixelData[j]);
chieu_dai++;
}

}
}

[/code][/QUOTE]
friend_1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 08:42 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