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

📄 显示子程序.c

📁 编写的lcd c程序
💻 C
字号:
#include <reg51.h>     //包括一个52标准内核的头文件
#include <intrins.h>
#define uchar unsigned char //定义一下方便使用
#define uint  unsigned int
uchar xdata *Lcd_addr;  	   /*定义Lcd的命令地址指针*/
uchar xdata *Lcd_data;         /*定义Lcd的数据地址指针*/
sbit K1= P1^0;	   //按键K1
sbit K2= P1^1;	   //按键K2
uchar keynumber = 0x00;
uchar year = 0x08;
uchar month = 0x0b;
uchar day = 0x0b;
uchar hour = 0x00;
uchar minute = 0x00;
uchar second = 0x00;
uchar yearh;
uchar yearl;
uchar monthh;
uchar monthl;
uchar dayh;
uchar dayl;
uchar hourh;
uchar hourl;
uchar minuteh;
uchar minutel;
uchar secondh;
uchar secondl;
char code Numcode[11][16]={{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},	   /*--  文字:  0  --*/
					  		{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},	   /*--  文字:  1  --*/
					  		{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},	   /*--  文字:  2  --*/
					 	 	{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},	   /*--  文字:  3  --*/
					  		{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},	   /*--  文字:  4  --*/
					  		{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},	   /*--  文字:  5  --*/
					  		{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},	   /*--  文字:  6  --*/
					  		{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},	   /*--  文字:  7  --*/
					  		{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},	   /*--  文字:  8  --*/
					  		{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},	   /*--  文字:  9  --*/
							{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00}      /*--  文字:  :  --*/
							};

char code Num1code[11][16]={{0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF} ,
                             {0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF},      
							 {0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF},
							 {0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF}
                            };

