历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2018年01月07日 | AT89S52控制DS1302时钟程序

2018-01-07 来源:eefocus

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


推荐阅读

史海拾趣

DRI Relays Inc公司的发展小趣事

品质是企业的生命线。为了提升产品质量和客户满意度,DRI Relays Inc公司不断加强品质管理。公司建立了严格的质量检测体系,对原材料、生产过程和成品进行全面检测。同时,公司还注重员工素质的提升,定期开展培训和技能竞赛等活动,提高员工的技能水平和质量意识。这些措施有效地保证了公司产品的稳定性和可靠性,赢得了客户的信任和好评。

FCI / Amphenol公司的发展小趣事

1997年,Amphenol公司经历了一次重要的转折点。当时,公司被KKR(一家具有传奇色彩的美国纽约的私人股权投资公司)以杠杆收购的方式收购。KKR的收购为Amphenol公司注入了新的活力,公司开始进行一系列的战略调整和业务转型。在KKR的助力下,Amphenol公司不仅保留了大部分现有的管理团队,还引入了更大的财务杠杆,使得公司能够更加灵活地应对市场变化和挑战。这一收购和转型不仅为Amphenol公司带来了新的发展机遇,也为其在全球连接器市场上的地位奠定了更加坚实的基础。

Gwconnect (Molex)公司的发展小趣事
为了产生足够的超声波能量,电路可能需要较高的工作电压和电流,导致功耗较高。
Aleph America Corporation公司的发展小趣事
可以根据具体需求灵活调整电路参数,实现不同的功能和性能。
DEVCON公司的发展小趣事

在1950年代,电子工业正处于蓬勃发展的初期。阿尔·克瑞顿,一位富有创新精神的化学家,在美国马萨诸塞州丹佛斯市的一个实验室里,经过无数次的试验,终于研发出了一种名为Devcon可塑钢修补剂的新型材料。这种材料经济实惠、不易燃,且能够作为焊接的替代品,迅速在电子制造和维修领域引起了广泛关注。这就是DEVCON公司的起点,一个由创新精神和市场需求共同点燃的火花。

芯邦(Chipsbank)公司的发展小趣事

随着公司业务的不断发展,芯邦开始积极布局UWB(超宽带通信)产品线。UWB技术以其高速率、高精度和低功耗的特点,在智能家居、物联网等领域展现出巨大的应用潜力。芯邦通过研发UWB等信息传输技术及产品,致力于从移动存储及智能家电市场出发,以手机及移动智能设备、车规及汽车周边产品应用、智能家居及物联网领域为目标市场,打造多系列产品线格局,提升公司的市场竞争力。

问答坊 | AI 解惑

2007年全国大学生电子设计竞赛 基本仪器和主要元器件清单【更新08-30】

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 2007年全国大学生电子设计竞赛 基本仪器和主要元器件清单 1、基本仪器清单 20MHz普通示波器(双通道,外触发输入,有X轴输入,可选带Z轴输入) 60MHz双通道数字示波器 低频信号发生器(1Hz~ ...…

查看全部问答>

请帮我选择路由器

一个项目190个监控点,用的是2M专网,有的点是512k的,在中心设置一台中心路由器,请问这个路由器该选择什么样的呢,即能满足实时传输的要求,也不至于太浪费。…

查看全部问答>

清洁机器人Roomba工作机理

前言: 洗尘机器人已经问世很多年了,而市场上也已经有多款洗尘机器人出售,价格从1000多人民币,到12000多人民币。当然功能上也有很多不同。最新的清洁机器人已经相当智能化,不但能根据您的需要来定时清洁,还能够在清洁过程中自行充电,然后待 ...…

查看全部问答>

你觉得英语在电子设计中的比重有多大?

本帖最后由 paulhyde 于 2014-9-15 09:14 编辑 现在很多资料,一些代理商 都倾向于把资料翻译成中文,这样可以更好地宣传推广 但是英语的瓶颈对于我们浏览国外电子类网站,了解国外的电子类行情,是个不小的阻碍 你觉得英语在电子设计中的比重有 ...…

查看全部问答>

全彩LED显示屏专用LED的选择和使用

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 全彩LED显示屏的最关键部件是LED器件。原因有三:第一,LED是全彩屏整机中使用数量最多的关键器件,每平方米会使用几千至几万只LED;第二,LED是决定整屏光学显示性能的主体,直接影响观众对显 ...…

查看全部问答>

奉献安森美的电源设计手册,中文的

奉献安森美的电源设计手册,中文的哦,呵呵…

查看全部问答>

有关jlink

想玩一玩S3C2440, 请问: 1. 一定需要jlink或ulink吗? 2.看网上卖jlink从100元至1200元不等,真正功能上有区别么? 谢了 …

查看全部问答>

上传一本入门PLC的好书!~

图解继电器与可编程序控制器 [ 本帖最后由 wanghongyang 于 2010-10-20 22:22 编辑 ]…

查看全部问答>

AM335x学习心得之kernel优化方法

在加载LINUX内核的时,要对内核进行交叉编译,这个过程要需要等待很长的时间,移植内核后,如果内核太大,在启动的过程中要需要很长的时间去引导。在学习视频第三讲时,提出了几个可以优化内核的方法,对以后项目开发会比较有用。区域优化,主要包 ...…

查看全部问答>

【朱兆祺带你学嵌入式】第二章第十节 IROM启动的概念

S3C6410由三星公司生产的ARM11应用处理器芯片,广泛用于移动电话和通用应用。市场上,很多公司纷纷推出自己的S3C6410学习开发板,风靡一时。处理器片内没有供用户存储数据的Flash,用户必须外接存储器存储数据。由表2. 1可知开发板唯一带有的存储介 ...…

查看全部问答>