F
flystehu
Guest
Hullo,
Tôi cố gắng để hiển thị các ký tự tùy chỉnh trên LCD sử dụng PIC 16F877.
Trình biên dịch tôi đang sử dụng là IAR.
Khi tôi biên dịch, nó là ok.Hewever, khi thực hiện chương trình và sản xuất các hex..
Một lỗi đi ra, nói:
Làm tiêu chí ...
Liên kết ...
Lỗi [e104]: Không để phù hợp với tất cả các phân đoạn trong phạm vi chỉ định.Sự phát hiện tại OVERLAY0 phân đoạn.Không thể đặt 3 khối (s) (0x95 byte (s) tổng số) trong 0x5a byte (s) của bộ nhớ.Vấn đề xảy ra khi xử lý các lệnh theo vị trí phân đoạn "-P (DATA) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20-07F", nơi ở thời điểm của vị trí trong phạm vi bộ nhớ có sẵn là "20-79"
Tổng số lỗi: 1
Tổng số cảnh báo: 0
Bất cứ ai cũng có thể giúp tôi chỉ ra cách sửa chữa các lỗi?
là nó vì bộ nhớ trong của PIC là chạy ra?
//------------------------------------------------ -----
void load_CGRAM_1 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x40);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ -----
void load_CGRAM_2 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x60);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ ----------------
void display_CGRAM (int code1, int code2, int code3, int code4)
(
LCD_RS = 0;
lcd_write (0x80);
lcd_putch (code1);
lcd_putch (code2);
lcd_putch (0x20); / / không gian
lcd_putch (0x20); / / không gian
lcd_putch (code3);
lcd_putch (code4);
)
//------------------------------------------------ ----------------
void main ()
(
int chinese_character_matrix_1 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x01, 0x00, 0x07, 0x01, 0x01, 0x03, 0x00, 0x07,
0x18, 0x10, 0x1e, 0x08, 0x18, 0x1c, 0x10, 0x1e,
);
int chinese_character_matrix_2 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x04, 0x04, 0x10, 0x08, 0x00, 0x05, 0x09, 0x13,
0x0e, 0x0a, 0x0e, 0x0a, 0x0e, 0x1f, 0x15, 0x15,
);
int chinese_character_matrix_3 [32] =
(
0x00, 0x01, 0x04, 0x02, 0x0a, 0x0a, 0x09, 0x08,
0x00, 0x00, 0x08, 0x00, 0x02, 0x02, 0x02, 0x1e,
0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x0b, 0x11,
0x04, 0x0f, 0x0a, 0x0a, 0x0f, 0x0a, 0x0a, 0x17,
);
int chinese_character_matrix_4 [32] =
(
0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0c, 0x07,
0x0e, 0x00, 0x1f, 0x08, 0x0a, 0x0f, 0x00, 0x1f,
0x0e, 0x00, 0x1f, 0x08, 0x08, 0x0a, 0x0a, 0x0f,
0x04, 0x04, 0x1f, 0x05, 0x05, 0x05, 0x05, 0x0b,
);iniPort ();
lcd_init ();
load_CGRAM_1 (chinese_character_matrix_1);
load_CGRAM_2 (chinese_character_matrix_2);
display_CGRAM (0x04, 0x05, 0x06, 0x07);
DelayUs (40);
trong khi (1) ()
)
Tôi cố gắng để hiển thị các ký tự tùy chỉnh trên LCD sử dụng PIC 16F877.
Trình biên dịch tôi đang sử dụng là IAR.
Khi tôi biên dịch, nó là ok.Hewever, khi thực hiện chương trình và sản xuất các hex..
Một lỗi đi ra, nói:
Làm tiêu chí ...
Liên kết ...
Lỗi [e104]: Không để phù hợp với tất cả các phân đoạn trong phạm vi chỉ định.Sự phát hiện tại OVERLAY0 phân đoạn.Không thể đặt 3 khối (s) (0x95 byte (s) tổng số) trong 0x5a byte (s) của bộ nhớ.Vấn đề xảy ra khi xử lý các lệnh theo vị trí phân đoạn "-P (DATA) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20-07F", nơi ở thời điểm của vị trí trong phạm vi bộ nhớ có sẵn là "20-79"
Tổng số lỗi: 1
Tổng số cảnh báo: 0
Bất cứ ai cũng có thể giúp tôi chỉ ra cách sửa chữa các lỗi?
là nó vì bộ nhớ trong của PIC là chạy ra?
//------------------------------------------------ -----
void load_CGRAM_1 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x40);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ -----
void load_CGRAM_2 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x60);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ ----------------
void display_CGRAM (int code1, int code2, int code3, int code4)
(
LCD_RS = 0;
lcd_write (0x80);
lcd_putch (code1);
lcd_putch (code2);
lcd_putch (0x20); / / không gian
lcd_putch (0x20); / / không gian
lcd_putch (code3);
lcd_putch (code4);
)
//------------------------------------------------ ----------------
void main ()
(
int chinese_character_matrix_1 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x01, 0x00, 0x07, 0x01, 0x01, 0x03, 0x00, 0x07,
0x18, 0x10, 0x1e, 0x08, 0x18, 0x1c, 0x10, 0x1e,
);
int chinese_character_matrix_2 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x04, 0x04, 0x10, 0x08, 0x00, 0x05, 0x09, 0x13,
0x0e, 0x0a, 0x0e, 0x0a, 0x0e, 0x1f, 0x15, 0x15,
);
int chinese_character_matrix_3 [32] =
(
0x00, 0x01, 0x04, 0x02, 0x0a, 0x0a, 0x09, 0x08,
0x00, 0x00, 0x08, 0x00, 0x02, 0x02, 0x02, 0x1e,
0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x0b, 0x11,
0x04, 0x0f, 0x0a, 0x0a, 0x0f, 0x0a, 0x0a, 0x17,
);
int chinese_character_matrix_4 [32] =
(
0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0c, 0x07,
0x0e, 0x00, 0x1f, 0x08, 0x0a, 0x0f, 0x00, 0x1f,
0x0e, 0x00, 0x1f, 0x08, 0x08, 0x0a, 0x0a, 0x0f,
0x04, 0x04, 0x1f, 0x05, 0x05, 0x05, 0x05, 0x0b,
);iniPort ();
lcd_init ();
load_CGRAM_1 (chinese_character_matrix_1);
load_CGRAM_2 (chinese_character_matrix_2);
display_CGRAM (0x04, 0x05, 0x06, 0x07);
DelayUs (40);
trong khi (1) ()
)