View Single Post
Old 28-09-2009, 09:11 AM   #1
nguyen nam hung
Đệ tử 2 túi
 
Tham gia ngày: Jun 2008
Bài gửi: 26
:
Giúp jao tiep lcd 4 bit

mình đang viết chương trình đễ giao tiếp với lcd bằng 4 bit. nhung viết mải mà không chay. có ai jup minh với. code c:

#include<p18f4520.h>
#include<stdio.h>
#include<stdlib.h>
#include<delays.h>
#include<string.h>
#include<ADC.h>
#include<pwm.h>
#include<math.h>
#include <timers.h>

#pragma config WDT=OFF
#pragma config PWRT=OFF
#pragma config LVP=OFF
#pragma config PBADEN=OFF
#pragma config OSC=HS

//===============================
#define TOC_DO_DAT PORTAbits.RA0
#define TOC_DO_DO PORTAbits.RA1
#define MENU PORTEbits.RE0
#define UP PORTEbits.RE1
#define DOWN PORTEbits.RE2
#define EXIT PORTCbits.RC2
#define ENCODER_COUNT PORTCbits.RC0
#define PWM_PIC PORTCbits.RC1
#define SPEAKER PORTCbits.RC3
#define rs PORTBbits.RB0
#define wr PORTBbits.RB1
#define en PORTBbits.RB2
#define ON_OFF_LCD PORTBbits.RB3

#define data_lcd_7 PORTBbits.RB4
#define data_lcd_6 PORTBbits.RB5
#define data_lcd_5 PORTBbits.RB6
#define data_lcd_4 PORTBbits.RB7

//===============================
//dinh nghia cac chuoi
char chuoi1[16] = {"KIT THUC HANH! "};
char chuoi2[16] = {" PID SO VA VXL "};
char chuoi3[17] = {"DESIGNED BY HUNG"};
char chuoi4[16] = {" VERSION 1.0 "};
char chuoi5[16] = {" REBOOT.... "}; //HIEN THI QUA TRINH CAP NHAT LAI CAC THONG SO MAT DINH
char chuoi6[17] = {"CHE DO HOAT DONG"};
char chuoi7[7] = {"MENUAL"};
char chuoi8[5] = {"AUTO"};
char chuoi9[16] = {"NHAP BIEN PID "}; //CHI HIEN DONG NAY KHI DA CHON CHE DO AUTO
char chuoi10[4] = {"KP:"};
char chuoi11[4] = {"KI:"};
char chuoi12[4] = {"KD:"};
char chuoi13[9] = {"ENCODER:"};
char chuoi14[4] = {"X/V"};
char chuoi15[17] = {"GIA TRI MAT DINH"};
char chuoi16[4] = {"V/S"};
char chuoi17[4] = {"V0:"};
char chuoi18[4] = {"V1:"};
//=================================
int i;
int data;
//=================================
void khoi_dong_lcd(void);

void lay_key(void);
void sound(void);
void dieu_xung_2(int n);
void dieu_xung(int n);
void delay(void);
void delay_1s(void);
void delay_ms(unsigned int x_timer);
void beep(void);
void beep_ngan(void);
void beep_dai(void);
void dem_xung_hien_thi(void);

void ham_xuat_4_bit_cao( unsigned int data );
void ham_xuat_4_bit_thap( unsigned int data );
void ham_gui_lenhDK( unsigned int data );
void ham_gui_data( unsigned int data );

void wait_lcd (void);
//==================================
void main(void)
{
OpenPWM1(0xff);
SetDCPWM1(0);

ADCON1=0x09;//dung 5 chan adc dau tien
TRISA=0xFF;
TRISB=0x08;//00001000
TRISC=0x85;
TRISD=0;
TRISE=0XFF;
wr=0;
en=0;
sound();

Delay10KTCYx(25);
khoi_dong_lcd();
ham_gui_lenhDK(0x01);

ham_gui_lenhDK(0x80);
for(i=0;i<strlen(chuoi1);i++){
ham_gui_data(chuoi1[i]);
}
ham_gui_lenhDK(0xC0);
for(i=0;i<strlen(chuoi2);i++){
ham_gui_data(chuoi2[i]);
}
// sound();
// sound();


while(1)
{
ham_gui_lenhDK(0xC0);
for(i=0;i<strlen(chuoi3);i++){
ham_gui_data(chuoi3[i]);
sound();
}

}
}
//=======================================
void sound(void)
{
SPEAKER=1;
//delay_ms(1000);
delay_1s();
SPEAKER=0;
//delay_ms(1000);
delay_1s();
}
void delay_1s(void)
{
Delay10KTCYx(5);
}
void delay_ms(unsigned int x_timer)
{
int x_t;
for (x_t=0;x_t<x_timer;x_t++);
{
Delay10KTCYx(255);
}
}

//========================================
void delay(void)
{
int k;
for(k=0;k<2000;k++);
}
//========================================
void khoi_dong_lcd(void)
{
delay() ;
rs= 0;
wr = 0;
en= 0 ;
ham_xuat_4_bit_cao(0x28);
en= 1;
delay() ;
en= 0 ;

ham_gui_lenhDK(0x28);
ham_gui_lenhDK(0x0C);
ham_gui_lenhDK(0x06);
ham_gui_lenhDK(0x01);
ham_gui_lenhDK(0x02);
}

//==========dien dang dientuvietnam===========================
void ham_xuat_4_bit_thap( unsigned int data )
{
data_lcd_4 = (data & 0x01 );
data_lcd_5 = (data & 0x02 );
data_lcd_6 = (data & 0x04 );
data_lcd_7 = (data & 0x08 );
}

void ham_xuat_4_bit_cao( unsigned int data )
{
data_lcd_4 = (data & 0x10 );
data_lcd_5 = (data & 0x20 );
data_lcd_6 = (data & 0x40 );
data_lcd_7 = (data & 0x80 );
}

void ham_gui_lenhDK( unsigned int data )
{
wait_lcd ();
rs= 0;
wr = 0;

ham_xuat_4_bit_cao(data); // gui 4 bit cao
en= 1;
delay() ;
en= 0 ;


ham_xuat_4_bit_thap(data); // gui 4 bit thap
en= 1;
delay() ;
en = 0 ;

}

void ham_gui_data( unsigned int data )
{
wait_lcd ();
rs = 1 ;
wr = 0 ;

ham_xuat_4_bit_cao(data); // gui 4 bit cao
en= 1;
delay() ;
en= 0 ; // tao xung tren chan E

ham_xuat_4_bit_thap(data); //gui 4 bit thap
en= 1;
delay() ;
en= 0 ; // tao xung tren chan E
}

void wait_lcd (void)
{
short busy;

TRISB=0xF8;//11111000:CAU HINH DOC CHAN DATA
rs=0;
wr=1;
while(1)
{
en=1;
delay();
if (data_lcd_7==1){
if(busy==0) busy=1;

}else if(data_lcd_7==0){
if(busy==1) busy=0;
}

en=0;
delay();
en=1;
delay();
en=0;
sound();
if (busy==0){
goto no_busy;

}
}
no_busy:
wr=0;
TRISB=0x08;//00001000

}
//==========dien dang dientuvietnam===========================

phần jao tiếp lcd mình tham khao nhieu trang nhung no van khong chay. ai jup minh xem minh viet sai o dau khong
Hình Kèm Theo
File Type: png Untitled.png (89.9 KB, 96 lần tải)
nguyen nam hung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn