1602液晶显示

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//这三个引脚参考资料
sbit E=P2^7; //1602使能引脚
sbit RW=P2^6; //1602读写引脚
sbit RS=P2^5; //1602数据/命令选择引脚

uchar aa[]=" 23:56:50 ";
uchar bb[]=" 2013-11-09 " ;
uint temp=0;
uchar k = 0,n= 0;
uchar *p=&k;
void delay()
{
uchar cnt;
for(cnt=80;cnt>0;cnt--);
}

void wcmd(uchar del)
{
RS = 0;
RW = 0;
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}

void wdata(uchar del)
{
RS = 1;
RW = 0;
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}

void L1602_init(void)
{
wcmd(0x38);
wcmd(0x0c);
wcmd(0x06);
wcmd(0x01);
}

void L1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
wcmd(a);
wdata(sign);
}


void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
while(1)
{
wcmd(a++);
b++;
if((*p == '\0')||(b==16)) break;
wdata(*p);
p++;
}
}
void int_2(void)
{

int temp;
n++ ;
if(n != 0)
switch ( k )
{
case 1: for(;n>0;n--)
{
aa[12]++;
if(aa[12]==10+'0')
{
aa[12] = '0';
aa[11]++;
}
if(aa[11]=='6')
{ aa[11] = '0';aa[12]= '0'; }
}break;
case 2: for(;n>0;n--)
{ aa[9]++;
if(aa[9]==10+'0')
{
aa[9] = '0';
aa[8]++;
}
if(aa[8]=='6')
{aa[8] = '0';aa[9]='0';}}break;
case 3: for(;n>0;n--){
aa[6]++;
if(aa[6]==10+'0')
{
aa[6] = '0';
aa[5]++;
}
if(aa[5]=='2'&&aa[6]=='4')
{ aa[5] = '0';aa[6]='0';} }break;
case 4: for(;n>0;n--){
bb[12]++;
if(bb[12]==10+'0')
{
bb[11]++;
bb[12]='0';
}
if(bb[8]=='0'&&bb[9]=='2'&&bb[11]=='2' &&bb[12]=='9')
{ bb[11]='0';bb[12]='1';bb[8]='0';bb[9]='2';}
else if (bb[8]=='0'&&(bb[9]=='4'||bb[9]=='6'||bb[9]=='9')||bb[8]=='1'&&bb[9]=='1')
if(bb[11]=='3' &&bb[12]=='1')
{
bb[11]='0';bb[12]='1';
}

if(bb[8]=='0'&&(bb[9]=='5'||bb[9]=='7'||bb[9]=='3'||bb[9]=='1'||bb[9]=='8'))
if(bb[11]=='3' &&bb[12]=='2')
{
bb[11]='0';
bb[12]='1';
}
if(bb[8]=='1'&&(bb[9]=='0'||bb[9]=='2'))
if(bb[11]=='3' &&bb[12]=='2')
{
bb[11]='0';
bb[12]='1';
bb[8] ='1';
}} break;
case 5:for(;n>0;n--){
bb[9]++;
if(bb[9]==10+'0')
{
bb[9] = '0';
bb[8]++;
}
if(bb[8]=='1'&&bb[9]=='3')
{ bb[8] = '0';bb[9]='1'; } }
break;
case 6 : for(;n>0;n--){
bb[6]++;
if(bb[6]==10+'0')
{
bb[6] = '0';
bb[5]++;
if(bb[5]==10+'0')
{
bb[4]++;
bb[5] = '0';
}
}
}break;
default : ;break;
}
// for(temp=55000;temp>0;temp--);
for(temp=11000;temp>0;temp--);
}

void Main()
{
uchar i = 0;
uchar j,k1;

TMOD = 0x01; //方式
TH0 = 0xfc;TL0 = 0x18; //装初值1ms
EA = 1; ET0 = 1; //开中断
EX0 = 1;IT0 = 1; //

TR0 = 1;
L1602_init();
L1602_string(1,1," 2012-11-09 ");
while(1)
{
j = P3;
if(k!=0)
{
j = j&0x08;
if(j==0)
{ for(k1=50;k1>0;k1--)
{
delay();
}
if(j==0)
int_2();
}
}
for(i=2;i<16;i++)
L1602_char(1,i,bb[i]);

for(i=5;i<16;i++)
L1602_char(2,i,aa[i]);

}

}
void int_0(void) interrupt 0
{
int cnt=55000;
ET0 = 0;
(*p)++;
k= k % 7;
if(k==0)
{
ET0 = 1;
n = 0 ;
}
//for(cnt=55000;cnt>0;cnt--);
for(cnt=22000;cnt>0;cnt--);
}


void time0_int (void) interrupt 1
{
TH0 = 0xfc;
TL0 = 0x18+6;
if(k==0)
temp++; // 装初值10ms
if(temp==1000 && k==0)
{
temp = 0;
aa[12]++;
if(aa[12]==10+'0')
{
aa[12] = '0';
aa[11]++;
}
if(aa[11]=='6'&&aa[12]=='0')
{
aa[11]='0';
aa[9]++ ;
}
/*************************************/
if(aa[9]==10+'0')
{
aa[9] = '0';
aa[8]++;
}
if(aa[8]=='6' &&aa[9]=='0')
{
aa[8]='0';
aa[6]++ ;
}
/********************************************/
if(aa[6]==10+'0')
{
aa[6] = '0';
aa[5]++;
}
if(aa[5]=='2' &&aa[6]=='4')
{
aa[6]='0';
aa[5]='0';
bb[12]++;/*******/
}
if(bb[12]==10+'0')
{
bb[11]++;
bb[12]='0';
}
if(bb[8]=='0'&&bb[9]=='2'&&bb[11]=='2' &&bb[12]=='9')
{bb[11]='0';bb[12]='1';bb[9]++;}
else if (bb[8]=='0'&&(bb[9]=='4'||bb[9]=='6'||bb[9]=='9')||bb[8]=='1'&&bb[9]=='1')
if(bb[11]=='3' &&bb[12]=='1')
{
bb[11]='0';bb[12]='1';
bb[9]++;
}
if(bb[8]=='0'&&(bb[9]=='5'||bb[9]=='7'||bb[9]=='3'||bb[9]=='1'||bb[9]=='8'))
if(bb[11]=='3' &&bb[12]=='2')
{

bb[9]++;
bb[11]='0';
bb[12]='1';
}
if(bb[8]=='1'&&(bb[9]=='0'||bb[9]=='2'))
if(bb[11]=='3' &&bb[12]=='2')
{
if(bb[9]=='2')
{
bb[8] = '0';
bb[9] = '1'; //

bb[11]='0';
bb[12]='1'; //
bb[6]++;
if(bb[6]==10+'0')
{
bb[5]++;
bb[6]='0';
}
}
else
{
bb[9]++;
bb[11]='0';
bb[12]='1';
}
}
}

}

很久以前写的了,感觉单片机挺好玩的。跟大家分享一下吧

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值