• 大小: 72KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签:

资源简介

基于DS1302、89C52、LCD1602实时时钟设计及其Proteus仿真

资源截图

代码片段和文件信息

#include 

//DS1302相关的变量和引脚定义
unsigned char code digit[10]={“0123456789“};   //定义字符数组显示数字
sbit DATA=P1^7;      //位定义1302芯片的接口,数据输出端定义在P1.1引脚
sbit RST=P1^5;      //位定义1302芯片的接口,复位端口定义在P1.1引脚
sbit SCLK=P1^6;    //位定义1302芯片的接口,时钟输出端口定义在P1.1引脚
//sbit DATA=P3^4;      //位定义1302芯片的接口,数据输出端定义在P1.1引脚
//sbit RST=P3^5;      //位定义1302芯片的接口,复位端口定义在P1.1引脚
//sbit SCLK=P3^6;    //位定义1302芯片的接口,时钟输出端口定义在P1.1引脚
unsigned char secondminutehourdaymonthyear;      //分别储存秒、分、小时,日,月,年
unsigned char ReadValue;   //储存从1302读取的数据
 
/*****************************************************
函数功能:延时若干微秒
入口参数:n
***************************************************/ 
void delaynus(unsigned char n)
{
 unsigned char i;
 for(i=0;i}



/*****************************************************
函数功能:向1302写一个字节数据
入口参数:x
***************************************************/ 
void Write1302(unsigned char dat)
{
  unsigned char i; 
  SCLK=0;            //拉低SCLK,为脉冲上升沿写入数据做好准备
  delaynus(2);       //稍微等待,使硬件做好准备
  for(i=0;i<8;i++)      //连续写8个二进制位数据
    {
     DATA=dat&0x01;    //取出dat的第0位数据写入1302
     delaynus(2);       //稍微等待,使硬件做好准备
     SCLK=0;           
     delaynus(2);      //稍微等待,使硬件做好准备
     SCLK=1;          //上升沿写入数据
  SCLK=0;  //再拉低,为下一次做准备
     dat>>=1;          //将dat的各数据位右移1位,准备写入下一个数据位
   }
 
 }

/*****************************************************
函数功能:从1302读一个字节数据
入口参数:x
***************************************************/ 
 unsigned char Read1302(void)
 {
   unsigned char idat;
   delaynus(2);       //稍微等待,使硬件做好准备
 for(i=0;i<8;i++)   //连续读8个二进制位数据
  {
  

    dat>>=1;       //将dat的各数据位右移1位,因为先读出的是字节的最低位
    if(DATA==1)    //如果读出的数据是1
    dat|=0x80;    //将1取出,写在dat的最高位
    SCLK=1;       //将SCLK置于高电平,为下降沿读出,数据在内存当中故上升沿写对其无效
    delaynus(2);  //稍微等待
    SCLK=0;       //拉低SCLK,形成脉冲下降沿
    delaynus(2);  //稍微等待
   }  
  return dat;        //将读出的数据返回

 
/*****************************************************
函数功能:根据命令字,从1302读取一个字节数据
入口参数:x
***************************************************/ 
unsigned char  ReadSet1302(unsigned char Cmd)
 {
  unsigned char dat;
  RST=0;                 //拉低RST
  SCLK=0;                //确保写数居前SCLK被拉低
  RST=1;                 //启动数据传输
  Write1302(Cmd);       //写入命令字
  dat=Read1302();       //读出数据
  SCLK=1;              //将时钟电平置于已知状态
  RST=0;               //禁止数据传递
  return dat;          //将读出的数据返回
}

/**************************************************************
以下是1302数据的显示程序
**************************************************************/
/*****************************************************
函数功能:显示秒
入口参数:x
***************************************************/ 
void DisplaySecond(unsigned char x)
{
 unsigned char ij;     //jkl分别储存温度的百位、十位和个位
 i=x/10;//取十位
 j=x%10;//取个位     
 WriteAddress(0x4c);    //写显示地址将在第2行第7列开始显示
 WriteData(digit[i]);    //将百位数字的字符常量写入LCD
 WriteData(digit[j]);    //将

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-06-07 08:49  电子钟\
     目录           0  2012-06-07 08:49  电子钟\51程序\
     文件        7474  2012-06-06 21:30  电子钟\51程序\DS1302.c
     文件         743  2012-06-06 19:43  电子钟\51程序\DS1302.h
     文件       11444  2012-06-06 21:30  电子钟\51程序\DS1302.LST
     文件       13130  2012-06-06 21:30  电子钟\51程序\DS1302.OBJ
     文件        5353  2012-06-06 21:04  电子钟\51程序\LM1602.c
     文件         494  2012-06-06 19:43  电子钟\51程序\LM1602.h
     文件        8498  2012-06-06 21:30  电子钟\51程序\LM1602.LST
     文件        9147  2012-06-06 21:30  电子钟\51程序\LM1602.OBJ
     文件         290  2012-06-06 19:45  电子钟\51程序\main.c
     文件        1235  2012-06-06 21:30  电子钟\51程序\main.LST
     文件        3125  2012-06-06 21:30  电子钟\51程序\main.OBJ
     文件       22072  2012-06-06 21:30  电子钟\51程序\ZOU DS1302
     文件        2646  2012-06-06 21:30  电子钟\51程序\ZOU DS1302.hex
     文件          76  2012-06-06 21:30  电子钟\51程序\ZOU DS1302.lnp
     文件       21189  2012-06-06 21:30  电子钟\51程序\ZOU DS1302.M51
     文件        1731  2012-06-06 21:27  电子钟\51程序\ZOU DS1302.Opt
     文件       27899  2012-06-06 21:30  电子钟\51程序\ZOU DS1302.plg
     文件        2302  2012-06-06 19:46  电子钟\51程序\ZOU DS1302.Uv2
     文件        1730  2012-06-06 21:17  电子钟\51程序\ZOU DS1302_Opt.Bak
     文件        2298  2012-06-06 17:38  电子钟\51程序\ZOU DS1302_Uv2.Bak
     目录           0  2012-06-07 08:48  电子钟\仿真图\
     文件      102169  2012-06-06 20:15  电子钟\仿真图\Last Loaded ZOU ds1302.DBK
     文件      102964  2012-06-06 22:32  电子钟\仿真图\ZOU ds1302.DSN
     文件         935  2012-06-06 22:32  电子钟\仿真图\ZOU ds1302.PWI

评论

共有 条评论

相关资源