![]() |
|
Tài trợ cho PIC Vietnam |
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 |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ 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 |
![]() |
![]() |
|
|