导航:首页 > 电器电路 > 实时时钟电路

实时时钟电路

发布时间:2022-01-02 16:58:21

A. 时钟电路基本原理

一、时钟电路原理- -简介
时钟电路,就是产生象时钟一样准确的振荡电路。时钟电路主要由晶体振荡器、晶震控制芯片和电容三部分构成,具有价格低廉、接口简单、使用方便等特点,目前已有了很广泛的应用,如电子表的时钟电路、电脑的时钟电路、MP3/4的时钟电路等。目前流行的串行时钟电路有DS1302、DS1307、PCF8485等,其中,DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,采用串行数据传输,并为掉电保护电源提供可编程的充电功能。本文我们就以DS1302为例来对时钟电路原理进行详细的讲解。



二、时钟电路原理- -引脚
实时时钟电路DS1302包括VCC1、VCC2、X1、X2、SCLK、I/O、RST、GND八个引脚。其中,VCC1用作主电源,VCC2用作备用电源,当满足VCC1>VCC2时,由主电源向DS1302供电,当满足VCC2>VCC1+0.2时,由备用电源向DS1302进行供电;X1和X2是32867Hz的晶振管脚,主要用于为芯片提供时钟脉冲;SCLK为串行时钟,主要用于提供时钟信号以控制数据的输入与输出;I/O为输入输出设备,用作三线接口时的双向数据线;RST主要提供复位功能,其在数据的读写过程中,必须保持为高电位;GND引脚用于和大地相连。



三、时钟电路原理
DS1302的控制字节的最高有效位即位7必须是逻辑1,若该位为0,则不能把该数据写入进DS1302中;位6为1表示存取RAM数据,为0表示存取日历时钟数据;位5至位1表示操作单元的地址;最低有效位即位0为1表示要进行读操作,为0表示要进行写操作;其控制字节总是从最低位开始进行输出。

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低有效位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,数据输出时也是从最低有效位即位0开始。

B. RTC实时时钟电路不工作,用的芯片是 STM32F101 外部晶振是 32.768 谐振电容是 10PF 没有外接电阻,望求救

MCU的RTC工作原理其实都一致,
1.首先供电需要正常,也就是在系统上电的时候给予3.3V,或者无论何时的小电池或大电容供电。
2.其次你的电路接法按照其TYPE电路来,谐振电容选10PF也没问题,但是你必须保证你的元器件是好的。
3.线路板上焊接是否有问题?或者其实你的MCU RTC供电电路已经被干掉了?换个芯片试试。
基本以上三点保证,肯定没问题的。

C. cmos与rtc实时时钟电路是怎么一回事,分不请呀

cmos时钟就是南桥与14.318晶振为主板产生的时间啦!

RTC的英文全程是Real-Time Clock,翻译过来是实时时钟芯片. RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT)。 它的主要作用就是提供稳定的时钟信号给后续电路用.主要功能有:时钟&日历,闹钟,周期性中断输出,32KHz时钟输出. RTC的主要性能指标有: 控制方式:二线制,三线制,四线制. ...... 详细内容>>

D. 求电子实时时钟/万年日历系统的报告 (电路图和代码)

好的,我来帮你搞定

E. 主板中时钟电路芯片的作用

主板中时钟电路芯片的作用:给硬件设备一个运行频率。

时钟芯片是一回种时钟电路答

时钟芯片是一种高性能、低功耗、带RAM的实时时钟电路,时钟芯片可以对年、月、日、周日、时、分、秒运行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。它使用三线接口与CPU运行同步通信,并可使用突发方式一次传送多个字节的时钟信号或RAM数值。

数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

F. 什么是时钟电路

在电子电路中,实时时钟电路通常简称时钟电路,实时时钟的缩写是RTC(Real_Time Clock).实时时钟电路内通常由一个容时钟集成电路和外围的32.768KHZ晶体、匹配电容组成。实时时钟集成电路内部实现自动计时,产生年月日及闹铃等相关数据,通过IIC接口和单片机等中央处理系统连接。常用的实时时钟集成电路型号:DS1302,HT1380,HT1381,PCF8563等。还有的厂家直接把集成电路、晶体、电容、电池等做成一个小电路板,然后封装起来,行成一个模块,通常称为时钟模块。

G. 实时时钟电路是什么

实时时钟是一来款带自56个字节用户非易失性SRAM(NV SRAM)低功耗、全BCD码的时钟/日历电路。地址和数据通过串行I2C总线传递。时钟/日历提供秒、分、小时、周、日、月和年信息。对小于31天的月,月末的日期自动进行调整,还具有闰年矫正的功能。时钟可以工作在24小时格式或带AM/PM标志的12小时格式。

