主函数文件:
#include <reg52.h>
#include "./delay/delay.h"
sbit RS = P2^4;
sbit RW = P2^5;
sbit E = P2^6;
sbit beem = P3^2;
#define LCDPORT P0
#define KEYPORT P1
#define LCD_WRITE_DATA 1
#define LCD_WRITE_COM 0
unsigned char key;
unsigned char time = 0;
unsigned char shi = 0;
unsigned char fen = 0;
unsigned char miao = 0;
unsigned char Dshi = 1;
unsigned char Dfen = 0;
unsigned char Dmiao = 30;
unsigned char code SONG_TONE[]={239,239,212,189,159,159,189,159,159,142,126,120,120,159,120,120,142,159,189,142,159,189,239,212,189,159,142,159,189,212,239};
unsigned char code SONG_LONG[]={6,6,9,3,6,6,12,6,6,6,6,6,6,12,6,6,9,3,6,6,9,3,6,3,3,6,3,3,6,6,9};
unsigned char key_scan(void)
{
unsigned char keyvalue;
KEYPORT = 0xf0;
if(0xf0 != KEYPORT)
{
delay_ms(10);
if(0xf0 != KEYPORT)
{
KEYPORT = 0xfe;
if(0xfe != KEYPORT)
{
keyvalue = KEYPORT;
keyvalue &= 0xf0;
keyvalue += 0x0e;
while(0xfe != KEYPORT);
delay_ms(10);
while(0xfe != KEYPORT);
return keyvalue;
}
KEYPORT = 0xfd;
if(0xfd != KEYPORT)
{
keyvalue = KEYPORT;
keyvalue &= 0xf0;
keyvalue += 0x0d;
while(0xfd != KEYPORT);
delay_ms(10);
while(0xfd != KEYPORT);
return keyvalue;
}
}
}
return 0xff;
}
void PlayMusic(void)
{
unsigned char q=0;
unsigned char m;
unsigned char k;
while(SONG_LONG[q]!=0||SONG_TONE[q]!=0)
{
for(m=0;m<SONG_LONG[q]*20;m++)
{
beem=~beem;
for(k=0;k<SONG_TONE[q]/3;k++);
}
delay_ms(10);
q++;
}
}
void clock()
{
key = key_scan();
if(0xbe == key)
{
while(0xbe != key);
delay_ms(10);
while(0xbe != key);
shi++;
if(24 == shi)
{
shi = 0;
}
}
if(0xde == key)
{
while(0xde != key);
delay_ms(10);
while(0xde != key);
fen++;
if(60 == fen)
{
fen = 0;
}
}
if(0xee == key)
{
while(0xee != key);
delay_ms(10);
while(0xee != key);
miao++;
if(60 == miao)
{
miao = 0;
}
}
if(0xbd == key)
{
while(0xbd != key);
delay_ms(10);
while(0xbd != key);
Dshi++;
if(24 == Dshi)
{
Dshi = 0;
}
}
if(0xdd == key)
{
while(0xdd != key);
delay_ms(10);
while(0xdd != key);
Dfen++;
if(60 == Dfen)
{
Dfen = 0;
}
}
if(0xed == key)
{
while(0xed != key);
delay_ms(10);
while(0xed != key);
Dmiao++;
if(60 == Dmiao)
{
Dmiao = 0;
}
}
if((shi == Dshi) && (fen == Dfen) && (miao == Dmiao))
{
beem = 0;
PlayMusic();
delay_ms(500);
}
}
void lcd1602_write(unsigned char byte,unsigned char flag)
{
if(flag)
{
RS = 1;
}
else
{
RS = 0; //Ñ¡ÔñÊäÈëÊý¾ÝΪÊý¾Ý
}
RW = 0; //д
E = 1; //Ñ¡ÖÐLCD
LCDPORT = byte;
delay_us(5);
E = 0; //ʧÄÜLCD
}
void Timer0_init()
{
EA = 1;
TMOD |= 0x01;
TH0 = (65536 - 20000) / 256;
TL0 = (65536 - 20000) % 256;
ET0 = 1;
TR0 = 1;
}
void timer() interrupt 1
{
static unsigned char i = 0;
TH0 = (65536 - 20000) / 256;
TL0 = (65536 - 20000) % 256;
clock();
i++;
if(50 == i)
{
i = 0;
miao++;
if(60 == miao)
{
miao = 0;
fen++;
if(60 == fen)
{
fen = 0;
shi++;
if(24 == shi)
{
shi = 0;
}
}
}
}
}
void lcd_dis_time()
{
lcd1602_write(0x80 + 4,LCD_WRITE_COM);
lcd1602_write((shi / 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write((shi % 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write(':',LCD_WRITE_DATA);
lcd1602_write((fen / 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write((fen % 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write(':',LCD_WRITE_DATA);
lcd1602_write((miao / 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write((miao % 10) + 0x30,LCD_WRITE_DATA);
}
void lcd_dis_time1()
{
lcd1602_write(0x80 + 0x40 + 4,LCD_WRITE_COM);
lcd1602_write((Dshi / 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write((Dshi % 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write(':',LCD_WRITE_DATA);
lcd1602_write((Dfen / 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write((Dfen % 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write(':',LCD_WRITE_DATA);
lcd1602_write((Dmiao / 10) + 0x30,LCD_WRITE_DATA);
lcd1602_write((Dmiao % 10) + 0x30,LCD_WRITE_DATA);
}
void lcd_init()
{
delay_ms(15);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x08,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x01,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x06,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x0c,LCD_WRITE_COM);
delay_ms(5);
}
void main()
{
Timer0_init();
lcd_init();
while(1)
{
lcd_dis_time();
lcd_dis_time1();
}
}#include <reg52.h>
#include "./dela