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

📄 lcd.c

📁 WAV 数字输出播放器
💻 C
字号:
#include <p33FJ64GP306.h>
#include "delay.h"
#include <string.h>

// LCD is controlled by this source.

#define LCDLEN 8
	// LCD is 8 char x 2 line.
	// If longer LCD used, change number.

/*flag:RS, 1 = data, 0 = cmd*/
/*code: upper 4 bit only*/
// PIN
// D.0: E
// D.1: RS
// D.7..4: DB7..4

void lcd_out(int code, int flag)
{
	PORTD = code & 0xF0;
	Nop();
	PORTDbits.RD1 = flag;	/* set RS */
	Nop();
	PORTDbits.RD0 = 0x01;	/* E high */
	Delay8Tcy();
	PORTDbits.RD0 = 0x00;	/* E low */
	Nop();

}

void lcd_cmd(int cmd)	/* 4bit command set routine */
{
	lcd_out(cmd,0);	/* upper 4 bit */
	lcd_out(cmd<<4,0);	/* lower 4 bit */
	Delay_Us(1);
}

void lcd_data(int ascii)
{
	lcd_out(ascii,1);	/* upper 4 bit */
	lcd_out(ascii<<4,1);	/* lower 4 bit */
	Delay_Us(1);
}

void lcd_str(char *buffer, int line)
{
	int i;
	int len;
	char lcdbuffer[LCDLEN + 2];

	if (line == 2)	/* Move to Line2 DDRAM Address */
	{	
		lcd_cmd(0xC0);	
	}
	else			/* Move to 0x00 DDRAM Address */
	{	
		lcd_cmd(0x80);	
	}

	// initialize buffer to 0x00
	memset(lcdbuffer, 0, sizeof(lcdbuffer));
	len = strlen(buffer);
	// not to overrun
	if (len > LCDLEN) len = LCDLEN;
	strncpy(lcdbuffer,buffer,len);
	
	if (len < LCDLEN)
	{
		// At least LCDLEN characters to fill LCD.	
		for (i = 0; i < (LCDLEN - len); i++)
		{strcat(lcdbuffer, " ");}
	}
	
	/*output string to LCD*/
	for ( i = 0; i < LCDLEN; i++)
	{
		lcd_data(lcdbuffer[i]);
	}
}

void init_lcd()
{
	/* Initialize LCD Display */
	TRISD = 0x00;
	/* wait > 15ms */	
	Delay_Us(80);
	/* write 00110000=8bit mode */
	lcd_out(0x30,1);
	/* wait 5ms */
	Delay_Us(30);
	/* write 00110000=8bit mode */
	lcd_out(0x30,1);
	/* wait 5ms */
	Delay_Us(30);
	/* write 00110000=8bit mode */
	lcd_out(0x30,1);
	/* wait 5ms */
	Delay_Us(30);
	/* write 00100000=4bit mode */
	lcd_out(0x20,1);
	/* wait 3ms */
	Delay_Us(30);
	lcd_cmd(0x2E);
	lcd_cmd(0x08);
	lcd_cmd(0x0D);
	lcd_cmd(0x06);
	lcd_cmd(0x02);	/* home */
	/* wait > 3ms */
	Delay_Us(30);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -