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

📄 hd44780.c

📁 AVR单片机的C语言源程序,AVR与SED1520(12232LCD)的驱动程序,可实现时钟液晶显示
💻 C
字号:
#include "iom32.h"
//#include "includes.h"
#define HD44780_C
void lcd_pulse(void)
{
	lcd_set_e();
	delay_nms(1);
	lcd_clear_e();
	delay_nms(1);
}

void lcd_wait(void)
{
	asm("nop");
}

void lcd_send(unsigned char data)      //向LCD写数据
{
	lcd_wait();
	dataport=data;
	lcd_pulse;
}

void clrscr(void)         //清屏
{
	lcd_clear_rs();
	lcd_clear_rw();
	lcd_send(0x01);
	lcd_wait();
}

void gotoz(unsigned char z) //转到LCD内存地址
{
	lcd_clear_rs();
	lcd_clear_rw();
	lcd_send(z|0x80);
}

void gotoxy(unsigned char x,unsigned char y)
{
	gotoz((x)|((y)<<6));
}

void put_char(char c) //输入单个字符
{
	lcd_clear_rw();
	lcd_set_rs();
	lcd_send(c);
}

void outtext(unsigned char * text)      //输出一个字符串
{
	unsigned char i;
	for(i=0;text[i]&&i<16;i++)
	put_char(text[i]);
}

void initgraph(void)              //初始化显示
{
	dirport_data=0xFF;
}

void LCD_WriteData(unsigned char Data)
{
	char temp;
	LCD_Busy();
	LCD_DIR_PORT=0xFF;
	temp=LCD_0P_PORT;
	temp=temp&BIT3;
	LCD_OP_PORT=(Data&0xf0)|temp;
	lcd_clear_rw();         //Set LCD to write
	lcd_set_rs();
	lcd_set_e();
	asm("nop");
	asm("nop");
	lcd_clear_e();
	LCD_OP_PORT=(Data<<4)|temp;
	lcd_clear_rw();
	lcd_set_rs();
	lcd_set_e();
	asm("nop");
	asm("nop");
	lcd_clear_e();
}

//************************************************//
//****初始化液晶**********************************//
//************************************************//
void Init_LCD(void)
{
	LCD_INIT();
	LCD_WriteControl(LCD_FUNCTION_SET);
	LCD_WriteControl(LCD_OFF);
	LCD_WriteControl(LCD_CLEAR);
	LCD_WriteControl(LCD_MODE_SET);
	LCD_WriteControl(LCD_0N);
	LCD_WriteControl(LCD_HOME);
	//LCD_WriteControl(0x90);
}

//************************************************//
//*************清屏*******************************//
//************************************************//
void LCD_Clear(void)
{
	LCD_WriteControl(0x01);
}

//************************************************//
//*************移动光标到0行0列*******************//
//************************************************//
void LCD_Home(void)
{
	LCD_WriteControl(0x02);
}

//************************************************//
//**************显示字符,在当前光标处************//
//************************************************//
void LCD_DisplayCharacter(char Cchar)
{
	LCD_WriteData(Cchar);
}

//************************************************//
//*****在FLASH中,在指定的行和列显示一个字符串****//
//************************************************//
void LCD_DisplayString_F(char row,char column,unsigned char __flash * string)
{
	LCD_Cursor(row,column);
	while(* string)
	{
		LCD_DisplayCharacter(* string++);
	}
}

//************************************************//
//*****在RAM中,在指定的行和列显示一个字符串******//
//************************************************//
void LCD_DisplayString(char row,char column,unsigned char * string)
{
	LCD_Cursor(row,column);
	while(* string)
	{
		LCD_DisplayCharacter(* string++);
	}
}

//*************************************************//
//***********定位行和列的光标**********************//
//*************************************************//
void LCD_Cursor(char row,char column)
{
	switch(row)
	{
		case 1:
			LCD_WriteControl(0x80+column-1);
			break;
		case 2:
			LCD_WriteControl(0xc0+column-1);
			break;
		case 3:
			LCD_WriteControl(0x94+column-1);
			break;
		case 4:
			LCD_WriteControl(0xd4+column-1);
			break;
		default:
			break;
	}
}

//**************************************************//
//***********打开光标*******************************//
//**************************************************//
void LCD_Cursor_On(void)
{
	LCD_WriteControl(LCD_CURS_ON);
}

//**************************************************//
//***********关闭光标*******************************//
//**************************************************//
void LCD_Cursor_Off(void)
{
	LCD_WriteControl(LCD_0N);
}

//**************************************************//
//**************关闭LCD*****************************//
//**************************************************//
void LCD_Display_Off(void)
{
	LCD_WriteControl(LCD_OFF);
}

//**************************************************//
//**************打开LCD*****************************//
//**************************************************//
void LCD_Display_On(void)
{
	LCD_WriteControl(LCD_ON);
}

⌨️ 快捷键说明

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