已经生产的有HYM1307,有一个内置的电压判断电路,具有电源掉电检测功能,在电源掉电时,可自动切换到备用电源(电池)供电。

H. 实时时钟电路产生的正弦波形时钟信号频率为多少

辑电路的主时钟通常有13M、26M、和19.5M等;实时时钟一般为32.768KHz。

I. 求单片机 实时时钟 电路 图和配套代码

实时的话肯定要用DS1302了,给你发个吧,用STC89c52写的:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
//引脚定义
sbit TIMERCLK=P3^2; //DS1302同步串行时钟引脚
sbit TIMERIO=P3^3; //DS1302数据输入输出引脚
sbit TIMERRST=P3^4; //DS1302RST引脚
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
//sbit SEC_7=SEC^7;
//sbit WDT=P1^3; //看门狗"喂狗"引脚
uchar code TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//#define DIGPORT

//全局变量声明
uchar bdata DS1302dat; //DS1302读写过程中的命令或数据
sbit ds1302datHbit=DS1302dat^7; //位定义,用于数据写入
sbit ds1302datBit=DS1302dat^0; //位定义,用于数据读出
uchar bdata DS1302adr; //DS1302读写过程中所访问的单元地址
sbit ds1302adrBit=DS1302adr^0; //
uchar idata SEC;
uchar MIN;
uchar HR;
uchar DATE;
uchar MONTH;
uchar DAY;
uchar YEAR;
uchar disp1;
uchar disp2;
uchar disp3;
uchar disp4;
uchar disp5;
uchar disp6;
uchar disp7;
uchar disp8;
uchar tiao;
uchar tt;
uchar flag;

// sbit SEC_7=SEC^7;
void delay(uchar time)
{
uchar i,j;
for(i=0;i<time;i++)
{
for(j=0;j<time;j++)
{
// WDT=~WDT;

}
}
}

void writeDS1302(uchar dsRamAdr,uchar ds1302data)
{
uchar i;
TIMERCLK=0;
delay(2);
TIMERRST=1;
delay(2);
DS1302adr=dsRamAdr;
DS1302dat=ds1302data;
for(i=0;i<8;i++)
{
CY=0;
TIMERCLK=0;
CY=ds1302adrBit;
TIMERIO=CY;
delay(2);
TIMERCLK=1;
DS1302adr=DS1302adr>>1;
}
for(i=0;i<8;i++)
{
CY=0;
TIMERCLK=0;
CY=ds1302datBit;
TIMERIO=CY;
delay(2);
TIMERCLK=1;
DS1302dat=DS1302dat>>1;
}
TIMERRST=0;
delay(2);
TIMERRST=0;
}

uchar readDS1302(uchar DS1302Adr)
{
uchar i;
TIMERCLK=0;
delay(2);
TIMERRST=1;
delay(2);
DS1302adr=DS1302Adr;
for(i=0;i<8;i++)
{
TIMERCLK=0;
TIMERIO=ds1302adrBit;
delay(2);
TIMERCLK=1;
DS1302adr=DS1302adr>>1;
}
TIMERIO=1;
for(i=0;i<7;i++)
{
TIMERCLK=0;
ds1302datHbit=TIMERIO;
delay(2);
TIMERCLK=1;
DS1302dat=DS1302dat>>1;
TIMERCLK=0;
ds1302datHbit=TIMERIO;
}
TIMERRST=0;
delay(2);
TIMERCLK=0;
return DS1302dat;
}

void DS1302Inital(void)
{
uchar ds1302st;
TIMERCLK=0;
TIMERRST=0;
ds1302st=readDS1302(0x0c1);
if(ds1302st!=0x55)
{

writeDS1302(0x8e,0x00);
//writeDS1302(0x80,0x00);
writeDS1302(0x82,0x00);
writeDS1302(0x84,0x16);
writeDS1302(0x86,0x19);

writeDS1302(0x88,0x09);
writeDS1302(0x8a,0x02);
writeDS1302(0x8c,0x00);

writeDS1302(0x90,0xa6);
writeDS1302(0x0c0,0x55);
writeDS1302(0x80,0x00);
}
}

void readRTC(void)
{
MONTH=readDS1302(0x89);
DATE=readDS1302(0x87);
HR=readDS1302(0x85);
MIN=readDS1302(0x83);
SEC=readDS1302(0x81);
}

