Ðề tài: Sửa lỗi
View Single Post
Old 08-10-2008, 04:24 PM   #5
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Cám ơn anh Nam nhé, e đã sủa được rồi . Em đọc và sủa như sau:
const unsigned char __attribute__ ((space(auto_psv)))
chuoi0[]=" cty CEVT \0",
chuoi1[]= "Dat nhiet do = \0",
chuoi2[]=" Dat kp = \0",
chuoi3[]=" Dat ki = \0",
chuoi4[]=" Dat kd = \0",
chuoi5[]= " Nhiet do thuc = \0";
unsigned char __attribute__ ((space(auto_psv)))
s[15];
Em để tự động định địa chỉ.
Thưa anh, em muốn hỏi anh ở phần hiển thị LCD. Trong tutorial 4 của anh có sử dụng các tín hiệu data của LCD cho cổng E. Nhưng giờ em muốn nối thể này (tại em làm tiếp cái của người khác đang làm ) : Cổng F cho D4,D5 ; E4,E5 cho D6,D7. Giờ em khai báo như thế này có được không :
Code:
#define	LCD_DAT1	LATE			
#define	LCD_TRIS1	TRISE
#define   LCD_TAM	             LATF
#define   LCD_TRIS2	TRISF
void Init_PORTS(void)
    LCD_DAT1&= 0xFF;
    LCD_TAM&= 0xF0;
    LCD_TRIS1 = 0xFF;
    LCD_TRIS2 = 0XF0;
còn ở hàm LCD_cmd4() và hàm LCD_dat4() thì em viết lại như sau:
void LCD_cmd4(unsigned char cmd) {
     unsigned temp1, i;
    //LATDbits.LCD_RW = 0;
     LATBbits.LCD_RS = 0;		//Dat che do xuat lenh
    temp1 = LCD_DAT1 & 0xFF	;	//Lay trang thai hien thoi cua LCD_DAT
    LCD_DAT1 = temp1 | (cmd >> 4);	//Xuat 4 bit cao
    LATBbits.LCD_EN = 1;		//Tao xung Enable
    for (i = 0; i < 2; i++);	//keo dai toi thieu 1 us
    LATBbits.LCD_EN = 0;
    temp1 = LCD_TAM & 0xF0;	//Lay trang thai hien thoi cua LCD_DAT1
    LCD_TAM = temp1 | (cmd & 0x0F);	//Xuat 4 bit thap
    LATBbits.LCD_EN = 1;		//Tao xung Enable
    for (i = 0; i < 2; i++);	//keo dai toi thieu 1 us
    LATBbits.LCD_EN = 0;
				}

//Chuong trinh con xuat du lieu o che do 4 bit
//------------------------------------------------------------------------------
void LCD_dat4(unsigned char dat) {
    unsigned temp2, i;
    //LATDbits.LCD_RW = 0;
    LATBbits.LCD_RS = 1;		//Dat che do xuat du lieu
    temp2 = LCD_DAT1 & 0xFF;	//Lay trang thai hien thoi cua LCD_DAT
    LCD_DAT1 = temp2 | (dat >> 4);	//Xuat 4 bit cao
    LATBbits.LCD_EN = 1;		//Tao xung Enable
    for (i = 0; i < 2; i++);	//keo dai toi thieu 1 us
    LATBbits.LCD_EN = 0;
    temp2 = LCD_TAM & 0xF0;	//Lay trang thai hien thoi cua LCD_DAT
    LCD_TAM = temp2 | (dat & 0x0F);	//Xuat 4 bit thap
    LATBbits.LCD_EN = 1;		//Tao xung Enable
    for (i = 0; i < 2; i++);	//keo dai toi thieu 1 us
    LATBbits.LCD_EN = 0;
				}
Mạc dù em biên dịch không báo lỗi nhưng khi nắp mạch thật thì không hiển thị được LCD. Mong anh giúp em !

thay đổi nội dung bởi: tungnh, 08-10-2008 lúc 04:37 PM.
tungnh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn