資源簡介
和同學一起設計的一款基于51單片機的密碼鎖。集成了多個適合初學者學習的功能。可以顯示時間日期,溫度,可以修改和斷電儲存密碼,有蜂鳴器報警功能,有藍牙通信(手機輸入修改密碼)等功能,非常適合初學者學習和下載。
內含:C源代碼(含詳細注釋,邏輯結構清晰)
proteus仿真電路圖(含詳細文字說明)
以及相關的工程文件等等

代碼片段和文件信息
#include“ds1302.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時鐘初始化2016年5月7日星期六12點00分00秒。---//
//---存儲順序是秒分時日月周年存儲格式是用BCD碼---//
uchar?TIME[7]?=?{0?0?0?0?0?0?0};
/*******************************************************************************
*?函?數?名?????????:?Ds1302Write
*?函數功能 ???:?向DS1302命令(地址+數據)
*?輸????入?????????:?addrdat
*?輸????出?????????:?無
*******************************************************************************/
void?Ds1302Write(uchar?addr?uchar?dat)
{
uchar?n;
RST?=?0;
_nop_();
SCLK?=?0;//先將SCLK置低電平。
_nop_();
RST?=?1;?//然后將RST(CE)置高電平。
_nop_();
for?(n=0;?n<8;?n++)//開始傳送八位地址命令
{
DSIO?=?addr?&?0x01;//數據從低位開始傳送
addr?>>=?1;
SCLK?=?1;//數據在上升沿時,DS1302讀取數據
_nop_();
SCLK?=?0;
_nop_();
}
for?(n=0;?n<8;?n++)//寫入8位數據
{
DSIO?=?dat?&?0x01;
dat?>>=?1;
SCLK?=?1;//數據在上升沿時,DS1302讀取數據
_nop_();
SCLK?=?0;
_nop_();
}
?
RST?=?0;//傳送數據結束
_nop_();
}
/*******************************************************************************
*?函?數?名?????????:?Ds1302Read
*?函數功能 ???:?讀取一個地址的數據
*?輸????入?????????:?addr
*?輸????出?????????:?dat
*******************************************************************************/
uchar?Ds1302Read(uchar?addr)
{
uchar?ndatdat1;
RST?=?0;
_nop_();
SCLK?=?0;//先將SCLK置低電平。
_nop_();
RST?=?1;//然后將RST(CE)置高電平。
_nop_();
for(n=0;?n<8;?n++)//開始傳送八位地址命令
{
DSIO?=?addr?&?0x01;//數據從低位開始傳送
addr?>>=?1;
SCLK?=?1;//數據在上升沿時,DS1302讀取數據
_nop_();
SCLK?=?0;//DS1302下降沿時,放置數據
_nop_();
}
_nop_();
for(n=0;?n<8;?n++)//讀取8位數據
{
dat1?=?DSIO;//從最低位開始接收
dat?=?(dat>>1)?|?(dat1<<7);
SCLK?=?1;
_nop_();
SCLK?=?0;//DS1302下降沿時,放置數據
_nop_();
}
RST?=?0;
_nop_(); //以下為DS1302復位的穩定時間必須的。
SCLK?=?1;
_nop_();
DSIO?=?0;
_nop_();
DSIO?=?1;
_nop_();
return?dat;
}
/*******************************************************************************
*?函?數?名?????????:?Ds1302Init
*?函數功能 ???:?初始化DS1302.
*?輸????入?????????:?無
*?輸????出?????????:?無
*******************************************************************************/
void?Ds1302Init()
{
uchar?n;
Ds1302Write(0x8E0X00); ?//禁止寫保護,就是關閉寫保護功能
for?(n=0;?n<7;?n++)//寫入7個字節的時鐘信號:分秒時日月周年
{
Ds1302Write(WRITE_RTC_ADDR[n]TIME[n]);
}
Ds1302Write(0x8E0x80); ?//打開寫保護功能
}
/*******************************************************************************
*?函?數?名?????????:?Ds1302ReadTime
*?函數功能 ???:?讀取時鐘信息
*?輸????入?????????:?無
*?輸????出?????????:?無
*******************************************************************************/
void?Ds1302ReadTime()
{
uchar?n;
for?(n=0;?n<7;?n++)//讀取7個字節的時鐘信號:分秒時日月周年
{
TIME[n]?=?Ds1302Read(READ_RTC_ADDR[n]);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????140718??2017-12-05?20:51??基于51的密碼鎖\電子密碼鎖.DSN
?????目錄???????????0??2017-12-02?20:50??基于51的密碼鎖\
?????文件??????140719??2017-12-02?20:45??基于51的密碼鎖\Last?Loaded?電子密碼鎖.DBK
?????文件????????1364??2017-12-02?20:49??基于51的密碼鎖\電子密碼鎖.PWI
?????文件???????13717??2017-12-02?20:48??基于51的密碼鎖\電子密碼鎖.hex
?????目錄???????????0??2017-12-02?20:49??基于51的密碼鎖\程序源碼(MDK5編寫)\
?????文件??????141131??2017-11-11?13:09??基于51的密碼鎖\程序源碼(MDK5編寫)\1.uvgui.Wandoy
?????文件???????55749??2017-12-02?20:49??基于51的密碼鎖\程序源碼(MDK5編寫)\1.uvopt
?????文件???????13567??2017-11-11?13:23??基于51的密碼鎖\程序源碼(MDK5編寫)\1.uvproj
?????文件???????55761??2017-11-11?13:23??基于51的密碼鎖\程序源碼(MDK5編寫)\1_uvopt.bak
?????文件???????14182??2017-11-11?13:08??基于51的密碼鎖\程序源碼(MDK5編寫)\1_uvproj.bak
?????文件????????4711??2017-11-09?21:51??基于51的密碼鎖\程序源碼(MDK5編寫)\I2C.c
?????目錄???????????0??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\
?????文件???????52862??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\1.m51
?????文件????????8093??2017-11-07?23:54??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\I2C.lst
?????文件???????14178??2017-11-09?13:18??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\STARTUP.lst
?????文件????????7069??2017-12-02?20:37??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\ds1302.lst
?????文件????????7017??2017-11-07?23:54??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\lcd.lst
?????文件???????22961??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\main.lst
?????文件????????9355??2017-12-02?20:37??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\temp.lst
?????文件????????3623??2017-12-01?23:36??基于51的密碼鎖\程序源碼(MDK5編寫)\Listings\uart.lst
?????目錄???????????0??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件???????44731??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件?????????999??2017-11-11?13:08??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件???????13717??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件?????????131??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件???????16481??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件????????5840??2017-12-02?20:37??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件???????38611??2017-12-02?20:48??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件????????6775??2017-12-02?20:37??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
?????文件??????????88??2017-12-01?23:36??基于51的密碼鎖\程序源碼(MDK5編寫)\ob
............此處省略8個文件信息
評論
共有 條評論