![]() |
|
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 |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 6
: |
Hỏi về cái error trong LCD ?
Chương trình viết chữ XIN CHAO đơn giản như thế này
Code:
#include <16f877A.h> #fuses HS, NOLVP, NOWDT, NOPROTECT #use delay (clock=4000000) //Use built-in function: delay_ms() & delay_us() #include "LCD_LIB_4BIT.c" VOID MAIN() { LCD_INIT(); LCD_PUTCHAR('X'); DELAY_MS(1000); LCD_PUTCHAR('I'); DELAY_MS(1000); LCD_PUTCHAR('N'); DELAY_MS(1000); LCD_PUTCHAR(' '); DELAY_MS(1000); LCD_PUTCHAR('C'); DELAY_MS(1000); LCD_PUTCHAR('H'); DELAY_MS(1000); LCD_PUTCHAR('A'); DELAY_MS(1000); LCD_PUTCHAR('O'); } Còn đây là file LCD_LIB_4BIT.c #include <stddef.h> #define LCD_RS PIN_B2 #define LCD_EN PIN_B3 #define LCD_D4 PIN_B4 #define LCD_D5 PIN_B5 #define LCD_D6 PIN_B6 #define LCD_D7 PIN_B7 #define Line_1 0x80 #define Line_2 0xC0 #define Clear_Scr 0x01 #separate void LCD_Init ();// ham khoi tao LCD #separate void LCD_SetPosition ( unsigned int cX );//Thiet lap vi tri con tro #separate void LCD_PutChar ( unsigned int cX );// Ham viet1kitu/1chuoi len LCD #separate void LCD_PutCmd ( unsigned int cX) ;// Ham gui lenh len LCD #separate void LCD_PulseEnable ( void );// Xung kich hoat #separate void LCD_SetData ( unsigned int cX );// Dat du lieu len chan Data //khoi tao LCD********************************************** #separate void LCD_Init () { LCD_SetData ( 0x00 ); delay_ms(20); /*Cho cho lcd khoi tao */ output_low ( LCD_RS );// che do gui lenh LCD_SetData ( 0x03 ); /* khoi tao che do 4 bit */ LCD_PulseEnable(); LCD_PulseEnable(); LCD_PulseEnable(); LCD_SetData ( 0x02 ); /* tao giao dien 4 bit */ LCD_PulseEnable(); /* send dual nibbles hereafter, MSN first */ LCD_PutCmd ( 0x2C ); /* function set (all lines, 5x7 characters) */ LCD_PutCmd ( 0x0C ); /* display ON, cursor off, no blink */ LCD_PutCmd ( 0x06 ); /* entry mode set, increment & scroll left */ LCD_PutCmd ( 0x01 ); /* clear display */ // Init for BarGraph } #separate void LCD_SetPosition ( unsigned int cX ) { /* this subroutine works specifically for 4-bit Port A */ LCD_SetData ( swap ( cX ) | 0x08 ); LCD_PulseEnable(); LCD_SetData ( swap ( cX ) ); LCD_PulseEnable(); } #separate void LCD_PutChar ( unsigned int cX ) { /* this subroutine works specifically for 4-bit Port A */ output_high ( LCD_RS ); LCD_PutCmd( cX ); output_low ( LCD_RS ); } #separate void LCD_PutCmd ( unsigned int cX ) { LCD_SetData ( swap ( cX ) ); /* send high nibble */ LCD_PulseEnable(); LCD_SetData ( swap ( cX ) ); /* send low nibble */ LCD_PulseEnable(); } #separate void LCD_PulseEnable ( void ) { output_high ( LCD_EN ); delay_us ( 3 ); // was 10 output_low ( LCD_EN ); delay_ms ( 3 ); // was 5 } #separate void LCD_SetData ( unsigned int CX ) { output_bit ( LCD_D4, CX & 0x01 ); output_bit ( LCD_D5, CX & 0x02 ); output_bit ( LCD_D6, CX & 0x04 ); output_bit ( LCD_D7, CX & 0x08 ); } ***Eroor 128"LCD_LIB_4BIT.c"Line12(2,10): A#DEVICE require before this line Mong các bro giúp đỡ, em mới học Pic nên chưa thành thạo lăm thay đổi nội dung bởi: phamminhtuan, 15-08-2009 lúc 09:36 AM. Lý do: Định dạng code |
![]() |
![]() |
![]() |
#2 |
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
Bạn dịch trong MPLAB đúng không? remove file LCD_LIB_4BIT.c ra khỏi cửa sổ Project, vì nếu để file LCD_LIB_4BIT.c trong đó, MPLAB sẻ chỉ thị cho CCS dịch file LCD_LIB_4BIT.c dạng Object để liên kết với các file khác, do đó, lúc này LCD_LIB_4BIT.c cũng cần có những chỉ thị kiểu #include<16f887.h>, #use delay(....
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 6
: |
Em đã remove cái file đó nhưng mà vẫn hiện lỗi như trên là sao ạ :|
|
![]() |
![]() |
![]() |
#4 |
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
Của bạn đây, mình chỉ copy code của bạn , không sửa gì cả, dịch ok
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 6
: |
Vẫn ko đc. Eroor nó chỉ lên cái dòng này
#separate void LCD_Init ();// ham khoi tao LCD mà cụ thể là cái chữ #separate. Là sao ạ:| |
![]() |
![]() |
![]() |
#6 | |
Đệ tử 7 túi
Tham gia ngày: May 2009
Bài gửi: 242
: |
Trích:
Chúc vui |
|
![]() |
![]() |
![]() |
#7 |
Đệ tử 4 túi
Tham gia ngày: Apr 2006
Bài gửi: 71
: |
Mọi người cho mình hỏi xíu: cấp nguồn vào mà LCD sáng trưng lên vậy có chắc là con LCD còn sống không?
Chân Contrast nối Vcc, GND, hay bỏ lửng độ sáng cũng không thay đổi nữa. Mình mới làm thôi, nhờ mọi người chia sẻ kinh nghiệm với! |
![]() |
![]() |
![]() |
#8 | |
Đệ tử 7 túi
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
: |
Trích:
nên dùng 1 biến trở , nối chân giữa biến trở vào chân Contrast , 2 chân còn lại của biến trở nối Vcc và GND . chỉnh biến trở để thấy 1 hàng trên màu đen là LCd còn sống |
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 7 túi
Tham gia ngày: May 2009
Bài gửi: 242
: |
Bạn mắc như hình vẽ rùi chỉnh VR xem sao nhé
|
![]() |
![]() |
![]() |
#10 |
Đệ tử 4 túi
Tham gia ngày: Apr 2006
Bài gửi: 71
: |
Vậy chắc con LCD của mình chết rồi, vì mình chỉ cấp nguồn là nó sáng liền còn chân Vee chỉnh contrast thì chỉnh sao nó cũng không hiển thị gì hết.
@vidieukhiencdn: hai chân 15, 16 mình bỏ trống nhưng thấy sơ đồ của bạn mình cũng mắc thử và kết quả cũng vậy luôn, chắc là tiêu lun rồi. Hi! |
![]() |
![]() |
![]() |
#11 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 6
: |
|
![]() |
![]() |
![]() |
#12 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 6
: |
Quái, quái thiệt, ban đầu tải cái chương trình của bạn về thì chạy tốt. Đến khi move nó đi chỗ khác là lại xuất hiện cái lỗi lúc trước mình nói. Bất lực quá
![]() |
![]() |
![]() |
![]() |
#13 |
Đệ tử 7 túi
Tham gia ngày: May 2009
Bài gửi: 242
: |
-CT mình sửa là của bạn chứ mình thêm bớt j đâu
-Nếu vậy thì mình bó tay rùi, bạn nên sửa ngay trên code mình gửi đừng chép lung tung kẻo báo lỗi chúc thành công |
![]() |
![]() |
![]() |
#14 | |
Nhập môn đệ tử
Tham gia ngày: Sep 2009
Bài gửi: 1
: |
lcd_4bit
Trích:
nhưng khi mô phỏng lại chạy bình thường không vấn đề gì,nhưng khi test thử trên mạch thật lcd mình không hiện dữ liệu j cả ![]() |
|
![]() |
![]() |
![]() |
#15 |
Đệ tử 6 túi
Tham gia ngày: Apr 2009
Bài gửi: 132
: |
báo lỗi thế nào bạn? bạn dịch file nào? gửi cả cái code lên đây coi nào?
|
![]() |
![]() |
![]() |
|
|