PDA

View Full Version : 30f4013& lcd


greenfield
22-10-2009, 09:54 AM
Các anh cho em hỏi là do kết cấu mạch phần cứng nên em thiết kế LCD giao tiếp với dsPIC30f4013 qua chế độ 4 bít nhưng phần 4 bít Data (D7..D4) em nối với DSPIC thông qua 4 chân RC14,RA1,RD9,RD3 khi lập trình bằng C30 em không biết khai báo phần xuất dữ liệu như thế nào? Em có tham khảo 1 số code họ chỉ nối 4 bít data trên cùng 1 PORT nên có vẻ dễ hơn. Mong các anh chỉ giúp em!

thanhgand
23-10-2009, 04:11 PM
Các anh cho em hỏi là do kết cấu mạch phần cứng nên em thiết kế LCD giao tiếp với dsPIC30f4013 qua chế độ 4 bít nhưng phần 4 bít Data (D7..D4) em nối với DSPIC thông qua 4 chân RC14,RA1,RD9,RD3 khi lập trình bằng C30 em không biết khai báo phần xuất dữ liệu như thế nào? Em có tham khảo 1 số code họ chỉ nối 4 bít data trên cùng 1 PORT nên có vẻ dễ hơn. Mong các anh chỉ giúp em!

Theo mình bạn chỉ cần khai báo 4 chân data của bạn là 4 chân ra.Sau đó viết chương trình con tách số từ số thập phân thành số nhị phân. và gán thủ công cho từng chân thôi.
Hoặc bạn có thể tham khảo đoạn code mẫu của anh Nam tôi có chỉnh sửa theo ý của bạn
(tôi chưa test nhưng tôi nghĩ là ok)

void LCD_dat4(unsigned char dat) {

unsigned temp2, i;
LCD_RW = 0;
LCD_RS = 1; //Dat che do xuat du lieu

//Xuat 4 bit cao
_LATC14 = (dat>>7)&1;
_LATA1 = (dat>>6)&1;
_LATD9 = (dat>>5)&1;
_LATD3 = (dat>>4)&1;

LATEbits.LCD_EN = 1; //Tao xung Enable
for (i = 0; i < 2; i++); //keo dai toi thieu 1 us
LATEbits.LCD_EN = 0;

//Xuat 4 bit thap
_LATC14 = (dat>>3)&1;
_LATA1 = (dat>>2)&1;
_LATD9 = (dat>>1)&1;
_LATD3 = (dat)&1;

LATEbits.LCD_EN = 1; //Tao xung Enable
for (i = 0; i < 2; i++); //keo dai toi thieu 1 us
LATEbits.LCD_EN = 0;
}