AT89S52控制DS1302时钟程序

发布者:InspiredDreamer最新更新时间:2018-01-07 来源: eefocus关键字:AT89S52  控制DS1302  时钟程序 手机看文章 扫描二维码
随时随地手机看文章

#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; 


/******************DS1302:读取数据(先送地址,再读数据)**************************/ 
unsigned char read_1302(unsigned char addr) 

   unsigned char temp; 
   T_RST=0;                                   //停止工作 
   T_CLK=0;   
   T_RST=1;                         //重新工作 
   write_byte(addr);   //写入地址 
   temp=read_byte(); 
   T_RST=0; 
   T_CLK=1;     //停止工作 
   return(temp); 






/***********************延时程序=a*1ms**************************************/ 
void delay(unsigned char a) 

   unsigned char i; 
   while(a-- !=0) 
   { 
        for(i=0;i<125;i++); 
   } 



/***********************显示程序**********************************************/ 
/* 动态扫描条件(单个LED在1秒内):  count >=50次   //点亮次数               */ 
/*                                   time  >=2ms    //持续时间               */ 
/* DS1302秒,分,时寄存器是BCD码形式:  用16求商和余进行"高4位"和"低4位"分离 */ 
/* 0x00,0x10,0x30,0x40,0x60,0x70    :   位选                                 */ 
/****************************************************************************/            
void led_disp(unsigned char *poi) 
{   
   P0=seg[*poi % 16];                    //第1个数码管:显示秒(个位); 
   delay(2);                             //持续2ms 
   P0=0xff;                              //消影 

   P0=seg[*poi /16]^0x10;               //第2个数码管:显示秒(十位); 
   delay(2); 
   P0=0xff; 
   poi++; 

   P0=seg[*poi % 16]^0x30;             //第4个数码管:显示分(个位) 
   delay(2); 
   P0=0xff; 

   P0=seg[*poi / 16]^0x40;            //第5个数码管:显示分(十位) 
   delay(2); 
   poi++; 
   P0=0xff; 
   
   P0=seg[*poi % 16]^0x60;             //第7个数码管:显示时(个位) 
   delay(2); 
   P0=0xff; 
    

   P0=seg[*poi /16]^0x70;             //第8个数码管:显示时(十位) 
   delay(2); 
   P0=0xff; 

/************************主程序**********************************************/ 
void main(void) 

   unsigned char clk_time[3]={0x00,0x00,0x12};  //秒,分,时寄存器初始值 
   unsigned char  temp=0x80;           
   unsigned char i; 
   write_1302(0x8e,0x00);             //WP=0 写操作 
   for(i=0;i<3;i++) 
   { 
   write_1302(temp,clk_time[i]); 
   temp+=2; 
   } 
   write_1302(0x8e,0x80);             //WP=1 写保护 
   while(1) 
   {   
      led_disp(clk_time); 
      temp=0x81;                     
      for(i=0;i<3;i++) 
       { 
         clk_time[i]=read_1302(temp); 
         temp+=2; 
      } 
    } 


关键字:AT89S52  控制DS1302  时钟程序 引用地址:AT89S52控制DS1302时钟程序

上一篇:PT16312VFD驱动C程序
下一篇:at89s51看门狗演示程序

推荐阅读最新更新时间:2024-03-16 15:51

STC89C52+LCD12864+DS1302+DS18B20时钟原理图+源程序
STC89C52+LCD12864+DS1302 +DS18B20+PCB 时钟供大家学习。 电子智能时钟程序 单 片 机:STC89C52 晶 振:12MHz 时钟芯片:DS1302 液 晶 屏:LCD12864 时 间:2020年1月1日 LCD12864使用并口连接方式,PSB、RST接高电平 /*-------------------------------头文件---------------------------------------*/ #include reg52.h #include intrins.h
[单片机]
STC89C52+LCD12864+<font color='red'>DS1302</font>+DS18B20<font color='red'>时钟</font>原理图+源<font color='red'>程序</font>
采用DS1302做的可调时钟程序
/////////////////////////////////////////////////////////////////// /*名称:单片机读取DS1302时钟芯片,带调整功能 / /* / ///////////////////////////////////////////////////////////////////*/ #include reg52.h #define uchar unsigned char #define uint unsigned int #define xiEMIao 0x80 #define xiefen
[单片机]
基于AT89S52单片机的超声波倒车雷达系统的设计
0 引言 超声波是一种在弹性介质中的机械震荡,由于其指向性强、能量消耗缓慢、传播距离较远等到优点,经常用于测量距离。本文设计的倒车雷达系统就是利用超声波的上述特性做到对倒车距离实时和高精度的检测,同时,此系统成本低、设计简单、精度和稳定性好,有望得到广泛的应用,从而减少交通事故的发生。 1 超声波测距原理 超声波测距原理是利用超声波从发射到接收过程中传播的时间来计算出传播距离。本文的倒车雷达系统采用反射接收回波方式。设l为测量距离,t为往返时间差,超声波的传播速度为c,则有t=2l/c,而声波在空气中传输速率为 。式中T为环境温度;cO为绝对温度时的速度,是常数。从上述两式可以推出 ,故利用超声波测量的距离与时间和环
[单片机]
实时时钟DS1302程序列子
/*********************************************************************/ /* 实时时钟模块 时钟芯片型号:DS1302 */ /*/ /*********************************************************************/ sbit T_CLK = P2^7; /*实时时钟时钟线引脚 */ sbit T_IO = P1^4; /*实时时钟数据线引脚 */ sbit T_RST = P1^5; /*实时时钟复位线引脚 */ /******************************************
[单片机]
LED数码管时钟程序+电路-时间可调
不来废话上程序: /*************************************************************** * 程序名称:51单片机数码管电子钟+定时闹钟 晶振:12.00 * 实验对象:51hei单片机学习开发板 * 单 片 机:AT89S52或STC89C52 闹钟时间:7:10分(程序自定义) *使用定时器方式,数码管显示24小时“00-00-00”(增加中断进入对时功能 P1为按键,P2为段选,P0为位选, ****************************************************************/ /***使用定时器方式,数码管显示
[单片机]
LED数码管<font color='red'>时钟</font><font color='red'>程序</font>+电路-时间可调
基于AT89S52单片机的测量模块电路设计
该测试仪以AT89S52单片机为核心,外接温湿度传感器SHTll、照度传感器TSL2561、四位共阴数码管、RS485总线通信接口以及显示切换按键。单片机上电工作后,对当前温度、湿度、光强度进行实时测量,通过按键切换将测得的3种参数通过LED数码管进行轮流显示;此外,还可以通过RS485总线与PC机进行通信,将参数值传送到上位机,以达到远程监测的目的。该测试仪的结构框图如图1所示。 测量模块电路 温度和湿度测量采用的是瑞士Sensirion公司生产的SHTll传感器。该传感器采用独特的CMOsens TM技术,将温湿度传感器、信号放大处理、A/D转换、I2C总线全部集成在一块芯片上,可直接与单片机接口。该芯片采用数字
[单片机]
基于<font color='red'>AT89S52</font>单片机的测量模块电路设计
Tiny4412裸机程序时钟操作
其实,Exynos 4412的IROM代码已经设置了PLL,我们可以通过串口把IROM设置的PLL寄存器值打印出来,这些值打印出来是这样的(摘自韦东山老师的《嵌入式Linux系统开发完全手册_基于4412__上册》): CLK_SRC_CPU = 0x01000001 CLK_DIV_DMC0 = 0x00111713 CLK_DIV_DMC1 = 0x01011171 CLK_SRC_TOP0 = 0x01110000 CLK_SRC_TOP1 = 0x00001000 CLK_DIV_TOP = 0x00015470 CLK_SRC_LEFTBUS = 0x00000001 CLK_DIV_LEFTBUS = 0x0000
[单片机]
Tiny4412裸机<font color='red'>程序</font>,<font color='red'>时钟</font>操作
基于51单片机的家电控制系统设计
O 引言 家电控制的智能化已成为社会需求的新趋势。基于微机控制系统的智能化家电使我们的生活更加便利。而是否能够实现远程家电的开关控制。又是否能够随时查询电器的工作状况,或者能够事先对家电的定时开关做出控制。又成为越来越感兴趣的研究方向。家电产品现已进入成熟期和稳定期。市场规模稳步上涨,但竞争日愈剧烈,其核心部件。即控制器性能及质量对企业产品的影响很大。同时,经济快速发展,人们对于家庭生活的舒适程度也提出了越来越高的要求,尤其体现在家电的便捷方面。在这个背景下,可以自主控制的家电控制系统,就逐渐显示出竞争力,这也符合时代发展的客观需要。随着中国经济的快速稳步增长和迅速发展,家电厂家越来越意识到被喻为家电“芯片”的家电控制器的重要
[单片机]
基于51单片机的家电<font color='red'>控制</font>系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved