遠程電子鐘實驗報告.doc_第1頁
遠程電子鐘實驗報告.doc_第2頁
遠程電子鐘實驗報告.doc_第3頁
遠程電子鐘實驗報告.doc_第4頁
遠程電子鐘實驗報告.doc_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告設計課題:遠程電子鐘(電子鐘部分)專業班級: 學生姓名: 指導教師: 設計時間:題目:遠程電子鐘(電子鐘部分) 一、 課程設計目的1。通過運用單片機編程進一步掌握單片機技術,從而達到熟練使用的目的,通過編寫遠程電子鐘(電子鐘部分)程序學會對時鐘類程序的編寫。2.掌握時鐘芯片8563的使用方法。學會RS232串口的使用方法.3.通過做綜合性的程序(包括軟件,硬件)進一步了解單片機的硬件部分,包括接口地址,總線地址的分布以及硬件焊接,增強動手能力。二、 課程設計題目(問題)描述和要求遠程電子鐘(2人一組)設計要求:一人設計電子鐘,一人設計遠程控制端。電子鐘應用時鐘芯片8563設計電子鐘

2、。然后通過485總線將資料傳送到遠程控制端.遠程控制端將所接受的資料在液晶顯示器顯示年、月、日、時、分、秒,另外,遠程控制端需設計看門狗813程序,以保證遠程控制端的穩定性。三、系統分析與設計根據課程設計題目問題描述和要求,完成:   1: 系統總體設計確定系統功能模塊劃分及說明;系統模塊: 89C52模塊、時鐘輸出模塊、顯示模塊。實驗中利用89C52模塊的P3.4及P3.5引腳向PCF8563的6腳和5腳傳輸數據對PCF8563進行初始化,在利用采來的數據將數據傳送到遠程控制端.PCF8563是低功耗的CMOS實時時鐘/日歷芯片,它可以提供一個可編程時鐘,一個中

3、斷輸出和掉電檢測器,所有的地址和數據通過I2C總線接口串行傳遞。最大總線速度為400Kbits/s,每次讀寫數據后,內嵌的字地址寄存器會自動產生增量。2: 系統詳細設計在總體設計基礎上設計系統總體框架、系統流程圖;1)系統總體框架: 圖1 PCF8563與單片機連接圖圖2 單片機與外接器件連接圖圖3 串口芯片232及其電路 2)系統流程圖: 電子鐘發送流程:開始LCD初始化定義顯示地址函數 定義顯示字符函數定義PCF8563地址定義寄存器初值定義端口定義pcf8563驅動函數初始化時鐘定義讀時鐘函數定義顯示程序主函數調用時鐘初始化、讀時鐘、8563初始化、LCD初始化程序結束接收程序流程: &

4、#160;    3: 源程序清單(每條指令都要加注釋,說明其功能,入口參數,返回參數)/*/字符型LCD液晶顯示模塊 /*/include<reg52。h includeintrins。h>#include<absacc。h#includeyuanchengwenkong.h>define uchar unsigned chardefine uint unsigned intdefine ulong unsigned long/*PCF8563程序段*/#definePCF8563_W 0xa2/pcf8563從地址(寫)definePC

5、F8563_R 0xa3/pcf8563從地址(讀)#defineWRADDR0x00/定義寫單元首地址#defineRDADDR0x02/定義讀單元首地址#define _Nop() _nop_()/定義地址#define PCF8563_CONTROL_STATE00x00/控制狀態寄存器1define PCF8563_CONTROL_STATE10x01/控制狀態寄存器2define PCF8563_CLKOUT0x0d/CLKOUT頻率寄存器#define PCF8563_TIMER_CONTROL0x0e/定時器控制寄存器#define PCF8563_TIMER_DATA0x0f/

6、定時器倒計數數值寄存器#define PCF8563_SECOND0x02/秒#define PCF8563_MINUTE0x03/分#define PCF8563_HOUR0x04/時define PCF8563_DATE0x05/日#define PCF8563_WEEK0x06/星期#define PCF8563_MONTH0x07/月/世紀define PCF8563_YEAR0x08/年#define PCF8563_MINUTE_ALARM0x09/分鐘報警define PCF8563_SECOND_ALARM0x0a/小時報警define PCF8563_YEAR_ALARM0x

7、0b/日報警define PCF8563_WEEK_ALARM0x0c/星期報警/定義寄存器初值uchar code CS12=0x00,/普通模式0x28;/時鐘停止運行,電源復位有效uchar code CS22=0x12,/INT有效,AF=0;TF=0報警中斷有效;定時中斷清除。0x02;/INT受TF控制,AF=0;TF=0;報警中斷有效;定時中斷清除。uchar code CLKOUT4=0x80,/CLKOUT有效,32.768KHz。 0x81,/CLKOUT有效,1024Hz。 0x82,/CLKOUT有效,32KHz. 0x83;/CLKOUT有效,1KHz./定義端口sb

8、it SDA=P35;sbit SCL=P34;/pcf8563驅動函數bit ack;/起動IICvoid Start_I2c() SDA=1; /發送起始條件的數據信號/ _Nop(); SCL=1; _Nop(); /起始條件建立時間大于4。7us,延時*/ _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; /發送起始信號/ _Nop(); / 起始條件鎖定時間大于4s*/ _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; /*鉗住I2C總線,準備發送或接收數據 */ _Nop(); _Nop();/停止IICvoid Stop_I

