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

📄 12864final.c.bak

📁 基于aduc834单片机的温度采集系统
💻 BAK
字号:
/*************************************************
*COMPANY    :    北斗星工业化学研究所

*NAME       :    12864液晶驱动源文件

*AUTHOR     :    王敬明

*FUNCTIONG  :    显示汉字和英文字母及数字

*ADD        :    驱动芯片HD16202

*VERSION    :    V1.0

***************************************************/
#include<ADI/ADuC834.h> 
#include"ziku.h" 

/***************宏定义及位定义*********************/
#define busy 0x80
#define uchar unsigned char
#define uint unsigned int
#define LCD_DATA P0
void LCD_Clr();
sbit LCD_RS=P2^3;   
sbit LCD_RW=P2^4;       
sbit LCD_EN=P2^5; 
sbit LCD_CSA=P2^6;
sbit LCD_CSB=P2^7;
sbit LCD_RST=P2^2;

//void delay(uint t)
//{
//	uint i,j;
//	for(i=0;i<t;i++)
//	for(j=0;j<10;j++);
//}

/***************AD转换器初始化*******************/
void ADC_Init(void)
{
	SF = 0xFF;     //最慢的转换速度效果最好
	ADC0CON = 0x0F;//一通道,单极性,内部参考电源,输入范围0~2.56V
	ADCMODE = 0x23;//连续转换
}

/***************读液晶状态字*********************/
unsigned char ReadLCDStatus(void) 
{ 
 LCD_DATA = 0xFF;  
 LCD_RS = 0; 
 LCD_RW = 1; 
 LCD_EN = 0; 
 LCD_EN = 0; 
 LCD_EN = 1;
 while (LCD_DATA & busy); //检测忙信号 
// delay(1); 
 LCD_EN = 0; 
 return(P0); 
} 

/*****************写液晶命令*********************/
void WriteLCD_Command(uchar Command)     
{
	ReadLCDStatus ();		
   	LCD_RS = 0;       
  	LCD_RW = 0;       
  	LCD_DATA = Command; 	
  	LCD_EN = 1;		
//  	delay(1);
  	LCD_EN = 0;
}

/*****************写液晶数据*********************/
void WriteLCD_Data(unsigned char Data)			
{                        
  ReadLCDStatus(); 
  LCD_RS = 1; 
  LCD_RW = 0; 
  LCD_DATA = Data;
  LCD_EN = 1; 
//  delay(1);
	LCD_EN=0;
}

/*****************初始化液晶*********************/
void LCD_Init()     
{
	WriteLCD_Command(0x3E);
	WriteLCD_Command(0xC0);
	WriteLCD_Command(0x3F);
	LCD_Clr();
	LCD_CSB=0;
	LCD_CSA=1;
}

/*****************显示汉字数据*******************/
/************Page0~7、Rom0~63、汉字数组**********/
void LCD_Display_Word(unsigned char Page,unsigned char Rom,unsigned char *Data)
{
	unsigned char i;
	if(Rom>63)
	{
		LCD_CSB=1;
	  LCD_CSA=0;
	}
	else
	{
		LCD_CSB=0;
	  LCD_CSA=1;
	}
	if((LCD_CSA==1)&&(LCD_CSB==0))
	{
	  WriteLCD_Command(0xB8+Page);//页地址
	  WriteLCD_Command(0x40+Rom);//列地址
	  for(i=0;i<16;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
    WriteLCD_Command(0xB8+Page+1);//页地址+1
    WriteLCD_Command(0x40+Rom);//列地址
    for(i=16;i<32;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
  }
  if((LCD_CSA==0)&&(LCD_CSB==1))
  {
  	WriteLCD_Command(0xB8+Page);//页地址
	  WriteLCD_Command(0x40+(Rom-64));//列地址
	  for(i=0;i<16;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
    WriteLCD_Command(0xB8+Page+1);//页地址+1
    WriteLCD_Command(0x40+(Rom-64));//列地址
    for(i=16;i<32;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
  }
}

/*****************显示字符数据*******************/
void LCD_Display_Eng(unsigned char Page,unsigned char Rom,unsigned char *Data)
{//页0~7、列0~63、汉字数组
	unsigned char i;
	if(Rom>63)
	{
		LCD_CSB=1;
	  LCD_CSA=0;
	}
	else
	{
		LCD_CSB=0;
	  LCD_CSA=1;
	}
	if((LCD_CSA==1)&&(LCD_CSB==0))
	{
	  WriteLCD_Command(0xB8+Page);//页地址
	  WriteLCD_Command(0x40+Rom);//列地址
	  for(i=0;i<8;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
    WriteLCD_Command(0xB8+Page+1);//页地址+1
    WriteLCD_Command(0x40+Rom);//列地址
    for(i=8;i<16;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
  }
  if((LCD_CSA==0)&&(LCD_CSB==1))
  {
  	WriteLCD_Command(0xB8+Page);//页地址
	  WriteLCD_Command(0x40+(Rom-64));//列地址
	  for(i=0;i<8;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
    WriteLCD_Command(0xB8+Page+1);//页地址+1
    WriteLCD_Command(0x40+(Rom-64));//列地址
    for(i=8;i<16;i++)
	  {
	  WriteLCD_Data(Data[i]);
    }
  }
}

/********************清屏幕**********************/
void LCD_Clr()      
{
  unsigned char j,i;
	WriteLCD_Command(0xB8);
	WriteLCD_Command(0x40);
	for(i=0;i<8;i++)
	{
	  WriteLCD_Command(0xB8+i);
	  WriteLCD_Command(0x40);
		for(j=0;j<128;j++)
	  {
	    WriteLCD_Data(0x00);
	  }
	}
}

/********************显示文档*********************/
void Display_Text(void)
{
  LCD_Display_Word(0,16,dis1); //北
  LCD_Display_Word(0,32,dis2); //斗
  LCD_Display_Word(0,48,dis3); //星
  LCD_Display_Word(0,64,dis4); //工
  LCD_Display_Word(0,80,dis5); //化
  LCD_Display_Word(0,96,dis6); //所
  LCD_Display_Eng(2,32,dis7);  //b
  LCD_Display_Eng(2,40,dis8);  //i
  LCD_Display_Eng(2,48,dis9);  //g
  LCD_Display_Eng(2,56,dis10); //-
  LCD_Display_Eng(2,64,dis11); //d
  LCD_Display_Eng(2,72,dis12); //i
  LCD_Display_Eng(2,80,dis13); //p
  LCD_Display_Eng(2,88,dis14); //p
  LCD_Display_Eng(2,96,dis15); //e
  LCD_Display_Eng(2,104,dis16); //r
  LCD_Display_Eng(4,48,dis17); //1
  LCD_Display_Eng(4,56,dis18); //2
  LCD_Display_Eng(4,64,dis19); //8
  LCD_Display_Eng(4,72,dis20); //6
  LCD_Display_Eng(4,80,dis21); //4
  LCD_Display_Word(6,48,dis22);//王
  LCD_Display_Word(6,64,dis23);//敬
  LCD_Display_Word(6,80,dis24);//明
}

/******************主体函数**********************/
void main()
{
//  LCD_RST = 0;
//  delay(5);
//  LCD_RST = 1;
	LCD_Init();     
//	Display_Text();
  while(1)
  {}
}

⌨️ 快捷键说明

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