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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7863|回復: 0
收起左側

avr單片機ds1302時鐘程序詳解

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

*****************************************************************
//CPU:mega32
//編譯器:iar
//DS1302
//main函數中調用lcd顯示函數


#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       //數據輸出
#define   RIO      PIND_Bit7        //數據輸入
#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);
  }
}

//地址、數據發送子程序
void Write1302 ( unsigned char addr,unsigned char data )
{
    unsigned char i;
    IO_D = 1;
    CE = 0; //CE 引腳為低,數據傳送中止
    SCLK = 0; //清零時鐘總線
    CE = 1; //CE 引腳為高,邏輯控制有效
    //發送地址
    for ( i=8; i>0; i-- ) //循環8次移位
    {
        SCLK = 0;
        TIO = (addr&0x01); //每次傳輸低字節
        addr >>= 1; //右移一位
        SCLK = 1;
    }
    //發送數據
    for ( i=8; i>0; i-- )
    {
        SCLK = 0;
        TIO = (data&0x01);
        data >>= 1;
        SCLK = 1;
    }
   
    CE = 0;
}
//數據讀取子程序
unsigned char Read1302 ( unsigned char addr )
{
    unsigned char i,data=0,temp;
    addr = addr | 1;//變為讀地址
    IO_D = 1;
    CE=0;
    SCLK=0;
    CE = 1;
    //發送地址
    for ( i=8; i>0; i-- ) //循環8次移位
    {
        SCLK = 0;
        TIO = (addr&0x01); //每次傳輸低字節
        addr >>= 1; //右移一位
        SCLK = 1;
    }
    IO_D = 0;
    //讀取數據
    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); //禁止寫保護
    Write1302 (SECOND ,0x30); //秒位初始化
    Write1302 (MINUTE ,0x05); //分鐘初始化
    Write1302 (HOUR   ,0x6); //小時初始化
    Write1302 (DAY    ,0x14); //日位初始化
    Write1302 (MONTH  ,0x12); //月鐘初始化
    Write1302 (YEAR   ,0x88); //年初始化
    Write1302 (PROTECT,0x80); //允許寫保護
}

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



回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av综合站| 黄色a视频| 国产午夜精品久久久 | 日韩欧美国产一区二区三区 | 老司机精品福利视频 | 中文字幕亚洲一区 | 日日夜精品视频 | 男女免费在线观看视频 | 中文字幕日本一区二区 | 免费视频一区二区 | 黑人巨大精品欧美黑白配亚洲 | 欧美一区二区免费在线 | 久久九七 | 久久小视频 | 在线看av网址 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 午夜视频免费网站 | 亚洲区一区二区 | 久久国产精品精品国产色婷婷 | 成年网站在线观看 | 男女激情网站免费 | 免费一级片 | 久久久久久久久国产成人免费 | 日韩成人高清 | 日本激情视频中文字幕 | 久久精品 | 久久www免费视频 | 日韩免费三级 | 午夜99 | 男人的天堂一级片 | 日韩在线观看视频一区 | 久久婷婷国产麻豆91 | 久草网站 | 国产中文区二幕区2012 | 欧美日韩一区二区视频在线观看 | 日韩美女在线看免费观看 | 在线播放国产一区二区三区 | 欧美在线一区二区视频 | 人人艹人人| 日本三级电影在线观看视频 | 伊人久久在线 |