?? pcf8563的c51程序設計※51單片機c程序※單片機吧臺 __ http--www_mcu8_cn .htm
字號:
<TD></TD></TR>
<TR>
<TD vAlign=center height=54>
<DIV align=center><FONT color=#993300>發表時間:2005-08-19
23:20:30 瀏覽人數:94 發布者:administrator</FONT></DIV></TD></TR>
<TR>
<TD><SPAN id=post1>
<DIV align=center>作者:網絡
文章出處:網絡</DIV><BR><BR>
PCF8563是一款低功耗的CMOS實時時鐘/日歷芯片,它提供一個可編程時鐘輸出,一個中斷輸出和掉電檢測器,所有的地址和數據通過I2C總線接口串行傳遞。最大總線速度為400Kbits/s,每次讀寫數據后,內嵌的字地址寄存器會自動增加。<BR><BR><B>特性</B><BR>
低工作電流:典型值為0.25μA(VDD=3.0V,Tamb=25 ℃時);<BR>
世紀標志;<BR>
大工作電壓范圍:1.0~5.5V;<BR> 低休眠電流;典型值為0.25μA
(VDD=3.0V, Tamb=25 ℃);<BR> 400KHz
的I2C總線接口(VDD=1.8~5.5V 時);<BR>
可編程時鐘輸出頻率為:32.768KHz,1024Hz,32Hz,1Hz;<BR>
報警和定時器;<BR> 掉電檢測器;<BR>
內部集成的振蕩器電容;<BR> 片內電源復位功能;<BR>
I2C 總線從地址:讀:0A3H;寫:0A2H;<BR>
開漏中斷引腳。<BR><BR><B>應用</B><BR>
移動電話;<BR> 便攜儀器;<BR>
傳真機;<BR> 電池供電產品。
<BR><BR>/**————————————————————<BR>〖說明〗I2C總線驅動程序(用兩個普通IO模擬I2C總線)<BR>包括100Khz(T=10us)的標準模式(慢速模式)選擇,<BR>和400Khz(T=2.5us)的快速模式選擇,<BR>默認11.0592Mhz的晶振。<BR><BR>—————————————————————*/<BR>#ifndef
SDA<BR>#define SDA P0_0<BR>#define SCL
P0_1<BR>#endif<BR><BR>extern uchar
SystemError;<BR>#define uchar unsigned char<BR>#define
uint unsigned int<BR>#define Byte unsigned
char<BR>#define Word unsigned int<BR>#define bool
bit<BR>#define true 1<BR>#define false 0<BR><BR>#define
SomeNOP();
_nop_();_nop_();_nop_();_nop_();<BR>/**------------------------------------------------------------------<BR>調用方式:void
I2CStart(void)
函數說明:私有函數,I2C專用<BR>---------------------------------------------------------------------*/<BR>void
I2CStart(void)<BR>{<BR>EA=0;<BR>SDA=1; SCL=1;
SomeNOP();//INI<BR>SDA=0; SomeNOP();
//START<BR>SCL=0;<BR>}<BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
I2CStop(void) ﹫2001/07/0
4<BR>函數說明:私有函數,I2C專用<BR>---------------------------------------------------------------------------------*/<BR>void
I2CStop(void)<BR>{<BR>SCL=0; SDA=0; SomeNOP();
//INI<BR>SCL=1; SomeNOP(); SDA=1;
//STOP<BR>EA=1;<BR>}<BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:bit
I2CAck(void) ﹫2001/07/0
4<BR>函數說明:私有函數,I2C專用,等待從器件接收方的應答<BR>---------------------------------------------------------------------------------*/<BR>bool
WaitAck(void)<BR>{<BR>uchar
errtime=255;//因故障接收方無ACK,超時值為255。<BR>SDA=1;SomeNOP();<BR>SCL=1;SomeNOP();<BR>while(SDA)
<BR>{ errtime--; <BR> if (!errtime) <BR> {
I2CStop();<BR> SystemError=0x11;<BR> return
false;<BR> }<BR>}<BR>SCL=0;<BR>return
true;<BR>}<BR>/**--------------------------------------------------------------------------------<BR>調用方式:void
SendAck(void) ﹫2001/07/0
4<BR>函數說明:私有函數,I2C專用,主器件為接收方,從器件為發送方時,應答信號。<BR>---------------------------------------------------------------------------------*/<BR>void
SendAck(void)<BR>{<BR>SDA=0; SomeNOP();<BR>SCL=1;
SomeNOP();<BR>SCL=0;<BR>}<BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
SendAck(void) ﹫2001/07/0
4<BR>函數說明:私有函數,I2C專用,主器件為接收方,從器件為發送方時,非應答信號。<BR>--------------------------------------------------------------------------------*/<BR>void
SendNotAck(void)<BR>{<BR>SDA=1; SomeNOP();<BR>SCL=1;
SomeNOP();<BR>SCL=0;<BR>}<BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
I2CSend(uchar ch) ﹫2001/07/0
5<BR>函數說明:私有函數,I2C專用<BR>---------------------------------------------------------------------------------*/<BR>void
I2CSendByte(Byte ch)<BR>{<BR>uchar i=8;<BR>while
(i--)<BR>{<BR>SCL=0;_nop_();<BR>SDA=(bit)(ch&0x80);
<BR>ch<<=1; SomeNOP();<BR>SCL=1;
SomeNOP();<BR>}<BR>SCL=0;<BR>}<BR><BR>/*----------------------------------------------------------------<BR>調用方式:uchar
I2CReceive(void) ﹫2001/07/0
5<BR>函數說明:私有函數,I2C專用<BR>---------------------------------------------------------------------------------*/<BR>Byte
I2CReceiveByte(void)<BR>{<BR>uchar i=8;<BR>Byte
ddata=0;<BR>SDA=1;<BR>while
(i--)<BR>{<BR>ddata<<=1;<BR>SCL=0;SomeNOP();<BR>SCL=1;SomeNOP();<BR>ddata|=SDA;<BR>}<BR>SCL=0;<BR>return
ddata;<BR>}<BR><BR>//開始PCF8563T驅動程序<BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
GetPCF8563(uchar firsttype,uchar count,uchar *buff)
﹫2001/08/0
7<BR>函數說明:讀取時鐘芯片PCF8563的時間,設置要讀的第一個時間類型firsttype,并設置讀取的字節
數,則會一次把時間讀取到buff中。順序是:<BR>0x02:秒/0x03:分/0x04:小時/0x05:日/0x06:星期/0x07:月(世紀)/0x08:年<BR>---------------------------------------------------------------------------------*/<BR>void
GetPCF8563(uchar firsttype,uchar count,uchar
*buff)<BR>{<BR>uchar
i;<BR>I2CStart();<BR>I2CSendByte(0xA2);<BR>WaitAck();<BR>I2CSendByte(firsttype);<BR>WaitAck();<BR>I2CStart();<BR>I2CSendByte(0xA3);<BR>WaitAck();<BR><BR>for
(i=0;i<count;i++)<BR>{<BR>buff(i)=I2CReceiveByte();<BR>if
(i!=count-1)
SendAck();//除最后一個字節外,其他都要從MASTER發應答。<BR>}<BR><BR>SendNotAck();<BR>I2CStop();<BR>}<BR><BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
SetPCF8563(uchar timetype,uchar value) ﹫2001/08/0
7<BR>函數說明:調整時鐘。timetype是要改的時間類型,value是新設置的時間值(BCD格式)。<BR>0x02:秒/0x03:分/0x04:小時/0x05:日/0x06:星期/0x07:月(世紀)/0x08:年<BR>---------------------------------------------------------------------------------*/<BR>void
SetPCF8563(uchar timetype,uchar
value)<BR>{<BR>I2CStart();<BR>I2CSendByte(0xA2);<BR>WaitAck();<BR>I2CSendByte(timetype);<BR>WaitAck();<BR>I2CSendByte(value);<BR>WaitAck();<BR>I2CStop();<BR>}<BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
SetAlarmHour(uchar count) ﹫2001/08/0
7<BR>函數說明:設置報警鬧鐘在一天的第count點報警。例如:count=23,則在晚上11點報警。<BR>---------------------------------------------------------------------------------*/<BR>void
SetAlarm(uchar alarmtype,uchar
count)<BR>{<BR>SetPCF8563(0x01,0x02);<BR>SetPCF8563(alarmtype,count);<BR>}<BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
CleanAlarm(void) ﹫2001/08/0
7<BR>函數說明:清除所有報警設置。<BR>---------------------------------------------------------------------------------*/<BR>void
CleanAlarm(void)<BR>{<BR>SetPCF8563(0x01,0x00);<BR>SetPCF8563(0x09,0x80);<BR>SetPCF8563(0x0A,0x80);<BR>SetPCF8563(0x0B,0x80);<BR>SetPCF8563(0x0C,0x80);<BR>//
SetPCF8563(0x0D,0x00);<BR>//
SetPCF8563(0x0E,0x03);<BR>}<BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:uchar
read1380(uchar command )<BR>函數說明:read1380()返回當前時間,
command指要返回的時間類型。<BR>秒:81H 分鐘:83H 小時:85H 日期:87H 星期:89H
星期幾:8BH 年:8D
H<BR>---------------------------------------------------------------------------------*/<BR>uchar
read1380 (uchar command)<BR>{<BR>uchar
time;<BR>GetPCF8563(command,1,&time);<BR>return
time;<BR>}<BR><BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
write1380(uchar command ,uchar time
)<BR>函數說明:write1380()往HT1380寫命令和數據,command是命令字,
time是后寫入的數據<BR>---------------------------------------------------------------------------------*/<BR>void
write1380(uchar command ,uchar
time)<BR>{<BR>SetPCF8563(command,time);<BR>}<BR>/*--------------------------------------------------------------------------------<BR>調用方式:void
time_display(uchar x0,uchar y0
)<BR>函數說明:time_display()在指定的x0,y0坐標,以00:00:00格式顯示當前時間。<BR>---------------------------------------------------------------------------------*/<BR>//uchar
time[]="00:11:11";<BR><BR>void time_display(uchar
x0,uchar y0,bit type) //液晶時間顯示<BR>{<BR>uchar
time[]="00:00:00";<BR>uchar con[3];<BR>uchar
time_type;<BR>GetPCF8563(0x02,3,con);<BR>time[0]=(con[2]>>4)+'0';<BR>time[1]=(con[2]&0x0f)+'0';<BR>time[3]=(con[1]>>4)+'0';<BR>time[4]=(con[1]&0x0f)+'0';<BR>time[6]=(con[0]>>4)+'0';<BR>time[7]=(con[0]&0x0f)+'0';<BR>time[8]=0;<BR>if(type==1)<BR>{<BR>time_type=0xff;<BR>}<BR>else<BR>{<BR>time_type=0;<BR>}<BR>dipchar0(x0,y0,F57,1,time_type,time);<BR>}<BR><BR></SPAN></TD></TR>
<TR>
<TD> </TD></TR>
<TR>
<TD>
<DIV align=center></DIV></TD></TR>
<TR>
<TD>
<DIV align=right>【<A href="javascript:doZoom(18)">大</A>
<A href="javascript:doZoom(14)">中</A> <A
href="javascript:doZoom(12)">小</A>】【<A
href="javascript:doPrint()">打印</A>】【<A
href="javascript:window.close()">關閉</A>】【<A id=Maiweb1
style="CURSOR: hand" href="javascript:ft(1)">繁體</A>】
<INPUT type=hidden value=1 name=h1>
</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<SCRIPT
src="PCF8563的C51程序設計※51單片機C程序※單片機吧臺 __ http--www_mcu8_cn Powered by http--www_mcu8_cn.files/bencandy.js"></SCRIPT>
</TR><!---->
<TR>
<TD class=head1 bgColor=#0099cc>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width="24%"><FONT color=#000000><IMG
src="PCF8563的C51程序設計※51單片機C程序※單片機吧臺 __ http--www_mcu8_cn Powered by http--www_mcu8_cn.files/1.gif"></FONT>
<FONT color=#000000>網友回復</FONT></TD>
<TD width="76%">
<DIV align=right><A
href="http://www.avrarm.com/down/post.php?fid=17"><FONT
color=#000000>新發表</FONT></A> - <A
href="http://www.avrarm.com/down/post.php?id=140&job=reply"><FONT
color=#000000>續頁發表</FONT></A> <!---->- <A
href="http://www.avrarm.com/down/bencandy.php?id=140#"><FONT
color=#000000>返回頁頂</FONT></A></DIV></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD
style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 0px solid; BORDER-LEFT: #cccccc 1px solid"><!----></TD></TR>
<TR>
<TD class=head1 bgColor=#0099cc><FONT color=#000000><IMG
src="PCF8563的C51程序設計※51單片機C程序※單片機吧臺 __ http--www_mcu8_cn Powered by http--www_mcu8_cn.files/1.gif">
發表回復</FONT></TD></TR>
<TR>
<TD
style="BORDER-RIGHT: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid">
<FORM name=FORM_q
action=post.php?rid=251&action=reply&steps=1&page=1
method=post>
<TABLE cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD width="12%">標題:</TD>
<TD width="88%"><INPUT onkeydown=quickpost() size=53
name=atc_title> </TD></TR>
<TR>
<TD width="12%">內容:</TD>
<TD width="88%"><TEXTAREA onkeydown=quickpost() name=atc_content rows=5 cols=60></TEXTAREA>
</TD></TR>
<TR>
<TD width="12%"> </TD>
<TD width="88%"><INPUT class=button type=submit value=發表評論 name=Submit>
</TD></TR>
<TR>
<TD width="12%"> </TD>
<TD
width="88%"></TD></TR></TBODY></TABLE></FORM></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!----><!---->
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD align=middle></TD></TR></TBODY></TABLE>
<TABLE class=tablewidth2
style="BORDER-TOP-WIDTH: 1px; BORDER-RIGHT: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
height=27 cellSpacing=0 cellPadding=0 width=770 align=center border=0>
<TBODY>
<TR>
<TD bgColor=#f9f9f9 height=2></TD></TR>
<TR>
<TD bgColor=#c5cfd9 height=1></TD></TR>
<TR>
<TD bgColor=#ffffff height=1></TD></TR>
<TR>
<TD noWrap align=middle width="100%" bgColor=#f0f1f3 height=22>
<DIV align=center><FONT color=#000000><A
href="http://www.avrarm.com/down/index.php"><FONT color=#000000>首
頁</FONT></A> <A
href="http://www.avrarm.com/down/bencandy.php?id=140#"><FONT
color=#000000>網站介紹</FONT></A> <A
href="http://www.avrarm.com/down/list.php?fid=1"><FONT color=#000000>MCU
文章</FONT></A> <A href="http://www.avrarm.com/down/list.php?fid=16"><FONT
color=#000000>MCU 源碼</FONT></A> <A
href="http://www.avrarm.com/down/list.php?fid=28"><FONT
color=#000000>下載中心</FONT></A> <A
href="http://www.avrarm.com/down/list.php?fid=3"><FONT
color=#000000>支持論壇</FONT></A> <A
href="http://www.avrarm.com/down/bencandy.php?id=140#"><FONT
color=#000000>關于我們</FONT></A> <A
href="http://www.avrarm.com/down/bencandy.php?id=140#"><FONT
color=#000000>聯系我們</FONT></A> </FONT></DIV></TD></TR></TBODY></TABLE>
<TABLE class=tablewidth
style="BORDER-RIGHT: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
cellSpacing=0 cellPadding=5 width=770 align=center border=0>
<TBODY>
<TR>
<TD class=bottom bgColor=#e8e8e8 height=65>
<DIV align=center>@本站部分內容來自網上,僅供學習使用,其版權歸原網站所有,若有爭議,本站立即刪除@
<BR>@本站原創內容未經本站或作者本人同意,其他媒體一律不得轉載@ <BR>Copyright @ <A
href="http://www.avrarm.com/"><FONT color=red>www.mcu8.cn</FONT></A> all
rights reserved <BR>粵ICP備<A
href="http://www.miibeian.gov.cn/">05117278</A>號<BR>Powered by <A
href="http://www.php168.com/" target=_blank><FONT>PHP168.com</FONT></A> <A
href="http://www.mmcbbs.com/"><FONT>v3.1</FONT></A>
<!----></DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=center></DIV></TD></TR></TBODY></TABLE><!----></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -