|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
29-01-2013, 12:45 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Jan 2013
Bài gửi: 21
: |
giúp code LCD
các anh ơi giúp em đoạn code lcd này vơi. Em biên dich chạy ngon lành nhưng khi nạp vào mạch mô phỏng thì không chạy.
em cảm ơn! #include"p24fj128ga010.h" #define delay 250 _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF) _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRIPLL) /*************************************/ #define lcd_en LATBbits.RB13 #define lcd_rs LATBbits.RB14 #define lcd_rw LATBbits.RB15 #define lcd_db7 LATBbits.RB3 #define lcd_db6 LATBbits.RB2 #define lcd_db5 LATBbits.RB1 #define lcd_db4 LATBbits.RB0 #define lcd_tris TRISB /************************************/ void T1_init(); void delay_ms(unsigned int time); void lcd_config(); void lcd_write(unsigned char lenh); void lcd_b(unsigned char data); void lcd_putchar( char ch); void lcd_putstring( char *st); void lcd_port(); unsigned char flag=0,i=0; void T1_init() { TMR1=0; PR1=delay; T1CON=0x8000; _T1IF=0; _T1IE=1; } void delay_ms(unsigned int time) { PR1=time*delay; T1CONbits.TON=1; flag=0; while(flag==1); T1CONbits.TON=0; TMR1=0; } void lcd_b(unsigned char data) { _LATB14=1; _LATB15=0; //xuat 4 bit cao _LATB3=(data>>7)&1; _LATB2=(data>>6)&1; _LATB1=(data>>5)&1; _LATB0=(data>>4)&1; //xuat 4 bit thap _LATB3=(data>>3)&1; _LATB2=(data>>2)&1; _LATB1=(data>>1)&1; _LATB0=(data)&1; _LATB13=1; for(i=0;i<2;i++) _LATB13=0; } void lcd_write(unsigned char lenh ) { _LATB14=0; lcd_b(lenh); delay_ms(10); _LATB13=1; for(i=0;i<2;i++) _LATB13=0; } void lcd_putchar(char ch) { _LATB14=1; _LATB15=0; lcd_b(ch); _LATB13=1; for(i=0;i<2;i++) _LATB13=0; } void lcd_putstring(char *st) { while(*st) { lcd_putchar(*st); st++; }; } void lcd_config() { lcd_write(0x28); delay_ms(1); lcd_write(0x06); delay_ms(1); lcd_write(0x0C); delay_ms(1); lcd_write(0x01); delay_ms(1); lcd_write(0x02); delay_ms(1); lcd_write(0x08); delay_ms(1); lcd_write(0x0E); delay_ms(1); lcd_write(0x0F); delay_ms(1); lcd_write(0x80); delay_ms(1); lcd_write(0xC0); delay_ms(1); } void lcd_port() { LATB=0; lcd_tris=0X1FF0; } void _ISR_T1Interrupt(void) { _T1IF=0; flag=1; } int main() { lcd_port(); delay_ms(10); lcd_config(); delay_ms(50); T1_init(); lcd_putstring("chu khanh"); delay_ms(10); lcd_putstring("dt5-k55"); while(1); } |
|
|