void disp(void)
{
if(MIN==10)writeDS1302(0x82,0x10);
if(MIN==26)writeDS1302(0x82,0x20);
if(MIN==42)writeDS1302(0x82,0x30);
if(MIN==58)writeDS1302(0x82,0x40);
if(MIN==74)writeDS1302(0x82,0x50);
if(MIN==90)writeDS1302(0x82,0x00);
if(HR==10)writeDS1302(0x84,0x10);
if(HR==26)writeDS1302(0x84,0x20);
if(HR==36)writeDS1302(0x84,0x00);
//if(HR==58)writeDS1302(0x82,0x40);
//if(HR==74)writeDS1302(0x82,0x50);
//if(HR==90)writeDS1302(0x82,0x00);
if(DATE==10)writeDS1302(0x86,0x10);
if(DATE==26)writeDS1302(0x86,0x20);
if(DATE==42)writeDS1302(0x86,0x30);
if(DATE==50)writeDS1302(0x86,0x01);
//if(DATE==74)writeDS1302(0x82,0x50);
//if(DATE==90)writeDS1302(0x82,0x00);
disp2=SEC/16;
disp1=SEC%16;
//if(flag1==0)
//if(MIN==10||MIN==26||MIN==42||MIN==58||MIN==74){MIN=MIN+6;}

disp4=MIN/16;
disp3=MIN%16;//flag1=0;
disp6=HR/16;
disp5=HR%16;
disp8=DATE/16;
disp7=DATE%16;
P2_0=0;
P0=TABLE[disp1];
delay(12);
P2_0=1;
P2_1=0;
P0=TABLE[disp2];
delay(12);
P2_1=1;
P2_2=0;
P0=TABLE[disp3];
delay(12);
P2_2=1;
P2_3=0;
P0=TABLE[disp4];
delay(12);
P2_3=1;
P2_4=0;
P0=TABLE[disp5];
delay(12);
P2_4=1;
P2_5=0;
P0=TABLE[disp6];
delay(12);
P2_5=1;
P2_6=0;
P0=TABLE[disp7];
delay(12);
P2_6=1;
P2_7=0;
P0=TABLE[disp8];
delay(12);
P2_7=1;
}

void dispA(void)
{
if(SEC==10||SEC==26||SEC==42||SEC==58||SEC==74){SEC=SEC+6;}
//if(SEC==74||SEC==58||SEC==42||SEC==26||SEC==10){SEC=SEC+6;}
disp2=SEC/16;
disp1=SEC%16;
//disp4=MIN/16;
//disp3=MIN%16;
//disp6=HR/16;
//disp5=HR%16;
//disp8=DATE/16;
//disp7=DATE%16;
if(SEC==90)SEC=0;
P2_0=0;
P0=TABLE[disp1];
delay(12);
P2_0=1;
P2_1=0;
P0=TABLE[disp2];
delay(12);
P2_1=1;
P2_2=0;
P0=TABLE[disp3];
delay(5);
P2_2=1;
P2_3=0;
P0=TABLE[disp4];
delay(5);
P2_3=1;
P2_4=0;
P0=TABLE[disp5];
delay(5);
P2_4=1;
P2_5=0;
P0=TABLE[disp6];
delay(5);
P2_5=1;
P2_6=0;
P0=TABLE[disp7];
delay(5);
P2_6=1;
P2_7=0;
P0=TABLE[disp8];
delay(5);
P2_7=1;
}

void dispB(void)
{
if(MIN==10||MIN==26||MIN==42||MIN==58||MIN==74){MIN=MIN+6;}
//if(MIN==74||MIN==58||MIN==42||MIN==26||MIN==10){MIN=MIN+6;}
//disp2=SEC/16;
//disp1=SEC%16;
disp4=MIN/16;
disp3=MIN%16;
//disp6=HR/16;
//disp5=HR%16;
//disp8=DATE/16;
//disp7=DATE%16;
if(MIN==90)MIN=0;
P2_0=0;
P0=TABLE[disp1];
delay(5);
P2_0=1;
P2_1=0;
P0=TABLE[disp2];
delay(5);
P2_1=1;
P2_2=0;
P0=TABLE[disp3];
delay(12);
P2_2=1;
P2_3=0;
P0=TABLE[disp4];
delay(12);
P2_3=1;
P2_4=0;
P0=TABLE[disp5];
delay(5);
P2_4=1;
P2_5=0;
P0=TABLE[disp6];
delay(5);
P2_5=1;
P2_6=0;
P0=TABLE[disp7];
delay(5);
P2_6=1;
P2_7=0;
P0=TABLE[disp8];
delay(5);
P2_7=1;
}

void dispC(void)
{
if(HR==10||HR==26||HR==42||HR==58||HR==74){HR=HR+6;}
//if(HR==74||HR==58||HR==42||HR==26||HR==10){HR=HR+6;}
//disp2=SEC/16;
//disp1=SEC%16;
//disp4=MIN/16;
//disp3=MIN%16;
disp6=HR/16;
disp5=HR%16;
if(HR==36)HR=0;
//disp8=DATE/16;
//disp7=DATE%16;
P2_0=0;
P0=TABLE[disp1];
delay(5);
P2_0=1;
P2_1=0;
P0=TABLE[disp2];
delay(5);
P2_1=1;
P2_2=0;
P0=TABLE[disp3];
delay(5);
P2_2=1;
P2_3=0;
P0=TABLE[disp4];
delay(5);
P2_3=1;
P2_4=0;
P0=TABLE[disp5];
delay(12);
P2_4=1;
P2_5=0;
P0=TABLE[disp6];
delay(12);
P2_5=1;
P2_6=0;
P0=TABLE[disp7];
delay(5);
P2_6=1;
P2_7=0;
P0=TABLE[disp8];
delay(5);
P2_7=1;
}
void dispD(void)
{
if(DATE==10||DATE==26||DATE==42||DATE==58||DATE==74){DATE=DATE+6;}
//if(DATE==74||DATE==58||DATE==42||DATE==26||DATE==10){DATE=DATE+6;}
//disp2=SEC/16;
//disp1=SEC%16;
//disp4=MIN/16;
//disp3=MIN%16;
//disp6=HR/16;
//disp5=HR%16;
disp8=DATE/16;
disp7=DATE%16;
if(DATE==50)DATE=1;

P2_0=0;
P0=TABLE[disp1];
delay(5);
P2_0=1;
P2_1=0;
P0=TABLE[disp2];
delay(5);
P2_1=1;
P2_2=0;
P0=TABLE[disp3];
delay(5);
P2_2=1;
P2_3=0;
P0=TABLE[disp4];
delay(5);
P2_3=1;
P2_4=0;
P0=TABLE[disp5];
delay(5);
P2_4=1;
P2_5=0;
P0=TABLE[disp6];
delay(5);
P2_5=1;
P2_6=0;
P0=TABLE[disp7];
delay(12);
P2_6=1;
P2_7=0;
P0=TABLE[disp8];
delay(12);
P2_7=1;
}

void main(void)
{
DS1302Inital();
while(1)
{
readRTC();
disp();
tt=0;
flag=0;
tiao=0;
while(P3_7==0||tt==1)
{
tt=1;
if(flag==0)
{
tiao++;
flag=1;
}
if(tiao==1)
{
while(P3_7==0);
dispA();
if(P3_6==0)
{
while(P3_6==0);
writeDS1302(0x80,++SEC);
}
if(P3_5==0)
{
while(P3_5==0);
writeDS1302(0x80,--SEC);
}
if(P3_7==0)
flag=0;
}
if(tiao==2)
{
while(P3_7==0);
dispB();
if(P3_6==0)
{
while(P3_6==0);
writeDS1302(0x82,++MIN);
}
if(P3_5==0)
{
while(P3_5==0);
writeDS1302(0x82,--MIN);
}
if(P3_7==0)
flag=0;
}
if(tiao==3)
{
while(P3_7==0);
dispC();
if(P3_6==0)
{
while(P3_6==0);
writeDS1302(0x84,++HR);
}
if(P3_5==0)
{
while(P3_5==0);
writeDS1302(0x84,--HR);
}
if(P3_7==0)
flag=0;
}
if(tiao==4)
{
while(P3_7==0);
dispD();
if(P3_6==0)
{
while(P3_6==0);
writeDS1302(0x86,++DATE);
}
if(P3_5==0)
{
while(P3_5==0);
writeDS1302(0x86,--DATE);
}
if(P3_7==0)
flag=0;
}
if(tiao==5)
tt=0;
}
}
}
你自己用keil软件调就行了!

阅读全文

与实时时钟电路相关的资料

热点内容
北京家居电子商务有限公司 浏览:253
苹果指纹保修吗 浏览:270
木质家具摔裂怎么固定 浏览:296
防水涂料如何用滚筒刷 浏览:563
华苑冠华维修电话 浏览:698
顶楼雨棚多久需要维修 浏览:864
海尔空调武汉维修点 浏览:603
北碚长安4s店维修电话号码 浏览:924
小米售后维修大概需要多久 浏览:949
电脑保修键盘进水保修吗 浏览:398
维修车子需要带什么 浏览:829
维修电脑与家电怎么办理执照 浏览:518
瑞士珠宝保修单 浏览:284
中式古典家具质量怎么样 浏览:296
合肥家具除甲醛如何处理 浏览:457
楼顶开裂用什么防水材料 浏览:441
苹果广西售后维修点吗 浏览:739
广州市苹果维修电话 浏览:46
家电的市场部活动怎么写 浏览:535
开平二手家电市场在哪里 浏览:202