資源簡(jiǎn)介
基于51的單片機(jī)的電子密碼鎖的C語(yǔ)言程序(含詳細(xì)注釋?zhuān)┮约皃toteus仿真(含使用說(shuō)明),除了基本的斷電儲(chǔ)存密碼的電子鎖功能外,還集成了以下功能
1)利用DS18B20采集溫度顯示,在開(kāi)鎖后顯示;
2)利用DS1302記錄時(shí)間日期信息,在開(kāi)鎖后顯示。可以進(jìn)行修改;
3)利用HC06進(jìn)行藍(lán)牙通信,從而可以通過(guò)手機(jī)進(jìn)行開(kāi)關(guān)鎖,修改密碼的操作;
4)蜂鳴器報(bào)警
非常適合初學(xué)者下載學(xué)習(xí)

代碼片段和文件信息
#include“ds1302.h“
//---DS1302寫(xiě)入和讀取時(shí)分秒的地址命令---//
//---秒分時(shí)日月周年?最低位讀寫(xiě)位;-------//
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時(shí)鐘初始化2016年5月7日星期六12點(diǎn)00分00秒。---//
//---存儲(chǔ)順序是秒分時(shí)日月周年存儲(chǔ)格式是用BCD碼---//
uchar?TIME[7]?=?{0?0?0?0?0?0?0};
/*******************************************************************************
*?函?數(shù)?名?????????:?Ds1302Write
*?函數(shù)功能 ???:?向DS1302命令(地址+數(shù)據(jù))
*?輸????入?????????:?addrdat
*?輸????出?????????:?無(wú)
*******************************************************************************/
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++)//開(kāi)始傳送八位地址命令
{
DSIO?=?addr?&?0x01;//數(shù)據(jù)從低位開(kāi)始傳送
addr?>>=?1;
SCLK?=?1;//數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)
_nop_();
SCLK?=?0;
_nop_();
}
for?(n=0;?n<8;?n++)//寫(xiě)入8位數(shù)據(jù)
{
DSIO?=?dat?&?0x01;
dat?>>=?1;
SCLK?=?1;//數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)
_nop_();
SCLK?=?0;
_nop_();
}
?
RST?=?0;//傳送數(shù)據(jù)結(jié)束
_nop_();
}
/*******************************************************************************
*?函?數(shù)?名?????????:?Ds1302Read
*?函數(shù)功能 ???:?讀取一個(gè)地址的數(shù)據(jù)
*?輸????入?????????:?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++)//開(kāi)始傳送八位地址命令
{
DSIO?=?addr?&?0x01;//數(shù)據(jù)從低位開(kāi)始傳送
addr?>>=?1;
SCLK?=?1;//數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)
_nop_();
SCLK?=?0;//DS1302下降沿時(shí),放置數(shù)據(jù)
_nop_();
}
_nop_();
for(n=0;?n<8;?n++)//讀取8位數(shù)據(jù)
{
dat1?=?DSIO;//從最低位開(kāi)始接收
dat?=?(dat>>1)?|?(dat1<<7);
SCLK?=?1;
_nop_();
SCLK?=?0;//DS1302下降沿時(shí),放置數(shù)據(jù)
_nop_();
}
RST?=?0;
_nop_(); //以下為DS1302復(fù)位的穩(wěn)定時(shí)間必須的。
SCLK?=?1;
_nop_();
DSIO?=?0;
_nop_();
DSIO?=?1;
_nop_();
return?dat;
}
/*******************************************************************************
*?函?數(shù)?名?????????:?Ds1302Init
*?函數(shù)功能 ???:?初始化DS1302.
*?輸????入?????????:?無(wú)
*?輸????出?????????:?無(wú)
*******************************************************************************/
void?Ds1302Init()
{
uchar?n;
Ds1302Write(0x8E0X00); ?//禁止寫(xiě)保護(hù),就是關(guān)閉寫(xiě)保護(hù)功能
for?(n=0;?n<7;?n++)//寫(xiě)入7個(gè)字節(jié)的時(shí)鐘信號(hào):分秒時(shí)日月周年
{
Ds1302Write(WRITE_RTC_ADDR[n]TIME[n]);
}
Ds1302Write(0x8E0x80); ?//打開(kāi)寫(xiě)保護(hù)功能
}
/*******************************************************************************
*?函?數(shù)?名?????????:?Ds1302ReadTime
*?函數(shù)功能 ???:?讀取時(shí)鐘信息
*?輸????入?????????:?無(wú)
*?輸????出?????????:?無(wú)
*******************************************************************************/
void?Ds1302ReadTime()
{
uchar?n;
for?(n=0;?n<7;?n++)//讀取7個(gè)字節(jié)的時(shí)鐘信號(hào):分秒時(shí)日月周年
{
TIME[n]?=?Ds1302Read(READ_RTC_ADDR[n]);
}
}
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????130876??2017-11-11?13:25??電子密碼鎖.DSN
?????目錄???????????0??2018-04-25?23:04??基于51的電子密碼鎖\
?????文件??????141131??2017-11-11?13:09??基于51的電子密碼鎖\1.uvgui.Wandoy
?????文件???????55753??2017-11-11?13:25??基于51的電子密碼鎖\1.uvopt
?????文件???????13567??2017-11-11?13:23??基于51的電子密碼鎖\1.uvproj
?????文件???????55761??2017-11-11?13:23??基于51的電子密碼鎖\1_uvopt.bak
?????文件???????14182??2017-11-11?13:08??基于51的電子密碼鎖\1_uvproj.bak
?????文件????????4711??2017-11-09?21:51??基于51的電子密碼鎖\I2C.c
?????目錄???????????0??2018-04-25?23:04??基于51的電子密碼鎖\Listings\
?????文件???????49335??2017-11-11?13:25??基于51的電子密碼鎖\Listings\1.m51
?????文件????????8093??2017-11-07?23:54??基于51的電子密碼鎖\Listings\I2C.lst
?????文件???????14178??2017-11-09?13:18??基于51的電子密碼鎖\Listings\STARTUP.lst
?????文件????????7069??2017-11-11?13:24??基于51的電子密碼鎖\Listings\ds1302.lst
?????文件????????7017??2017-11-07?23:54??基于51的電子密碼鎖\Listings\lcd.lst
?????文件???????20394??2017-11-11?13:25??基于51的電子密碼鎖\Listings\main.lst
?????文件????????9355??2017-11-11?13:24??基于51的電子密碼鎖\Listings\temp.lst
?????目錄???????????0??2018-04-25?23:04??基于51的電子密碼鎖\ob
?????文件???????42090??2017-11-11?13:25??基于51的電子密碼鎖\ob
?????文件?????????999??2017-11-11?13:08??基于51的電子密碼鎖\ob
?????文件???????13044??2017-11-11?13:25??基于51的電子密碼鎖\ob
?????文件?????????131??2017-11-11?13:25??基于51的電子密碼鎖\ob
?????文件?????????622??2017-11-11?13:25??基于51的電子密碼鎖\ob
?????文件????????5840??2017-11-11?13:24??基于51的電子密碼鎖\ob
?????文件???????35446??2017-11-11?13:25??基于51的電子密碼鎖\ob
?????文件????????6775??2017-11-11?13:24??基于51的電子密碼鎖\ob
?????文件????????3291??2017-11-09?09:51??基于51的電子密碼鎖\ds1302.c
?????文件?????????572??2017-11-09?17:55??基于51的電子密碼鎖\ds1302.h
?????文件????????3385??2017-11-10?10:51??基于51的電子密碼鎖\lcd.c
?????文件????????3057??2017-11-05?20:38??基于51的電子密碼鎖\lcd.h
?????文件????????8737??2017-11-11?13:25??基于51的電子密碼鎖\main.c
?????文件????????4565??2017-11-10?12:21??基于51的電子密碼鎖\temp.c
............此處省略1個(gè)文件信息
評(píng)論
共有 條評(píng)論