📄 lcd.c
字号:
#include "101c49k.h"
#include "Serial_1.h"
#include "lcd.h"
extern unsigned char fTimeLCD; /* LCD : 1msec Timer flag */
void lcd_init(void)
{
LCD_STB = 0;
LCD_RS = 0; /* Command */
LCD_RW = 0; /* R/W = write fixed */
lcd_put_cmd(0x30); /* Function set: 8bit */
wait_ms(4);
lcd_put_cmd(0x30); /* Function set: 8bit */
lcd_wait();
lcd_put_cmd(0x30); /* Function set: 8bit */
lcd_put_cmd(0x3c); /* Function set: 8bit, 2lines, big char */
lcd_put_cmd(0x08); /* Display Off: D=C=B=0 */
lcd_put_cmd(0x0c); /* Display On: D=1, C=B=0 */
lcd_put_cmd(0x06); /* Entry Mode Set: incremental, without display shift */
}
void lcd_clear(void)
{
lcd_put_cmd(0x01); /* Clear Display */
wait_ms(2);
}
void lcd_puts(char *data, char line, char cursor)
{
lcd_set_cursor(line, cursor);
while (*data) {
lcd_put_data(*data++);
}
}
void lcd_set_cursor(char line, char cursor)
{
lcd_put_cmd(0x80|((line&0x01)<<6)|(cursor&0x0f));
}
void lcd_put_cmd(char cmd)
{
LCD_DATA = cmd;
LCD_RS = 0; /* Command */
LCD_STB = 1;
LCD_STB = 0;
lcd_wait();
}
void lcd_put_data(char data)
{
LCD_DATA = data;
LCD_RS = 1; /* Data */
LCD_STB = 1;
LCD_STB = 0;
lcd_wait();
}
void wait_ms(int time)
{
fTimeLCD = 0;
TM1.OC = LCD_WAIT_1MS; /* compare value : 1ms */
TM1.MD.BIT.EN = 0x01; /* timer start */
while (1) {
if ( fTimeLCD >= time ) break;
}
TM1.MD.BIT.EN = 0x00; /* timer stop */
}
void lcd_wait(void)
{
fTimeLCD = 0;
TM1.OC = LCD_WAIT_40US; /* compare value : 40us */
TM1.MD.BIT.EN = 0x01; /* timer start */
while (1) {
if ( fTimeLCD ) break;
}
TM1.MD.BIT.EN = 0x00; /* timer stop */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -