PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC - Thiết kế và Ứng dụng (http://www.picvietnam.com/forum/forumdisplay.php?f=23)
-   -   pic 16f877a và hiển thị led matran (http://www.picvietnam.com/forum/showthread.php?t=9261)

friend_1990 12-05-2011 11:47 AM

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 12-05-2011 03:59 PM

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] == '#')//textptr khai bao vi tri con tro
break;
if(textptr[i] < 'S') //ky tu nam o mang text
memcpy(pixelData, TEXT[textptr[i]-' '], 5);//copy 5 byte gia tri text[textptr[i]-'' vao pixeldata
else if(textptr[i] <= '~') // ky tu nam o mang text2
memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);//copy 5 byte gia tri text2[textptr[i]-'s' vao pixeldata
else
memcpy(pixelData, TEXT[0], 5); // khoang trang
for(j=0;j<=4;j++)
{
hien_thi[chieu_dai]=(pixelData[j]);//hien thi 5 byte da copy
chieu_dai++;




mình giải thích vậy hợp lý không tdm
còn 1 dòng mình không hiểu là
BYTE pixelData[5]; // Stores character data
nghĩa là gì vậy tdm

với khai báo char * textptr nghĩa là gì vậy

tdm 12-05-2011 09:41 PM

Trích:

Nguyên văn bởi friend_1990 (Post 44997)
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] == '#')//textptr khai bao vi tri con tro
break;
if(textptr[i] < 'S') //ky tu nam o mang text
memcpy(pixelData, TEXT[textptr[i]-' '], 5);//copy 5 byte gia tri text[textptr[i]-'' vao pixeldata
else if(textptr[i] <= '~') // ky tu nam o mang text2
memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);//copy 5 byte gia tri text2[textptr[i]-'s' vao pixeldata
else
memcpy(pixelData, TEXT[0], 5); // khoang trang
for(j=0;j<=4;j++)
{
hien_thi[chieu_dai]=(pixelData[j]);//hien thi 5 byte da copy
chieu_dai++;




mình giải thích vậy hợp lý không tdm
còn 1 dòng mình không hiểu là
BYTE pixelData[5]; // Stores character data
nghĩa là gì vậy tdm

với khai báo char * textptr nghĩa là gì vậy

[code]
BYTE pixelData[5]; // Stores character data
khai báo mảng chứa font lấy được
hien_thi[chieu_dai]=(pixelData[j]);//
lưumảng pixelData vào mảng hien_thi
char * textptr khai báo dang con trỏ
n=~n;??????????????????? toán tử ~ là gì nhỉ? [đảo byte]

friend_1990 12-05-2011 10:30 PM

vậy mình muốn cho dịch chữ chạy mình dùng ngắt rda phải không bạn?
for(i=0; textptr[i] != '\0'; ++i ) lệnh này nghĩa là gì vậy tdm tetprt[i]!='\0' là gì mình đọc không hiểu?

mình muốn chử chạy cuộn tròn vậy viết như thế nào bạn gợi ý dùm mình nha

tm có yahoo ko co cho mình nha?tiện việc trao đổi
phongvu_1232002 nick của mình mong được sự chỉ giáo của bạn

thanks bác nhiều!!!!!!!!!!!!

friend_1990 13-05-2011 04:15 PM

1 Attachment(s)
Tdm giúp mình với mình đang làm nhiệt độ sao hiển thị lên được rồi nhưng khống chế nó hiển thị laị không được
vd:nó hiển thị 78 thì nó phải hiển thị mãi 78 cho đến khi thay đổi giá trị lm 35 thì mới hiển thị số khác đằng này số 78 cứ hiển thị ra thêm 3 số 78 phía sau nữa mình khống chế nó mãi mà vẫn không được mong bạn giúp mình nha
ak mình muốn cho số 78 đó cuộn tròn trên 8 led matrix thì làm sao nhỉ mong được sự giúp đỡ từ tdm nha
cám ơn tdm nhiều!!!!!!!!!!!!!!!!!!!!!!!!

dưới là code mình đã hiển thị nhưng không khống chế được các bác down về xem dùm nha!!!!!!!!!!!!
thanks mọi người

do đề tài gần phải nộp cho thầy mong được sự giúp đõ từ mọi người!!!!!!!!!!!!!!!!!!

friend_1990 13-05-2011 08:31 PM

giúp mình với tdm ơi

tdm 13-05-2011 09:50 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45036)
giúp mình với tdm ơi

