PIC Vietnam

Go Back   PIC Vietnam > Các Đề Tài > Các đề tài khác

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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 30-07-2011, 08:37 PM   #4
kiensnow
Nhập môn đệ tử
 
Tham gia ngày: Apr 2011
Bài gửi: 4
:
Em viết hàm LCD sau, debug thì tất cả các giá trị đều chạy đúng theo mong muốn, nhưng ko hiểu sao khi cho vào mạch thì LCD không hiện gì cả
Mong các cao nhân giúp đỡ
#include<p33fj12gp202.h>
_FOSCSEL(FNOSC_FRC)
_FOSC(FCKSM_CSDCMD&POSCMD_NONE)
_FWDT(FWDTEN_OFF)


//so dem vao pr1 tuong ung 1 s
#define giay 500;


// DINH NGHIA CAC CHAN
#define LCD_EN LATA0
#define LCD_RS LATA2
#define LCD_RW LATA1

// DINH NGHIA CAC CHAN DU LIEU LCD
#define LCD_DAT LATB
#define LCD_TRIS TRISB


// DINH NGHIA CAC CHE DO HOAT DONG CUA LCD
#define LCD_4b2l 0x28
#define LCD_clear 0x01
#define LCD_home 0x02 // tro ve dau dong
#define LCD_normal 0x06 // che do nhap du lieu binh thuong
#define LCD_normal_s 0x07 // che do nhap du lieu binh thuong, dich man hinh
#define LCD_off 0x08 // tat man hinh
#define LCD_on 0x0C // bat man hinh
#define LCD_on_crsr 0x0E // bat man hinh va con tro
#define LCD_on_blink 0x0F //........nhap nhay
#define LCD_homel1 0x80 //tro ve dau dong 1
#define LCD_homel2 0xco // tro ve dau dong 2
#define LCD_mv 0x10 // dich con tro sang phai

// cac chuong trinh con
void Init_TMR1(void);
void Init_PORTS(void);
void LCD_data(unsigned char tmp );
void LCD_cmd(unsigned char tmp);
void Init_LCD(void);
void delay_ms( unsigned int n );

// khai bao hang so
const unsigned char __attribute__ ((space(psv),address (0x0400)))
chuoi1[]="abcdefghjiklmn\0";
unsigned int idx,flag;

int main(void)
{


idx=0;
Init_TMR1();
Init_PORTS();
_PSV=1;
PSVPAG=__builtin_psvpage(chuoi1);
delay_ms(50);
Init_LCD();
delay_ms(500);

while(chuoi1[idx])
{
LCD_data( chuoi1[idx++]);
delay_ms(5);
}

while(1) {};

}

//chuong trinh con
void Init_PORTS(void)
{
LATB=0x0000;
TRISB=0xFFF0;
LATA=0x0000;
TRISA=0x18;
}
void Init_TMR1(void)
{
TMR1=0;
PR1=giay;
_T1IF=0;
T1CON=0x8010;
_T1IE=1;
}

void delay_ms(unsigned int n )
{
TMR1=0;
PR1=n*giay;
flag=0;
T1CONbits.TON=1;
while(flag==0) ;
T1CONbits.TON=0;
}
void Init_LCD(void)
{

LCD_cmd(0x33);
delay_ms(5);
LCD_cmd(0x33);
delay_ms(1);
LCD_cmd(0x33);
delay_ms(1);
LCD_cmd(0x28);
delay_ms(1);
LCD_cmd(LCD_off);
delay_ms(1);
LCD_cmd(LCD_normal);
delay_ms(1);
LCD_cmd(LCD_on_blink);
delay_ms(1);
LCD_cmd(LCD_clear);
delay_ms(5);
//LCD_cmd(0x10);
//delay_ms(10);
}
void LCD_cmd(unsigned char cmd )
{
unsigned buf,j;
LATAbits.LCD_RW=0;
LATAbits.LCD_RS=0;
buf=LCD_DAT&0xFFF0;
LCD_DAT=buf | (cmd>>4);
//buf=tmp>>4; // lay 4 bit cao
//LATB= 0x000f&buf;
LATAbits.LCD_EN=1;
for(j=0;j<100;j++);
LATAbits.LCD_EN=0;

buf= LCD_DAT&0xFFF0;
LCD_DAT=buf | (cmd & 0x0F);
//LATB=0x000f&tmp;
LATAbits.LCD_EN=1;
for(j=0;j<100;j++);
LATAbits.LCD_EN=0;
}
void LCD_data( unsigned char data)
{
unsigned buf,j;
LATAbits.LCD_RW=0;
LATAbits.LCD_RS=1;
buf=LCD_DAT&0xFFF0;
LCD_DAT=buf|(data>>4);
//buf=tmp>>4; // lay 4 bit cao
//LATB= 0x000f&buf;
LATAbits.LCD_EN=1;
for(j=0;j<100;j++);
LATAbits.LCD_EN=0;

buf= LCD_DAT&0xFFF0;
LCD_DAT=buf|(data&0x0F);
//LATB=0x000f&tmp;
LATAbits.LCD_EN=1;
for(j=0;j<100;j++);
LATAbits.LCD_EN=0;

}
void _ISR _T1Interrupt (void)
{
_T1IF=0;
flag=1;
}
kiensnow vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 02:53 AM.


Đượ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