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

標題: ds1302 51單片機實驗設計+Proteus仿真 [打印本頁]

作者: 咩咩咩@dxy    時間: 2020-7-30 15:06
標題: ds1302 51單片機實驗設計+Proteus仿真
#ifndef _1302_H
#define _1302_H

#include"reg52.h"
#include<intrins.h>
//---重定義關鍵詞---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
//---定義 ds1302 使用的 IO 口---//
sbit DSIO=P3^4;
sbit RST=P3^5;
sbit SCLK=P3^6;
//---定義全局函數---//
void Ds1302Write(uchar addr, uchar dat);
uchar Ds1302Read(uchar addr);
void Ds1302Init();
void Ds1302ReadTime();
//---加入全局變量--//
extern uchar TIME[7]; //加入全局變量
#endif



#include<reg52.h>
#include<1302.h>
//---DS1302 寫入和讀取時分秒的地址命令---//
//---秒分時日月周年 最低位讀寫位;-------//
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b,
0x8d};
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a,
0x8c};
//---DS1302 時鐘初始化 2020 年 7 月 29 日星期三 12 點 00 分 00 秒。---//
//---存儲順序是秒分時日月周年,存儲格式是用 BCD 碼---//
uchar TIME[7] = {0x00, 0x00, 0x12,0x92 ,0x07,0x03, 0x20};
/****************************************************************
***************
* 函 數 名 : Ds1302Write
* 函數功能 : 向 DS1302 命令(地址+數據)
* 輸 入 : addr,dat
* 輸 出 : 無
*****************************************************************
**************/
void  Ds1302Write(uchar addr,uchar dat)
{
        uint n;
        RST=0;
        _nop_();
        SCLK=0;       
        RST=1;
        _nop_();
        for(n=0;n<8;n++)
        {
                 DSIO=addr&0x01;
                 addr>>=1;
                 SCLK=1;
                 _nop_();
                 SCLK=0;
                 _nop_();
                       
        }
        for(n=0;n<8;n++)
        {
                 DSIO=dat&0x01;
                 dat>>=1;
                 SCLK=1;
                 _nop_();
                 SCLK=0;
                 _nop_();       
        }
        RST=0;
        _nop_();
}
/****************************************************************
***************
* 函 數 名 : Ds1302Read
* 函數功能 : 讀取一個地址的數據
* 輸 入 : addr
* 輸 出 : dat
*****************************************************************
**************/
uchar  Ds1302Read(uchar addr)
{
        uchar dat,dat1,i;
        RST=0;
        _nop_();
        SCLK=0;
        _nop_();
        RST=1;
        _nop_();
        for(i=0;i<8;i++)
        {
                DSIO=addr&0x01;
                addr>>=1;
                SCLK=1;
            _nop_();
                SCLK=0;
                _nop_();
        }
        for(i=0;i<8;i++)
        {
                dat1=DSIO;
                dat=(dat>>1)|(dat1<<7);
                SCLK=1;
                _nop_();
                SCLK=0;
                _nop_();
        }
         RST=0;                //復位穩定程序
         _nop_();
         SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();
        return dat;

}
/****************************************************************
***************
* 函 數 名 : Ds1302Init
* 函數功能 : 初始化 DS1302.
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************
**************/
void Ds1302Init()
{         uint i;
         Ds1302Write(0x80,0x00);//關閉寫保護功能
         for(i=0;i<7;i++)
         {
                 Ds1302Write(READ_RTC_ADDR[i],TIME[i]);
                       
         }
          Ds1302Write(0x8e,0x80); //打開寫保護位;
}
/****************************************************************
***************
* 函 數 名 : Ds1302ReadTime
* 函數功能 : 讀取時鐘信息
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************
**************/
void  Ds1302ReadTime()
{
        uchar n;
        for (n=0; n<7; n++)//讀取 7 個字節的時鐘信號:分秒時日月周年
        {
                TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
        }

}






#include<reg52,h>
#include<1302.h>
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
char num=0;
u8 DisplayData[8];
u8 code
smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/****************************************************************
***************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1 時,大約延時 10us
*****************************************************************
**************/
void delay(u16 i)
{
while(i--);
}
/****************************************************************
***************
* 函 數 名 : datapros()
* 函數功能 : 時間讀取處理轉換函數
* 輸 入 : 無
* 輸 出 : 無
***/
void datapros()
{
        Ds1302ReadTime();
        DisplayData[0]=smgduan[TIME[2]/16];
        DisplayData[1]=smgduan[TIME[2]&0x0f];
        DisplayData[2] = 0x40;
        DisplayData[3]=smgduan[TIME[1]/16];
        DisplayData[4]=smgduan[TIME[1]&0x0f];
        DisplayData[5]=0x40;
        DisplayData[6]=smgduan[TIME[0]/16];
        DisplayData[7]=smgduan[TIME[0]&0x0f];
}
/****************************************************************
***************
* 函數名 :DigDisplay()
* 函數功能 :數碼管顯示函數
* 輸入 : 無
* 輸出 : 無
*****************************************************************
**************/
void DigDisplay()
{
        u8 i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
LSA=1;LSB=1;LSC=1; break;//顯示第 0 位
case(1):
LSA=0;LSB=1;LSC=1; break;//顯示第 1 位
case(2):
LSA=1;LSB=0;LSC=1; break;//顯示第 2 位
case(3):
LSA=0;LSB=0;LSC=1; break;//顯示第 3 位
case(4):
LSA=1;LSB=1;LSC=0; break;//顯示第 4 位
case(5):
LSA=0;LSB=1;LSC=0; break;//顯示第 5 位
case(6):
LSA=1;LSB=0;LSC=0; break;//顯示第 6 位
case(7):
LSA=0;LSB=0;LSC=0; break;//顯示第 7 位
}
P0=DisplayData[i];//發送數據
delay(100); //間隔一段時間掃描
P0=0x00;//消隱
}

}
void main()
{
//Ds1302Init();
while(1)
{
datapros(); //數據處理函數
DigDisplay();//數碼管顯示函數
}
}




捕獲.PNG (52.44 KB, 下載次數: 40)

proteus仿真

proteus仿真

ds1302時鐘通信proteus仿真.zip

45.36 KB, 下載次數: 10, 下載積分: 黑幣 -5






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91亚洲精| 欧美一级二级三级视频 | 欧美日韩一区精品 | 久久综合九九 | 成人在线观看免费爱爱 | 男女污污网站 | 欧美一a一片一级一片 | 情侣av| 999久久久久久久久6666 | 久久伦理电影 | 久久a久久 | 福利久久 | 精品美女久久久 | 中文字幕乱码一区二区三区 | 欧洲av一区 | 999re5这里只有精品 | 欧美一区二区视频 | 精品成人免费视频 | 国内精品久久久久 | 亚洲二区在线观看 | av香港经典三级级 在线 | 欧美激情精品久久久久久 | 九九免费在线视频 | 卡通动漫第一页 | 婷婷福利视频导航 | 人人干97| 亚洲最新在线视频 | 国产精品日本一区二区在线播放 | 国产精品免费小视频 | 黑人精品欧美一区二区蜜桃 | 亚洲国产精品一区二区三区 | 一本大道久久a久久精二百 欧洲一区二区三区 | 亚洲婷婷六月天 | 伊人免费观看视频 | 久久亚洲欧美日韩精品专区 | 国产精品观看 | 亚洲一区二区三区视频免费观看 | 一级二级三级黄色 | 夜夜操天天操 | 日韩精品视频在线 | 国产美女精品视频 |