xóa mảng hiển thị trước khi cập nhập nhiệt độ .

friend_1990 13-05-2011 10:43 PM

anh tdm có thể nói cụ thể hơn được không xóa hiển thị như thế nào ạk
em làm mãi nó vẫn cứ hiển thị như vậy àk
anh cũng đã down về chắc cungthay61ay61 được chỗ sai của em rồi mong a chỉ ngay vị trí đó dc không anh
cám ơn anh nhiều!!!!!!!!!!!!!
xong cái này em còn phải cho nó dịch và hiển thị ngày tháng năm giờ phút giây nữa em mong anh sẽ chỉ giúp em biết chỗ cần phải sữa là ở vị trí nào đi anh!!!!!!!!!!!!!!!

àk anh tên gì vậy?anh co yahoo cho em với
mong dc sự trả lời sớm từ anh!!!!!!!!!!!!!!
thanks anh

friend_1990 13-05-2011 11:57 PM

Trích:

Nguyên văn bởi tdm (Post 45041)
xóa mảng hiển thị trước khi cập nhập nhiệt độ .



em biết anh rất bận nhưng em mong sẽ chỉ giúp em làm luận văn tốt nghiệp này em lang thang trên mạng hỏi ở nhiều diễn đàn nhưng có mỗi a giúp em,em mong anh sẽ tiếp tục chỉ giúp em hoàn thành khóa luận văn cuối cùng này để em có thể ra trường và tìm việc làm
anh hướng dẫn em từ đầu giờ anh mà bỏ em cũng như đưa em tới giữa dòng sông rồi đạp em xuống em không biết bơi chỉ có chết đuối thôi anh ơi!!!!!!!!!!!
em gần phải nộp rồi do kiến thức làm bài em còn yếu kém nên không hiểu hết ý của anh chỉ giáo cho em em mong anh đừng chê cười khi em hỏi những câu hỏi ngớ ngấn
e cũng có thầy hướng dẫn nhưng thầy chỉ em khó hiểu quá với thầy lúc nào bận rộn nên thời gian chỉ em không nhiều giờ chỉ có anh là giúp được em thôi àk
mỗi tối a có thể dành ít thời gian chỉ em những điều em chưa thông được không anh
a co yahoo ko cho em đi em trao đổi cho tiện em sẽ không làm phiên anh nhiều đâu
mong anh chỉ giúp ạk!!!!!!!!!!!!!!!!1
chân thành cám ơn anh!!!!!!!!!!!!!!!!!!!
yahoo em là phongvu_1232002

tdm 14-05-2011 09:42 AM

Trích:

Nguyên văn bởi friend_1990 (Post 45051)
em biết anh rất bận nhưng em mong sẽ chỉ giúp em làm luận văn tốt nghiệp này em lang thang trên mạng hỏi ở nhiều diễn đàn nhưng có mỗi a giúp em,em mong anh sẽ tiếp tục chỉ giúp em hoàn thành khóa luận văn cuối cùng này để em có thể ra trường và tìm việc làm
anh hướng dẫn em từ đầu giờ anh mà bỏ em cũng như đưa em tới giữa dòng sông rồi đạp em xuống em không biết bơi chỉ có chết đuối thôi anh ơi!!!!!!!!!!!
em gần phải nộp rồi do kiến thức làm bài em còn yếu kém nên không hiểu hết ý của anh chỉ giáo cho em em mong anh đừng chê cười khi em hỏi những câu hỏi ngớ ngấn
e cũng có thầy hướng dẫn nhưng thầy chỉ em khó hiểu quá với thầy lúc nào bận rộn nên thời gian chỉ em không nhiều giờ chỉ có anh là giúp được em thôi àk
mỗi tối a có thể dành ít thời gian chỉ em những điều em chưa thông được không anh
a co yahoo ko cho em đi em trao đổi cho tiện em sẽ không làm phiên anh nhiều đâu
mong anh chỉ giúp ạk!!!!!!!!!!!!!!!!1
chân thành cám ơn anh!!!!!!!!!!!!!!!!!!!
yahoo em là phongvu_1232002

