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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2329|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

DS1302+數(shù)碼管實(shí)時(shí)顯示時(shí)間

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:311316 發(fā)表于 2019-6-15 15:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "reg52.h"
#include "intrins.h"
sbit CE=P1^3;
sbit IO=P1^2;
sbit SCLK=P1^4;
sbit wela=P1^1;
sbit dula=P1^0;
typedef unsigned char   uint8;
typedef unsigned int   uint16;
uint8 code duan[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D, 0x7D,0x07,0x7F,0x6F,0x40};
uint8 code wei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint8   init[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};   // 秒    分    時(shí)    日    月  星期    年
uint8   ReadedTime[7] = {0};
uint8   TimeData[14] = {0};
uint8 i,j;
void WriteByte_DS1302(uint8 dat)
{
    uint8 i;
    for (i=0; i<8; i++)             //8位計(jì)數(shù)器
    {
        SCLK = 0;                   //時(shí)鐘線拉低
        _nop_();                    //延時(shí)等待
        _nop_();
        dat >>= 1;                  //移出數(shù)據(jù)
        IO = CY;                    //送出到端口
        SCLK = 1;                   //時(shí)鐘線拉高
        _nop_();                    //延時(shí)等待
        _nop_();
    }
}
uint8 ReadByte_DS1302()
{
    uint8 i;
    uint8 dat = 0;
    for (i=0; i<8; i++)            
    {
        SCLK = 0;                   //時(shí)鐘線拉低
        _nop_();                    //延時(shí)等待
        _nop_();
        dat >>= 1;                  //數(shù)據(jù)右移一位
        if (IO) dat |= 0x80;        //讀取數(shù)據(jù)
        SCLK = 1;                   //時(shí)鐘線拉高
        _nop_();               
        _nop_();
    }
   return dat;
}
uint8 ReadData_DS1302(uint8 addr)
{
    uint8 dat;
    CE = 0;
    _nop_();                        //延時(shí)等待
    _nop_();
    SCLK = 0;
    _nop_();                        //延時(shí)等待
    _nop_();
    CE = 1;
    _nop_();                        //延時(shí)等待
    _nop_();
    WriteByte_DS1302(addr);         //寫地址
    dat = ReadByte_DS1302();        //讀數(shù)據(jù)
    SCLK = 1;
    CE = 0;
return dat;
}
void WriteData_DS1302(uint8 addr, uint8 dat)
{
    CE = 0;
    _nop_();                        //延時(shí)等待
    _nop_();
    SCLK = 0;
    _nop_();                        //延時(shí)等待
    _nop_();
    CE = 1;
    _nop_();                        //延時(shí)等待
    _nop_();
    WriteByte_DS1302(addr);         //寫地址
    WriteByte_DS1302(dat);          //寫數(shù)據(jù)
    SCLK = 1;
    CE = 0;
}
void SetTime_DS1302(uint8 *Pointer)
{
    uint8 addr = 0x80;
    uint8 n = 7;
    WriteData_DS1302(0x8e, 0x00);   //允許寫操作
    while (n--)
    {
        WriteData_DS1302(addr, *Pointer++);
        addr += 2;
    }
    WriteData_DS1302(0x8e, 0x80);   //寫保護(hù)
}
void GetTime_DS1302(uint8 *Pointer)
{
    uint8 addr = 0x81;
    uint8 n = 7;
    while (n--)
    {
        *Pointer++ = ReadData_DS1302(addr);
        addr += 2;
    }
}
void Initial_DS1302()
{
    CE = 0;
    SCLK = 0;
    WriteData_DS1302(0x8e, 0x00);     //允許寫操作
    WriteData_DS1302(0x80, 0x00);     //時(shí)鐘啟動(dòng)
    //WriteData_DS1302(0x90, 0xa6);   //一個(gè)二極管+4K電阻充電,在有備用電源的情況下使用
    WriteData_DS1302(0x84, 0x80);
    WriteData_DS1302(0x8e, 0x80);   //寫保護(hù)
}
void DataProcess_DS1302()
{
   volatile uint8 Value=0;
   Value=((ReadedTime[0]&0x70)>>4)*10 +(ReadedTime[0]&0x0f);   //   秒 數(shù)據(jù)處理
   TimeData[0]=Value%10;
   TimeData[1]=Value/10;
   TimeData[2]=10;
   Value=((ReadedTime[1]&0x70)>>4)*10 +(ReadedTime[1]&0x0f);   // 分 數(shù)據(jù)處理
   TimeData[3]=Value%10;
   TimeData[4]=Value/10;
   TimeData[5]=10;
   Value=((ReadedTime[2]&0x70)>>4)*10 +(ReadedTime[2]&0x0f);   //  時(shí) 數(shù)據(jù)處理
   TimeData[6]=Value/10;
   TimeData[7]=Value%10;
  
}
void delay(uint16 m)
{ uint16 n;
    for(;m>0;m--)
  for(n=110;n>0;n--);

  }  
void display()
{     j=7;
  for(i=0;i<8;i++)
  {
    wela=1;
    P2=wei[i];
wela=0;
dula=1;
P2=duan[TimeData[j--]];
   dula=0;
delay(1);
dula=1;
P2=0x00;
dula=0;
  }

}
void main()
{  Initial_DS1302();               //初始化DS1302
  SetTime_DS1302(init);
  
while(1)
{
       GetTime_DS1302(ReadedTime);      //讀取當(dāng)前時(shí)間
   DataProcess_DS1302();           //設(shè)置初始時(shí)間
  display();
}  }

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-6-15 19:46 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线观看视频亚洲 | 亚洲综合中文字幕在线观看 | 国产网站在线播放 | 国产美女黄色 | 日韩一区二区在线观看 | 亚洲一二三区精品 | 成人午夜在线 | 蜜臀网 | 久久中文字幕av | 亚洲一区国产精品 | 国产精品中文字幕一区二区三区 | 国产亚洲黄色片 | 欧美日韩久久精品 | 久久99精品久久久久久狂牛 | 九九伊人sl水蜜桃色推荐 | 中文字幕乱码一区二区三区 | 亚洲精品福利视频 | 欧美色综合一区二区三区 | 亚洲www啪成人一区二区 | 欧美一区二区三 | 国产免费一区二区三区免费视频 | 欧美αv | 亚洲一区二区三区桃乃木香奈 | 久久久久网站 | 羞羞视频免费在线观看 | 激情欧美一区二区三区中文字幕 | 午夜爽爽爽男女免费观看 | 国产精品不卡 | 亚洲精品永久免费 | 天天爽夜夜骑 | www久久国产 | 91麻豆精品一区二区三区 | 欧美极品在线观看 | 色婷婷av一区二区三区软件 | 99re在线| 美女福利视频一区 | 久久久久久女 | 国产精品久久久久久久久久久久久久 | 国产视频福利一区 | 91佛爷在线观看 | 欧美日韩免费视频 |