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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+DS1302+LCD1602自制萬年歷程序+定時鬧鐘提醒哦!

[復制鏈接]
跳轉到指定樓層
樓主
最近用了款DS1302 RTC實時時鐘,自己動手做個萬年歷時鐘,加上鬧鐘,再也不用擔心午睡超時了。
按鍵說明:S1 時間設置;S2 鬧鈴設置;S3  移動模式;S4  時間減;S5  時間加;S6 確認; S7 取消。

制作出來的實物圖如下:


電路原理圖如下:


單片機源程序如下:
先來一段1302驅動程序:
/*
*******************************************************************************
*
* 文 件 名:DS1302.c
* 描    述:實時時鐘芯片DS1302驅動模塊
* 功    能:
*******************************************************************************
*/
#include "Config.h"
#include "DS1302.h"
/********LCD1302的讀/寫函數編輯寫程序********/
/**********************************************
函 數 名:   RTInputByte()
功    能:    實時時鐘寫入一字節
說     明:   往DS1302寫入1Byte數據(內部函數)
入口參數:   d 寫放的數據
返 回 值:    無
**********************************************/
void RTInputByte(uchar d)
{
    uchar i;
T_IO = 0; //把此雙向口清零,不用在此腳加上拉電阻
    for(i=8; i>0; i--)
    {
        T_IO=d&0x01;      //取最低位
        T_CLK=0;
        T_CLK=1;
        d=d>>1;
    }
}
/******************************************************************************/
/* 函數名稱  : DS1302_OutputByte                                              */
/* 函數描述  : 從DS1302讀取1Byte數據函數                                      */
/* 輸入參數  : 無                                                             */
/* 參數描述  : 無                                                             */
/* 返回值    : 無                                                             */
/******************************************************************************/
uchar RTOutputByte(void) //換此函數正確
{
uchar i;
uchar temp;
temp = 0;

for(i = 0; i < 8; i++)
{
  T_CLK = 0;
  if(T_IO != 0)
  temp |= (1 << i);
  T_CLK = 1;
}
return(temp);
}
void reset_ds1302()
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
}
void clear_ds1302_WP()
{
reset_ds1302();
T_RST = 1;
RTInputByte(0x8E);
RTInputByte(0);
T_IO = 0;
T_RST = 0;
}
/*設置寫保護*/
void set_ds1302_WP()
{
reset_ds1302();
T_RST = 1;
RTInputByte(0x8E);
RTInputByte(0x80);
T_IO = 0;
T_RST = 0;
}
/**********************************************
函 數 名:   Write1302()
功    能:    往DS1302寫入數據
說     明:   先寫地址,后寫命令/數據(內部函數)
調     用:   RTInputByte(),  RTOutputByte()
入口參數:   ucAddr:DS1302地址,ucData:要寫的數據
返 回 值:    無
**********************************************/
void Write1302(uchar ucAddr,uchar ucDa)
{
clear_ds1302_WP();
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);    //地址,寫地址
    RTInputByte(ucDa);     //寫1Byte數據
    T_CLK = 1;
    T_RST = 0;
set_ds1302_WP();
}
/**********************************************
函 數 名:   Read1302()
功    能:    讀取DS1302某地址的數據
說     明:   先寫地址,后讀命令/數據(內部函數)
調     用:   RTInputByte(),  RTOutputByte()
入口參數:   ucAddr:DS1302地址
返 回 值:    ucData:讀取的數據
**********************************************/
uchar Read1302(uchar ucAddr)
{
    uchar ucData;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);      //地址,命令
    ucData = RTOutputByte();  //讀1Byte數據
    T_CLK = 1;
    T_RST = 0;
    return(ucData);
}
/**********************************************
函 數 名:   Set1302()
功    能:    設置初始時間
說     明:   先寫地址,后讀命令/數據(寄存器多字節方式)
調     用:   Write1302()
入口參數:   pClock:設置時鐘數據地址 格式為: 秒 分 時 日 月 星期 年
                                    7Byte(BCD碼) 1B  1B 1B 1B 1B  1B    1B
返 回 值:    無
**********************************************/
void Set1302(uchar *pClock)
{
    uchar i;
    uchar ucAddr = 0x80;
    Write1302(0x8e,0x00);           //控制命令,WP=0, 寫操作
    for(i=7; i>0; i--)
    {
        Write1302(ucAddr, *pClock); //秒 分 時 日 月 星期 年
        pClock++;
        ucAddr += 2;
    }
    Write1302(0x8e,0x80);           //控制命令,WP=1,寫保護
}
/**********************************************
函 數 名:   get_time()
功    能:    獲取DS1302時間數據
說     明:   先寫地址,后讀命令/數據
調     用:   Read1302()
入口參數:   無
返 回 值:    *p: 把讀取到的數據保存到 p 指向的數組里
**********************************************/
void get_time(uchar *p)
{
    uchar i,n;
    n = 0x81;
    for(i=7; i>0; i--)
    {
        *p = Read1302(n);
        p++;
        n+=2;
    }
}

詳見附件哦~~
全部資料51hei下載地址:
DS1302.rar (297.68 KB, 下載次數: 187)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:242298 發表于 2019-10-5 03:24 | 只看該作者
謝謝分享
回復

使用道具 舉報

板凳
ID:84745 發表于 2019-10-20 10:53 來自手機 | 只看該作者
感謝分享
回復

使用道具 舉報

地板
ID:587199 發表于 2019-11-15 16:38 | 只看該作者
您好,為什么我的LCD1602 一開始顯示,一調分就沒了呢

51hei截圖20191115163752.png (35.32 KB, 下載次數: 49)

51hei截圖20191115163752.png
回復

使用道具 舉報

5#
ID:243394 發表于 2019-11-16 12:44 | 只看該作者
感謝分享
回復

使用道具 舉報

6#
ID:634785 發表于 2019-12-7 14:35 來自手機 | 只看該作者
大哥有全部文件嗎,新手不會寫完整的單片機程序
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产色网| 日本精品一区二区 | 91污在线 | 日韩欧美一区二区三区免费观看 | 国产精品永久在线观看 | 中文日韩字幕 | 91视视频在线观看入口直接观看 | 男人的天堂中文字幕 | 久久久视频在线 | 一级毛片,一级毛片 | 草久在线视频 | 超碰97人人人人人蜜桃 | 精品国产一区二区三区在线观看 | 久久久久久一区 | 美女视频一区 | 99亚洲精品 | 久久免费高清视频 | 女同videos另类 | 一级片毛片| 国产精品日女人 | 日韩欧美在线视频 | 成人在线国产 | 国产91视频播放 | 亚洲欧美激情精品一区二区 | 欧美精品一区二区在线观看 | 9久久婷婷国产综合精品性色 | 亚洲午夜精品视频 | 丁香久久 | av一区二区三区四区 | 欧美午夜视频 | 影音先锋中文字幕在线观看 | 欧美精品一区二区在线观看 | 精品自拍视频在线观看 | 国产一区二区在线免费 | 国产小视频在线 | 成人在线观看亚洲 | 国产精品久久久久久中文字 | 日本视频免费观看 | 福利视频亚洲 | 四虎影院在线观看免费视频 | 成人精品在线观看 |