📄 -=-
字号:
#include<reg51.h>
#define uchar unsigned char
//..........................1602的子函数..............//
void init_1602();
void delay(uchar ms);
void write_com(uchar com);
void write_date(uchar date);
//...........................1302的子函数.............//
uchar recvive_date();
void send_command(uchar command);
void send_date(uchar date);
void change_date();
void disply_date();
//.......................发送,接收和处理数据的缓冲区...............................//
//.......................初始化时间为59秒59分24时09日09月星期7,09年................//
uchar table[8]={0x59,0x59,0x23,0x09,0x09,0x07,0x09,0};
uchar table1[7];
uchar table2[14];
uchar adder[14]={0xca,0xcb,0xc7,0xc8,0xc4,0xc5,0x89,0x8a,0x86,0x87,0x8d,0x8e,0x83,0x84};
uchar command;
//...1602的端口定义: rs,rw和e分别为(lcd)1602的3,4和5引脚。(lcd)1602的6~13(d0~d7)接单片机的p1口..//
//...1302的端口定义: sclk,io和rst分别接时钟芯片1302的7,6和5脚....................................//
sbit rs=P2^2;
sbit rw=P2^1;
sbit e=P2^0;
sbit sclk=P2^5;
sbit io=P2^6;
sbit rst=P2^7;
void main()
{
uchar i;
init_1602();
send_command(0xbe);
for(i=0;i<8;i++)
send_date(table[i]);
rst=0;
while(1)
{
send_command(0xbf);
for(i=0;i<7;i++)
table1[i]=recvive_date();
rst=0;
change_date();
disply_date();
}
}
//.....................发送命令函数..............................//
void send_command(uchar command)
{
uchar temp,i;
rst=0;
sclk=0;
rst=1;
for(i=0;i<8;i++)
{
temp=command&0x01;
command>>=1;
io=temp;
sclk=1;
sclk=0;
}
}
//....................发送数据函数..............................//
void send_date(uchar date)
{
uchar j,temp;
for(j=0;j<8;j++)
{
temp=date&0x01;
date>>=1;
io=temp;
sclk=1;
sclk=0;
}
}
//.....................接收数据函数..............................//
uchar recvive_date()
{
uchar temp=0,i;
for(i=0;i<8;i++)
{
temp>>=1;
if(io)
temp|=0x80;
sclk=1;
sclk=0;
}
return temp;
}
//.....................处理数据函数..............................//
void change_date()
{
uchar i,count,num=0;
for(i=0;i<7,num<14;i++)
{
count=table1[i];
table1[i]&=0xf0;
table2[num++]=(table1[i]>>4);
count&=0x0f;
table2[num++]=count;
}
}
//....................lcd显示函数..............................//
void disply_date()
{
uchar i,num=0;
for(i=0;i<14;i++)
{
write_com(adder[i]);
write_date(0x30+table2[num++]);
}
write_com(0x81);
write_date(0x32);
write_com(0x82);
write_date(0x30);
write_com(0xc6);
write_date(0x3a);
write_com(0xc9);
write_date(0x3a);
write_com(0x85);
write_date(0x2d);
write_com(0x88);
write_date(0x2d);
}
//.....................延时函数..............................//
void delay(uchar ms)
{
uchar a,b;
for(a=ms;a--;a>0)
for(b=110;b--;b>0);
}
//...................1602的各个子函数......................//
void write_com(uchar com)
{
rs=0;
rw=0;
e=1;
delay(5);
P1=com;
e=0;
}
void write_date(uchar date)
{
rs=1;
rw=0;
e=1;
delay(5);
P1=date;
e=0;
}
void init_1602()
{
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -