51单片机DS1302时钟芯片简单程序

发布者:诚信与爱最新更新时间:2018-06-25 来源: eefocus关键字:51单片机  DS1302  时钟芯片 手机看文章 扫描二维码
随时随地手机看文章

 #include
 #include
 #define uchar unsigned char
 #define uint unsigned int
data_7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; 
uchar hour,min,sec; 
sbit shi=P1^0; 
sbit fen=P1^1; 
sbit miao=P1^2; 
sbit rst=P1^4; 
sbit sck=P1^5; 
sbit io=P1^6;
sbit fm=P1^7;
/*函数声明:*/ 
  void write_ds1302_byte(uchar dat); 
  void write_ds1302(uchar add,uchar dat); 
  uchar read_ds1302(uchar add); 
  void read_rtc(); 
  void set_rtc(); 
  void display(); 
  void delay(int n); 
  void show(); 
  void fmzz();  
   /*DS1302单字节写入:*/  
 void write_ds1302_byte(uchar dat) 
   { uchar i;
  //发送地址
     for(i=0;i<8;i++) //循环8次移位
{  sck=0;  
io=dat&0x01;   //每次传输低字节
dat=dat>>1;    //右移一位
sck=1; 

}   
/*DS1302多字节写入:*/ 
 void write_ds1302(uchar add,uchar dat) 
 {  
 rst=0;//CE引脚为低,数据传送中止
 _nop_(); 
 sck=0;    //清零时钟总线 
 _nop_(); 
 rst=1;   //CE引脚为高,逻辑控制有效
 _nop_();  
 write_ds1302_byte(add); 
 write_ds1302_byte(dat); 
 rst=0;
 _nop_(); 
 io=1; 
 sck=1; 
 } 
 /*DS1302读取:*/  
 uchar read_ds1302(uchar add)                
 {  uchar i,value; 
 rst=0;
 _nop_(); 
 sck=0;
 _nop_(); 
 rst=1;
 _nop_();  
 write_ds1302_byte(add); 
 for (i=0;i<8;i++) 
  {   
value=value>>1;    
sck=0;   
if (io) 
value=value|0x80;//每次传输低字节
sck=1; 
}  
rst=0;
_nop_(); 
sck=0;
_nop_();        
sck=1; 
io=1; 
return value; 
}


/*调整时间:*/ 
void set_rtc() 
{     
if (shi==0) 
delay(100);    
if (shi==0)    
{    
hour=(hour>>4)*10+(hour&0x0f);   
hour++;    
if (hour==24) 
hour=0;    
hour=((hour/10)<<4)+(hour%10);   
write_ds1302(0x84,hour);    
}      
if (fen==0) 
delay(100);    
if (fen==0)    
{    
min=(min>>4)*10+(min&0x0f);   
min++;    
if (min==60) 
min=0;    
min=((min/10)<<4)+(min%10);   
write_ds1302(0x82,min);    
}      
if (miao==0) 
delay(100);    
if (miao==0)    
{
sec=(sec>>4)*10+(sec&0x0f);   
sec++;    
if (sec==60) 
sec=0;    
sec=((sec/10)<<4)+(sec%10);   
write_ds1302(0x80,sec);    

}   
/*读取时间:*/ 
void read_rtc() 
{     
hour=read_ds1302(0x85);    
min=read_ds1302(0x83);    
sec=read_ds1302(0x81); 
}   
/*显示时间:*/ 
void display() 
{      
unsigned int a=1;  
P2=0x01;P0=data_7seg[hour/16];
delay(a); 
P2=0x02;P0=data_7seg[hour%16];
delay(a); 
P2=0x04;P0=data_7seg[min/16];
delay(a); 
P2=0x08;P0=data_7seg[min%16];
delay(a); 
P2=0x10;P0=data_7seg[sec/16];
delay(a); 
P2=0x20;P0=data_7seg[sec%16];
delay(a);         
}   
/*蜂鸣:*/  

void fmzz()   
{     
uint i;      
for (i=0;i<100;i++)      
{         
fm=!fm;        
delay(2); 
}
}
/*延时程序:*/ 
void delay(int n) 
{  unsigned int i,j; 
for(i=0;i{   
for(j=0;j<121;j++)  
{;} 

}
 /*显示学号:*/ 
 void show() 
 {    
 unsigned int m; 
 for(m=0;m<20;m++) 
 {  uint a=10;  
 P2=0x01;P0=data_7seg[7];delay(a); 
 P2=0x02;P0=data_7seg[2];delay(a); 
 P2=0x04;P0=data_7seg[4];delay(a); 
 P2=0x08;P0=data_7seg[1];delay(a); 
 P2=0x10;P0=data_7seg[1];delay(a); 
 P2=0x20;P0=data_7seg[8];delay(a); 
 }  
 }
  /*主程序:*/ 
  void main() 
  {      
  show();  
  write_ds1302(0x84,0x12); //初始化 
  write_ds1302(0x82,0x00); 
  write_ds1302(0x80,0x00); //秒寄存器(81h、80h)的位7  当该位置为0时,时钟开始运行。
  while (1) 
  {   set_rtc();  
read_rtc();  
display();  
if(min==0)
{ if(sec==0)      
{
fmzz();
}  

}
 } 

关键字:51单片机  DS1302  时钟芯片 引用地址:51单片机DS1302时钟芯片简单程序

上一篇:51单片机对DS1302突发模式的读写
下一篇:DS1302+AT24C02+按键数码管显示程序

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

51单片机】矩阵键盘
矩阵键盘介绍 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。 结构:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(⑨键) 由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 扫描的概念 数码管扫描(输出扫描) 原理:显示第1位
[单片机]
【<font color='red'>51单片机</font>】矩阵键盘
51单片机体系结构初步分析
单片机有很多种,AVR、PIC、MC6805系列等,他们的体系结构不尽相同,指令集也各异,有些是CISC,有些是RISC,51单片机的指令集采用的是CISC。 51单片机是单片机的一种,之所以这么流行,业界赞同的原因主要有两个: 第一:由于intel公司(开发了51单片机)一开始就开放了授权。 第二:51单片机的体系结构不难,资料很多(也良莠不齐),学的人很多。 51单片机和电脑联系很大的(单片机某种程度上可以说是一台袖珍电脑),我们知道电脑由运算器、控制器、存储器(RAM)、输入设备和输出设备,各个部分由总线联接起来,联想到实际设备我们看: 我们的电脑由一下部分
[单片机]
51单片机片内数据存储器分为哪几个性质和用途不同的区域?
8051内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下: (1)00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。 (2)20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。 当然,位寻址区也可以用作字节寻址的一般
[单片机]
51单片机串口通信程序,支持自定义协议
单片机源程序如下: #include reg52.h /*51串口通信by沸腾的冰块/不拼不活*/ typedef unsigned int u16; typedef unsigned char u8; #define Data_SIZE 7 //存入数组RevBuf数据长度==uart_Data_SIZE-2 #define uart_Data_SIZE 5//协议实际长度(一个汉字占两位) u8 RevBuf ; //数据接收缓冲区 u8 indata ; //防数据抵消缓冲区 u16 data_count=0; //数据长度,串口中断自增 u16 temp_length=0; //数据长度,协议长度中转 u8
[单片机]
51单片机SPI总线的实现
//-----------------------函数声明,变量定义------------------------------------------------------ #include reg51.h #include intrins.h sbit SCK=P1^0; // 将p1.0口模拟时钟输出 sbit MOSI=P1^1; // 将p1.1口模拟主机输出 sbit MISO=P1^2; // 将p1.1口模拟主机输入 sbit SS1=P1^3; // 将p1.1口模拟片选 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; //----
[单片机]
基于51单片机的孵化环境温湿度监控系统设计
实现功能: 1、对孵化环境的温度、湿度进行监控 2、可以警报提示、修改温度、湿度上下限值 3、led灯指示报警温湿度信息、LCD显示相关信息 电路原理图: 部分程序: #include reg52.h #include intrins.h typedef unsigned char uint8; typedef unsigned int uint16; sbit rs=P2^6; // 数据命令选择 sbit rw=P2^5; //读写选择 sbit e=P2^7; //使能 sbit k1=P3^3; //模式 sbit k2=P2^1; //加 sbit k3=P2^2; //减 sbit DHT11
[单片机]
51单片机(STC89C52)在Ubuntu下的开发
简介 都是8051衍生的8位单片机, STC单片机有89/90/10/11/12/15这几个大系列, 每个系列的特点如下 89系列是传统的8051单片机, 烧录方法有区别, 但是功能上可以和AT89系列兼容, 属于12T单片机 90系列是89系列的改进型, 12T单片机 10和11系列是1T单片机, 有PWM, 4态IO接口, EEPROM等功能, 但都没有ADC 12系列是增强型功能的1T单片机, 型号后缀AD的带ADC, 后缀S2的除了ADC还带双串口 15系列是最新的产品, 内部集成了高精度R/C时钟, 不需要外部晶振 STC89C52参数 STC89C52和STC89C51的区别仅在于Flash大小, C51为4K而C
[单片机]
80c51是几位单片机 80c51单片机有几个中断源
  80c51是几位单片机   80C51是一种8位微处理器,也被称为8051,由Intel公司推出。它是最早的商用单片机之一,由于它的简单易用、灵活可靠,被广泛应用于许多嵌入式系统中。在80C51系列中,最常见的型号包括AT89C51和AT89S52等。   80c51单片机寻址范围有多少   80C51单片机的寻址范围取决于其具体的型号和存储器结构。在最常见的AT89C51和AT89S52型号中,其寻址范围如下:   内部RAM寻址范围:0x00-0x7F(128字节)   内部ROM寻址范围:0x0000-0xFFFF(64KB)   特殊功能寄存器(SFR)寻址范围:0x80-0xFF(128字节)   外部扩展RAM
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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