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 Bài Trong Ngày 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 14-08-2009, 11:46 PM   #1
nhanthienthan
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 );
    }
Viết trong CCS nhưng khi em nhấn f9 thì nó hiện lỗi này là sao ạ

***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
nhanthienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-08-2009, 09:46 AM   #2
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
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(....
phamminhtuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-08-2009, 11:22 AM   #3
nhanthienthan
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 ạ :|
nhanthienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-08-2009, 12:08 PM   #4
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
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
File Kèm Theo
File Type: zip LCD_ERROR.zip (21.9 KB, 45 lần tải)
phamminhtuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-08-2009, 03:42 PM   #5
nhanthienthan
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 ạ:|
nhanthienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-08-2009, 04:20 PM   #6
vidieukhiencdn
Đệ tử 7 túi
 
vidieukhiencdn's Avatar
 
Tham gia ngày: May 2009
Bài gửi: 242
:
Trích:
Nguyên văn bởi nhanthienthan View Post
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 ạ:|
Đã chỉnh dùm cái LCD hết lỗi bạn xem nhé, có kèm theo cho bạn cái file proteus để test luôn. Chạy ok

Chúc vui
File Kèm Theo
File Type: rar LCD_ERROR.rar (46.6 KB, 81 lần tải)
vidieukhiencdn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-08-2009, 10:30 PM   #7
8051topic
Đệ 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!
8051topic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2009, 12:11 AM   #8
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi 8051topic View Post
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!
LCD sáng là led trong màn hình sáng chứ chưa chắc LCD còn hoạt động tốt .
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
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2009, 12:28 AM   #9
vidieukhiencdn
Đệ tử 7 túi
 
vidieukhiencdn's Avatar
 
Tham gia ngày: May 2009
Bài gửi: 242
:
Trích:
Nguyên văn bởi 8051topic View Post
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!
Bạn mắc như hình vẽ rùi chỉnh VR xem sao nhé
Hình Kèm Theo
File Type: jpg untitled.JPG (63.5 KB, 10 lần tải)
vidieukhiencdn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2009, 03:52 PM   #10
8051topic
Đệ 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!
8051topic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2009, 04:56 PM   #11
nhanthienthan
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 6
:
Trích:
Nguyên văn bởi vidieukhiencdn View Post
Đã chỉnh dùm cái LCD hết lỗi bạn xem nhé, có kèm theo cho bạn cái file proteus để test luôn. Chạy ok

Chúc vui
Cảm ơn bạn, nó đã chạy tốt. Nhưng mà mình vẫn ko hiểu vì sao cái chương trình của bạn giống đúc của mình mà của bạn chạy đc mà của mình lại ko
nhanthienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2009, 05:19 PM   #12
nhanthienthan
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á (
nhanthienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-08-2009, 05:39 PM   #13
vidieukhiencdn
Đệ tử 7 túi
 
vidieukhiencdn's Avatar
 
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
vidieukhiencdn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-10-2011, 11:01 AM   #14
trantiendt9
Nhập môn đệ tử
 
Tham gia ngày: Sep 2009
Bài gửi: 1
:
lcd_4bit

Trích:
Nguyên văn bởi vidieukhiencdn View Post
Đã chỉnh dùm cái LCD hết lỗi bạn xem nhé, có kèm theo cho bạn cái file proteus để test luôn. Chạy ok

Chúc vui
bạn ơi,cho mình hỏi,mình chạy file lcd_4bit.c thì báo lỗi ở dòng #separate void LCD_Init ();
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ả thank
trantiendt9 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-10-2011, 01:05 AM   #15
hangocminh1989
Đệ tử 6 túi
 
Tham gia ngày: Apr 2009
Bài gửi: 132
:
Trích:
Nguyên văn bởi trantiendt9 View Post
bạn ơi,cho mình hỏi,mình chạy file lcd_4bit.c thì báo lỗi ở dòng #separate void LCD_Init ();
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ả thank
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?
hangocminh1989 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à 03:55 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