Altera_Forum
Honored Contributor
21 years agoWhat's wrong with my programm?
I have write a programme to initialize the lcd16207,but it couldn't work correctly. The code is:# include <unistd.h># include <stdlib.h># include <stdio.h>
//#include "lcd_16207.h" /* Commands which can be written to the COMMAND register */ enum /* Write to character RAM */ { LCD_CMD_WRITE_DATA = 0x80 /* Bits 6:0 hold character RAM address */ }; enum /* Write to character generator RAM */ { LCD_CMD_WRITE_CGR = 0x40 /* Bits 5:0 hold character generator RAM address */ }; enum /* Function Set command */ { LCD_CMD_FUNCTION_SET = 0x20, LCD_CMD_8BIT = 0x10, LCD_CMD_TWO_LINE = 0x08, LCD_CMD_BIGFONT = 0x04 }; enum /* Shift command */ { LCD_CMD_SHIFT = 0x10, LCD_CMD_SHIFT_DISPLAY = 0x08, LCD_CMD_SHIFT_RIGHT = 0x04 }; enum /* On/Off command */ { LCD_CMD_ONOFF = 0x08, LCD_CMD_ENABLE_DISP = 0x04, LCD_CMD_ENABLE_CURSOR = 0x02, LCD_CMD_ENABLE_BLINK = 0x01 }; enum /* Entry Mode command */ { LCD_CMD_MODES = 0x04, LCD_CMD_MODE_INC = 0x02, LCD_CMD_MODE_SHIFT = 0x01 }; enum /* Home command */ { LCD_CMD_HOME = 0x02 }; enum /* Clear command */ { LCD_CMD_CLEAR = 0x01 };# define na_lcd_pio_command ((volatile int *) 0x80920850)# define na_lcd_pio_status ((volatile int *) 0x80920851)# define na_lcd_pio_wr_data ((volatile int *) 0x80920852)# define na_lcd_pio_rd_data ((volatile int *) 0x80920853) # define PIO_LCD_IO_COMMAND (*na_lcd_pio_command)# define PIO_LCD_IO_STATUS (*na_lcd_pio_status)# define PIO_LCD_IO_WR_DATA (*na_lcd_pio_wr_data)# define PIO_LCD_IO_RD_DATA (*na_lcd_pio_rd_data) void delay(int para)//delay for 0.2*para ms { int i=0,j=0; for(i=0;i<para;i++) for(j=0;j<10000;j++) } int main() { delay(75); PIO_LCD_IO_COMMAND=LCD_CMD_FUNCTION_SET | LCD_CMD_8BIT; delay(21); PIO_LCD_IO_COMMAND=LCD_CMD_FUNCTION_SET | LCD_CMD_8BIT; delay(1); PIO_LCD_IO_COMMAND=LCD_CMD_FUNCTION_SET | LCD_CMD_8BIT; PIO_LCD_IO_COMMAND=LCD_CMD_FUNCTION_SET | LCD_CMD_8BIT | LCD_CMD_TWO_LINE; PIO_LCD_IO_COMMAND=LCD_CMD_ONOFF; PIO_LCD_IO_COMMAND=LCD_CMD_CLEAR; PIO_LCD_IO_COMMAND=LCD_CMD_MODES | LCD_CMD_MODE_INC; PIO_LCD_IO_COMMAND=LCD_CMD_ONOFF | LCD_CMD_ENABLE_DISP; delay(1000); return 0; } My operation system is uClinux,and the board is cyclone,what's wrong with me? help!