9、2c() SDA=0; /發送結束條件的數據信號*/ _Nop(); /*發送結束條件的時鐘信號/ SCL=1; /結束條件建立時間大于4s*/ _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; /發送I2C總線結束信號*/ _Nop(); _Nop(); _Nop(); _Nop();/寫1BYTE數據(上傳數據、釋放IIC、ack確認)void SendByte(uchar c) uchar idata BitCnt; for(BitCnt=0;BitCnt<8;BitCnt+) /要傳送的數據長度為8位/ if(c<BitCnt)&

10、amp;0x80)SDA=1; /判斷發送位*/ else SDA=0; _Nop(); SCL=1; /*置時鐘線為高,通知被控器開始接收數據位/ _Nop(); _Nop(); /*保證時鐘高電平周期大于4s/ _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); SDA=1; /*8位發送完后釋放數據線,準備接收應答位/ _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1)ack=0; else ack=1; /判斷是否接收到應答信號/ SCL=0; _Nop(); _Nop();/讀1B

11、YTE數據(置輸入狀態、讀數據)uchar RcvByte() uchar idata retc=0; uchar idata BitCnt; SDA=1; /置數據線為輸入方式/ for(BitCnt=0;BitCnt8;BitCnt+) _Nop(); SCL=0; /置時鐘線為低,準備接收數據位/ _Nop(); _Nop(); /*時鐘低電平周期大于4。7s*/ _Nop(); _Nop(); _Nop(); SCL=1; /*置時鐘線為高使數據線上數據有效/ _Nop(); _Nop(); retc=retc1; if(SDA=1)retc=retc+1; /讀數據位,接收的數據位放

12、入retc中 */ _Nop(); _Nop(); SCL=0; _Nop(); _Nop(); return(retc);/確認IIC(輸入參數為0表示確認、1表示不確認)void Ack_I2c(bit a) if(a=0)SDA=0; /*在此發出應答或非應答信號 */ else SDA=1; _Nop(); _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); /時鐘低電平周期大于4s*/ _Nop(); _Nop(); _Nop(); SCL=0; /清時鐘線,鉗住I2C總線以便繼續接收/ _Nop(); _Nop(); bit ISendStr(uchar

13、sla,uchar suba,uchar *s,uchar no) uchar idata i; Start_I2c(); /啟動總線*/ SendByte(sla); /發送器件地址*/ if(ack=0)return(0); SendByte(suba); /發送器件子地址/ if(ack=0)return(0); for(i=0;ino;i+) SendByte(*s); /*發送數據*/ if(ack=0)return(0); s+; Stop_I2c(); /結束總線/ return(1);/指定地址讀狀態/數據(地址=從地址+子地址,no為從指針s的個數)bit IRcvStr(u

14、char sla,uchar suba,uchar s,uchar no) uchar idata i; Start_I2c(); /啟動總線/ SendByte(sla); /*發送器件地址*/ if(ack=0)return(0); SendByte(suba); /發送器件子地址/ if(ack=0)return(0); Start_I2c(); SendByte(sla+1); if(ack=0)return(0); for(i=0;ino1;i+) *s=RcvByte(); /*發送數據/ Ack_I2c(0); /*發送就答位/ s+; *s=RcvByte(); Ack_I2c

15、(1); /*發送非應位/ Stop_I2c(); /*結束總線*/ return(1); /初始化模式void init8563()uchar idata init_mod_buf2;init_mod_buf0=CS10;/普通模式,芯片時鐘運行,電源復位失效init_mod_buf1=CS20;ISendStr(PCF8563_W,WRADDR,init_mod_buf,0x02);uchar init_timer_buf7=0x40,0x59,0x16,0x04,0x04,0x0c,0x03;/設定初始時間2003年12月4日星期四16時59分40秒uchar read_timer_bu

16、f7;/初始化時鐘void init_timer()ISendStr(PCF8563_W,RDADDR,init_timer_buf,0x07);/讀時鐘秒 分 時 日 周 月 年void read_timer()IRcvStr(PCF8563_W,RDADDR,read_timer_buf,0x07);/主程序 main() uchar a,b,c,d,e,f,g,h,i,j,k;init8563();/8563模式初始化 init_timer();/時鐘初始化 read_timer();/讀時間/ init_lcd();/LCD初始化 while(1)/ / /循環讀取時間 read_ti

17、mer();d=read_timer_buf20x9f; /d用于時的顯示e=read_timer_buf10xff; /e用于分的顯示f=read_timer_buf0&0xff; /f用于秒的顯示a=d/16+0x30; /顯示小時第一位b=d%16+0x30; /顯示小時第二位c=:;g=e/16+0x30; /顯示分第一位h=e%16+0x30; /顯示分第二位i=':;j=f/16+0x30; /顯示秒第一位k=f16+0x30; /顯示秒第二位 Send_data_buff0=a0xff; /發送數據低8位 Send_data(0xa0,1);Send_data_b

18、uff0=b&0xff; /發送數據低8位 Send_data(0xa0,1); /發送地址和數據長度Send_data_buff0=c0xff; /發送數據低8位 Send_data(0xa0,1);Send_data_buff0=g0xff; /發送數據低8位 Send_data(0xa0,1);Send_data_buff0=h&0xff; /發送數據低8位 Send_data(0xa0,1);Send_data_buff0=i0xff; /發送數據低8位 Send_data(0xa0,1);Send_data_buff0=j&0xff; /發送數據低8位 Send_data(0xa0,1); Send_data_buff0=k0xff; /發送數據低8位 Send_data

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論