char code HZcode[21][32]={{0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},/*--  文字:  年  --*/
 						   {0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00},/*--  文字:  月  --*/
						   {0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00},/*--  文字:  日  --*/
						   {0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x01,0x00,0x11,0x00,0x1F,0xFC,0x21,0x00,0x21,0x00,0x4F,0xF8,0x01,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00},/*--  文字:  星  --*/
						   {0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x3E,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,0x22,0x44,0xFF,0x7C,0x00,0x44,0x24,0x84,0x22,0x84,0x43,0x14,0x81,0x08,0x00,0x00},/*--  文字:  期  --*/
						   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*--  文字:  一  --*/
						   {0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*--  文字:  二  --*/
						   {0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00},/*--  文字:  三  --*/
						   {0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00},/*--  文字:  四  --*/
						   {0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80,0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00},/*--  文字:  六  --*/
						   {0x02,0x00,0x03,0x00,0x02,0x04,0x3F,0xFE,0x22,0x04,0x45,0x08,0x05,0x10,0x0C,0xB8,0x18,0xA0,0x28,0x40,0x48,0x20,0x88,0x30,0x09,0x18,0x0A,0x0E,0x1C,0x08,0x08,0x00},/*--  文字:  阴  --*/
						   {0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00},/*--  文字:  五  --*/
						   {0x00,0x00,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x2F,0xF8,0x20,0x88,0x20,0x88,0x20,0x88,0x21,0x08,0x21,0x08,0x22,0x08,0x42,0x08,0x44,0x38,0x88,0x10,0x00,0x00},/*--  文字:  历  --*/
						   {0x00,0x00,0xFF,0xFE,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x07,0xF8,0x0C,0x08,0x0C,0x08,0x14,0x08,0x24,0x08,0x44,0x08,0x84,0x08,0x07,0xF8,0x04,0x08,0x00,0x00},/*--  文字:  石  --*/
						   {0x02,0x00,0x01,0x00,0x3F,0xFE,0x40,0x04,0x5F,0xE8,0x01,0x00,0x02,0x00,0x0F,0x20,0x72,0xB0,0x04,0xC0,0x19,0xC0,0x66,0xB0,0x18,0x8E,0x60,0x84,0x05,0x00,0x02,0x00},/*--  文字:  家  --*/
						   {0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x2F,0xFC,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x40,0x80,0x5F,0xFE,0x80,0x00,0x00,0x00},/*--  文字:  庄  --*/
						   {0x10,0x00,0x08,0x0E,0x7F,0x70,0x22,0x40,0x14,0x40,0xFF,0x7E,0x08,0x48,0x08,0x48,0xFF,0x48,0x08,0x48,0x2C,0x48,0x2A,0x88,0x4A,0x88,0x89,0x08,0x2A,0x08,0x10,0x08},/*--  文字:  新  --*/
						   {0x02,0x00,0x01,0x00,0x00,0x80,0xFF,0xFE,0x02,0x00,0x02,0x00,0x03,0xF0,0x02,0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x90,0xC0,0x60,0x00,0x00},/*--  文字:  方  --*/
						   {0x02,0x00,0x04,0x00,0x3F,0xFC,0x20,0x04,0x20,0x04,0x27,0xE4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x27,0xE4,0x24,0x24,0x20,0x04,0x20,0x14,0x20,0x08,0x00,0x00},/*--  文字:  向  --*/
						   {0x06,0x08,0x78,0x88,0x08,0x48,0x08,0x48,0xFE,0x08,0x18,0x88,0x1C,0x48,0x2A,0x48,0x28,0x0E,0x48,0x78,0x8B,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*--  文字:  科  --*/
						   {0x10,0x20,0x10,0x20,0x10,0x20,0xFD,0xFE,0x10,0x20,0x14,0x20,0x19,0xFC,0x31,0x08,0xD0,0x88,0x10,0x90,0x10,0x60,0x10,0x60,0x10,0x90,0x11,0x0E,0x56,0x04,0x20,0x00} /*--  文字:  技  --*/
                		   };


void check_state()
{
	uchar data1;
	data1=*Lcd_addr;		
	data1 = data1&0x03;
	while(data1!=0x03)
	{
	 	data1=*Lcd_addr;
		data1 = data1&0x03;
	}
}

void check_autowrite()
{
   	uchar data1;
   	data1=*Lcd_addr;
	data1 = data1&0x08;
	while(data1!=0x08)
	{
	 	data1=*Lcd_addr;
		data1 = data1&0x08;
	}
}

void set_addr(uchar i,uchar j)
{
	check_state();
	*Lcd_data = i;
	check_state();
	*Lcd_data = j;
	check_state();
	*Lcd_addr = 0x24;
}

void Lcd_int()
{
	Lcd_addr = 0x89;
	Lcd_data = 0x88;
	check_state();
	*Lcd_data = 0x00;
    check_state();
	*Lcd_data = 0x00;
	check_state();
	*Lcd_addr = 0x42;
	check_state();
	*Lcd_data = 0x1e;
    check_state();
	*Lcd_data = 0x00;
	check_state();
	*Lcd_addr = 0x43;
	check_state();
    *Lcd_addr = 0x80;
	check_state();
    *Lcd_addr = 0x98;
}

void Lcd_cls()
{
	uint i;
	Lcd_addr = 0x89;
	Lcd_data = 0x88;
	check_state();
	*Lcd_data = 0x00;
	check_state();
	*Lcd_data = 0x00;
	check_state();
	*Lcd_addr = 0x24;
	check_state();
	*Lcd_addr = 0xb0;
    for(i=0;i<0x780;i++)
	{
		check_autowrite();		 
		*Lcd_data = 0x00;	
	}
	check_state();
	*Lcd_addr = 0xb2;
}

void Lcd_setside()
{
	uint j;
	uint address;
	uchar address_h;
	uchar address_l;
	Lcd_addr = 0x89;
	Lcd_data = 0x88;
	set_addr(0x00,0x00);
	check_state();
	*Lcd_addr = 0xb0;			
	for(j=0;j<0x1e;j++)
	{
		check_autowrite();		 
		*Lcd_data = 0xff;
	}
	check_state();
	*Lcd_addr = 0xb2;
	for(j=0;j<0x3e;j++)
	{
		address=0x1e+0x1e*j;
		address_l=address&0xff;
		address=address>>8;
		address_h=address&0xff;
		set_addr(address_l,address_h);
		check_state();
		*Lcd_addr = 0xb0;
		check_autowrite();		 
		*Lcd_data = 0x80;
		check_state();
		*Lcd_addr = 0xb2;
	}
	for(j=0;j<0x3e;j++)
	{
		address=0x3b+0x1e*j;
		address_l=address&0xff;
		address=address>>8;
		address_h=address&0xff;
		set_addr(address_l,address_h);
		check_state();
		*Lcd_addr = 0xb0;
		check_autowrite();		 
		*Lcd_data = 0x01;
		check_state();
		*Lcd_addr = 0xb2;
	}	
	set_addr(0x62,0x07);
	check_state();
	*Lcd_addr = 0xb0;			
	for(j=0;j<0x1e;j++)
	{
		check_autowrite();		 
		*Lcd_data = 0xff;
	}
	check_state();
	*Lcd_addr = 0xb2;			
}

Lcd_writenumber(uchar lin,uchar col,uchar num)
{
	uchar j;
	uchar *address;
	uchar show_h;
	uchar show_l;
	uint firstaddr;
	address=&Numcode[num][0];
	for(j=0;j<0x10;j++)
	{												                            
		firstaddr=(lin-1+j)*0x1e+col;
		show_l=firstaddr&0xff;
		firstaddr=firstaddr>>8;
		show_h=firstaddr&0xff;
		set_addr(show_l,show_h); 
		address=&Numcode[num][0];
		check_state();
		*Lcd_addr = 0xb0;	
		check_autowrite();			
		*Lcd_data = *(address+j);
		check_state();
		*Lcd_addr = 0xb2;
	 }
    
}

Lcd_writechina(uchar lin,uchar col,uchar num)
{
	uchar j;
	uchar *address;
	uchar show_h;
	uchar show_l;
	uint firstaddr;
	address=&HZcode[num][0];
	for(j=0;j<0x10;j++)
	{
		firstaddr=(lin-1+j)*0x1e+col;
		show_l=firstaddr&0xff;
		firstaddr=firstaddr>>8;
		show_h=firstaddr&0xff;
		set_addr(show_l,show_h); 
		address=&HZcode[num][0];
		check_state();
		*Lcd_addr = 0xb0;	
		check_autowrite();			
		*Lcd_data = *(address+2*j);
		*Lcd_data = *(address+2*j+1);
		check_state();
		*Lcd_addr = 0xb2;
	 }
    
}

Lcd_writenum1ber(uchar lin,uchar col,uchar num)
{
	uchar j;
	uchar *address;
	uchar show_h;
	uchar show_l;
	uint firstaddr;
	address=&Num1code[num][0];
	for(j=0;j<0x10;j++)
	{												                            
		firstaddr=(lin-1+j)*0x1e+col;
		show_l=firstaddr&0xff;
		firstaddr=firstaddr>>8;
		show_h=firstaddr&0xff;
		set_addr(show_l,show_h); 
		address=&Num1code[num][0];
		check_state();
		*Lcd_addr = 0xb0;	
		check_autowrite();			
		*Lcd_data = *(address+j);
		check_state();
		*Lcd_addr = 0xb2;
	 }   
}

delay()
{
	uchar i,j;
	for(i = 0;i < 50;i ++)
	{
		for(j =0 ;j < 50;j ++);
	}
}

void dealkey1()
{
	if(K1 == 0)
	{
		delay();
		if(K1 == 0)
		{
			while(K1 == 0);
			keynumber++;
			if(keynumber == 7)
			{
				keynumber = 0;
			}
		}
	}
}

	void choicedata()
	{
		switch(keynumber)
		{
		case(1): {
			      	Lcd_writenum1ber(0x1c,0x08,secondh);
					Lcd_writenum1ber(0x1c,0x09,secondl);
					if(K2 == 0)
					{
						delay();
						if(K2 == 0)
						{
							while(K2 == 0);
							second++;
							if(second== 60)
							second = 0;
						}	
					}
				  }
			      break;
		case(2): {
					Lcd_writenum1ber(0x1c,0x05,minuteh);
				  	Lcd_writenum1ber(0x1c,0x06,minutel);
					if(K2 == 0)
					{
						delay();
						if(K2 == 0)
						{
							while(K2 == 0) ;
							minute ++;
							if(minute == 60)
							minute = 0;
						}
					}
				  }
			      break;
		case(3): {
				  	Lcd_writenum1ber(0x1c,0x02,hourh);
					Lcd_writenum1ber(0x1c,0x03,hourl);
					if(K2 == 0)
					{
						delay();
						if(K2 == 0)
						{
							while(K2 == 0) ;
							hour ++;
							if(hour == 24)
							hour = 0;
						}
					}
					
				  }
			      break;
		case(4): {
				  	Lcd_writenum1ber(0x09,0x0c,dayh);
				  	Lcd_writenum1ber(0x09,0x0d,dayl);
					if(K2 == 0)
					{
						delay();
						if(K2 == 0)
						{
							while(K2 == 0) ;
							day ++;
							if(day == 32)
							day = 0;
						}
					}
				  }
			      break;
	    case(5): {
				  	Lcd_writenum1ber(0x09,0x08,monthh);
				  	Lcd_writenum1ber(0x09,0x09,monthl);
					if(K2 == 0)
					{
						delay();
						if(K2 == 0)
						{
							while(K2 == 0) ;
							month ++;
							if(month == 13)
							month = 0;
						}
					}
				
				  }
			      break;
		case(6): {
				  	Lcd_writenum1ber(0x09,0x04,yearh);
				  	Lcd_writenum1ber(0x09,0x05,yearl);
					if(K2 == 0)
					{
						delay();
						if(K2 == 0)
						{
							while(K2 == 0) ;
							year ++;
							if(year == 100)
							year = 0;
						}
					}
				
				  }
			      break;
		default: break;

		}
	}

void dealdata()
{
	yearh = year/10;
	yearl = year%10;
	monthh = month/10;
	monthl = month%10;
	dayh = day/10;
	dayl = day%10;
	hourh = hour/10;
	hourl = hour%10;
	minuteh = minute/10;
	minutel = minute%10;
	secondh = second/10;
	secondl = second%10;
}


main()
{
	Lcd_int();
	Lcd_cls();
	while(1)
	{
		Lcd_setside();
		dealdata();
	    Lcd_writenumber(0x09,0x02,0x02);
		Lcd_writenumber(0x09,0x03,0x00);
		Lcd_writenumber(0x09,0x04,yearh);
		Lcd_writenumber(0x09,0x05,yearl);
		Lcd_writechina(0x09,0x06,0x00);
		Lcd_writenumber(0x09,0x08,monthh);
		Lcd_writenumber(0x09,0x09,monthl);
		Lcd_writechina(0x09,0x0a,0x01);
		Lcd_writenumber(0x09,0x0c,dayh);
		Lcd_writenumber(0x09,0x0d,dayl);
		Lcd_writechina(0x09,0x0e,0x02);
	    Lcd_writenumber(0x1c,0x02,hourh);
		Lcd_writenumber(0x1c,0x03,hourl);
		Lcd_writenumber(0x1c,0x04,0x0a);
		Lcd_writenumber(0x1c,0x05,minuteh);
		Lcd_writenumber(0x1c,0x06,minutel);
		Lcd_writenumber(0x1c,0x07,0x0a);
		Lcd_writenumber(0x1c,0x08,secondh);
		Lcd_writenumber(0x1c,0x09,secondl);
		Lcd_writechina(0x1c,0x0b,0x03);
		Lcd_writechina(0x1c,0x0d,0x04);
		Lcd_writechina(0x1c,0x0f,0x05);
		Lcd_writechina(0x2e,0x0c,0x0d);
		Lcd_writechina(0x2e,0x0e,0x0e);
		Lcd_writechina(0x2e,0x10,0x0f);
		Lcd_writechina(0x2e,0x12,0x10);
		Lcd_writechina(0x2e,0x14,0x11);
		Lcd_writechina(0x2e,0x16,0x12);
		Lcd_writechina(0x2e,0x18,0x13);
		Lcd_writechina(0x2e,0x1a,0x14);
	    dealkey1();
		choicedata();	    
	}
}
















⌨️ 快捷键说明

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