/* ****************************************** * LCD control with USBIO * * ****************************************** * Cable connect sample * * ****************************************** * * USB-IO ------ LCD * P0 1 ------ DB0 DATA BIT0 * P0 2 ------ DB1 * P0 3 ------ DB2 * P0 4 ------ DB3 * P0 5 ------ DB4 * P0 6 ------ DB5 * P0 7 ------ DB6 * P0 8 ------ DB7 * P1 1 ------ RS * P1 2 ------ * P1 3 ------ R/W * P1 4 ------ E * * Vcc ------ VDD 5V * GND ------ VSS 0V * * Vcc ---+ * |<--*- Vo Contrast Adj. * GND ---+ VR 10k * * ****************************************** * */ #define LCD_RS 0x01 #define LED_ON 0x02 #define LCD_RW 0x04 #define LCD_E 0x08 /* cmd_output */ void lcd_cmd(struct usb_dev_handle *udev,int OudData) { uio_out(udev,0,OudData); uio_out(udev,1,0); uio_out(udev,1,LCD_E); uio_out(udev,1,0); } /* Set LCD function */ void lcd_func(struct usb_dev_handle *udev,int inDl,int inN,int inF) { lcd_cmd(udev, 0x20 + inDl * 0x10 + inN * 0x8 + inF); } /* Display Control */ void lcd_ctrl(struct usb_dev_handle *udev,int inD,int inC,int inB) { lcd_cmd(udev,0x8 + inD * 0x4 + inC * 0x2 + inB); } /* Display Clear */ void lcd_cls(struct usb_dev_handle *udev) { lcd_cmd(udev,0x1); } /* Home Cursor */ void lcd_home(struct usb_dev_handle *udev) { lcd_cmd(udev,0x2); } /* Cursor Option */ void lcd_cursft(struct usb_dev_handle *udev,int inS,int inRL) { lcd_cmd(udev,0x10 + inS * 0x8 + inRL * 0x4); } /* CGRAM Address Set */ void lcd_cgram_no(struct usb_dev_handle *udev,int inNo) { lcd_cmd(udev,0x40 + inNo); } /* LCD LOCATE Set */ void lcd_locate(struct usb_dev_handle *udev,int inX,int inY) { lcd_cmd(udev,0x80 + inY * 0x40 + inX); } /* Entry Mode Setting */ void lcd_mode(struct usb_dev_handle *udev,int inID,int inS) { lcd_cmd(udev, 0x4 + inID * 0x2 + inS); } /* 1 Char Display */ void lcd_moji(struct usb_dev_handle *udev,int inChr) { uio_out(udev,0,inChr); uio_out(udev,1,LCD_RS); uio_out(udev,1,LCD_RS+LCD_E); uio_out(udev,1,LCD_RS); } /* lcd_init */ void lcd_init(struct usb_dev_handle *udev) { lcd_cmd(udev,0x30); lcd_cmd(udev,0x30); lcd_cmd(udev,0x30); /* Set LCD function * 1: 8 bit data * 1: 2 line * 0: 5x7 dot chara */ lcd_func(udev,1,1,0); /* Display Control * 1: Display On * 0: Cursor Off * 0: Blink Off */ lcd_ctrl(udev,1,0,0); /* Display Clear */ lcd_cls(udev); /* Entry Mode setting * 1: Inc On * 0: Shift Off */ lcd_mode(udev,1,0); } /* LCD Text disp */ void lcd_text(struct usb_dev_handle *udev,char *s) { while(*s != 0) { lcd_moji(udev,s[0]); *s++; } }