⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 基于AM1单片机的一个RS232串口的通讯程序
💻 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 + -