LanQiao比赛单片机专用板——CT107D把玩笔记(三)

新入门的看官请点击此处目录:



学习完数字温度传感器DS18B20,我想应该对单总线I2C(此处是平方)有了初步的了解。下面来迎击一下常用时钟芯片DS1302(这是重点!!!)。

首先,大体介绍一下该芯片。

DS1302是DALLS公司推出的涓流充电时钟芯片,内置一个实时时钟/日历和31字节静态RAM,其通过简单的串行口总线与单片机相连。该芯片提供年、月、日、时、分、秒的信息,时间格式可以设置为24小时式或12小时式。

主要硬件参数:

  • 三根通信线路:RET(复位)脚,IO(数据)脚,SCLK(时钟)脚
  • 能计算2100年之前的时间
  • 31*8位暂存数据寄存器RAM
  • 工作电压:2.0V~5.5V
  • 工作电流:2.0V时,小于300nA
  • 读写时钟有两种数据传输方式:单字节传送和多字节传送
  • 8脚DIP封装
DS1302引脚图.png

DS1302芯片的大体参数就介绍到这里,让我们重点看一下参赛板子上的DS1302。

上电路原理图:

DS1302电路原理图.png

弄清楚各个管脚的作用后,我们再看一下内部寄存器的部分命令和功能。

DS1302内部寄存器地址及命令.png

以上是DS1302的31个RAM寄存器。我们可以在主机掉电时,把数据写入其中,只要芯片的备用电池还在工作,数据就不会丢失。

再来看一下重要的地址命令字:

DS1302地址命令字.png

从上图可以清楚地知道,80h~91h地址代表的不同概念,只要从不同的地址读写相应的数据就可以准确地表达想要的时间数据了。

要想开始编程还需要清楚芯片的工作时序:

读时序:

读时序图.png

写时序:

写时序图.png

以上标明的CE引脚实质为RST(复位)引脚。

好了,逐步分析完DS1302寄存器地址命令和操作时序,我们就可以下手编程了。

话不多说,直接贴上大赛御用的驱动程序:

uchar code ds[]={55,59,23,10,10,1,16};//55秒59分23时10日10月星期一16年 
uchar shijian[7];   

//初始化DS1302
void dsinit(void)
{
  uchar i;
  uchar add=0x80;//首地址
  write(0x8e,0x00);//清除写保护
  for(i=0;i<7;i++)
  {
      write(add,ds[i]);//设置初值
      add=add+2;
  }
  write(0x8e,0x80);//打开写保护

}

//写一个字节
void writebyte(uchar dat)
{
  uchar i;
  for(i=0;i<8;i++)
  {
      SCLK=0;
      IO=dat&0x01;
      SCLK=1;
      dat>>=1;
  }
  }

//写函数
void write(uchar add,uchar dat)
{
  uchar num;    
  CE=0;
  SCLK=0;
  CE=1;
  writebyte(add);
  num=(dat/10<<4)|(dat%10);// 55
  writebyte(num);
  CE=0;
}

//从DS1302读时间
void readtime(void)
{
  uchar i;
  uchar add=0x81;//首地址
  write(0x8e,0x00);//清除写保护(可以配置寄存器)
  for(i=0;i<7;i++)
  {
      shijian[i]=read(add);//读出的时间存放在数组中
      add=add+2;//地址加2
  }
  write(0x8e,0x80);//关闭写保护  
  }

      //读取时间并转换格式
  uchar read(uchar add)
  {
  uchar i,temp;
  uchar dat1,dat2;
  CE=0;
  SCLK=0;
  CE=1;
  writebyte(add);
  for(i=0;i<8;i++)
  {
      SCLK=0;
      temp>>=1;
      if(IO)
      {
        temp|=0x80;
      }
      SCLK=1;
  }

  IO=0;

  dat1=temp/16; //0XFF 1111 1111
  dat2=temp%16;

  temp=dat1*10+dat2;//BCD码换算成10进制数

  return temp;

}

以上程序的大体思路可以看做:初始化,写字节,写字符,读字节,读字符和时间码转换。

利用好该驱动程序就可以“为所欲为”了~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容