1、sbit LCD_RS = P24;sbit LCD_RW = P23;sbit LCD_EN = P22;unsigned char tt,miao,fen,shi;unsigned char a="QQ:287712876 &;char b=& 00:00:00&/*/* */* 延时子程序 */void delay(int ms) int i;while(ms-)for(i = 0; i& 250; i+)_nop_();delay1( unsigned int z) unsigned char x,y;for( x=z;x&0;x-)for( y=110;y&y-);/*检查
2、LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */bit lcd_busy()bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;result = (bit)(P1&0x80);LCD_EN = 0;return result;/*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。void write_com(unsigned char com)while(lcd_busy();LCD_RW = 0;P1 = com;/* */*写显示数据到LCD */*RS=H,RW
3、=L,E=高脉冲,D0-D7=数据。void write_date (unsigned char date) LCD_RS = 1;P1 = date;void write_sfm(unsigned char add,unsigned char date) unsigned char shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);/* LCD初始化设定 */void init() unsigned int i;write_com(0x38); /16
4、*2显示,5*7点阵,8位数据delay(5);write_com(0x0c); /显示开,关光标write_com(0x06); /移动光标write_com(0x01); /清除LCD的显示内容write_com(0x80);for( i=0;i&16 ;i+) write_date( ai);delay1(5);write_com(0x80+0x40);for(i=0;12; write_date(bi);TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void main() /unsigned char i;init();while(1)if(tt=20) tt=0;miao+;if(miao=60) miao=0;fen+;if(fen=60) fen=0;shi+;if(shi=24) shi=0;write_sfm( 4,shi);write_sfm(7,fen);write_sfm(10,miao);void timer0() interrupt 1 TH0=(65536-50000)/256;tt+;