久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1273|回復: 3
打印 上一主題 下一主題
收起左側

這是DS1302時鐘的程序,燒入后也會變化,但開始顯示都是零,搞了好久也沒弄成,求大神

[復制鏈接]
跳轉到指定樓層
樓主
ID:752619 發表于 2020-5-18 22:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
主程序:
# include "reg52.h"

# include "DS13.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 DisplayData[8];
u8 code smgduan [10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay (u16 i)
{
while (i--);
}
void datapros ()
{ DS1302ReadTime();
DisplayData[0]=smgduan[TIME[2]/16];   //? ??λ  16???????****1111???????λ?????
DisplayData[1]=smgduan[TIME[2]&0x0f];  //??λ
DisplayData[2]=0x40;            //????
DisplayData[3]=smgduan[TIME[1]/16];  //??   ??λ
    DisplayData[4]=smgduan[TIME[1]&0x0f]; //??λ
DisplayData[5]=0x40;
DisplayData[6]=smgduan[TIME[0]/16];  //??   //??λ
    DisplayData[7]=smgduan[TIME[0]&0x0f];  //??λ
}
void DigDisplay ()
{
u8 i;
for (i=0;i<8;i++)
{
  switch(i)
  {
   case (0):      //???i????0???????????
    LSA=0;LSB=0;LSC=0;break; //break????????case (0)?????switch
   case (1):
    LSA=1;LSB=0;LSC=0;break;
   case (2):
    LSA=0;LSB=1;LSC=0;break;
   case (3):
    LSA=1;LSB=1;LSC=0;break;
   case (4):
    LSA=0;LSB=0;LSC=1;break;
   case (5):
    LSA=1;LSB=0;LSC=1;break;
   case (6):
    LSA=0;LSB=1;LSC=1;break;
   case (7):
    LSA=1;LSB=1;LSC=1;break;
  }
  P0=DisplayData[ i];
  delay (100);
  P0=0x00; //??????????????
}
}
void main ()
{
DS1302Tnit ();
while (1)
{
  datapros ();
  DigDisplay ();
}
}


DS13.c:
# include "DS13.h"   
uchar code READ_RTC_ADDR [7]={0X81,0x83,0x85,0x87,0x89,0x8b,0x8d};   //?????
uchar code WRITE_RTC_ADDR [7]={0X80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //д???
uchar TIME[7]={0,0,0x05,0x14,0x05,0x04,0x20};    //??????????   ?洢????BCD?????滹?????
void DS1302Write (uchar addr,uchar dat)   //??????????????????????????    //??λ????????
{
uchar n;
RST=0;
_nop_();
SCLK=0;//???SCLK?????
_nop_();
RST=1;//???RST(CE)?????
_nop_();
for (n=0;n<8;n++)  //???????8λ???????
{
  DSIO=addr&0x01;   //??????λ???????
  addr>>=1;
  SCLK=1;     //???????????????DS1302?????
  _nop_();
  SCLK=0;       //??????8??
  _nop_();
}
for (n=0;n<8;n++)  //д??8λ????
{
  DSIO=addr&0x01;   //??????λ???????
  dat>>=1;
  SCLK=1;     //???????????????DS1302???????
  _nop_();
  SCLK=0;
  _nop_();
}
RST=0;//???????????
_nop_();
}
uchar DS1302Read (uchar addr)  //??λ???????  //uchar ?????з????
{
uchar n,dat,dat1;
RST=0;
_nop_();
SCLK=0;//???SCLK?????
_nop_();
RST=1;//???RST(CE)?????
_nop_();
for (n=0;n<8;n++)  //???????8λ???????
{
  DSIO=addr&0x01;   //??????λ???????
  addr>>=1;
  SCLK=1;     //???????????????DS1302???????
  _nop_();
  SCLK=0;   
  _nop_();
}
  _nop_();
for (n=0;n<8;n++)  //д??8λ????
{
  dat1=DSIO;       //??????λ???????  
  dat=(dat>>1)|(dat1<<7);
  SCLK=1;     //???????????????DS1302???????
  _nop_();
  SCLK=0;    //DS1302????????????????
  _nop_();
}
RST=0;
_nop_(); //?????DS1302??λ????????????? ?????????
SCLK=1;
_nop_();
DSIO=0;
_nop_();
DSIO=1;
_nop_();
return dat;
}
void DS1302Tnit ()  //?????
{
uchar n;
DS1302Write(0x8e,0x00);  //???д????????????д????????
for (n=0;n<7;n++)  //д?????????????????????????????
{
  DS1302Write (WRITE_RTC_ADDR[n],TIME[n]);  //???  ????
}
DS1302Write (0x8e,0x80); //??д????????
}
void DS1302ReadTime ()
{
uchar n;
for (n=0;n<7;n++) //???7??????????????????????????
{
  TIME[n]=DS1302Read(READ_RTC_ADDR[n]);
}
}



DS13.h
# ifndef _DS13_H_   
# define _DS13_H_
# include <reg52.h>
# include <intrins.h>

# ifndef uchar   
# define uchar unsigned char
# endif
# ifndef uint     //????ж???uint
# define uint unsigned int      //???????uint?unsigned int????
# endif
sbit DSIO=P3^4;    //IO
sbit RST=P3^5;    //CE
sbit SCLK=P3^6;    //SCLK
void DS1302Write (uchar addr,uchar dat);
uchar DS1302Read (uchar dat);
void DS1302Tnit ();
void DS1302ReadTime ();
extern uchar TIME[7];//??????????
# endif

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:752619 發表于 2020-5-18 22:06 | 只看該作者
這個很多的,大家有空再來幫我看,感謝!
回復

使用道具 舉報

板凳
ID:282850 發表于 2020-5-19 09:59 | 只看該作者
DS1302一是要設置時間調校,二是要加備用電池。程序太長沒看。
回復

使用道具 舉報

地板
ID:584814 發表于 2020-5-19 10:55 | 只看該作者
能正常工作但上電初疑似問題,可能始化后硬件有不在狀態的,在主程序中DS1302Tnit ();前后加延時試試。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区不卡 | 国产精品久久久久久久久久久久久久 | 国产成人在线一区二区 | 亚洲欧美在线一区 | 秋霞a级毛片在线看 | 伊人免费在线观看 | 中文字幕av第一页 | 精品国产欧美 | 91福利在线导航 | 亚洲一区二区视频在线播放 | 成人国产a | 久久精品日产第一区二区三区 | 午夜免费观看网站 | 成人av一区二区亚洲精 | 中文在线a在线 | av免费观看网站 | 97人人草 | 色网在线观看 | 国产在线观 | 在线观看www高清视频 | 国产99热精品 | 成人午夜精品 | 亚洲国产中文字幕 | 老司机成人在线 | 成人欧美一区二区三区在线播放 | 国产精品毛片无码 | 久久亚洲国产精品 | 久久综合亚洲 | 99精品免费 | 四虎影音 | 在线视频日韩 | 91免费观看| 免费观看一级毛片视频 | 成人免费在线视频 | 亚洲精品不卡 | 成人h片在线观看 | 国产欧美精品一区二区色综合朱莉 | 国产盗摄视频 | 亚洲91精品 | av男人的天堂在线 | 91免费看片 |