16X16点阵数字钟问题
小弟最近从网上找到个16*16点陈移动数字钟,想自已制作一个,不知怎样修改才可以显示为自已的姓名.请大家指点下#include "reg51.h"
#include "intrins.h"
typedef unsigned char uint8;
typedef unsigned int uint16;
#define LED_Y P2
#define LCD_DATA 1
#define LCD_COMMAND 0
#define WORDNUU 11
sbit Ser_STB=P2^5;
sbit LED_EN=P2^4;
sbit LCD_RS=P1^5;
sbit LCD_RW=P1^6;
sbit LCD_EN=P1^7;
sbit RTC_SDA=P3^6;
sbit RTC_SCL=P3^5;
sbit RTC_RST=P3^4;
sbit KEY1=P1^0;
sbit KEY2=P1^1;
sbit KEY3=P1^2;
sbit KEY4=P1^3;
sbit DQ=P1^4;
uint8 TEMP_ERR;
#defineLCD_PORT P0
uint8 WORDNUM,WORDNUMBER;
uint8 Temp_Value;
uint8 LCD_NO;
uint16 i1,i2;
uint8 bdata AA;
sbit AA7 = AA^7;
#define READ_SECOND 0x81
#define WRITE_SECOND 0x80
#define READ_MINE 0x83
#define WRITE_MINE 0x82
#define READ_HOUR 0x85
#define WRITE_HOUR 0x84
#define READ_DAY 0x87
#define WRITE_DAY 0x86
#define READ_MONTH 0x89
#define WRITE_MONTH 0x88
#define READ_WEEK 0x8b
#define WRITE_WEEK 0x8a
#define READ_YEAR 0x8d
#define WRITE_YEAR 0x8c
uint8 DATE;
uint8 TIME;
uint8 const code HZ[]=
{
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1*/
{0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBE,0xFB,0x7E,0xF7,0xFE,0xFF,0x80,0x03,0xFC,0x7F,0xFA,0x7F,0xFA,0xBF,0xF6,0xDF,0xEE,0xEF,0xDE,0xF1,0xBE,0xFB,0xFE,0xFF,0xFF,0xFF},/*"宋",0*/
{0xDF,0xFF,0xEE,0xEF,0xEE,0xEF,0x76,0xEF,0xB4,0x03,0xAE,0xEF,0xEE,0xEF,0xEE,0xEF,0xDE,0xEF,0xD0,0x01,0x1E,0xDF,0xDE,0xEF,0xDD,0xF7,0xDD,0xF3,0xDB,0xFB,0xD7,0xFB},/*"洪",1*/
{0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0xBB,0xB9,0xDB,0xB3,0xDB,0xB7,0xEB,0xAF,0xE3,0xAF,0xEB,0x9F,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x00,0x01,0xFF,0xFF,0xFF,0xFF},/*"业",2*/
{0xEF,0xFF,0xEE,0x07,0xEE,0xF7,0x02,0x07,0xEE,0xF7,0xEE,0x07,0xE7,0xFF,0xC8,0x03,0xAF,0xBF,0x6D,0xBF,0xED,0x83,0xED,0xBF,0xE9,0xBF,0xEA,0x3F,0xA7,0x81,0xDF,0xFF},/*"提",3*/
{0xFF,0xFF,0x01,0x03,0xD7,0x7B,0xD7,0x03,0x01,0x7B,0x55,0x03,0x55,0xDF,0x55,0x5F,0x51,0x03,0x3C,0xDF,0x01,0xDF,0x7D,0x03,0x7D,0xDF,0x01,0xDF,0x7E,0x01,0xFF,0xFF},/*"醒",4*/
{0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFD,0x7F,0xFD,0x7F,0xFD,0xBF,0xFB,0xBF,0xFB,0xDF,0xF7,0xEF,0xEF,0xE7,0xDF,0xF1,0xBF,0xFB},/*"大",5*/
{0xFD,0xFF,0xFE,0xFF,0xC0,0x01,0xBF,0xFB,0xA0,0x17,0xFE,0xFF,0xFD,0xFF,0xF0,0xDF,0x8D,0x4F,0xFB,0x3F,0xE6,0x3F,0x99,0x4F,0xE7,0x71,0x9F,0x7B,0xFA,0xFF,0xFD,0xFF},/*"家",6*/
{0xFF,0xFF,0x00,0x07,0xED,0xF7,0xED,0xB7,0xED,0xB7,0xED,0xB7,0x81,0xB7,0xED,0xB7,0xED,0xB7,0xED,0x57,0xE3,0x5F,0x1E,0xDD,0xFE,0xDD,0xFD,0xDD,0xFB,0xE1,0xF7,0xFF},/*"现",7*/
{0xFD,0xFF,0xFD,0xFF,0x80,0x01,0xFB,0xFF,0xFB,0xFF,0xF7,0xBF,0xE7,0xBF,0xE8,0x03,0xCF,0xBF,0xAF,0xBF,0x6F,0xBF,0xEF,0xBF,0xEF,0xBF,0xE8,0x01,0xEF,0xFF,0xFF,0xFF},/*"在",8*/
{0xFF,0xFF,0xF0,0x0F,0xF7,0xEF,0xF0,0x0F,0xF7,0xEF,0xF0,0x0F,0xFF,0xFF,0x00,0x01,0xFE,0xFF,0xF6,0xFF,0xF6,0x07,0xF6,0xFF,0xEA,0xFF,0xDC,0xFF,0xBF,0x01,0xFF,0xFF},/*"是",9*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1*/
0x55,0xaa,
};
uint8 const code NUM[]=
{
{0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF},/*"0",0*/
{0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF},/*"1",1*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF},/*"2",2*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"3",3*/
{0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF},/*"4",4*/
{0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"5",5*/
{0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF},/*"6",6*/
{0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF},/*"7",7*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF},/*"8",8*/
{0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF},/*"9",9*/
};
uint8 const code DATETMP[]=
{
{0xF7,0xFF,0xF0,0x03,0xEF,0x7F,0xEF,0x7F,0xDF,0x7F,0xB0,0x07,0x77,0x7F,0xF7,0x7F,0xF7,0x7F,0xF7,0x7F,0x00,0x01,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F},/*"年",0*/
{0xF8,0x0F,0xFB,0xEF,0xFB,0xEF,0xFB,0xEF,0xF8,0x0F,0xFB,0xEF,0xFB,0xEF,0xFB,0xEF,0xF8,0x0F,0xFB,0xEF,0xF7,0xEF,0xF7,0xEF,0xEF,0xEF,0xDF,0xAF,0xBF,0xDF,0xFF,0xFF},/*"月",1*/
{0xFF,0xFF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF},/*"日",2*/
{0xFE,0xFF,0xFE,0xFF,0xFE,0x07,0xFE,0xFF,0xFE,0xEF,0xE0,0x07,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xFE,0xEF,0xD7,0x77,0xDB,0xBB,0xBB,0xBB,0xFF,0xFF},/*"点",3*/
{0xF7,0x7F,0xF3,0x7F,0xF7,0xBF,0xEF,0xDF,0xEF,0xCF,0xDF,0xE7,0xBF,0xF1,0x60,0x1B,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xF7,0xDF,0xEF,0x5F,0xDF,0xBF,0xBF,0xFF},/*"分",4*/
{0xFF,0xFF,0xE0,0x07,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,0xE0,0x07,0xFE,0xFF,0xEE,0xFF,0xE0,0x03,0xDE,0xFF,0xDE,0xFF,0xB0,0x07,0xFE,0xFF,0xFE,0xFF,0x80,0x01,0xFF,0xFF},/*"星",5*/
{0xDD,0xFF,0xDD,0x83,0x80,0xBB,0xDD,0xBB,0xC1,0xBB,0xDD,0x83,0xC1,0xBB,0xDD,0xBB,0xDD,0xBB,0x00,0x83,0xFF,0xBB,0xDB,0x7B,0xDD,0x7B,0xBC,0xEB,0x7E,0xF7,0xFF,0xFF},/*"期",6*/
{0xE0,0x07,0xFE,0xFF,0x80,0x01,0xBE,0xFB,0xE2,0x8F,0xFE,0xFF,0xE2,0x8F,0xFD,0x7F,0xFB,0x9F,0xE5,0xE1,0x1E,0xF7,0xE0,0x1F,0xFF,0xBF,0xFD,0x7F,0xFE,0xFF,0xFE,0xFF},/*"零",7*/
{0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0x07,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x80,0x01,0xFF,0xFF},/*"上",8*/
{0xD8,0x03,0xDE,0xEF,0xDE,0x0F,0x06,0xEF,0xDE,0x0F,0xD6,0xE3,0xC8,0x0F,0x9F,0xEF,0x50,0x41,0xDB,0x5D,0xDC,0xEB,0xDE,0xF7,0xDD,0x67,0xDB,0x99,0x56,0x7B,0xBF,0xFF},/*"摄",9*/
{0xFF,0xFF,0xFF,0x07,0xC0,0xFF,0xDE,0xFF,0xDE,0xFF,0xDE,0xFF,0xC0,0x03,0xDF,0x7F,0xDF,0x7F,0xDF,0x7F,0xDF,0xBF,0xDF,0xBF,0xDB,0xDB,0xD7,0xEB,0xCF,0xF3,0xDF,0xFB},/*"氏",10*/
{0xFE,0xFF,0xFF,0x7F,0xC0,0x01,0xDD,0xDF,0xDD,0xDF,0xD0,0x03,0xDD,0xDF,0xDC,0x1F,0xDF,0xFF,0xD8,0x07,0xDD,0xEF,0xDE,0xDF,0xDF,0x3F,0xBE,0xCF,0xB9,0xF1,0x67,0xFB},/*"度",11*/
} ;
uint8 const code WEEK[]=
{
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"一",0*/
{0xFF,0xFF,0xFF,0xEF,0xC0,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"二",1*/
{0xFF,0xFF,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0xFF,0xFF},/*"三",2*/
{0xFF,0xFF,0x80,0x03,0xBB,0x7B,0xBB,0x7B,0xBB,0x7B,0xBB,0x7B,0xBB,0x7B,0xBB,0x7B,0xB7,0x7B,0xB7,0x83,0xAF,0xFB,0x9F,0xFB,0xBF,0xFB,0x80,0x03,0xBF,0xFB,0xFF,0xFF},/*"四",3*/
{0xFF,0xFF,0x80,0x07,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xDF,0xC0,0x0F,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDB,0x00,0x01,0xFF,0xFF,0xFF,0xFF},/*"五",4*/
{0xFB,0xFF,0xFC,0xFF,0xFE,0x7F,0xFE,0xFF,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFB,0x7F,0xF9,0xBF,0xFB,0xDF,0xF7,0xEF,0xF7,0xE7,0xEF,0xF3,0xDF,0xF3,0xBF,0xF7,0xFF,0xFF},/*"六",5*/
{0xFF,0xFF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF},/*"日",6*/
};
void TEMP_Delay(uint16 i)
{
while(i--);
}
void TEMP_INITIALIZE()
{
DQ=1;
TEMP_Delay(8);
DQ=0;
TEMP_Delay(80);
DQ=1;
TEMP_Delay(14);
TEMP_ERR=DQ;
TEMP_Delay(20);
}
uint8 TEMP_Read_Char()
{
uint8 i;
uint8 dat;
for(i=0;i<8;i++)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
TEMP_Delay(4);
}
return dat;
}
void TEMP_Write_Char(uint8 dat)
{
uint8 i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
TEMP_Delay(5);
DQ=1;
dat>>=1;
}
}
void TEMP_Read()
{
uint8 a,b;
TEMP_INITIALIZE();
TEMP_Write_Char(0xcc);
TEMP_Write_Char(0x44);
TEMP_Delay(100);
TEMP_INITIALIZE();
TEMP_Write_Char(0xcc);
TEMP_Write_Char(0xbe);
TEMP_Delay(100);
a=TEMP_Read_Char();
b=TEMP_Read_Char();
Temp_Value=b<<4;
Temp_Value+=(a&0xf0)>>4;
}
void RTC_Write(uint8 dat)
{
uint8 i;
for(i=0;i<8;i++)
{
RTC_SDA=(bit)(dat&0x01);
RTC_SCL=1;
RTC_SCL=0;
dat>>=1;
}
}
uint8 RTC_Read()
{
uint8 i;
for(i=0; i<8; i++)
{
AA >>=1; //相当于汇编中的 RRC
AA7 = RTC_SDA;
RTC_SCL = 1;
RTC_SCL = 0;
}
return AA;
}
void RTC_Write_Byte(uint8 addr,uint8 dat)
{
RTC_RST=0;
RTC_SCL=0;
RTC_RST=1;
RTC_Write(addr);
RTC_Write(dat);
RTC_SCL=1;
RTC_RST=0;
}
uint8 RTC_Read_Byte(uint8 addr)
{
uint8 dat;
RTC_RST=0;
RTC_SCL=0;
RTC_RST=1;
RTC_Write(addr|0x01);
dat=RTC_Read();
RTC_SCL=1;
RTC_RST=0;
return dat;
}
typedef struct __SYSTEMTIME__
{
uint8Second;
uint8Mine;
uint8Hour;
uint8Day;
uint8Month;
uint8Week;
uint8Year;
}SYSTEMTIME;
static SYSTEMTIME TIMETYPE;
void CurrentTime(SYSTEMTIME *dat)
{
uint8 TimeValue;
TimeValue=RTC_Read_Byte(READ_SECOND);
dat->Second=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);
TimeValue=RTC_Read_Byte(READ_MINE);
dat->Mine=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);
TimeValue=RTC_Read_Byte(READ_HOUR);
dat->Hour=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);
TimeValue=RTC_Read_Byte(READ_DAY);
dat->Day= (((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);
TimeValue=RTC_Read_Byte(READ_MONTH);
dat->Month= (((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);
TimeValue=RTC_Read_Byte(READ_WEEK);
dat->Week= (TimeValue&0x0f);
TimeValue=RTC_Read_Byte(READ_YEAR);
dat->Year= (((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);
}
bit LCD_BUSY()
{
bit result;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
_nop_();
_nop_();
result=(bit)(LCD_PORT&0x80);
LCD_EN=0;
return result;
}
void LCD_Write(uint8 dat,uint8 type)
{
uint8 i;
while((LCD_BUSY()&&i<100)){i++;}
if(i>99)LCD_NO=1;
LCD_RS=type;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_PORT=dat;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=0;
}
void LCD_INITIALIZE()
{
LCD_Write(0x06,LCD_COMMAND);
LCD_Write(0x38,LCD_COMMAND);
LCD_Write(0x0c,LCD_COMMAND);
LCD_Write(0x01,LCD_COMMAND);
}
void LCD_Prints(uint8 *dat,uint8 add)
{
LCD_Write(add|0x80,LCD_COMMAND);
while(*dat!='\0')LCD_Write((*(dat++)),LCD_DATA);
}
void et0() interrupt 1 using 0
{
static uint8 i;
TH0=0xf3;
TL0=0xf3;
TR0=1;
i++;
if(i==22)
{
i=0;
WORDNUMBER++;
}
}
void KEY_Delay()
{
uint8 i,j;
for(i=0;i<200;i++)
for(j=0;j<200;j++);
}
void SET_YEAR()
{
uint8 YEAR;
LCD_Prints("YEAR SETTING",0);
LCD_Prints("YEAR:20 ",0x40);
if((!KEY3)&&(TIMETYPE.Year<80)){KEY_Delay();i1=i2=0;TIMETYPE.Year++;}
else if(TIMETYPE.Year>79)TIMETYPE.Year=0;
if((!KEY4)&&(TIMETYPE.Year>0)){KEY_Delay();i1=i2=0;TIMETYPE.Year--;}
YEAR=(TIMETYPE.Year/10)+'0';
YEAR=(TIMETYPE.Year%10)+'0';
YEAR='\0';
LCD_Prints(YEAR,0x49);
}
void SET_MONTH()
{
uint8 MONTH;
LCD_Prints("MONTH SETTING ",0);
LCD_Prints("MONTH: ",0x40);
if((!KEY3)&&(TIMETYPE.Month<13)){KEY_Delay();TIMETYPE.Month++;i1=i2=0;}
else if(TIMETYPE.Month>12)TIMETYPE.Month=1;
if((!KEY4)&&(TIMETYPE.Month>1)){KEY_Delay();TIMETYPE.Month--;i1=i2=0;}
MONTH=(TIMETYPE.Month/10)+'0';
MONTH=(TIMETYPE.Month%10)+'0';
MONTH='\0';
LCD_Prints(MONTH,0x48);
}
void SET_DAY()
{
uint8 DAY;
LCD_Prints("DAY SETTING ",0);
LCD_Prints("DAY: ",0x40);
if((!KEY3)&&(TIMETYPE.Day<32)){KEY_Delay();TIMETYPE.Day++;i1=i2=0;}
else if(TIMETYPE.Day>31)TIMETYPE.Day=1;
if((!KEY4)&&(TIMETYPE.Day>1)){KEY_Delay();TIMETYPE.Day--;i1=i2=0;}
DAY=(TIMETYPE.Day/10)+'0';
DAY=(TIMETYPE.Day%10)+'0';
DAY='\0';
LCD_Prints(DAY,0x46);
}
void SET_WEEK()
{
uint8 WEEK;
LCD_Prints("WEEK SETTING",0);
LCD_Prints("WEEK: ",0x40);
if((!KEY3)&&(TIMETYPE.Week<8)){KEY_Delay();TIMETYPE.Week++;i1=i2=0;}
else if(TIMETYPE.Week>7)TIMETYPE.Week=1;
if((!KEY4)&&(TIMETYPE.Week>1)){KEY_Delay();TIMETYPE.Week--;i1=i2=0;}
WEEK=TIMETYPE.Week+'0';
WEEK='\0';
LCD_Prints(WEEK,0x47);
}
void SET_HOUR()
{
uint8 HOUR;
LCD_Prints("HOUR SETTING",0);
LCD_Prints("HOUR: ",0x40);
if((!KEY3)&&(TIMETYPE.Hour<24)){KEY_Delay();TIMETYPE.Hour++;i1=i2=0;}
else if(TIMETYPE.Hour>23)TIMETYPE.Hour=0;
if((!KEY4)&&(TIMETYPE.Hour>0)){KEY_Delay();TIMETYPE.Hour--;i1=i2=0;}
HOUR=(TIMETYPE.Hour/10)+'0';
HOUR=(TIMETYPE.Hour%10)+'0';
HOUR='\0';
LCD_Prints(HOUR,0x47);
}
void SET_MINE()
{
uint8 MINE;
LCD_Prints("MINE SETTING",0);
LCD_Prints("MINE: ",0x40);
if((!KEY3)&&(TIMETYPE.Mine<60)){KEY_Delay();TIMETYPE.Mine++;i1=i2=0;}
else if(TIMETYPE.Mine>59)TIMETYPE.Mine=0;
if((!KEY4)&&(TIMETYPE.Mine>0)){KEY_Delay();TIMETYPE.Mine--;i1=i2=0;}
MINE=(TIMETYPE.Mine/10)+'0';
MINE=(TIMETYPE.Mine%10)+'0';
MINE='\0';
LCD_Prints(MINE,0x47);
}
void SET_SECOND()
{
uint8 SECOND;
LCD_Prints(" SECOND SETTING ",0);
LCD_Prints(" SECOND: ",0x40);
if((!KEY3)&&(TIMETYPE.Second<60)){KEY_Delay();TIMETYPE.Second++;i1=i2=0;}
else if(TIMETYPE.Second>59)TIMETYPE.Second=0;
if((!KEY4)&&(TIMETYPE.Second>0)){KEY_Delay();TIMETYPE.Second--;i1=i2=0;}
SECOND=(TIMETYPE.Second/10)+'0';
SECOND=(TIMETYPE.Second%10)+'0';
SECOND='\0';
LCD_Prints(SECOND,0x48);
}
void Write_Time()
{
uint8 year,month,day,hour,mine,second,week;
year=((TIMETYPE.Year/10)<<4)|(TIMETYPE.Year%10);
month=((TIMETYPE.Month/10)<<4)|(TIMETYPE.Month%10);
day=((TIMETYPE.Day/10)<<4)|(TIMETYPE.Day%10);
week=TIMETYPE.Week;
hour=((TIMETYPE.Hour/10)<<4)|(TIMETYPE.Hour%10);
mine=((TIMETYPE.Mine/10)<<4)|(TIMETYPE.Mine%10);
second=((TIMETYPE.Second/10)<<4)|(TIMETYPE.Second%10);
RTC_Write_Byte(0x8e,0x00); //写入允许
RTC_Write_Byte(0x80,WRITE_SECOND|0x80);
RTC_Write_Byte(0x8e,0x80); //禁止写入
RTC_Write_Byte(0x8e,0x00); //写入允许
RTC_Write_Byte(WRITE_YEAR,year); //写入新的秒数
RTC_Write_Byte(WRITE_MONTH,month); //写入新的秒数
RTC_Write_Byte(WRITE_DAY,day); //写入新的秒数
RTC_Write_Byte(WRITE_HOUR,hour); //写入新的秒数
RTC_Write_Byte(WRITE_MINE,mine&0x7f); //写入新的秒数
RTC_Write_Byte(WRITE_WEEK,week); //写入新的秒数
RTC_Write_Byte(WRITE_SECOND,second);
RTC_Write_Byte(0x8e,0x00); //写入允许
RTC_Write_Byte(0x8E,0x80);
}
void SET_TIME()
{
uint8 i;
CurrentTime(&TIMETYPE);
while(1)
{
switch(i)
{
case 0:SET_YEAR();break;
case 1:SET_MONTH();break;
case 2:SET_DAY(); break;
case 3:SET_WEEK();break;
case 4:SET_HOUR();break;
case 5:SET_MINE();break;
case 6:SET_SECOND();break;
}
if(!KEY2){i++;KEY_Delay();i1=i2=0;}
if(i==7){i=0;Write_Time();break;}
i1++;
if(i1==10){i2++;i1=0;}
if(i2==100){i=0;Write_Time();break;}
}
}
void TIMESETTING()
{
if(!KEY1){LED_EN=1;SET_TIME();}
WORDNUMBER=0;
WORDNUM=0;
}
void LED_Ser(uint8 dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
void LED_Delay()
{
uint8 i,j;
for(i=0;i<11;i++)
for(j=0;j<16;j++);
}
void SET_STB()
{
Ser_STB=0;
Ser_STB=1;
}
void Disp_LED(uint8 *dat)
{
uint8 i;
uint16 tmp,tmp1,tmp2;
LED_EN=0;
LED_Y=0x01|0xf0;
if(WORDNUMBER==16)
{
WORDNUMBER=0;
WORDNUM++;
}
for(i=0;i<32;i+=2)
{
if((!KEY1)&&(!LCD_NO))TIMESETTING();
tmp1=(dat|(uint16)(dat<<8));
tmp2=(dat|(uint16)(dat<<8));
tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
if(tmp2==0x55aa)WORDNUM=0;
LED_EN=0;
LED_Ser((uint8)(tmp));
LED_Ser((uint8)(tmp>>8));
SET_STB();
LED_Y=0x0f&(i/2);
LED_Delay();
LED_EN=1;
}
}
void Disp_LED1(uint8 *dat,uint8 *dat1)
{
uint8 i;
uint16 tmp,tmp1,tmp2;
LED_EN=0;
LED_Y=0x01|0xf0;
if(WORDNUMBER==16)
{
WORDNUMBER=0;
WORDNUM++;
}
for(i=0;i<32;i+=2)
{
if((!KEY1)&&(!LCD_NO))TIMESETTING();
tmp1=(dat|(uint16)(dat<<8));
tmp2=(dat1|(uint16)(dat1<<8));
tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
LED_EN=0;
LED_Ser((uint8)(tmp));
LED_Ser((uint8)(tmp>>8));
SET_STB();
LED_Y=0x0f&(i/2);
LED_Delay();
LED_EN=1;
}
}
void Disp_Str_LED2(uint8 *dat,uint8 *dat1,uint8 *dat2)
{
uint8 i;
uint16 tmp,tmp1,tmp2;
LED_EN=0;
LED_Y=0x01|0xf0;
if(WORDNUMBER==16)
{
WORDNUMBER=0;
WORDNUM++;
}
for(i=0;i<32;i+=2)
{
if((!KEY1)&&(!LCD_NO))TIMESETTING();
tmp1=(dat1|(uint16)(dat<<8));
tmp2=(dat2|(uint16)(dat2<<8));
tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
LED_EN=0;
LED_Ser((uint8)(tmp));
LED_Ser((uint8)(tmp>>8));
SET_STB();
LED_Y=0x0f&(i/2);
LED_Delay();
LED_EN=1;
}
}
void Disp_Str_LED4(uint8 *dat,uint8 *dat1,uint8 *dat2,uint8 *dat3)
{
uint8 i;
uint16 tmp,tmp1,tmp2;
LED_EN=0;
LED_Y=0x01|0xf0;
if(WORDNUMBER==16)
{
WORDNUMBER=0;
WORDNUM++;
}
for(i=0;i<32;i+=2)
{
if((!KEY1)&&(!LCD_NO))TIMESETTING();
tmp1=(dat1|(uint16)(dat<<8));
tmp2=(dat3|(uint16)(dat2<<8));
tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
LED_EN=0;
LED_Ser((uint8)(tmp));
LED_Ser((uint8)(tmp>>8));
SET_STB();
LED_Y=0x0f&(i/2);
LED_Delay();
LED_EN=1;
}
}
void Disp_Str_LED_HZ(uint8 *dat,uint8 *dat1,uint8 *dat2)
{
uint8 i;
uint16 tmp,tmp1,tmp2;
LED_EN=0;
LED_Y=0x01|0xf0;
if(WORDNUMBER==16)
{
WORDNUMBER=0;
WORDNUM++;
}
for(i=0;i<32;i+=2)
{
if((!KEY1)&&(!LCD_NO))TIMESETTING();
tmp1=(dat|(uint16)(dat<<8));
tmp2=(dat2|(uint16)(dat1<<8));
tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
LED_EN=0;
LED_Ser((uint8)(tmp));
LED_Ser((uint8)(tmp>>8));
SET_STB();
LED_Y=0x0f&(i/2);
LED_Delay();
LED_EN=1;
}
}
void LCD_DISP()
{
DATE='2';
DATE='0';
DATE='/';
DATE='/';
DATE='W';
DATE='e';
DATE='e';
DATE='k';
DATE=':';
DATE='\0';
TIME=':';
TIME=' ';
TIME='T';
TIME='e';
TIME='m';
TIME='p';
TIME=':';
TIME=0xdf;
TIME='C';
TIME=' ';
TIME='\0';
}
void LCD_Disp_Time()
{
DATE=TIMETYPE.Year/10+'0';
DATE=TIMETYPE.Year%10+'0';
DATE=TIMETYPE.Month/10+'0';
DATE=TIMETYPE.Month%10+'0';
DATE=TIMETYPE.Day/10+'0';
DATE=TIMETYPE.Day%10+'0';
DATE=TIMETYPE.Week+'0';
TIME=TIMETYPE.Hour/10+'0';
TIME=TIMETYPE.Hour%10+'0';
TIME=TIMETYPE.Mine/10+'0';
TIME=TIMETYPE.Mine%10+'0';
TIME=Temp_Value/10+'0';
TIME=Temp_Value%10+'0';
if(TEMP_ERR)
{
Temp_Value=0;
TIME='E';
TIME='R';
TIME='R';
TIME='0';
TIME='R';
}
else
{
TIME=0xdf;
TIME='C';
TIME=' ';
}
LCD_Prints(DATE,0);
LCD_Prints(TIME,0x40);
}
void main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
TR0=1;
ET0=1;
SCON=0;
LCD_INITIALIZE();
TEMP_INITIALIZE();
LCD_DISP();
while(1)
{
switch(WORDNUM)
{
case WORDNUU+0:Disp_Str_LED_HZ(&HZ,&NUM,&NUM);break;
case WORDNUU+1:Disp_Str_LED4(&NUM,&NUM,&NUM,&NUM);break;
case WORDNUU+2:Disp_Str_LED2(&NUM,&NUM,&DATETMP);break;
case WORDNUU+3:Disp_Str_LED_HZ(&DATETMP,&NUM,&NUM);break;
case WORDNUU+4:Disp_Str_LED2(&NUM,&NUM,&DATETMP);break;
case WORDNUU+5:Disp_Str_LED_HZ(&DATETMP,&NUM,&NUM);break;
case WORDNUU+6:Disp_Str_LED2(&NUM,&NUM,&DATETMP);break;
case WORDNUU+7:Disp_LED1(&DATETMP,&DATETMP);break;
case WORDNUU+8:Disp_LED1(&DATETMP,&DATETMP);break;
case WORDNUU+9:Disp_LED1(&DATETMP,&WEEK);break;
case WORDNUU+10:Disp_Str_LED_HZ(&WEEK,&NUM,&NUM);break;
case WORDNUU+11:Disp_Str_LED2(&NUM,&NUM,&DATETMP);break;
case WORDNUU+12:Disp_Str_LED_HZ(&DATETMP,&NUM,&NUM);break;
case WORDNUU+13:Disp_Str_LED2(&NUM,&NUM,&DATETMP);break;
case WORDNUU+14:Disp_LED1(&DATETMP,&DATETMP);break;
case WORDNUU+15:Disp_LED1(&DATETMP,&DATETMP);break;
case WORDNUU+16:Disp_Str_LED_HZ(&DATETMP,&NUM,&NUM);break;
case WORDNUU+17:Disp_Str_LED2(&NUM,&NUM,&DATETMP);break;
case WORDNUU+18:Disp_LED1(&DATETMP,&DATETMP);break;
case WORDNUU+19:Disp_LED1(&DATETMP,&DATETMP);break;
case WORDNUU+20:Disp_LED1(&DATETMP,&HZ);break;
case WORDNUU+21:WORDNUM=0;WORDNUMBER=0;break;
default:Disp_LED(&HZ);
}
if(WORDNUMBER==16)
{
TEMP_Read();
CurrentTime(&TIMETYPE);
LCD_Disp_Time();
}
}
} 是不是这三个姓名改成你的?
{0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBE,0xFB,0x7E,0xF7,0xFE,0xFF,0x80,0x03,0xFC,0x7F,0xFA,0x7F,0xFA,0xBF,0xF6,0xDF,0xEE,0xEF,0xDE,0xF1,0xBE,0xFB,0xFE,0xFF,0xFF,0xFF},/*"宋",0*/
{0xDF,0xFF,0xEE,0xEF,0xEE,0xEF,0x76,0xEF,0xB4,0x03,0xAE,0xEF,0xEE,0xEF,0xEE,0xEF,0xDE,0xEF,0xD0,0x01,0x1E,0xDF,0xDE,0xEF,0xDD,0xF7,0xDD,0xF3,0xDB,0xFB,0xD7,0xFB},/*"洪",1*/
{0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0xBB,0xB9,0xDB,0xB3,0xDB,0xB7,0xEB,0xAF,0xE3,0xAF,0xEB,0x9F,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x00,0x01,0xFF,0xFF,0xFF,0xFF},/*"业",2*/
用字模软件生成你的姓名的字模,代换这就可以了。我用的是PCtoLCD2002。
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_513583.JPG
(原文件名:取模.JPG) 这个取模软件很好,值得学习! 额的神你初学也不用这么复杂吧 mark 你搞这么多程序谁给你看啊! “你搞这么多程序谁给你看啊!”
我也不会C,程序也看不懂。但LZ也只要求修改一下,能显示自己的姓名
所以其它的我都视而不见了 名字都不会改,搞什么... {:sweat:}{:sweat:}{:sweat:} mark。。。。。。。。 47okey 发表于 2009-12-12 17:51
是不是这三个姓名改成你的?
{0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBE,0xFB,0x7E,0xF7,0xFE,0xFF,0x80,0x03,0x ...
你的取模软件能共享一下不,能取图片吗,看着比较简洁,我用xiaoqi的 这个代码看的头晕~~~~~~~~~~~~~~
页:
[1]