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

📄 main.c

📁 电子万年历程序 具有温度显示功能 时间调节功能
💻 C
字号:
#include "reg52.h"
sbit en=P2^5;
sbit rs=P2^7;
sbit rw=P2^6;

#define uchar unsigned char
#define uint unsigned int

/************函数声明*********************************************/

void lcd_12864_16x16(unsigned char x,unsigned char y,unsigned char *w);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)  ;
void PHO_DISP(unsigned char *s) ;
void  clearlcd12864();
void  lcd12864init();


/*******************开机图片LOGO************************************/

code unsigned char BMP1[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0xC0, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0xE0, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0E, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x1C, 0x00, 0x90, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x8F, 0x00, 0x00, 
0x00, 0x00, 0x01, 0xE0, 0x00, 0x90, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xDF, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x20, 0x00, 0x91, 0x02, 0x44, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xF7, 0x80, 0x00, 
0x00, 0x00, 0x00, 0x20, 0x04, 0x93, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x77, 0x84, 0x00, 
0x00, 0x00, 0x00, 0x20, 0x02, 0x94, 0x02, 0x10, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x2B, 0xCC, 0x00, 
0x00, 0x00, 0x00, 0x20, 0x02, 0x98, 0x02, 0x28, 0x00, 0x00, 0x00, 0xC3, 0xF0, 0x01, 0xCE, 0x00, 
0x00, 0x00, 0x00, 0x20, 0x00, 0x90, 0x02, 0x44, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0x05, 0xFE, 0x00, 
0x00, 0x00, 0x00, 0x3F, 0x80, 0x90, 0x02, 0x82, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xDE, 0x00, 
0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x01, 0xFB, 0x00, 0x00, 0xCE, 0x20, 
0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x02, 0xFF, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x0E, 0xE0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1B, 0xC0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0x80, 
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x03, 0x80, 
0x00, 0x04, 0x11, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x00, 
0x00, 0x02, 0x11, 0x07, 0x04, 0x03, 0xE0, 0x02, 0x08, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x00, 
0x00, 0x00, 0x92, 0x09, 0x00, 0x00, 0x40, 0x02, 0x06, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 
0x00, 0x00, 0x50, 0x0A, 0x07, 0xC0, 0x88, 0x04, 0xB8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0E, 0x00, 
0x00, 0x08, 0x3E, 0x0A, 0xF8, 0x01, 0xF0, 0x09, 0x10, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 
0x00, 0x04, 0x42, 0x09, 0x08, 0x00, 0x20, 0x0E, 0x24, 0x00, 0x00, 0x38, 0x00, 0x00, 0x1C, 0x00, 
0x00, 0x01, 0x7A, 0x0D, 0x1E, 0x00, 0x44, 0x02, 0x5E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 
0x00, 0x01, 0x42, 0x0B, 0x12, 0x00, 0x9E, 0x05, 0x6A, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 
0x00, 0x02, 0x7A, 0x08, 0x22, 0x03, 0xE0, 0x0E, 0x28, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 
0x00, 0x04, 0x42, 0x08, 0x42, 0x00, 0x24, 0x01, 0x28, 0x00, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 
0x00, 0x0C, 0x42, 0x08, 0x84, 0x02, 0x22, 0x06, 0x48, 0x40, 0x00, 0x07, 0xE0, 0x03, 0xC0, 0x00, 
0x00, 0x00, 0x42, 0x0B, 0x14, 0x02, 0x21, 0x18, 0x88, 0x40, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 
0x00, 0x00, 0x46, 0x08, 0x08, 0x04, 0x60, 0x01, 0x07, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC6, 0x83, 0x03, 0xFF, 0x60, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x7F, 0x98, 0xC0, 0xE0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC2, 0x3F, 0x98, 0xC4, 0x60, 
0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC1, 0x9F, 0x98, 0xC0, 0x60, 
0x00, 0x04, 0x00, 0x08, 0x00, 0x80, 0x08, 0x10, 0x00, 0x00, 0x01, 0xC0, 0x4F, 0x88, 0xFC, 0x60, 
0x00, 0x04, 0x00, 0x0F, 0x00, 0x80, 0x04, 0x20, 0x00, 0x00, 0x01, 0xE0, 0x4F, 0x88, 0xCC, 0x60, 
0x00, 0x04, 0x80, 0xF1, 0x01, 0xF8, 0x01, 0xC0, 0x00, 0x80, 0x01, 0xE1, 0xFD, 0x88, 0xC0, 0x60, 
0x00, 0x45, 0x00, 0x80, 0x06, 0x88, 0x00, 0x7C, 0x00, 0x60, 0x01, 0xF1, 0xFF, 0xFF, 0xFF, 0xF0, 
0x00, 0x24, 0x00, 0x12, 0x05, 0xC8, 0x3B, 0xC0, 0x00, 0x10, 0x01, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 
0x00, 0x04, 0x00, 0x92, 0x02, 0x90, 0x08, 0x40, 0xFC, 0x08, 0x01, 0xFC, 0x3F, 0xFD, 0xFF, 0xE0, 
0x00, 0x0A, 0x00, 0x54, 0x03, 0xF0, 0x08, 0x70, 0x00, 0x30, 0x01, 0xFE, 0x11, 0x3E, 0xFF, 0xE0, 
0x00, 0x11, 0x00, 0x28, 0x00, 0x82, 0x09, 0x90, 0x00, 0x40, 0x01, 0xFF, 0x00, 0x9F, 0xFF, 0xE0, 
0x00, 0x20, 0x80, 0x24, 0x00, 0x82, 0x0D, 0x10, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x4F, 0xFF, 0xE0, 
0x00, 0x40, 0x70, 0x42, 0x00, 0x7E, 0x09, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xE0, 0x27, 0xFF, 0xE0, 
0x00, 0x00, 0x01, 0x81, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};	   
/******************************
*延时子程序
******************************/
void delay12864(uint z)
{
	uint x,y;
	for(y=110;y>0;y--)
	for(x=z;x>0;x--);
}

