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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc 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 13-03-2009, 04:02 PM   #1
Vinh3i
Đệ tử 1 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 25
:
LCD bị lỗi, help!

Hjx, code cho LCD cuối cùng đã có!
Test trên proteus - ok.
Nhưng nạp vào mạch vẫn ko chạy.
Tôi đã kiểm tra chân nguồn, gnd, chỉnh ligh -> ok
chân enable->A2
chân reset ->A3
chân R/W -> A1
4 đường data D4-D7 nối với chân B1-B4
Test thử bằng cách xuất output_high và output_low qua từng chân trên đều ok.
nhưng nạp chương trình vào thì vẫn ko chạy. Có ai giúp tôi vụ này với!

tưởng có vấn đề với chân 15, 16 nên đã cắt bỏ đường mạch nối tới 2 chân này. Nhưng nó vẫn chưa thèm chạy!

Cái LCD này nó cứ ngủ mãi ko chịu dậy. Bực quá đi mất.....

Trích:

#include <16F877A.h>

#FUSES NOWDT
#FUSES XT
#FUSES PUT
#FUSES NOPROTECT
#FUSES NODEBUG
#FUSES BROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT

#use delay(clock=8000000)

//----Dinh nghia cho LCD-------
#define LCD_D0 PIN_B1
#define LCD_D1 PIN_B2
#define LCD_D2 PIN_B3
#define LCD_D3 PIN_B4

#define LCD_EN PIN_A2
#define LCD_RS PIN_A3
#define LCD_RW PIN_A1

#define FIRST_LINE 0x00
#define SECOND_LINE 0x40
#define CLEAR_DISP 0x01
//----end dinh nghia LCD--------

//----driver cho LCD -----------
void LCD_Init ( void );
void LCD_SetPosition ( unsigned int cX );
void LCD_PutChar ( unsigned int cX );
void LCD_PutCmd ( unsigned int cX );
void LCD_PulseEnable ( void );
void LCD_SetData ( unsigned int cX );

void LCD_Init ( void )
{
LCD_SetData ( 0x00 );
delay_ms ( 200 );
output_low(LCD_RW);
output_low ( LCD_RS );
LCD_SetData ( 0x03 );
LCD_PulseEnable();
LCD_PulseEnable();
LCD_PulseEnable();
LCD_SetData ( 0x02 );
LCD_PulseEnable();
LCD_PutCmd ( 0x2C );
LCD_PutCmd ( 0x0C );
LCD_PutCmd ( 0x01 );
LCD_PutCmd ( 0x06 );
}

void LCD_SetPosition ( unsigned int cX )
{
LCD_SetData ( swap ( cX ) | 0x08 );
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
}

void LCD_PutChar ( unsigned int cX )
{
output_low ( LCD_RW );
output_high ( LCD_RS );
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
output_low ( LCD_RS );
}

void LCD_PutCmd ( unsigned int cX )
{
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
LCD_SetData ( swap ( cX ) );
LCD_PulseEnable();
}

void LCD_PulseEnable ( void )
{
output_high ( LCD_EN );
delay_us ( 10 );
output_low ( LCD_EN );
delay_ms ( 5 );
}

void LCD_SetData ( unsigned int cX )
{
output_bit ( LCD_D0, cX & 0x01 );
output_bit ( LCD_D1, cX & 0x02 );
output_bit ( LCD_D2, cX & 0x04 );
output_bit ( LCD_D3, cX & 0x08 );
}
//------end driver cho LCD---------------

void main()
{

LCD_Init();

LCD_PutChar("V");
LCD_PutChar(" ");
LCD_PutChar("K");
LCD_PutChar("I");
LCD_PutChar("L");
LCD_PutChar("L");
LCD_PutChar(" ");
LCD_PutChar("H");
LCD_PutChar("I");
LCD_PutChar("M");

}
Vinh3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Tags
lcd, nhietdo, pic6f877, realtime-clock

Ðiều Chỉnh
Xếp Bà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à 11: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