历史上的今天
返回首页

历史上的今天

今天是:2025年01月27日(星期一)

正在发生

2018年01月27日 | 基于DS1307的简易时钟显示程序分享

2018-01-27 来源:互联网

目前家用的数字电子钟,多数只能显示小时、分钟等信息,功能单一,而且大都采用LED数码管作为显示器件,功耗大,不能令消费者满意。

DS1307简介

AM/PM 标志位决定时钟工作于24小时或12小时模式,芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能。

是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能

特点:

可对秒,时,分,每月的天数,月份,每周的天数进行计数,并具有闰年补偿功能。计年上限2100。

56字节非失性的RAM

两线串行接口

可编程方波输出

自动掉电检测和切换电路

在电池备份模式下,功耗小于500nA

工业级的工作温度: -40 到80

8脚DIP和SOIC封装

下面分享一下基于DS1307的简易时钟显示程序给大家:

* Coder:NUIST_XKFYT

* E-mail:weilun_fong@nuist.edu.cn(Welcome to get help info about this program)

* Date:2016-7-17

*

* Device:STC89C54RD,DS1307Z+

* FuncTIon:简易时钟显示

* Note:

* 1.DS1307四位固定地址位为1101,三位可编程地址位为000

*/

#include 《STC89C5xRC.h》 /* 可更换为《reg52.h》或《AT89x52.h》 */

#include 《intrins.h》

//#include 《TIme.h》 /* Keil v4中无法调用该标准库函数 */

#define uchar unsigned char

#define uint unsigned int

/* DS1307操作指令 */

#define DS1307_WRITE 0xD0

#define DS1307_READ 0xD1

#define DS1307_DISABLE 0x80

#define DS1307_ENABLE 0x7F

#define DS1307_12HOUR_MODE 0x20

#define DS1307_24HOUR_MODE 0xDF

/* DS1307内部寄存器地址 */

#define ADDR_SEC 0x00

#define ADDR_MIN 0x01

#define ADDR_HOUR 0x02

#define ADDR_DAY 0x03

#define ADDR_DATE 0x04

#define ADDR_MONTH 0x05

#define ADDR_YEAR 0x06

#define ADDR_COR 0x07

/* 模块自带AT24C02》》预留接口 */

//#define AT24C02_WRITE 0xA0

//#define AT24C02_READ 0xA1

sbit I2C_SCL = P1^0;

sbit I2C_SDA = P1^1;

uchar min = 0;

uchar sec = 0;

