📄 lcd44780.c
字号:
static void delay(int time){ while(time --);}#define LCD_COMM_ADDR 0x0a000000#define LCD_DATA_ADDR 0x0a000001#ifndef outportb(port, data)#define outportb(port, data) *((volatile unsigned char *)(port)) = (unsigned char)(data)#endif/********************************************************* LCD44780(16chars * 1line) initilization*********************************************************/void LCD44780_Init(void){ //function set //data length = 8, line = 2, dots = 5x7 outportb(LCD_COMM_ADDR, 0x38); delay(1000); //display On/Off control //display = ON, cursor = OFF, blinking = OFF outportb(LCD_COMM_ADDR, 0x0c); delay(1000); //entry mode set //cursor moving direction = increment, shift/entire = entire outportb(LCD_COMM_ADDR, 0x06); delay(1000); //cursor or display shift //cursor moving / display shift = cursor moving, directiong = right outportb(LCD_COMM_ADDR, 0x1c); delay(1000); //clear display outportb(LCD_COMM_ADDR, 0x01); //clear screen delay(100000); //return home outportb(LCD_COMM_ADDR, 0x02); //return home delay(100000);}/********************************************************* LCD44780(16chars * 1line) display string*********************************************************/void LCD44780_Display(unsigned char * Asccode){ int i; //clear display outportb(LCD_COMM_ADDR, 0x01); //clear screen delay(100000); //return home outportb(LCD_COMM_ADDR, 0x02); //return home delay(100000); //display data i = 0; while(* Asccode != '\0'){ if(i < 8){ outportb(LCD_DATA_ADDR, *Asccode); //data delay(1000); } else break; i ++; Asccode ++; } //set DD ram address, the second 8 chars start address = 0x40 outportb(LCD_COMM_ADDR, 0xc0); delay(1000); while(* Asccode != '\0'){ if(i < 16){ outportb(LCD_DATA_ADDR, *Asccode); //data delay(1000); } else break; i ++; Asccode ++; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -