- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5次上机实验 PCF8563
第五次实验
main.c
#includereg52.h
#includedisplay.c
#includepcf8563.c
void delay_1s(unsigned int);
void separate(unsigned char sec,min,hou);
unsigned char j0,j1,j2=17,j3;j4,j5=17,j6,j7;
main()
{ unsigned LastSec;
delay_1s(2);
Init_pcf8563(); //初始化时间
write_time_8563(); //初始化时间
while(1)
{
read_time_8563();
if(sec!=LastSec) // 秒变化时,才进行显示
{
LastSec=sec;//保存现在的秒值,准备与下一个读出的秒比较
separate(sec,min,hou);
display(j0,j1,j2,j3,j4,j5,j6,j7);
delay_1s(10000);
}
}
}
void separate(unsigned char sec,min,hou)
{
j0=sec%10;
j1=sec/10;
j3=min%10;
j4=min/10;
j6=hou%10;
j7=hou/10;
}
//=============================================
void delay_1s(unsigned int x )
{
while(x--);
}
Display.h
void shift(unsigned char);
void display(unsigned char j0,j1,j2,j3,j4,j5,j6,j7);
sbit sda=P0^2;
sbit scl=P0^3;
code char led_code[19]=
{ //display code
0x11,0xd7,0x32,0x92,0xd4,//0,1,2,3,4
0x98,0x18,0xd3,0x10,0x90,//5,6,7,8,9
0x50,0x1c,0x39,0x16,0x38,//a,b,c,d,e
0x78,0xfe,0xef,0xff // f- dot darkf
};
Display.c
#include display.h
void display(unsigned char j0,j1,j2,j3,j4,j5,j6,j7)
{
shift(j0);
shift(j1);
shift(j2);
shift(j3);
shift(j4);
shift(j5);
shift(j6);
shift(j7);
}
void shift(unsigned char n)
{
unsigned char m,i;
m=led_code[n];
scl=0;
for(i=0;i8;i++)
{
if (m 0x80)
{ sda=1;}
else
{ sda=0; }
scl=1;
scl=0;
m=1;
}
}
Pcf8563.h
sbit sda_8563 = P0^7;
sbit scl_8563 = P0^6;
unsigned char year,mon,day,hou=0x16,min=0x16,sec=0x20,week,last_week=7;
const unsigned char time[7]={0x09,0x11,0x20,0x05,0x11,0x14,0x30};
//设置初值:年.月.日.星期.时.分.秒
//与PCF8563有关的函数声明
void delay_8563(unsigned int); //延迟子程序
void start(void); //开始子程序
void stop(void); //结束子程序
void Init_pcf8563(void);//初始化pcf8563
unsigned char writebyte_8563(unsigned char );//写一个字节=====
unsigned char readbyte_8563(void); //读一个字节
void read_time_8563(void); //读日期,数据放于year,mon,day,hou,min,sec,week
void write_time_8563(void); //写日期初值,数据放于
文档评论(0)