资源简介
基于单片机AT89S52实现PCF8563实时时钟日历,显示在6位数码管
代码片段和文件信息
#include “at89s52.h“
#define uint unsigned int
#define uchar unsigned char
#define PORT_Duan P0 //数码管段显
#define PORT_Wei P2 //数码管位显
uchar Sec_8563Min_8563Hou_8563Day_8563Week_8563Mon_8563Year_8563; //时钟全局变量
//---PCF8563端口位定义---------------------------------
sbit sda_8563 = P1^0;
sbit scl_8563 = P1^1;
//----函数声明-------------------------------
void start_8563(void);
void stop_8563(void);
void write_8563(uchar data_8563);
uchar read_8563(void);
void Init_8563(void);
void Read_data_8563(void);
void Display_8563(uchar time_1uchar time_0);
void Display_Int(uint dat);
/******************************************/
uchar dat[6]; //用户数据输入口
uchar code DSY_d[]={ //字型码(段选码)0-9低电平有效
0xc00xf90xa40xb0
0x990x920x820xf8
0x800x90};
uchar code DSY_w[]={ //低电平有效
0xfe0xfd0xfb0xf7
0xef0xdf0xbf0x7f}; //位选信号
//计数函数
/* 动态扫描函数*/
uchar num ;
void SEG_DSY( void ) //数码管显示函数
{
PORT_Wei = PORT_Wei ; //屏蔽高两位
PORT_Duan= 0Xff ; //消隐
PORT_Duan = DSY_d[ dat[num ]] ; //显示段
PORT_Wei = 0XFF ; //消隐
PORT_Wei= DSY_w[ num ] ; //3位数码管
if( ++num == 6 ) num = 0 ;
}
void TIME_T1(void)
{
TMOD = 0X10 ;
TH1 = (65536-2000)/256 ; // 2ms
TL1 = (65536-2000)%256 ;
EA = 1 ;
ET1 = 1 ;
TR1 = 1 ;
}
//---PCF8563驱动
//--------------------------------------------------------------------------
//函数名称: start_8563()
//函数功能: 8563启动时序
//其他说明:
//--------------------------------------------------------------------------
void start_8563(void)//启动8563
{
sda_8563 = 1;
scl_8563 = 1;
sda_8563 = 0;
}
//--------------------------------------------------------------------------
//函数名称: stop_8563()
//函数功能: 8563停止时序
//其他说明:
//--------------------------------------------------------------------------
void stop_8563(void) //停止8563
{
sda_8563 = 0;
scl_8563 = 1;
sda_8563 = 1;
}
//--------------------------------------------------------------------------
//函数名称: write_8563(uchar data_8563)
//函数功能: 8563写一个字节
//其他说明:
//--------------------------------------------------------------------------
void write_8563(uchar data_8563)//写一位数据8563
{
uchar i;
for(i=0;i<8;i++)
{
scl_8563 = 0;
if(data_8563&0x80)
{
sda_8563 = 1;
}
else sda_8563 = 0;
scl_8563 = 1;
data_8563<<=1;
scl_8563 = 0;//最后拉低电平完成一个完整脉冲(error)
}
sda_8563 = 1;
scl_8563 = 1;
scl_8563 = 0;
}
//--------------------------------------------------------------------------
//函数名称: read_8563()
//函数功能: 8563读一个字节
//其他说明:
//--------------------------------------------------------------------------
uchar read_8563(void) //读一位数据8563
{
uchar itemp;
for(i=0;i<8;i++)
{
scl_8563 = 0;
temp<<=1;
scl_8563 = 1;
if(sda_8563==1)
{
temp |= 0x01;
}
}
sda_8563 = 1;
scl_8563 = 0;
scl_8563 = 1;
scl_8563 = 0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9674 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\output\SX-108B-17
文件 1872 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\output\SX-108B-17.hex
文件 100 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\output\SX-108B-17.lnp
文件 10885 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\output\SX-108B-17.obj
文件 1378 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\output\SX-108B-17.plg
文件 5210 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\src\SX-108B-17.c
文件 10670 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\src\SX-108B-17.lst
文件 12254 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\src\SX-108B-17.m51
文件 169 2012-07-23 09:04 数码管显示PCF8563实时时钟日历\SX-108B-17.plg
文件 56864 2012-07-24 12:21 数码管显示PCF8563实时时钟日历\SX-108B-17.uvopt
文件 13270 2012-07-23 11:32 数码管显示PCF8563实时时钟日历\SX-108B-17.uvproj
文件 56866 2012-07-23 14:07 数码管显示PCF8563实时时钟日历\SX-108B-17_uvopt.bak
文件 13055 2012-07-23 09:05 数码管显示PCF8563实时时钟日历\SX-108B-17_uvproj.bak
目录 0 2012-07-24 17:43 数码管显示PCF8563实时时钟日历\output
目录 0 2012-07-24 17:43 数码管显示PCF8563实时时钟日历\src
目录 0 2012-07-24 17:43 数码管显示PCF8563实时时钟日历
----------- --------- ---------- ----- ----
192267 16
- 上一篇:运维服务规范
- 下一篇:Memcached相关程序
评论
共有 条评论