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

📄 j.c

📁 用avr单片机实现的12864驱动程序
💻 C
字号:
/*	M16驱动LCM128645,液晶芯片ST7920

	2005.4.10 于桂林
*/
#include "j.h"
#include <delay.h>

#define light_on	cbi(PORTB, 2);
#define light_off	sbi(PORTB, 2);

void clear_all(void);
//	显示用指针变量
char *line1;
char *line2;
char *line3;
char *line4;


void cpu_init(void)
{
//----------- IO端口初始化 START -----------------
	PORTA = 0x0;
	DDRA = 0x0;
	
	PORTB = 0xff;
	DDRB = 0xff;

	PORTC = 0x0;
	DDRC = 0x0;

	DDRD = 0x0;		//	D口配置为输入
	PORTD = 0xff;	//	使能上拉电阻
//----------- IO端口初始化 END -----------------

	wdt_enable(1);								//	看门狗使能  30MS
	ACSR = 0x80;
}


/*****************************************
液晶发送子程序(串行)
输入数据:要发送的8位数据
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void lcm_out(char a)
{
	char i,d;
	for(i=0;i<8;i++)
	{
		cbi(PORTB,1);
		d=a&0x80;
		if(d)
			sbi(PORTB,0);
		else
			cbi(PORTB,0);
		a<<=1;
		sbi(PORTB,1);
	}
}


/*****************************************
液晶写控制字程序
输入数据:要写入的8位数据
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void wr_com(uchar a)
{
	uchar s,i;
	s=a&0xf0;
	lcm_out(0xf8);
	lcm_out(s);
	s=a&0x0f;
	s<<=4;
	lcm_out(s);
	
	for( i=0;i<254;i++ )		//	延时
	{
		asm("nop");
	}
}
/*****************************************
液晶写数据字程序
输入数据:要写入的8位数据
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void wr_date(uchar a)
{
	uchar s,i;
	s=a&0xf0;
	lcm_out(0xfa);
	lcm_out(s);
	s=a&0x0f;
	s<<=4;
	lcm_out(s);
	
	for( i=0;i<254;i++ )	//	延时
	{
		asm("nop");
	}
}
/*****************************************
液晶初始化程序
输入数据:无
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void lcm_init(void)
{
	wr_com(0x30);
	delay(1,8000);
	wr_com(0x30);
	delay(1,8000);
	wr_com(0x0c);
	delay(1,8000);
	wr_com(0x01);			//	清屏
	delay(10,8000);			//	清屏
	wr_com(0x60);
	delay(1,8000);
}

void clear_all(void)
{
	wr_com(0x01);			//	清屏
	delay(1,8000);			//	清屏
}

//----------- 整行显示函数 START -----------------
void display(void)
{
	wr_com(0x80);
	while( *line1!=0x00 )
	{
		wr_date(*line1);
		line1++;
	}

	wr_com(0x90);
	while( *line2!=0x00 )
	{
		wr_date(*line2);
		line2++;
	}

	wr_com(0x88);
	while( *line3!=0x00 )
	{
		wr_date(*line3);
		line3++;
	}

	wr_com(0x98);
	while( *line4!=0x00 )
	{
		wr_date(*line4);
		line4++;
	}
	line1 = "";
    line2 = "";
    line3 = "";
    line4 = "";
}
//----------- 整行显示函数 END -----------------


//----------- 系统初始化函数 START -----------------
void system_init(void)
{
	line1 = "";
    line2 = "";
    line3 = "";
    line4 = "";
    light_on
	lcm_init();
}
//----------- 系统初始化函数 END -----------------


int main(void)
{
	delay(200,8000);
	cpu_init();
	system_init();
	while(1)
	{
		line1 = "    欢迎光临    ";
		line2 = "";
		line3 = "    我们的AVR   ";
		line4 = " www.ouravr.com ";
		display();

		delay(800,8000);
	}
}

⌨️ 快捷键说明

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