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)
-   -   các bác coi giúp bài test lcd 16x2 chên pic 18f4520 không chạy (http://www.picvietnam.com/forum/showthread.php?t=32266)

zunixauxi 16-05-2013 05:40 PM

các bác coi giúp bài test lcd 16x2 chên pic 18f4520 không chạy
 
1 Attachment(s)
anh em xem giúp mạch mô phỏng mình để bên rừi
#include <p18f4520.h>
#include <stdio.h>
#include <delays.h>
#define rs LATEbits.LATE0
#define rw LATEbits.LATE1
#define en LATEbits.LATE1
#define LCD_DATA LATD
char mang[40];//khai báo mảng kí tự
void khoitao(void);//gọi hàm khởi tạo LCD
void lenh(char l);//gọi hàm ghi lệnh
void dulieu(char d);
void chuoi(char *s);
void delay(unsigned int t)
{ while(t--);
}
void io_init(void)
{
TRISA=0B11111111;
TRISB=0B11111111;
TRISC=0B11111111;
TRISD=0B00001111;
TRISE=0B000;


}
void khoitao(void)
{
lenh(0x02);
lenh(0x28);//khởi tạo LCD 4 bít 2 dòng ma trận 5x7
lenh(0x0c);//bật hiển thị tắt con trỏ
lenh(0x06);//dịch con trỏ sang phải
lenh(0x01);//xóa màn hình
}
void lenh(char l)
{
rs=0;//cho phép ghi lệnh
en=1;//enable lcd
LCD_DATA=((LCD_DATA&0x0f)|(l&0xf0));//xóa 4 bít cao và cộng với 4 bít cao của data cần truyền
en=0;//disable lcd
en=1;
LCD_DATA=((LCD_DATA&0x0f)|((l<<4)&0xf0));//xóa 4 bít cao và cộng với 4 bít thấp của dữ liệu
en=0;
delay(1000);
}
void dulieu(char d)
{
rs=1;
en=1;
LCD_DATA=((LCD_DATA&0x0f)|(d&0xf0)); //xóa 4 bít cao và cộng với 4 bít cao của data cần truyền
en=0;
en=1;
LCD_DATA=((LCD_DATA&0x0f)|((d<<4)&0xf0)); //xóa 4 bít cao và cộng với 4 bít thấp của dữ liệu




en=0;
delay(1000);
}
void chuoi(char *s)
{
while(*s)
{
dulieu(*s);
s++;
}
}
void main()
{
io_init();
khoitao();
while(1)
{
lenh(0x80);//cho hiển thị bắt đầu từ kí tự đầu tiên dòng 1
sprintf(&mang[0],"xin chao");//chèn chuỗi vào màng
chuoi(&mang[0]);//hiển thị từng kí tự của chuỗi
}
}


Múi giờ GMT. Hiện tại là 09:03 PM.

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