/****************************
*写指令
****************************/
void WriteCommandLCM(uchar com)
{
	rs=0;
	rw=0;
	P0=com;
	delay12864(5);
	en=1;
	delay12864(5);
	en=0;

}
/************************
*写数据
************************/
void WriteDataLCM(uchar date)
{
	rs=1;
	rw=0;
	P0=date;
	delay12864(5);
	en=1;
	delay12864(5);
	en=0;
}

/***********************
**显示图片函数
************************/
void PHO_DISP(unsigned char *s) 
{
unsigned char Page;     //页 地址
unsigned char Col;      //列 地址
unsigned char COUNT1,COUNT2,COUNT3;
COUNT3=0X02; 
Col=0X80; 
for (;COUNT3!=0;COUNT3--) 
{ 
Page=0X80; 
COUNT2=0X20;//32 
for (;COUNT2!=0;COUNT2--) 
{ 
COUNT1=0X10;//16 
WriteCommandLCM(0x34); 
WriteCommandLCM(Page); 
WriteCommandLCM(Col); 
WriteCommandLCM(0x30); 
for (;COUNT1!=0;COUNT1--) 
{ 
WriteDataLCM(*s++); 

} 
Page+=1; 
} 
Col=0X88; 
} 
WriteCommandLCM(0x36);
delay12864(20); 
WriteCommandLCM(0x30);
WriteCommandLCM(0x0C); 
}

//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)  
                                   //x表示列、y 表示行
{
Y &= 0x3;
X &= 0x7;
 switch(Y)
 {
  case 0:
   Y=0x80;break;
  case 1:
   Y=0x90;break;
  case 2:
   Y=0x88;break;
  case 3:
   Y=0x98;break;
  default:break;
 }
WriteCommandLCM(Y+X);
WriteDataLCM(DData);
}



/**************显示汉时字符函数***********************/

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x03;
X &= 0x07;
 switch(Y)
 {
  case 0:
   Y=0x80;break;
  case 1:
   Y=0x90;break;
  case 2:
   Y=0x88;break;
  case 3:
   Y=0x98;break;
  default:break;
 } 
 WriteCommandLCM(Y+X);                    //限制X不能大于15,Y不能大于1
while (DData[ListLength]!='\0') //若到达字串尾则退出,字符长度小于32
  {
WriteDataLCM(DData[ListLength]);

ListLength++;

  }
}

void  clearlcd12864()
{
   WriteCommandLCM(0x01);
}

void  lcd12864init()

{	WriteCommandLCM(0x01);		//清除显示
	WriteCommandLCM(0x02);	    //地址归零
	WriteCommandLCM(0x06);		//进入设定点
	WriteCommandLCM(0x0c);		//显示开关设置
    WriteCommandLCM(0x30);		//功能设定


}	

/*******************  显示16*16汉字********************/

void lcd_12864_16x16(unsigned char x,unsigned char y,unsigned char *w)
{	 unsigned char Page;     //页 地址
unsigned char Col;      //列 地址

    unsigned char shu,ju;

	x&=0x07;
	y&=0x03;
	if(y==0){Page=0x80;Col=x|0x80;}
	if(y==1){Page=0x90;Col=x|0x80;}
	if(y==2){Page=0x80;Col=x|0x88;}
	if(y==3){Page=0x90;Col=x|0x88;}
	shu=0x10;
	for(;shu!=0;shu--)
	{	
    WriteCommandLCM(0x34); 
    WriteCommandLCM(Page); 
    WriteCommandLCM(Col); 
    WriteCommandLCM(0x30); 
	ju=0x02;
	    for(;ju!=0;ju--)
		{
		  WriteDataLCM(*w++); 
		}
	
		Page+=1;
	}
	WriteCommandLCM(0x36); 
    WriteCommandLCM(0x30);
   delay12864(20);
   WriteCommandLCM(0x0c); 
}


void lcd12864main(void)
{
   lcd12864init();
   PHO_DISP(BMP1);

}

void main()
{
	lcd12864main();
	DisplayOneChar(10,10,'你');
	while(1);
}

⌨️ 快捷键说明

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