📄 显示子程序.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 + -