共有回帖数 0 个
-
先上代码
/*P0口进行控制, P2口输出*/
#includereg52.h
#define uint unsigned int
#define uchar unsigned char
#define DPORT P2
unsigned long int ms=0;
uint second=0,tensecond=0,min=0,tenmin=0,hour=0,tenhour=0;
uchar num;
sbit RS=P0^2; /*数据命令端*/
sbit RW=P0^3; /* 读写端 */
sbit E=P0^4; /* 使能端 */
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
ms++; /*ms为50ms增加一次*/
if((ms+1)%20==0)second++;
if((ms+1)%200==0)tensecond++;
if((ms+1)%1200==0)min++;
if((ms+1)%12000==0)tenmin++;
if((ms+1)%72000==0)hour++;
if((ms+1)%720000==0)tenhour++;
}
void delay(uchar t)
{
uchar i,j;
for(i=0;it;i++)
for(j=0;j110;j++);
}
void write_com(uchar com) /*写命令*/
{
RS=0;
RW=0;
DPORT=com;
delay(5);
E=1;
delay(5);
E=0;
}
void write_data(uchar dat)
{
RS=1; /*写数据则为高电平*/
RW=0;
DPORT=dat;
delay(5);
E=1; /*延迟,送入高脉冲*/
delay(5);
E=0;
}
void init()
{
E=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
main()
{
init();
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
EA=1;
ET0=1;
write_com(0x80); /*起始点定位*/
write_data(116); /* 写“TIME" */
delay(5);
write_data(105);
delay(5);
write_data(109);
delay(5);
write_data(101);
delay(5);
write_data(58);
delay(5);
write_com(0x80+0x05); /* 再定位起始点 */
do{ /* 写时钟数据 */
write_data(tenhour%24/10+48);
write_data(hour%24%10+48);
write_data(58);
write_data(tenmin%6+48);
write_data(min%10+48);
write_data(58);
write_data(tensecond%6+48);
write_data(second%10+48);
write_com(0x10);
write_com(0x10);
write_com(0x10);
write_com(0x10);
write_com(0x10);
write_com(0x10);
write_com(0x10);
write_com(0x10);
}while(1);
}

楼主 2015-12-17 16:37 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知