标题:
STC15w单片机万年历代码 PFC8563时钟程序
[打印本页]
作者:
槿木子
时间:
2017-7-7 16:33
标题:
STC15w单片机万年历代码 PFC8563时钟程序
STC15w4K58s4与PFC8563时钟芯片,LCD1602做万年历,用的时I2C总线方式,用的时候,将.h文件添加到main.c下边,要正确选择添加顺序,先是main.c文件,在是I2C.h,再添加其他两个,如果报错,就把这三个换换顺序总之是没问题的,亲测通过
0.png
(53.76 KB, 下载次数: 56)
下载附件
2017-7-8 04:36 上传
单片机源程序如下:
#include<reg51.h>
#include<I2C.h>
#include<stdlib.h>
#include<1602.h>
#include<led1602.h>
#include<intrins.h>
#define uchar unsigned char
sfr P0M1=0x93;
sfr P0M0=0x94;
sfr P2M1=0x95;
sfr P2M0=0x96;
idata uchar rom_sed[7]; //当前发送值
idata uchar rom_rec[7]; //当前接收值
uchar dis[14];
bit flag,flag1;
unsigned char tstr[20],tstr1[20];
/*-------------------PCF初始化子程序------------------------*/
initializa()
{
data uchar i;
rom_sed[0]=0x00; //秒:0
rom_sed[1]=0x20; //分 :54
rom_sed[2]=0x15; //时:12
rom_sed[3]=0x07; //日 :7
rom_sed[4]=0x05; //星期 :5
rom_sed[5]=0x07; //月:7
rom_sed[6]=0x17; //年:17
for(i=0;i<255;i++)delay();
I_start();
if(~I_send(0xa2)) //PCF_write地址
{
if(~I_send(0x02)) //PCF_status寄存器地址
{
for(i=0;i<6;i++)
{
if(~I_send(rom_sed[i]));
else;
}
I_stop();
}
else;
}
else;
}
/*---------------------------读PCF子程序---------------------------*/
pcf8563()
{
data uchar i;
I_start();
if(~I_send(0xa2))
{
if(~I_send(0x02))
{
I_start();
if(~I_send(0xa3))
{
for(i=0;i<7;i++)
{
if(i==6)flag1=1;
else flag1=0;
rom_rec[i]=I_receive();
switch(i)
{
case 1: rom_rec[i] = rom_rec[i]&0x7f;break;
case 2:
case 3: rom_rec[i] =rom_rec[i]&0x3f;break;
case 4: rom_rec[i] = rom_rec[i]&0x07;break;
case 5: rom_rec[i] = rom_rec[i]&0x9f;break;
default:break;
}
}
I_stop();
}
}
}
}
void main()
{ int j=0;
initializa();
for(j=0;j<1000;j++)
while(1)
{
pcf8563();
P0M0=0;
P0M1=0;
P2M0=0;
P2M1=0;
dis[0]=rom_rec[0]&0x0f; //秒 个位
dis[1]=rom_rec[0]>>4; //十位
dis[2]=rom_rec[1]&0x0f; //分
dis[3]=rom_rec[1]>>4;
dis[4]=rom_rec[2]&0x0f; //时
dis[5]=rom_rec[2]>>4;
dis[6]=rom_rec[3]&0x0f; //日
dis[7]=rom_rec[3]>>4;
dis[8]=rom_rec[4]&0x0f; //星期
dis[9]=rom_rec[4]>>4;
dis[10]=rom_rec[5]&0x0f; //月
dis[11]=rom_rec[5]>>4;
dis[12]=rom_rec[6]&0x0f; //年
dis[13]=rom_rec[6]>>4;
tstr[0]=0x32;//2
tstr[1]=0x30; //0
tstr[2]=dis[13]+0x30;//年
tstr[3]=dis[12]+0x30;
tstr[4]=0x2E;
tstr[5]=dis[11]+0x30;//月
tstr[6]=dis[10]+0x30;
tstr[7]=0x2E; //点
tstr[8]=dis[7]+0x30;//日
tstr[9]=dis[6]+0x30;
tstr[10]=0x20;
tstr[11]=0x77; //小写w
tstr[12]= 0x65; //小写e
tstr[13]=0x65;
tstr[14]=0x6B; //小写k
tstr[15]=dis[8]+0x30; //星期
tstr1[0]=0x74; //t
tstr1[1]=0x69; //i
tstr1[2]=0x6D; //m
tstr1[3]=0x65; //e
tstr1[4]=0x20;
tstr1[5]=dis[5]+0x30;//时
tstr1[6]=dis[4]+0x30;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
万年历.rar
(2.95 KB, 下载次数: 56)
2017-7-7 16:29 上传
点击文件名下载附件
代码
下载积分: 黑币 -5
作者:
sun5304
时间:
2017-9-6 14:41
感谢楼主提供分享!下来学习学习。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1