uchar code tab[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

/* 重新自定义《TIme.h》中的tm结构体 */

struct tm

{

uchar tm_sec; /* 秒 – 取值区间为[0,59] */

uchar tm_min; /* 分 - 取值区间为[0,59] */

uchar tm_hour; /* 时 - 取值区间为[0,23] */

uchar tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

uchar tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[1,12] */

uchar tm_year; /* 年份 */

uchar tm_wday; /* 星期 – 取值区间为[1,7] */

};

/* delay 5us */

void delay_5us(void)

{

_nop_();

}

/* delay par*1ms */

void delay_ms(uint par)

{

uchar cnt = 0;

while(par--)

for(cnt = 120;cnt 》 0;cnt--);

}

void I2C_Start(void)

{

I2C_SDA = 1;

I2C_SCL = 1;

delay_5us(); /* 实际延时4.7us即可 */

I2C_SDA = 0; /* SCL为高电平时,SDA为下降沿表示起始信号 */

delay_5us();

}

void I2C_Stop(void)

{

I2C_SDA = 0;

I2C_SCL = 1;

delay_5us();

I2C_SDA = 1; /* SCL为高电平时,SDA为上升沿表示结束信号 */

delay_5us();

}

void I2C_Ack(void)

{

uchar cnt = 0;

I2C_SCL = 0; /* 在SCL为高电平期间等待应答 */

delay_5us();

while((I2C_SDA == 1)&&(cnt 《 250)) /* 若为应答0即退出,从机向主机发送应答信号 */

cnt++; /* 等待一段时间 */

I2C_SCL = 0;

delay_5us();

}

void I2C_noAck(void)

{

I2C_SCL = 1; /* 在scl为高电平期间,由主机向从机发送一个1,非应答信号 */

delay_5us();

I2C_SDA = 1;

I2C_SCL = 0;

delay_5us();

}

void I2C_sendByte(uchar dat)

{

uchar cnt = 0;

uchar dat_buf = 0;

dat_buf = dat;

for(cnt = 0;cnt 《 8;cnt++)

{

dat_b

推荐阅读

史海拾趣

BITECH公司的发展小趣事

非常抱歉,由于BITECH公司并非我所熟知的特定电子行业公司,我无法直接提供关于其发展的具体故事。同时,要准确描述一个公司的发展故事,需要详细的数据和事实支持,而这些信息通常需要直接从公司本身或相关报道中获取。

然而,我可以尝试构建一个关于电子行业中某家公司发展故事的框架,供您参考。这些故事可能会涉及公司的创新、市场扩张、技术突破、合作伙伴关系以及行业挑战等方面。

故事一:创新引领发展
BITECH公司自创立之初,便以技术创新为核心竞争力。公司研发团队不断推出具有颠覆性的电子产品,如高效能电池、智能传感器等,这些产品在市场上取得了巨大成功。公司通过持续创新,不仅提升了自身品牌影响力,还为整个电子行业的发展做出了重要贡献。

故事二:市场扩张战略
随着产品线的不断丰富和技术的日益成熟,BITECH公司开始实施市场扩张战略。公司积极拓展国内外市场,通过参加国际展会、建立海外销售网络等方式,将产品推向全球。同时,公司还针对不同市场需求,定制个性化产品解决方案,赢得了众多客户的青睐。

故事三:技术突破助力成长
在电子行业竞争激烈的背景下,BITECH公司不断寻求技术突破。公司投入大量研发资源,成功攻克了一系列关键技术难题,如5G通信、人工智能等。这些技术突破不仅提升了公司产品的竞争力,还为公司带来了新的增长点。

故事四:合作伙伴关系共赢
BITECH公司注重与产业链上下游企业的合作,建立了广泛的合作伙伴关系。通过与供应商、客户以及同行业企业的紧密合作,公司实现了资源共享、优势互补,共同推动电子行业的发展。

故事五:应对行业挑战
在电子行业发展过程中,BITECH公司也面临着诸多挑战,如市场竞争加剧、技术更新换代迅速等。然而,公司始终保持敏锐的市场洞察力,及时调整战略方向,通过加强内部管理、提升产品质量、优化服务体系等方式,成功应对了这些挑战,实现了稳健发展。

请注意,以上仅为故事框架,具体内容需要根据实际情况进行填充。如需获取关于BITECH公司或其他电子行业公司的真实发展故事,建议您查阅相关新闻报道、行业分析或公司年报等资料。

Cembre SPA公司的发展小趣事

Cembre SPA的创始人,以其对电子行业的深刻理解和远见,于XXXX年创立了这家公司。在初创期,他看到了电气连接和固定技术在工业领域中的巨大潜力,并决定专注于此。公司最初的产品线集中在电缆接头和固定设备上,这些产品以其高质量和易用性迅速获得了市场的认可。

GE (General Electric)公司的发展小趣事
如急停按钮SB1,用于在紧急情况下迅速切断电源,保障操作安全。
Datakey Electronics公司的发展小趣事

在环境问题日益严重的今天,绿色环保已经成为电子产品行业的重要发展趋势。Datakey Electronics积极响应国家号召,致力于绿色产品的研发和生产。公司投入巨资研发环保材料和生产工艺,成功推出了一系列符合环保标准的产品。这些产品不仅满足了客户的需求,还为公司赢得了良好的社会声誉。

Avic公司的发展小趣事

Avic公司注重提升自主创新能力,不断加大在航空电子技术领域的研发投入。公司建立了一支高素质的研发团队,并积极引进国内外先进的研发设备和技术。这些措施有效提升了公司的创新能力,为公司在航空电子领域的持续发展提供了有力保障。

Heraeus公司的发展小趣事

随着全球化的推进,Avic公司不断加强与国际航空工业界的合作。公司与多家国际知名航空企业建立了战略合作关系,共同开展航空电子技术的研发和生产。这些合作不仅促进了中国航空工业与国际先进水平的接轨,也为中国航空工业的国际化发展提供了有力支持。

问答坊 | AI 解惑

大家给个建议

最近想做一个有点创新,实用,贴近生活,技术不一定太难的东东,但是一直没有好的思路,大家给个意见…

查看全部问答>

wSR-841 IGBT驱动器

1.介绍: wSR-841是一个混合集成型IGBT驱动保护集成电路.它内部由信号隔离传输器、功率驱动器、负压分配器和短路保护电路四大部分组成.信号隔离传输器采用了进口高速光耦,具有高的共模抑制比和隔离电压.功率驱动器部分采用具有高负载驱动能力的推 ...…

查看全部问答>

请教添加BSP方法!急!在线等

请教各位,我目前有个X86下的BSP安装包,安装后sysgen发现产生了一个too many errors 的错误 后来又得到了一个BSP的原文件,但是没有CEC文件 请问我怎么能把这个BSP的原文件添加到PB中,可以制订NK工程?? 注:WINCE50下!…

查看全部问答>

vhdl时钟分频器问题

这个是我把100MHZ的分成10MHZ的程序 我想把修改下 能把2MHZ的分成1HZ的 望各位指教 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.std_logic_unsigned.all; entity df is port (rese ...…

查看全部问答>

evc 4。wce5.net能否实现远程访问access

现在要做一个项目,开发工具是EVC,PDA系统是WCE.NET 5.0,PDA上有CDMA无线通讯模块,我想实现PDA远程访问ACCESS数据库,请问前辈们具体要哪些数据库开发工具和步骤。有开发过的同志指点一二,在此不盛感谢。sqlce可以访问access数据库吗?…

查看全部问答>

使用射频读写器读写非接触式ic卡,多个卡机并联联网

大家好!我们现在正在开发一套会员管理系统,需要使用射频读写器读写非接触式ic卡,多个卡机并联联网,现在想要一些产品的接口函数、范例、演示程序,关键是想知道如何实现多机联网的应用(数据发送时如何根据机号接受),有产品能满足要求吗?接口 ...…

查看全部问答>

C语言反汇编的一个奇怪问题

同样一个C语言式子,只是一个采用16进制,一个采用10进制,为何反汇编代码不同? 各位前辈们是否有遇到这种问题?是什么原因呢。 for example: void a(void) {         unsigned int  MAX_C, MIN_C;   &n ...…

查看全部问答>

毕业设计

请问有基于89c51单片机的电子硬币储钱罐的毕业设计报告吗?1.基本要求 :具备储钱功能,并能显示罐子里面硬币的总额。 硬币种类:1元,5角,1角(大),1角(小) 2.发挥部分: (1)识别真硬币 (2)密码提款 (3)语音提示硬币种类和数额最好能实现 ...…

查看全部问答>

基于RL78/G14的倒车雷达和倒车影像设计

R87/G14性能强大,片上资源丰富,用作倒车系统的主控能节省很多额外的芯片,节省空间,有效降低成本。…

查看全部问答>

TIVA C 试用,开发环境与例程

前段时间工作上的事情确实有点多,拿到板子有一段时间了!确实是玩玩的时候了! 先发个贴子,占个位子,督促一下自己,慢慢更新 常用的软件与资料地址: http://software-dl.ti.com/tiva-c/SW-TM4C/latest/index_FDS.html [ 本帖最后由 wuyanyan ...…

查看全部问答>