của em đây:
Code:

#include <16f877a.h>
#device 16f877*=16 ADC=10
#include <stdlib.h>
#include <string.h>
#fuses nowdt,noprotect,nolvp,hs,put
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#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 doc_adc();
void lay_font(char * textptr);
unsigned char bi,temp,chieu_dai=0;
unsigned char hien_thi[64];
char string[5];
char string1[5];
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,m,t;
int8 n;
void dich(void);
void xuat(unsigned char bi);
void xoa_hien_thi(void);//viết thêm hàm này
void main()
{int x=0;
int dv,chuc;
enable_interrupts(int_rda);
enable_interrupts(global);
  set_tris_b(0b00000000);
  set_tris_d(0b00000000);
  set_tris_a(0b000001);
 doc_adc(); 
 
 while(1)
{

doc_adc();
x=read_adc();
x=x/2.049;
 
 
  dv=x%10;
  chuc=x/10;
 
itoa(dv,10,string);//gan dv vao string
itoa(chuc,10,string1);//gan chuc vao string1
strcat(string1,string);//ket hop string1 va string hien thi la string1
xoa_hien_thi();//xóa vùng nhớ hien_thi trước khi cập nhập dữ liệu mới.
lay_font(string1);      // Write character set to matrix
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;

for(m=0;m<=63;m++)
{
n=hien_thi[m];

n=~n;
xuat(n);
delay_us(1000);

dich();
}

}
}
void doc_adc()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(1000);
}

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==1)
{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] == '#')//textptr khai bao vi tri con tro
      break;
      if(textptr[i] < 'S') //ky tu nam o mang text
        memcpy(pixelData, TEXT[textptr[i]-' '], 5);//copy 5 byte gia tri text[textptr[i]-'' vao pixeldata
      else if(textptr[i] <= '~') // ky tu nam o mang text2
        memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);//copy 5 byte gia tri text2[textptr[i]-'s' vao pixeldata
      else
        memcpy(pixelData, TEXT[0], 5);  // khoang trang
    for(j=0;j<=4;j++)
    {
    hien_thi[chieu_dai]=(pixelData[j]);//hien thi tung ky tu
    chieu_dai++;
   
    }
   
      }
      }
 void xoa_hien_thi(void)
 {
 chieu_dai=0;
 for(m=0;m<=63;m++)
  {
  hien_thi[m]=0x00;//
  }
 }

em cứ trao đổi với anh và mọi người trên diễn đàn. biết đâu còn có ích cho các bạn khác .

friend_1990 14-05-2011 10:44 AM

cám ơn anh tdm nhiều lắm ak!!!!!!!!!!!!!!
nều giờ em làm 16 con led thành 2 hàng trên 8 con dưới 8 con cho chữ chạy ở giữa 8 con trên và 8 con dưới vậy font e tạo sẽ là font 16 phải không anh?

anh có font 16 con chạy 2 hàng không cho em với thực tức đồ án em làm là 16con led chia làm 2 hàng cho chay chữ giữa 2 hàng đó vậy có khác lắm so với chạy 1 hàng led 8 con ko anh..............

em nghi xuất dữ liệu sẽ 16 lần còn cột thì mình quét cùng lúc 2 hàng mỗi hàng 64 cột hay là mình quét trực tiếp 128 cột lun anh.........

