PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Giúp jao tiep lcd 4 bit (http://www.picvietnam.com/forum/showthread.php?t=4995)

nguyen nam hung 28-09-2009 09:11 AM

Giúp jao tiep lcd 4 bit
 
1 Attachment(s)
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

thuan_tb86 28-09-2009 10:28 AM

1 Attachment(s)
ban xem chuong trinh nay nhe. chuong trinh viet bang CCS

nguyen nam hung 30-09-2009 12:17 PM

cho minh hoi dieu nay nghe:
for(k=0;k<2000;k++);
với lệnh như trên, mình dùng thạch anh 20Mhz thì vòng lặp sẽ mất bao nhiêu thời gian vậy??? mình mới dùng pic nên không biết các dùng hàm delay.

tieulongnu 09-10-2009 05:19 PM

Các bạn cho mình hỏi : mình mới mua LCD TC2004A-01, loại 4x20 , có 16 chân. Nhưng làm sao biết là loại mấy bit , rồi cách kết nối với con pic 16f877a thế nào , nguồn cấp dùng chung với con Pic luôn hay dùng nguồn riêng .Cảm ơn các bạn . Datasheet thì chỉ có mấy cái hình mà chẳng có nói gì liên quan.

hangocminh1989 25-03-2011 02:02 AM

Trích:

Nguyên văn bởi tieulongnu (Post 30079)
Các bạn cho mình hỏi : mình mới mua LCD TC2004A-01, loại 4x20 , có 16 chân. Nhưng làm sao biết là loại mấy bit , rồi cách kết nối với con pic 16f877a thế nào , nguồn cấp dùng chung với con Pic luôn hay dùng nguồn riêng .Cảm ơn các bạn . Datasheet thì chỉ có mấy cái hình mà chẳng có nói gì liên quan.

xin lỗi, mình hỏi một câu hơi chuối... thật sự bạn có đọc cái datasheet chưa???mình thấy nói nói đầy đủ hết mà...đừng có giỡn chứ
www.adafruit.com/datasheets/TC2004A-01.pdf


Múi giờ GMT. Hiện tại là 01:25 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam