#include <reg52.h>
#include "./delay/delay.h"
sbit RS = P2^4;
sbit RW = P2^5;
sbit E = P2^6;
#define LCDPORT P0
#define LCD_WRITE_DATA 1
#define LCD_WRITE_COM 0
unsigned char src[100];
unsigned char flag = 0;
unsigned char shi = 15,fen = 22,miao = 33;
void timer0_init ()
{
EA = 1;
TMOD |= 0x01;
TH0 = (65536 - 20000) / 256;
TL0 = (65536 - 20000) % 256;
ET0 = 1;
TR0 = 1;
}
void timer0_isr() interrupt 1
{
static unsigned char i = 0;
TH0 = (65536 - 20000) / 256;
TL0 = (65536 - 20000) % 256;
i++;
if( 50 == i)
{
flag = 1;
i = 0;
miao++;
if(60 == miao)
{
miao = 0;
fen++;
if(60 == fen)
{
fen = 0;
shi++;
if(24 == shi)
{
shi = 0;
}
}
}
}
}
void lcd_write(unsigned char byte,unsigned char flag)
{
if(flag)
{
RS = LCD_WRITE_DATA;
}
else
{
RS = LCD_WRITE_COM;
}
RW = 0;
E = 1;
LCDPORT = byte;
delay_us(10);
E = 0;
}
void lcd_dis_char(unsigned char x,unsigned char y,unsigned char byte)
{
if(y == 0)
{
lcd_write(x + 0x80,LCD_WRITE_COM);
}
else
{
lcd_write(x + 0x80 + 0x40,LCD_WRITE_COM);
}
lcd_write(byte,LCD_WRITE_DATA);
}
void lcd_dis_str(unsigned char x,unsigned char y,unsigned char *src)
{
if(y == 1)
{
lcd_write(x + 0x80,LCD_WRITE_COM);
}
else
{
lcd_write(x + 0x80 + 0x40,LCD_WRITE_COM);
}
while(*src != '\0')
{
lcd_write(*src,LCD_WRITE_DATA);
src++;
}
}
void lcd_init()
{
delay_ms(15);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x08,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x01,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x06,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x0c,LCD_WRITE_COM);
delay_ms(5);
}
void lcd_dis_time()
{
lcd_write(4 + 0x80,LCD_WRITE_COM);
lcd_write(shi / 10 + 0x30,LCD_WRITE_DATA);
lcd_write(shi % 10 + 0x30,LCD_WRITE_DATA);
lcd_write(':',LCD_WRITE_DATA);
lcd_write(fen / 10 + 0x30,LCD_WRITE_DATA);
lcd_write(fen % 10 + 0x30,LCD_WRITE_DATA);
lcd_write(':',LCD_WRITE_DATA);
lcd_write(miao / 10 + 0x30,LCD_WRITE_DATA);
lcd_write(miao % 10 + 0x30,LCD_WRITE_DATA);
}
//----Цs----
void lcd_dis_self()
{
lcd_write(0x40,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0a,LCD_WRITE_DATA);
lcd_write(0x11,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x80,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x48,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0a,LCD_WRITE_DATA);
lcd_write(0x11,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x82,LCD_WRITE_COM);
lcd_write(0x1,LCD_WRITE_DATA);
lcd_write(0x50,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x11,LCD_WRITE_DATA);
lcd_write(0x0e,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x80+1+0x40,LCD_WRITE_COM);
lcd_write(0x2,LCD_WRITE_DATA);
}
void lcd_dis_charge()
{
static unsigned char i = 0;
lcd_write(0x40,LCD_WRITE_COM); //
lcd_write(0x0e,LCD_WRITE_DATA);
lcd_write(0x0e,LCD_WRITE_DATA);
lcd_write(0x1f,LCD_WRITE_DATA);
if(i < 4)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
if(i < 3)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
if(i < 2)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
if(i < 1)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
i++;
if(i == 5)
{
i = 0;
}
lcd_write(0x1f,LCD_WRITE_DATA);
lcd_write(0x80+15,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
}
void main()
{
timer0_init();
lcd_init();
// lcd_write(0x80,LCD_WRITE_COM);
// lcd_write('a',LCD_WRITE_DATA);
//lcd_dis_char(2,0,'q');
//lcd_dis_str(2,1,"aaassss");
lcd_dis_self();
while(1)
{
lcd_dis_time();
if(flag)
{
lcd_dis_charge();
flag = 0;
}
}
}
#include "./delay/delay.h"
sbit RS = P2^4;
sbit RW = P2^5;
sbit E = P2^6;
#define LCDPORT P0
#define LCD_WRITE_DATA 1
#define LCD_WRITE_COM 0
unsigned char src[100];
unsigned char flag = 0;
unsigned char shi = 15,fen = 22,miao = 33;
void timer0_init ()
{
EA = 1;
TMOD |= 0x01;
TH0 = (65536 - 20000) / 256;
TL0 = (65536 - 20000) % 256;
ET0 = 1;
TR0 = 1;
}
void timer0_isr() interrupt 1
{
static unsigned char i = 0;
TH0 = (65536 - 20000) / 256;
TL0 = (65536 - 20000) % 256;
i++;
if( 50 == i)
{
flag = 1;
i = 0;
miao++;
if(60 == miao)
{
miao = 0;
fen++;
if(60 == fen)
{
fen = 0;
shi++;
if(24 == shi)
{
shi = 0;
}
}
}
}
}
void lcd_write(unsigned char byte,unsigned char flag)
{
if(flag)
{
RS = LCD_WRITE_DATA;
}
else
{
RS = LCD_WRITE_COM;
}
RW = 0;
E = 1;
LCDPORT = byte;
delay_us(10);
E = 0;
}
void lcd_dis_char(unsigned char x,unsigned char y,unsigned char byte)
{
if(y == 0)
{
lcd_write(x + 0x80,LCD_WRITE_COM);
}
else
{
lcd_write(x + 0x80 + 0x40,LCD_WRITE_COM);
}
lcd_write(byte,LCD_WRITE_DATA);
}
void lcd_dis_str(unsigned char x,unsigned char y,unsigned char *src)
{
if(y == 1)
{
lcd_write(x + 0x80,LCD_WRITE_COM);
}
else
{
lcd_write(x + 0x80 + 0x40,LCD_WRITE_COM);
}
while(*src != '\0')
{
lcd_write(*src,LCD_WRITE_DATA);
src++;
}
}
void lcd_init()
{
delay_ms(15);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x08,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x01,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x06,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x0c,LCD_WRITE_COM);
delay_ms(5);
}
void lcd_dis_time()
{
lcd_write(4 + 0x80,LCD_WRITE_COM);
lcd_write(shi / 10 + 0x30,LCD_WRITE_DATA);
lcd_write(shi % 10 + 0x30,LCD_WRITE_DATA);
lcd_write(':',LCD_WRITE_DATA);
lcd_write(fen / 10 + 0x30,LCD_WRITE_DATA);
lcd_write(fen % 10 + 0x30,LCD_WRITE_DATA);
lcd_write(':',LCD_WRITE_DATA);
lcd_write(miao / 10 + 0x30,LCD_WRITE_DATA);
lcd_write(miao % 10 + 0x30,LCD_WRITE_DATA);
}
//----Цs----
void lcd_dis_self()
{
lcd_write(0x40,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0a,LCD_WRITE_DATA);
lcd_write(0x11,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x80,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x48,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0a,LCD_WRITE_DATA);
lcd_write(0x11,LCD_WRITE_DATA);
lcd_write(0x04,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x82,LCD_WRITE_COM);
lcd_write(0x1,LCD_WRITE_DATA);
lcd_write(0x50,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x11,LCD_WRITE_DATA);
lcd_write(0x0e,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x0,LCD_WRITE_DATA);
lcd_write(0x80+1+0x40,LCD_WRITE_COM);
lcd_write(0x2,LCD_WRITE_DATA);
}
void lcd_dis_charge()
{
static unsigned char i = 0;
lcd_write(0x40,LCD_WRITE_COM); //
lcd_write(0x0e,LCD_WRITE_DATA);
lcd_write(0x0e,LCD_WRITE_DATA);
lcd_write(0x1f,LCD_WRITE_DATA);
if(i < 4)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
if(i < 3)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
if(i < 2)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
if(i < 1)
{
lcd_write(0x11,LCD_WRITE_DATA);
}
else
{
lcd_write(0x1f,LCD_WRITE_DATA);
}
i++;
if(i == 5)
{
i = 0;
}
lcd_write(0x1f,LCD_WRITE_DATA);
lcd_write(0x80+15,LCD_WRITE_COM);
lcd_write(0x0,LCD_WRITE_DATA);
}
void main()
{
timer0_init();
lcd_init();
// lcd_write(0x80,LCD_WRITE_COM);
// lcd_write('a',LCD_WRITE_DATA);
//lcd_dis_char(2,0,'q');
//lcd_dis_str(2,1,"aaassss");
lcd_dis_self();
while(1)
{
lcd_dis_time();
if(flag)
{
lcd_dis_charge();
flag = 0;
}
}
}