c语言led显示时间代码,DS1302+AT89S52+LED时钟程序(C语言源代码+

#include

/*************************ds1302与at89s52引脚连接********************/

sbit T_RST=P3^5;

sbit T_CLK=P3^6;

sbit T_IO=P3^7;

sbit ACC0=ACC^0;

sbit ACC7=ACC^7;

unsigned char seg[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};         //0~~9段码

/******************DS1302:写入操作(上升沿)*********************/

void write_byte(unsigned char da)

{

unsigned char i;

ACC=da;

for(i=8;i>0;i--)

{

T_IO=ACC0;

T_CLK=0;

T_CLK=1;

ACC=ACC>>1;

}

}

/******************DS1302:读取操作(下降沿)*****************/

unsigned char read_byte(void)

{

unsigned char i;

for(i=0;i<8;i++)

{

ACC=ACC>>1;

T_CLK = 1;

T_CLK = 0;

ACC7 = T_IO;

}

return(ACC);

}

/******************DS1302:写入数据(先送地址,再写数据)***************************/

void write_1302(unsigned char addr,unsigned char da)

{

T_RST=0;    //停止工作

T_CLK=0;

T_RST=1;   //重新工作

write_byte(addr);    //写入地址

write_byte(da);

T_RST=0;

T_CLK=1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LED数#include #include #define ulong unsigned long #define uchar unsigned char #define _Nop() _nop_() sbit T_CLK = P1^0; sbit T_IO = P1^1; sbit T_RST = P1^2; sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; sbit DA_in_port = P0^2; sbit CLK_port = P0^1; sbit Latch_port = P0^0; uchar data time_data[8]={0x00,0x57,0x16,0x00,0x00,0x00,0x00,0x00}; uchar code shum[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x40}; uchar code shha[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar shu1,shu2,shu3,shu4,shu5,shu6,shu7,shu8; void W1302(uchar ucAddr, uchar ucDa)//写1字节 { uchar i; //写地址 T_RST=0; T_CLK=0;//增加 T_RST=1; ACC=ucAddr; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } //写数据 ACC=ucDa; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } T_CLK=1; T_RST=0; } uchar R1302(uchar ucAddr) //读1字节 { uchar i; ACC=ucAddr; T_RST=0; T_CLK=0; T_RST=1; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } for(i=8;i>0;i--) //修改了 { ACC=ACC>>1; ACC7=T_IO; T_CLK=1; T_CLK=0; //修改了 } T_CLK=1; T_RST=0; return(ACC); } void Set1302(uchar *pClock) { uchar i; uchar ucAddr = 0x80; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ for(i =7; i>0; i--) { W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock++; ucAddr +=2; } W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/ } void Get1302(uchar ucCurtime[]) { uchar i; uchar ucAddr = 0x81; for (i=0; i<7; i++) { ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */ ucAddr += 2; } } void HC595_Data_Send() { uchar ab,i,daH,hang; for(ab=0;ab<8;ab++) { switch(ab) { case
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值