随笔 - 0  文章 - 0  trackbacks - 0
<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿

文章分类

文章档案

搜索

  •  

最新评论

/*
project:万能历
作者:红云
时间:2011.7.10
功能:万能历,显示年月日时分秒,四个键盘调节月日时分
资源:STC89C52+Nokia5510LCD
*/

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit    SCE  = P0^0;  //片选
sbit    RST  = P0^1;  //复位,0复位
sbit    DC   = P0^2;  //1写数据,0写指令
sbit    SDIN = P1^5;  //数据
sbit    SCLK = P1^7;  //时钟

sbit key1=P3^2;//控制月;
sbit key2=P3^3;//控制日;
sbit key3=P3^4;//控制时;
;l
sbit key4=P3^5;//控制分;

static int year=2011,month=7,day=10,hour=18,minute=20,second=30;
static uint num=0;
uchar code Array1024[]={
/*--  文字:  0  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0xC0,0x30,0x08,0x08,0x08,0x08,0x30,0xC0,0x00,0x00,0x1F,0x60,0x80,0x80,0x80,
0x80,0x60,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  1  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xFF,0x80,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  2  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x70,0x08,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0xC0,0xA0,0x90,0x88,0x84,
0x83,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  3  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x70,0x80,0x81,0x81,0x81,
0x42,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  4  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x0C,0x0B,0x08,0x88,0x88,
0xFF,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  5  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x73,0x82,0x81,0x81,0x81,
0x42,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  6  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x80,0x60,0x10,0x08,0x08,0x08,0x08,0x30,0x00,0x00,0x3F,0x42,0x81,0x81,0x81,
0x81,0x42,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  7  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x38,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0xE0,0x10,0x08,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x38,0x45,0x82,0x82,0x82,
0x82,0x45,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  9  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0xE0,0x10,0x08,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x61,0x82,0x84,0x84,0x84,
0x44,0x32,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  :  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=10x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=10x24  --*/
0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Array1924[]={
/*--  文字:  年  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x80,0x40,0x30,0x88,0x17,0x12,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x90,0x88,
0x08,0x00,0x00,0x00,0x10,0x10,0x10,0x0F,0x11,0x11,0x11,0x11,0x11,0xFF,0x11,0x11,
0x11,0x10,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  月  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x38,0x07,0x04,0x04,0x04,0x04,0x04,0x04,
0x04,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x01,0x03,0x01,0x00,0x00,0x00,0x00,

/*--  文字:  日  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0x00,0x00,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
0x81,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,

/*--  文字:  时  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0xFE,0x20,
0x20,0x20,0x00,0x00,0x00,0xFF,0x21,0x21,0x21,0x7F,0x00,0x00,0x01,0x06,0x04,0x00,
0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x00,0x00,

/*--  文字:  分  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0x00,0x80,0x40,0x30,0x1C,0x06,0x00,0x00,0x00,0x0E,0x30,0x60,0xC0,0x80,
0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x01,0x81,0x61,0x1D,0x03,0x01,0x01,0x01,0xF1,
0x1F,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  秒  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x40,0x48,0x44,0xFC,0x44,0x42,0x60,0x40,0xC0,0x60,0x00,0xFE,0x02,0x10,0x20,
0x60,0xC0,0x00,0x00,0x10,0x08,0x06,0xFF,0x01,0x02,0x02,0x06,0x01,0x80,0x80,0x4F,
0x20,0x10,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x01,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  :  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 
/*--  文字:  0  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0xC0,0x30,0x08,0x08,0x08,0x08,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x60,0x80,0x80,0x80,0x80,0x60,0x1F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  1  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xFF,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  2  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x70,0x08,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0xA0,0x90,0x88,0x84,0x83,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  3  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x70,0x80,0x81,0x81,0x81,0x42,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  4  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x0B,0x08,0x88,0x88,0xFF,0x88,0x88,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  5  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x73,0x82,0x81,0x81,0x81,0x42,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  6  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x80,0x60,0x10,0x08,0x08,0x08,0x08,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0x42,0x81,0x81,0x81,0x81,0x42,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  7  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0x38,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0xE0,0x10,0x08,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x45,0x82,0x82,0x82,0x82,0x45,0x38,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  9  --*/
/*--  Trebuchet MS14;  此字体下对应的点阵为:宽x高=19x19   --*/
/*--  高度不是8的倍数,现调整为:宽度x高度=19x24  --*/
0x00,0xE0,0x10,0x08,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x61,0x82,0x84,0x84,0x84,0x44,0x32,0x0F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

void delay(uint ii)
{
 uint i,x;
 for (x=0;x<ii;x++)
 {
  for (i=0;i<100;i++);
 }
}
 
void Lcd_Write_Byte(uchar dt,uchar comm)
{
 uint i;
 SCE=0; //片选
 DC=comm;
 for(i=0;i<8;i++)
 {
  if(dt&0x80)
   SDIN=1;
  else
   SDIN=0;
  dt<<=1;
  SCLK=0;
  SCLK=1;
 }
 DC=1;
 SCE=1;
 SDIN=1;
}
/*---------------------------------------
LCD_init: 3310LCD初始化
编写日期:20080918
-----------------------------------------  */
void Lcd_Init(void)
{
 RST=0;
 delay(10);
 RST=1;
 Lcd_Write_Byte(0x21,0);//初始化Lcd,功能设定使用扩充指令100001
 Lcd_Write_Byte(0xC6,0);//设定液晶偏置电压11000110    
 Lcd_Write_Byte(0x06,0);//  110
   Lcd_Write_Byte(0x13,0);//(0x10,0);;//1:48  10011
 Lcd_Write_Byte(0x20,0);//使用基本指令  100000
 Lcd_Write_Byte(0x0C,0);//设定显示模式,正常显示  1100
  
}
/*-------------------------------------------
LCD_set_XY: 设置LCD坐标函数
输入参数:X:0-83  Y:0-5
编写日期:20080918
---------------------------------------------*/
void LCD_set_XY(uchar X, uchar Y)
{
 Lcd_Write_Byte(0x40 | Y, 0);// column   01000000 64 设置RAM的Y地址
 Lcd_Write_Byte(0x80 | X, 0);// row    10000000  128 设置RAM的X地址
}
/*------------------------------------------
LCD_clear: LCD清屏函数
编写日期:20080918
--------------------------------------------*/
void LCD_clear(void)
{
 uchar k,t;
 LCD_set_XY(0,0);
 for(t=0;t<6;t++)
 {
  for(k=0;k<84;k++)
  {
   Lcd_Write_Byte(0x00,1);
    
  }
 }
}

/*---------------------------------------------
LCD_Fill: 填充LCD中所有点
编写日期:20110710
-----------------------------------------------*/
void LCD_Fill(void)
{
 uchar k,t;
 LCD_set_XY(0,0);
 for(t=0;t<6;t++)
 {
  for(k=0;k<84;k++)
  {
   Lcd_Write_Byte(0xff,1);
    
  }
 }
}

/*---------------------------------------------
LCD_Write_Word: 在屏中写汉字.
在每page页开始的地方写w*h大的字符 (屏大小84*48 6页,每页84列)
编写日期:20110710
-----------------------------------------------*/
LCD_Write_Word(uchar dat,uchar x,uchar page,uchar w,uchar h)
{
 uchar j,k,i=0;

 for(k=0;k<h/8;k++)
 {
  LCD_set_XY(x,page++);
  for(j=0;j<w;j++)
  {     
   Lcd_Write_Byte(Array1924[dat*57+i++],1);  
  }
 }
 
}

/*---------------------------------------------
LCD_Write_Digit: 在屏中写数字.
在每page页开始的地方写w*h大的字符 (屏大小84*48 6页,每页84列)
编写日期:20110710
-----------------------------------------------*/
LCD_Write_Digit(uchar dat,uchar x,uchar page,uchar w,uchar h)
{
 uchar j,k,i=0;

 for(k=0;k<h/8;k++)
 {
  LCD_set_XY(x,page++);
  for(j=0;j<w;j++)
  {     
   Lcd_Write_Byte(Array1024[dat*30+i++],1);  
  }
 }
 
}
/*---------------------------------------------
LCD_DisplayYear(int year):显示年
编写日期:20110710
-----------------------------------------------*/
LCD_DisplayYear(int year)
{
 LCD_Write_Digit(year/1000,  0, 0,10,24);//2
 LCD_Write_Digit(year/100%10,10,0,10,24);//0
 LCD_Write_Digit(year/10%10, 20,0,10,24);//1
 LCD_Write_Digit(year%10,    30,0,10,24);//1
 LCD_Write_Word(0,           40,0,19,24);//年
}

/*---------------------------------------------
LCD_DisplayMonDay(int month,int day):显示月日
编写日期:20110710
-----------------------------------------------*/
LCD_DisplayMonDay(int month,int day)
{
 LCD_Write_Digit(month/10,  0, 2,10,24);//0
 LCD_Write_Digit(month%10,  10,2,10,24);//7
 LCD_Write_Word(1,          20,2,19,24);//月
 LCD_Write_Digit(day/10,    39,2,10,24);//1
 LCD_Write_Digit(day%10,    49,2,10,24);//0
 LCD_Write_Word(2,          59,2,19,24);//月
}

/*---------------------------------------------
LCD_DisplayTime(int hour,int minute):显示时分
编写日期:20110710
-----------------------------------------------*/
LCD_DisplayTime(int hour,int minute,int second)
{
 LCD_Write_Digit(hour/10,  0, 4,10,24);//0
 LCD_Write_Digit(hour%10,  10,4,10,24);//7
 LCD_Write_Digit(10,       20,4,10,24);//:?
 LCD_Write_Digit(minute/10,30,4,10,24);//1
 LCD_Write_Digit(minute%10,40,4,10,24);//0
 LCD_Write_Digit(10,       50,4,10,24);//:
 LCD_Write_Digit(second/10,60,4,10,24);//1
 LCD_Write_Digit(second%10,70,4,10,24);//0
}

/*---------------------------------------------
TimeInit(void)定时器初始化(选哪个定时器好?)
编写日期:20110710
-----------------------------------------------*/
void TimeInit(void)
{
 TMOD=0x01;
 TH0=(65536-45872)/256;
 TL0=(65536-45872)%256;
 EA=1;
 ET0=1;//开定时中断;
 TR0=1; 
}

/*---------------------------------------------
Int0_time(void)定时器中断函数(具体时间如何?)
编写日期:20110710
-----------------------------------------------*/
void Int0_time() interrupt 1   //定时中断;
{
 TH0=(65536-45872)/256; //50MS
 TL0=(65536-45872)%256;
 num++;
 if(num>=20)//每秒
 {
  second++;
  if(second>=60)
  {
   minute++;
   if(minute==60)
   {
    hour++;
    if(hour==24)
    {
     day++;
     if(day==30)//约定日期为30天一个月
     {
      month++;
      if(month==12)
      {
       year++;
      }
      day=1;
     }
     hour=1;
    }
    minute=1;
   }
   second=1;
  }
  num=0;
 }

}

void KeyScan(void)
{
 if(key1==0)//重启;
 {
  delay(10); //用多少时间合适;为什么? 抖动10ms
  if(key1==0)
  {
   month++;
   if(month>=24)month=1;
   while(!key1);
  }
 } 
 if(key2==0)//暂停;
 {
  delay(10);
  if(key2==0)
  {
   day++;
   if(day>=30)day=1;
   while(!key2);
  }
 }
 if(key3==0)//停止;
 {
  delay(10);
  if(key3==0)
  {
   hour++;
   if(hour>=24)hour=1;
   while(!key3);
  }
 }
 if(key4==0)//停止;
 {
  delay(10);
  if(key4==0)
  {
   minute++;
   if(minute>=60)minute=1;
   while(!key4);
  }
 }
}


/*---------------------------------------------
main()主函数
编写日期:20110710
-----------------------------------------------*/
void main()
{
 Lcd_Init();
 LCD_clear();
 TimeInit();
 while(1)
 {
  LCD_DisplayYear(year);//要消耗时间
  LCD_DisplayMonDay(month,day);  //要消耗时间
  LCD_DisplayTime(hour,minute,second);  //要消耗时间
  KeyScan();//要消耗时间
 }

}

posted on 2011-07-10 18:43 红云 阅读(121) 评论(0)  编辑 收藏 引用 所属分类: 51/ARM

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理