📄 lcd.c
字号:
/***********************************************************************/
/* */
/* FILE :lcd.c */
/* DATE :Fri, Dec 14, 2007 */
/* DESCRIPTION :Main Program */
/* CPU TYPE :H8/3694F */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.9). */
/* */
/***********************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
void abort(void);
#ifdef __cplusplus
}
#endif
struct BIT{
unsigned char B7:1;
unsigned char B6:1;
unsigned char B5:1;
unsigned char B4:1;
unsigned char B3:1;
unsigned char B2:1;
unsigned char B1:1;
unsigned char B0:1;
};
#define PCR1 (*(struct BIT *)0xffe4)
#define PCR10 PCR1.B0
#define PCR11 PCR1.B1
#define PCR12 PCR1.B2
#define PDR1 (*(struct BIT *)0xffd4)
#define LCD_RS PDR1.B0
#define LCD_RW PDR1.B1
#define LCD_E PDR1.B2
#define PCR5 *(volatile unsigned char *)0xffe8
#define PDR5 *(volatile unsigned char *)0xffd8
#define LCD_DB PDR5
#define INPUT_BYTE 0x00
#define INPUT_BIT 0
#define OUTPUT_BYTE 0xff
#define OUTPUT_BIT 1
#define LCD_CMD 0
#define LCD_DAT 1
#define LCD_WRITE 0
#define LCD_READ 1
#define LCD_CLAR 0x01
#define LCD_HOME 0x02
#define LCD_ENTSET 0x06
#define LCD_DISP_OFF 0x08
#define LCD_DISP_NCUR 0x0c
#define LCD_DISP_CUR 0x0e
#define LCD_DISP_BNK 0x0d
#define LCD_DISP_ALL 0x0f
#define LCD_INIT8B 0x30
#define LCD_FCSET8B 0x38
#define LCD_INIT4B 0x20
#define LCD_FCSET4B 0x28
#define loop_const 3500
void wait(unsigned int wait_time){
unsigned int loop1;
unsigned int loop2;
for(loop1=0;loop1<wait_time;loop1++){
for(loop2=0;loop2<loop_const;loop2++);
}
}
void write_lcd_data(unsigned char data, unsigned char rs){
wait(500);
PCR5 = OUTPUT_BYTE;
LCD_RS=rs;
LCD_RW=LCD_WRITE;
LCD_E=1;
LCD_DB=data;
LCD_E=0;
}
void init_lcd(void){
PCR10 = OUTPUT_BIT;
PCR11 = OUTPUT_BIT;
PCR12 = OUTPUT_BIT;
PCR5 = OUTPUT_BYTE;
LCD_RS = LCD_CMD;
LCD_RW = LCD_WRITE;
LCD_E = 0;
wait(15);
LCD_E=1;
LCD_DB=LCD_INIT8B;
LCD_E=0;
wait(5);
LCD_E=1;
LCD_DB=LCD_INIT8B;
LCD_E=0;
wait(1);
LCD_E=1;
LCD_DB=LCD_INIT8B;
LCD_E=0;
wait(1);
LCD_E=1;
LCD_DB=LCD_INIT8B;
LCD_E=0;
write_lcd_data(LCD_FCSET8B, LCD_CMD);
write_lcd_data(LCD_DISP_OFF, LCD_CMD);
write_lcd_data(LCD_CLAR, LCD_CMD);
write_lcd_data(LCD_ENTSET, LCD_CMD);
write_lcd_data(LCD_DISP_CUR, LCD_CMD);
}
void lcd_puts(char *str){
while(*str){
write_lcd_data(*str, LCD_DAT);
str++;
}
}
void lcd_xy(unsigned char x, unsigned char y){
unsigned char adr;
adr=((x-1)+(y-1)*0x40) | 0x80;
write_lcd_data(adr,LCD_CMD);
}
void main(void)
{
init_lcd();
lcd_puts("hello");
lcd_xy(1,2);
lcd_puts("12345");
while(1);
}
void abort(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -