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

📄 12864_serial.c

📁 AD9850.rar
💻 C
字号:


/******************************************************/ 
#include<reg52.h>
#include <intrins.h>
#include"12864_serial.h"





#define uint unsigned int 
#define uchar unsigned char
unsigned char ChangeAddress(unsigned char StartAddress);
void WriteLCD(unsigned char StartAddress,unsigned char Charactors[]);





void delay_1ms(uint x) 
{ 
uint j; 
uchar i; 
for(j=0;j<x;j++) 
{ 
for(i=0;i<120;i++); 
} 
}



void send_command(uchar command_data) 
{ 
uchar i; 
uchar i_data,temp_data1,temp_data2; 
i_data=0xf8; 
delay_1ms(10);
cs=1; 
sclk=0; 
for(i=0;i<8;i++) 
{ 
sid=(bit)(i_data&0x80); 
sclk=0; 
sclk=1; 
i_data=i_data<<1; 
} 
i_data=command_data; 
i_data&=0xf0; 
for(i=0;i<8;i++) 
{ 
sid=(bit)(i_data&0x80); 
sclk=0; 
sclk=1; 
i_data=i_data<<1; 
} 
i_data=command_data; 
temp_data1=i_data&0xf0; 
temp_data2=i_data&0x0f; 
temp_data1>>=4; 
temp_data2<<=4; 
i_data=temp_data1|temp_data2; 
i_data&=0xf0; 
for(i=0;i<8;i++) 
{ 
sid=(bit)(i_data&0x80); 
sclk=0; 
sclk=1; 
i_data=i_data<<1; 
} 
cs=0; 
} 

void send_data(uchar command_data) 
{ 
uchar i; 
uchar i_data,temp_data1,temp_data2; 
i_data=0xfa; 
delay_1ms(10); 
cs=1; 
for(i=0;i<8;i++) 
{ 
sid=(bit)(i_data&0x80); 
sclk=0; 
sclk=1; 
i_data=i_data<<1; 
} 
i_data=command_data; 
i_data&=0xf0; 
for(i=0;i<8;i++) 
{ 
sid=(bit)(i_data&0x80); 
sclk=0; 
sclk=1; 
i_data=i_data<<1; 
} 
i_data=command_data; 
temp_data1=i_data&0xf0; 
temp_data2=i_data&0x0f; 
temp_data1>>=4; 
temp_data2<<=4; 
i_data=temp_data1|temp_data2; 
i_data&=0xf0; 
for(i=0;i<8;i++) 
{ 
sid=(bit)(i_data&0x80); 
sclk=0; 
sclk=1; 
i_data=i_data<<1; 
} 
cs=0; 
}



void lcd_init() 
{ 
uchar command_data; 
//psb=0;
delay_1ms(100); 
command_data=0x30; 
send_command(command_data); /*功能设置:一次送8位数据,基本指令集*/ 
command_data=0x04; 
send_command(command_data); /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/ 
command_data=0x0c; 
send_command(command_data); /*显示设定:开显示,不显示显示光标,当前显示位不反白闪动*/ 
command_data=0x01; 
send_command(command_data); /*清DDRAM*/ 
command_data=0x02; 
send_command(command_data); /*DDRAM地址归位*/ 
command_data=0x80; 
send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/ 
}

void  welcome()
 { uchar i,j;
       send_command(0x01);
	   delay_1ms(50);
 	   WriteLCD(0x82,"欢迎使用");
	   WriteLCD(0x92,"Welcome ");
	   WriteLCD(0x89,"Waiting.");
	   
	  for(j=0;j<=1;j++)
	   {
	   send_command(0x8d);
	   send_data(0x20);
	   send_data(0x20);
	   send_data(0x20);
	   send_data(0x20);
	   send_data(0x20);
	   send_command(0x8d);
	   for(i=0;i<=4;i++)
	      {
		    send_data(0x2e);
			delay_1ms(1000);
		  }
		}
 }

void WriteLCD(unsigned char StartAddress,unsigned char Charactors[])
 { 
  unsigned char *i=Charactors;	  //字符串的首地址
	send_command(StartAddress);
		while(*i)						          //判断字符串结尾,*i为0代表结束
		{
			send_data(*i);
			i++; 
			if(*i=='\0')
			break;
			send_data(*i);
			i++;
			StartAddress=ChangeAddress(StartAddress);
		}
} 

unsigned char ChangeAddress(unsigned char StartAddress)
{
	switch(StartAddress)
	{
		case 0x87:send_command(0x90);StartAddress=0x90;break;
		case 0x8F:send_command(0x98);StartAddress=0x98;break;
		case 0x97:send_command(0x88);StartAddress=0x88;break;
		default:StartAddress+=1;
	}
	return StartAddress;
}

⌨️ 快捷键说明

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