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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7830|回復(fù): 0
收起左側(cè)

avr單片機(jī)ds1302時鐘程序詳解

[復(fù)制鏈接]
ID:68618 發(fā)表于 2014-11-11 19:06 | 顯示全部樓層 |閱讀模式
ds1302是一個時鐘芯片,和avr沒關(guān)系,這里用mega32操作該芯片,關(guān)于這個芯片網(wǎng)上資料很多,我簡單說一下,通信方式是SPI模式,芯片內(nèi)部有幾個寄存器存放年月日時分秒,還有寫保護(hù)等。

*****************************************************************
//CPU:mega32
//編譯器:iar
//DS1302
//main函數(shù)中調(diào)用lcd顯示函數(shù)


#include <ioavr.h>
#include "lcd.h"
void Write1302 ( unsigned char addr,unsigned char dat );
unsigned char Read1302 ( unsigned char addr );
void ds1302_init(void);

//寄存器宏定義
#define SECOND 0x80
#define MINUTE 0x82
#define HOUR 0x84
#define DAY 0x86
#define MONTH 0x88
#define YEAR 0x8C
#define PROTECT 0x8E
//管腳定義
#define   CE       PORTD_Bit5       //讀寫使能
#define   SCLK     PORTD_Bit6       //時鐘
#define   TIO      PORTD_Bit7       //數(shù)據(jù)輸出
#define   RIO      PIND_Bit7        //數(shù)據(jù)輸入
#define   CE_D     DDRD_Bit5        //CE方向
#define   SCLK_D   DDRD_Bit6        //SCLK方向
#define   IO_D     DDRD_Bit7        //IO方向
void main(void)
{
  ds1302_init();
  lcd_init();
  while(1)
  {
    delay(10000);
    clear();
    display_string(num2str(Read1302(YEAR)),0,0);display_string("YEAR",0,16);display_string(num2str(Read1302(MONTH)),0,64);display_string("MONTH",0,80);
    display_string(num2str(Read1302(DAY)),2,0);display_string("DAY",2,16);display_string(num2str(Read1302(HOUR)),2,64);display_string("HOUR",2,80);
    display_string(num2str(Read1302(MINUTE)),4,0);display_string("MIN",4,16);display_string(num2str(Read1302(SECOND)),4,64);display_string("SECOND",4,80);
  }
}

//地址、數(shù)據(jù)發(fā)送子程序
void Write1302 ( unsigned char addr,unsigned char data )
{
    unsigned char i;
    IO_D = 1;
    CE = 0; //CE 引腳為低,數(shù)據(jù)傳送中止
    SCLK = 0; //清零時鐘總線
    CE = 1; //CE 引腳為高,邏輯控制有效
    //發(fā)送地址
    for ( i=8; i>0; i-- ) //循環(huán)8次移位
    {
        SCLK = 0;
        TIO = (addr&0x01); //每次傳輸?shù)妥止?jié)
        addr >>= 1; //右移一位
        SCLK = 1;
    }
    //發(fā)送數(shù)據(jù)
    for ( i=8; i>0; i-- )
    {
        SCLK = 0;
        TIO = (data&0x01);
        data >>= 1;
        SCLK = 1;
    }
   
    CE = 0;
}
//數(shù)據(jù)讀取子程序
unsigned char Read1302 ( unsigned char addr )
{
    unsigned char i,data=0,temp;
    addr = addr | 1;//變?yōu)樽x地址
    IO_D = 1;
    CE=0;
    SCLK=0;
    CE = 1;
    //發(fā)送地址
    for ( i=8; i>0; i-- ) //循環(huán)8次移位
    {
        SCLK = 0;
        TIO = (addr&0x01); //每次傳輸?shù)妥止?jié)
        addr >>= 1; //右移一位
        SCLK = 1;
    }
    IO_D = 0;
    //讀取數(shù)據(jù)
    for ( i=0; i<8; i++ )
    {
        SCLK = 1;
        SCLK = 0;
        data |= RIO<<i;
    }
   
    CE=0;
   
  // data = data/16*10 + data&0x0f ; 為什么不對
    temp = data>>4;
    data &= 0x0f;
    data = temp*10 + data;
   
    return (data);
}
//初始化DS1302
void ds1302_init(void)
{
    CE_D = 1  ;     //CE 輸出
    SCLK_D = 1 ;    //SCLK 輸出
    Write1302 (PROTECT,0X00); //禁止寫保護(hù)
    Write1302 (SECOND ,0x30); //秒位初始化
    Write1302 (MINUTE ,0x05); //分鐘初始化
    Write1302 (HOUR   ,0x6); //小時初始化
    Write1302 (DAY    ,0x14); //日位初始化
    Write1302 (MONTH  ,0x12); //月鐘初始化
    Write1302 (YEAR   ,0x88); //年初始化
    Write1302 (PROTECT,0x80); //允許寫保護(hù)
}

******************************************************************



回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天操天天玩 | 午夜在线视频 | 久久免费精品 | 午夜寂寞影院在线观看 | 成人免费看片网 | 亚洲精品电影网在线观看 | 在线观看av网站永久 | 欧美国产精品 | 日韩在线欧美 | 国产精品区二区三区日本 | 日韩中文字幕在线观看 | 久久69精品久久久久久久电影好 | 中文字幕一页二页 | 国产91精品在线 | 一级免费a | 天堂综合网 | 人人做人人澡人人爽欧美 | 天天成人综合网 | 欧美久久视频 | 久久综合伊人一区二区三 | 激情网站在线观看 | 国产一区免费 | 欧美日韩在线成人 | 亚洲人在线播放 | 一区二区三区四区电影视频在线观看 | 国际精品久久 | 看片国产| 国产99久久精品一区二区永久免费 | 人人爽日日躁夜夜躁尤物 | 亚洲狠狠丁香婷婷综合久久久 | 天堂亚洲网| 911精品美国片911久久久 | 亚洲视频在线看 | 网络毛片 | 久久精品欧美一区二区三区不卡 | 午夜影院在线观看 | 国产三区四区 | 国产一区二区自拍 | 在线免费看91 | 久久成人综合 | 天天天操天天天干 |