hihi cho em hỏi cái này nữa nghe e học lập trình chưa nhiều nên lệnh này sao em đọc mãi không hiểu anh giải thik dùm em
for(i=0; textptr[i] != '\0'; ++i ) cái tetptr[i] !='\0' là gì anh nhỉ?
void xoa_hien_thi(void) cái chữ (void) nằm trong ngoac có tác dụng gì anh nếu mình không dùng dc ko anh?
const BYTE TEXT2[44][5] khai báo mảng này là 44 hàng 5 cột vậy đây là mảng 1 chiều hay 2 chiều vậy anh?và dữ liệu trong mảng anh tạo là tích cực mức thấp hay cao vậy anh?nếu thấp sao mình lại dùng thêm toán tử n=~n làm gì ạk?(n=~n là đảo toàn bộ byte vd 0011 sẽ đảo lại là 1100 em hiểu vậy không biết đúng không anh?


cám ơn anh đã xem qua và mong dc sự trả lời từ anh và các bạn!!!!!!!!!

tdm 14-05-2011 11:42 AM

Trích:

Nguyên văn bởi friend_1990 (Post 45062)
cám ơn anh tdm nhiều lắm ak!!!!!!!!!!!!!!
nều giờ em làm 16 con led thành 2 hàng trên 8 con dưới 8 con cho chữ chạy ở giữa 8 con trên và 8 con dưới vậy font e tạo sẽ là font 16 phải không anh?

anh có font 16 con chạy 2 hàng không cho em với thực tức đồ án em làm là 16con led chia làm 2 hàng cho chay chữ giữa 2 hàng đó vậy có khác lắm so với chạy 1 hàng led 8 con ko anh..............

em nghi xuất dữ liệu sẽ 16 lần còn cột thì mình quét cùng lúc 2 hàng mỗi hàng 64 cột hay là mình quét trực tiếp 128 cột lun anh.........

hihi cho em hỏi cái này nữa nghe e học lập trình chưa nhiều nên lệnh này sao em đọc mãi không hiểu anh giải thik dùm em
for(i=0; textptr[i] != '\0'; ++i ) cái tetptr[i] !='\0' là gì anh nhỉ?
void xoa_hien_thi(void) cái chữ (void) nằm trong ngoac có tác dụng gì anh nếu mình không dùng dc ko anh?
const BYTE TEXT2[44][5] khai báo mảng này là 44 hàng 5 cột vậy đây là mảng 1 chiều hay 2 chiều vậy anh?và dữ liệu trong mảng anh tạo là tích cực mức thấp hay cao vậy anh?nếu thấp sao mình lại dùng thêm toán tử n=~n làm gì ạk?(n=~n là đảo toàn bộ byte vd 0011 sẽ đảo lại là 1100 em hiểu vậy không biết đúng không anh?


cám ơn anh đã xem qua và mong dc sự trả lời từ anh và các bạn!!!!!!!!!

font 16 em phải tự viết thôi(tìm RTB4.0 về nghiên cứu)
bây giờ matrix người ta quét hàng chứ không quét cột
void xoa_hien_thi() viết như này cũng được
const BYTE TEXT2[44][5] //mảng 2 chiều
font đó tích cực mức cao
matrix của em tích cực mức thấp lên phải đảo lại .

friend_1990 14-05-2011 12:02 PM

vậy em nên quét theo hàng hả anh?
chương trình 8 con led anh đã chỉnh sửa cho em là quét cot phải không anh?
dữ liệu mình xuất ra hàng sao đó mình đưa dữ liệu ra cột
từ trước tới giờ em toan quét cột dữ liệu ra hàng không biết cột quét phức tạp nhiều hơn không nữa :(

ak anh co em hỏi về ngắt nhận từ pc nếu từ pc truyền chuỗi xuống pic pic sẽ lưu vào mảng phụ sao khi nhận ký tự ký tự kết thúc # chẳng hạn thì pic bắt đầu lấy chuỗi và bắt đầu xử lý và đẩy chuỗi ra led matrix vậy khi nhận dữ liệu xong thì mình xuất như thế nào tại vì code lay_font() là lấy chuỗi ký tự

nhưng chuỗi pic nhận dc thì mình phải tra từng ký tự rồi mới lấy ra xuất ra led matrix
vd:
#int_rda
void ngat()
{
mang[dem]=getc();
if(mang[dem]=='#')
{
flag=1;//co ngat
dem=0;
}

else
dem++;
}

while(flag==1)
{
trong đây mình sẽ xử lý font như thế nào cho hợp lý vậy anh và cách lấy ký tự trong chuỗi nhận dc như thế nào anh(e đã nghĩ 3 ngày nay rồi vẫn ko tìm dc hướng giải quyết
}

chương trình trên pc là em viết bằng vb 6 em cũng đã viết xong rồi truyền cũng dc rồi nhưng khi pic nhận dc chuỗi ký tự em lại không biết cách lấy ra đưa lên led matrix

mong anh chỉ em dum chỗ này nữa ạk?

cám ơn anh nhiều!!!!!!!!!!!!!!!!!!!!!!

tdm 14-05-2011 12:17 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45071)
vậy em nên quét theo hàng hả anh?
chương trình 8 con led anh đã chỉnh sửa cho em là quét cot phải không anh?
dữ liệu mình xuất ra hàng sao đó mình đưa dữ liệu ra cột
từ trước tới giờ em toan quét cột dữ liệu ra hàng không biết cột quét phức tạp nhiều hơn không nữa :(

ak anh co em hỏi về ngắt nhận từ pc nếu từ pc truyền chuỗi xuống pic pic sẽ lưu vào mảng phụ sao khi nhận ký tự ký tự kết thúc # chẳng hạn thì pic bắt đầu lấy chuỗi và bắt đầu xử lý và đẩy chuỗi ra led matrix vậy khi nhận dữ liệu xong thì mình xuất như thế nào tại vì code lay_font() là lấy chuỗi ký tự

nhưng chuỗi pic nhận dc thì mình phải tra từng ký tự rồi mới lấy ra xuất ra led matrix
vd:
#int_rda
void ngat()
{
mang[dem]=getc();
if(mang[dem]=='#')
{
flag=1;//co ngat
dem=0;
}

else
dem++;
}

while(flag==1)
{
trong đây mình sẽ xử lý font như thế nào cho hợp lý vậy anh và cách lấy ký tự trong chuỗi nhận dc như thế nào anh(e đã nghĩ 3 ngày nay rồi vẫn ko tìm dc hướng giải quyết
}

chương trình trên pc là em viết bằng vb 6 em cũng đã viết xong rồi truyền cũng dc rồi nhưng khi pic nhận dc chuỗi ký tự em lại không biết cách lấy ra đưa lên led matrix

mong anh chỉ em dum chỗ này nữa ạk?

cám ơn anh nhiều!!!!!!!!!!!!!!!!!!!!!!

while(flag==1)
{
lay_font(mang);//
trong đây mình sẽ xử lý font như thế nào cho hợp lý vậy anh và cách lấy ký tự trong chuỗi nhận dc như thế nào anh(e đã nghĩ 3 ngày nay rồi vẫn ko tìm dc hướng giải quyết
}

friend_1990 14-05-2011 02:02 PM

Trích:

Nguyên văn bởi tdm (Post 45072)
while(flag==1)
{
lay_font(mang);//
trong đây mình sẽ xử lý font như thế nào cho hợp lý vậy anh và cách lấy ký tự trong chuỗi nhận dc như thế nào anh(e đã nghĩ 3 ngày nay rồi vẫn ko tìm dc hướng giải quyết
}

sao em lấy vẫn không được vậy anh!!!!!!!!!!!!!!
anh xem e viet bi sai cho nao khong ạk?

#include <16f877a.h>
#device 16f877*=16 ADC=10
#include <stdlib.h>
#include <string.h>
#fuses nowdt,noprotect,nolvp,hs,put
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use rs232(baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#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 doc_adc();
void lay_font(char * textptr);
unsigned char bi,temp,chieu_dai=0;
unsigned char hien_thi[64];
char string[5];
char string1[5];
char string2[5];
char string3[10];
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,m,t,flag,dem;
int8 n;
char mang[];
void dich(void);
void xuat(unsigned char bi);
void xoa_hien_thi();
#INT_RDA
void ngat()
{
mang[dem]=getc();
if(mang[dem]=='#')
{
flag=1;//co ngat
dem=0;
}

else
dem++;

while(flag==1)
{
lay_font(mang);
}
}
void main()
{int x=0;
int dv,chuc,tram;
enable_interrupts(int_rda);
enable_interrupts(global);
set_tris_b(0b00000000);
set_tris_d(0b00000000);
set_tris_a(0b000001);
doc_adc();

while(1)
{

doc_adc();
x=read_adc();
x=x/2.049;

dv=x%10;
chuc=(x%100)/10;
tram=x/100;

itoa(dv,10,string);//gan dv vao string
itoa(chuc,10,string1);//gan chuc vao string1
strcat(string1,string);//ket hop string1 va string hien thi la string1
itoa(tram,10,string2);//gan tram vao string2
strcat(string2,string1);//ghepstring1 va string2 hien thi string2
strcpy(string3,"nhiet do ");
strcat(string3,string2);
xoa_hien_thi();//xóa vùng nho hien thi truoc khi cap nhat nhiet do
lay_font(string3); // Write character set to matrix

b1=1;
b0=1;

b2=1;
b0=0;
b2=0;

for(m=0;m<=63;m++)
{
n=hien_thi[m];

n=~n;
xuat(n);
delay_us(1000);

dich();
}

}
}
void doc_adc()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(1000);
}

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==1)
{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] == '#')//textptr khai bao vi tri con tro
break;
if(textptr[i] < 'S') //ky tu nam o mang text
memcpy(pixelData, TEXT[textptr[i]-' '], 5);//copy 5 byte gia tri text[textptr[i]-'' vao pixeldata
else if(textptr[i] <= '~') // ky tu nam o mang text2
memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);//copy 5 byte gia tri text2[textptr[i]-'s' vao pixeldata
else
memcpy(pixelData, TEXT[0], 5); // khoang trang
for(j=0;j<=4;j++)
{
hien_thi[chieu_dai]=(pixelData[j]);//hien thi tung ky tu
chieu_dai++;

}

}
}
void xoa_hien_thi(void)
{
chieu_dai=0;
for(m=0;m<=63;m++)
{
hien_thi[m]=0x00;//
}
}



phía dưới là code vb6 em viết đấy ạk anh xem dùmm e lun nha

Private Sub truyen_Click()
Dim data As String
data = Text1.Text
MSComm1.Output = "*"
MSComm1.Output = data
MSComm1.Output = "#"
End Sub

Private Sub exit_Click()
MsgBox "thoat"
End
End Sub

Private Sub Form_Load()
'cai dat thong so cho cong com...." COMFIG FOR COM PORT "

With MSComm1
.CommPort = 2 'cong COM 2
.Settings = "9600,N,8,1" 'Baudrate=9600,Ko KT chan le,frame 8 bit,1 bit stop
.InBufferSize = 1024 'Bo dem 1024 byte thi day
.InputLen = 0 'Doc toan bo gia tri bo dem
.RThreshold = 1 'Cho phep ngat khi su kien Receiver o MSCOMM
.SThreshold = 0 'Ko cho phep ngat khi su kien Send o MMSCOMM
.OutBufferSize = 512
.InputMode = comInputModeText
.PortOpen = True 'Mo cong COM
End With
End Sub


Múi giờ GMT. Hiện tại là 08:32 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam