可控溫電熱壺信電學(xué)院電氣092 張建偉賈明澤_第1頁
可控溫電熱壺信電學(xué)院電氣092 張建偉賈明澤_第2頁
可控溫電熱壺信電學(xué)院電氣092 張建偉賈明澤_第3頁
可控溫電熱壺信電學(xué)院電氣092 張建偉賈明澤_第4頁
可控溫電熱壺信電學(xué)院電氣092 張建偉賈明澤_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2011年度學(xué)生科研立項(xiàng)結(jié)題申報(bào)書作品名稱:可控溫電熱壺作者姓名:張建偉、賈明澤 學(xué)院:信息與電氣工程學(xué)院班級(jí):電氣工程及其自動(dòng)化09-2聯(lián)系電話: 指導(dǎo)教師:張仁彥作品類別:自然科學(xué)類學(xué)術(shù)論文哲學(xué)社會(huì)科學(xué)類社會(huì)調(diào)查報(bào)告和學(xué)術(shù)論文科技發(fā)明制作 其它 二一一年十一月可控溫電熱壺(作品名稱)摘要:本作品為可控溫電熱壺,所完成的主要功能為:1溫度模塊:實(shí)時(shí)溫度檢測、采集、傳輸與顯示。2時(shí)間模塊:利用實(shí)時(shí)時(shí)鐘芯片,編程實(shí)現(xiàn)時(shí)間計(jì)時(shí),并送至數(shù)碼管進(jìn)行動(dòng)態(tài)顯示。3鬧鐘與溫度報(bào)警模塊:通過獨(dú)立按鍵實(shí)現(xiàn)快速設(shè)置當(dāng)前時(shí)間、鬧鐘時(shí)間、報(bào)警溫度,并通過循環(huán)檢測實(shí)現(xiàn)鬧鐘與溫度報(bào)警提醒,溫度高于報(bào)警值時(shí)自動(dòng)斷開電源,低

2、于報(bào)警值時(shí)接通電源,實(shí)現(xiàn)溫度的準(zhǔn)確控制。4掉電保存模塊:實(shí)現(xiàn)數(shù)據(jù)掉電自動(dòng)保存,通電自動(dòng)恢復(fù)的功能。目 錄第一章 概述········································&#

3、183;·············31.1目的意義及國內(nèi)外同類研究的動(dòng)態(tài)······························31.2課題主要內(nèi)容及技術(shù)指標(biāo)

4、3;·····································3第二章 系統(tǒng)的總體設(shè)計(jì)思想··········&#

5、183;······························32.1系統(tǒng)的總體設(shè)計(jì)方案·················&

6、#183;························42.2各模塊的設(shè)計(jì)方案·······················&

7、#183;····················4溫度檢測控制模塊···························

8、3;··············4實(shí)時(shí)時(shí)鐘設(shè)計(jì)模塊··································&

9、#183;·······5數(shù)碼管顯示與指示燈功能設(shè)計(jì)································7按鍵設(shè)計(jì)模塊······

10、3;·······································7外部電路及供電方式的設(shè)計(jì)········

11、83;·························7第三章 硬件電路的實(shí)現(xiàn)······················

12、83;······················83.1 溫度檢測與控制模塊硬件設(shè)計(jì)························

13、83;·········83.2 實(shí)時(shí)時(shí)鐘模塊電路硬件設(shè)計(jì)····································83.3 數(shù)碼管顯示

14、與指示燈硬件設(shè)計(jì)··································93.4外部電路及供電方式硬件設(shè)計(jì)············

15、;······················10第四章 控制系統(tǒng)的程序結(jié)構(gòu)·························&#

16、183;···············114.1 程序概述································

17、3;···················114.2 主程序的C語言程序····························&

18、#183;·············114.3 子程序的C語言程序·································

19、3;········12變量定義程序········································&#

20、183;······12 DS18B20程序·········································&#

21、183;·····14 PCF8563程序··········································&#

22、183;····18 第一章 概述1.1目的意義及國內(nèi)外同類研究的動(dòng)態(tài)目的與意義:是實(shí)現(xiàn)溫度與時(shí)間的同時(shí)顯示,兼顧溫度控制與鬧鐘提醒的雙重功能,方便用戶在日常使用中的對(duì)于溫度控制的需要,并且實(shí)現(xiàn)按時(shí)提醒用戶開啟電熱壺的要求,而且在日常生活中通過按鍵反復(fù)設(shè)置時(shí)間與報(bào)警溫度是一項(xiàng)復(fù)雜繁瑣的工作,而在本次設(shè)計(jì)中特別考慮到這一點(diǎn),通過在STC89C52單片機(jī)的支路上設(shè)置開關(guān),從而實(shí)現(xiàn)單片機(jī)與PCF8563的分別供電,從而避免了在不使用電熱壺時(shí)數(shù)碼管顯示所造成的能源損耗,減少了經(jīng)濟(jì)支出。而在PCF8563中紐扣電池的加入保存了設(shè)置數(shù)值,避免了重新上電后數(shù)據(jù)的丟失,

23、減少了用戶反復(fù)設(shè)置的苦惱。國內(nèi)外同類的研究動(dòng)態(tài):目前,國內(nèi)已有類似方向的研究(專利號(hào):200820012742),而且實(shí)際生產(chǎn)中也有此類產(chǎn)品問世,但是結(jié)構(gòu)多為壺體與底座的連接結(jié)構(gòu),顯示裝置設(shè)計(jì)在底座上,不易移動(dòng),占體積大,活動(dòng)不靈活。而本次設(shè)計(jì)的控制電路獨(dú)立拆卸,所用元器件價(jià)錢便宜,制作方便。彌補(bǔ)了此前產(chǎn)品中的不足之處。1.2課題主要內(nèi)容及技術(shù)指標(biāo)主要內(nèi)容:1,溫度傳感器DS18B20的設(shè)計(jì)。 2,實(shí)時(shí)時(shí)鐘芯片PCF8563的設(shè)計(jì)。 3,功能按鍵與數(shù)值調(diào)整按鍵設(shè)計(jì)。 4,數(shù)碼管顯示與蜂鳴器,指示燈等顯示提示電路的設(shè)計(jì)。 5,繼電器單元設(shè)計(jì)與外部供電方式設(shè)計(jì)。技術(shù)指標(biāo):1,溫度誤差為0.5攝氏度

24、。 2,時(shí)間誤差為1秒/月第二章 系統(tǒng)的總體設(shè)計(jì)思想2.1系統(tǒng)的總體設(shè)計(jì)方案本次設(shè)計(jì)主要由以下五個(gè)設(shè)計(jì)模塊構(gòu)成即溫度檢測控制模塊,實(shí)時(shí)時(shí)鐘設(shè)計(jì)模塊,數(shù)碼管顯示與指示燈功能設(shè)計(jì),按鍵設(shè)計(jì)模塊,外部電路及供電方式的設(shè)計(jì)。其中溫度檢測控制模塊主要由DS18B20數(shù)字溫度傳感器,SRD-05-VDC-SL-C繼電器組成。其中溫度傳感器負(fù)責(zé)溫度的采集以及以數(shù)字量的形式傳遞至單片機(jī),繼電器完成達(dá)到預(yù)設(shè)溫度時(shí)斷開電源的工作,從而實(shí)現(xiàn)單片機(jī)對(duì)溫度的控制。實(shí)時(shí)時(shí)鐘設(shè)計(jì)模塊則是由PCF8563組成,通過IIC總線傳遞時(shí)間數(shù)據(jù),并且RTC中的RAM作為設(shè)置數(shù)值的存儲(chǔ)空間,保證了掉電不丟失預(yù)設(shè)數(shù)據(jù)。數(shù)碼管顯示與指示燈

25、功能設(shè)計(jì)模塊則主要是由LG3461共陰極8段8位數(shù)碼管與發(fā)光二級(jí)管共同組成,數(shù)碼管實(shí)現(xiàn)預(yù)設(shè)溫度,實(shí)時(shí)溫度,實(shí)時(shí)時(shí)間與預(yù)設(shè)時(shí)間的動(dòng)態(tài)顯示,LED燈負(fù)責(zé)顯示當(dāng)前所處狀態(tài),如設(shè)置時(shí)間,設(shè)置溫度,設(shè)置鬧鐘等。按鍵設(shè)計(jì)模塊是由五個(gè)獨(dú)立按鍵組成的,其中三個(gè)是負(fù)責(zé)按鍵功能轉(zhuǎn)換,兩個(gè)是負(fù)責(zé)加減,從而實(shí)現(xiàn)鬧鐘,時(shí)間與報(bào)警溫度的設(shè)置。外部電路及供電方式的設(shè)計(jì),這一部分主要特點(diǎn)是實(shí)現(xiàn)在不使用電熱壺時(shí)關(guān)閉單片機(jī)的電源而始終保持PCF8563的供電,保證所保存的數(shù)據(jù),與時(shí)間顯示正確。這就需要并聯(lián)單片機(jī)與PCF8563而在單片機(jī)所在支路上加一個(gè)開關(guān),負(fù)責(zé)單片機(jī)支路的供電。2.2 硬件各模塊的設(shè)計(jì)系統(tǒng)的各模塊之間的聯(lián)系與功

26、能分配如下圖所示;按鍵功能設(shè)計(jì)模塊溫度檢測控制模塊數(shù)碼管顯示與指示燈功能設(shè)計(jì)STC89C52單片機(jī)實(shí)時(shí)時(shí)鐘設(shè)計(jì)模塊外部電路及供電方式的設(shè)計(jì)圖21系統(tǒng)結(jié)構(gòu)功能框圖溫度檢測控制模塊這部分主要由兩個(gè)大的元器件組成,分別是繼電器與DS18B20,這其中DS18B20負(fù)責(zé)的是溫度檢測與返回,繼電器負(fù)責(zé)的是溫度控制。圖2-2 DS18B20外觀圖圖2-3 DS18B20的內(nèi)部結(jié)構(gòu)圖18b20 是單線溫度傳感器,廣泛用于多點(diǎn)溫度檢測,因?yàn)樗菙?shù)字信號(hào),所以可以避免長距離誤差。其中一種封裝外形如同普通三極管,2 個(gè)電源引腳,一個(gè)信號(hào)接口,硬件連接只需要一個(gè)10K 電阻,主要是程序部分,由于是單線采集,精度較高

27、是采樣時(shí)間比較長,接近1S,所以重復(fù)采樣的頻率不能太高,不然會(huì)造成數(shù)據(jù)紊亂。繼電器信號(hào)輸入端,當(dāng)輸入信號(hào)“1”時(shí),繼電器吸合,反之釋放,所以說控制電路很簡單,只是對(duì)I0口的操作就可以完成相關(guān)設(shè)置。 實(shí)時(shí)時(shí)鐘設(shè)計(jì)模塊圖2-4 PCF8563管腳圖圖2-5 PCF內(nèi)部結(jié)構(gòu)框圖PCF8563是一款工業(yè)級(jí),內(nèi)含IIC總線接口功能的低功耗多功能時(shí)鐘、日歷芯片。PCF8563性價(jià)比比較高,它已被廣泛用于電表、水表、氣表、電話。傳真機(jī)、便攜式儀器及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。通過SDA、SCL實(shí)現(xiàn)與單片機(jī)的通信,通過IIC協(xié)議時(shí)間傳至單片機(jī),并且在設(shè)置鬧鐘與報(bào)警溫度時(shí)把數(shù)據(jù)存入內(nèi)部RAM. 數(shù)碼管顯示與指

28、示燈功能設(shè)計(jì)本次試驗(yàn)中采用的是LG3641共陰極數(shù)碼管,管腳為8位段選分別是a,b,c,d,e,f,g,h,dp,一位位選。共陰極接法決定了當(dāng)給引腳高電平時(shí)有效。要顯示某一指定字符碼,需要滿足兩個(gè)條件,字位引腳為高,相應(yīng)的段選送高電平。本次試驗(yàn)中采用了動(dòng)態(tài)顯示,就是利用人眼的視覺殘留效果循環(huán)動(dòng)態(tài)掃描。從而達(dá)到顯示時(shí)間與溫度的目的。發(fā)光二級(jí)管的原理簡單,操作方便。當(dāng)外部電壓大于二極管的導(dǎo)通壓降時(shí),二極管道通,另外二極管的亮度由流經(jīng)二極管的電流決定,電流為50mA-200mA二極管的亮度為可見一般使用亮度。本實(shí)驗(yàn)中使用了三只發(fā)光二級(jí)管,分別與IO口連接,由輸出的高低決定亮或不亮,分別指示設(shè)置鬧鐘,

29、設(shè)置溫度,設(shè)置報(bào)警溫度這三種狀態(tài)。 按鍵設(shè)計(jì)模塊按鍵設(shè)計(jì)模塊在本次試驗(yàn)中采用的是獨(dú)立按鍵。原因是本次按鍵中所需按鍵數(shù)目較少,獨(dú)立按鍵較矩陣鍵盤編程更為簡單。圖2-6 獨(dú)立按鍵示意圖 外部電路及供電方式的設(shè)計(jì)本次試驗(yàn)中為了實(shí)現(xiàn)掉電數(shù)據(jù)不丟失以及在電熱壺不加熱時(shí)數(shù)碼管無顯示節(jié)約電能的要求,設(shè)計(jì)主電路為兩節(jié)紐扣電池供電,PCF8563與單片機(jī)及其外界設(shè)備并聯(lián),并在單片機(jī)所在之路加一個(gè)按鍵開關(guān)實(shí)現(xiàn)單片機(jī)及其外設(shè)自身的電源控制,而PCF8563始終在上電狀態(tài)。第三章 硬件電路的實(shí)現(xiàn)3.1 溫度檢測與控制模塊硬件設(shè)計(jì)如圖所示為DS18B20的連線設(shè)計(jì)圖 其中1腳接VCC,3腳接地,2腳接單片機(jī)的P1.3口

30、,作為數(shù)據(jù)傳輸線,為保證在高電平期間,數(shù)據(jù)線可靠的傳輸高,R20為外接上拉電阻,阻值為10k. 圖2-7 DS18B20接線圖控制器件繼電器的硬件設(shè)計(jì),根據(jù)繼電器的原理硬件設(shè)計(jì)如下圖2-8 繼電器硬件連接圖繼電器的工作原理為當(dāng)給繼電器輸入端一個(gè)高電平時(shí),繼電器吸和,反之則斷開。3.2 實(shí)時(shí)時(shí)鐘模塊電路硬件設(shè)計(jì)如下圖所示實(shí)時(shí)時(shí)鐘模塊,SDA作為數(shù)據(jù)線與單片機(jī)的P16引腳相連,SCL作為時(shí)鐘信號(hào)線與單片機(jī)P15引腳相連,外部提供晶振:32768Hz。圖2-8實(shí)時(shí)時(shí)鐘模塊3.3 數(shù)碼管顯示與指示燈硬件設(shè)計(jì)圖2-9 數(shù)碼管顯示電路的硬件連接圖由數(shù)碼管原理可知;數(shù)碼管的段選接在單片機(jī)P0口上,通過段選選

31、通。位選為利用P2口的第三位通過74HC138譯碼選通具體的位。下圖為74HC138的真值表以及管腳圖:圖2-10 74HC138真值表74HC138管腳結(jié)構(gòu)圖發(fā)光二級(jí)管的結(jié)構(gòu)簡單,接線只需將陰極與單片機(jī)IO端口相連,陽極接正電源。3.4 外部電路及供電方式硬件設(shè)計(jì)有220V交流電源經(jīng)穩(wěn)壓源變壓為5V直流電給系統(tǒng)供電,單片機(jī)電源由開關(guān)統(tǒng)一控制,8563實(shí)時(shí)時(shí)鐘芯片時(shí)刻有電源供電。第四章 控制系統(tǒng)的程序結(jié)構(gòu)與軟件框圖4.1程序概述軟件設(shè)計(jì)的成功與否關(guān)系到整個(gè)系統(tǒng)能否具有使用靈活。操作簡便,可靠性強(qiáng)等優(yōu)點(diǎn),而設(shè)計(jì)良好的軟件能夠做到在較少地改變硬件電路的情況下,方便地改進(jìn)系統(tǒng)的功能,這就對(duì)軟件的設(shè)計(jì)

32、提供了較高的要求。遵循“自頂向下,逐步求精“的結(jié)構(gòu)化設(shè)計(jì)原則,先將任務(wù)層次化,然后對(duì)每一層再逐步細(xì)化,每一層實(shí)現(xiàn)的功能盡量是獨(dú)立的,彼此之間互相影響應(yīng)該較少,然后按照與劃分相反的過程編寫,調(diào)試程序,待所有子程序都編寫設(shè)計(jì)通過后,依它們之間的邏輯順序組合起來,構(gòu)成完整的程序軟件。采用這種方法,不僅使軟件可讀性好,維護(hù)方便且易于修改移植。如用戶有特殊要求需要改動(dòng)軟件時(shí),則只需修改或替換某子任務(wù)所對(duì)應(yīng)的子程序即可,從而加快了系統(tǒng)研制進(jìn)度,縮短了軟件開發(fā)周期。軟件程序是整個(gè)控制系統(tǒng)的核心部分,本次編程用的是C語言。4.2 主程序的C語言程序/主函數(shù)#include<reg52.h>#inc

33、lude<define.h>#include<E2proom.h>#include<18b20.h>#include<12r887.h> void main() init();while(1) keyscanwen(); if(wendu=0) temp=readtemp(); /讀取溫度 jiancewendu(temp); display(temp); /顯示溫度 keyscan();if(flag=0) P8563_Readtime(); shi=bcdshi(g8563_Store2); fen=bcdshi(g8563_Store1);

34、 miao=bcdshi(g8563_Store0); jianceshijian(shi,fen,miao); displayshi(shi); / displayfen(fen); / displaymiao(miao); /顯示函數(shù) guanfeng(); guanfeng1(); 4.3 子程序的C語言程序 變量定義頭文件/變量定義#define uchar unsigned char#define uint unsigned intuchar g8563_Store9; /*時(shí)間交換區(qū),全局變量聲明*/uchar bcdshi(uchar);uchar shibcd(uchar);u

35、int temp,zhang=20;uchar jia,ming,s1zhi,s2zhi,w1zhi,ashi,afen,amiao,ashi1,afen1,amiao1;uchar temp1,mada1,mada2,mada3,k1,k2,k3,miao,shi,fen,flag1,fengzhuang;uchar c8563_Store9;sbit fengming=P27; /蜂鳴器接口 sbit sda=P16; / 將p1.0口模擬數(shù)據(jù)口 sbit scl=P15; / 將p1.1口模擬時(shí)鐘口 sbit s1=P11; /時(shí)鐘設(shè)定sbit s2=P12; /鬧鐘設(shè)定sbit nao

36、zhi=P25; /鬧鐘指示uchar code tableshijian=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1,0x08,0x54; /7段數(shù)碼管段碼表共陽uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /7段數(shù)碼管段碼表共陽void display(uchar);uchar receive_CFGbyte(uchar);vo

37、id P8563_Readtime();void P8563_Readwen();void P8563_Readnao();void P8563_init();void P8563_settime();void P8563_setwen();void P8563_setnao();void displayshi(uint);uchar bcdshi(uchar x) return (x>>4)*10+(x&0x0f);uchar shibcd(uchar x) return (x/10)*16+(x%10);void delay2(uint z) /時(shí)鐘延時(shí)uint x,y

38、;for(x=z;x>0;x-)for(y=110;y>0;y-);void delay(uint x) uchar i; while(x-) for(i=0;i<121;i+); void delay1(uint i) /延時(shí)函數(shù) while(i-); void init() P8563_init(); TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; fengming=1; fengzhuang=0; flag1=0; /鬧鐘響的標(biāo)志位 mada1=0; mada2=0; mada3

39、=0; k1=0; k2=0; k3=0; s1zhi=1; s2zhi=1; w1zhi=1; zhang=1000; jia=0;void didi() fengming=0; delay2(15); fengming=1; delay2(15); DS18B20程序/名稱:18B20溫度調(diào)節(jié)顯示#include<intrins.h>sbit DQ=P24; /ds18b20 端口2.4sbit w1=P10; /定溫調(diào)節(jié)sbit w2=P13; /調(diào)節(jié)溫度、時(shí)間+sbit w3=P14; /調(diào)節(jié)溫度、時(shí)間-sbit led=P26; /定溫指示sbit jidian=P23;

40、 /控制繼電器uchar snum,wendu,made=0;/*/* 數(shù)碼管顯示函數(shù) */*/void display(uchar wen) uchar shi,ge; shi=wen/10; ge=wen%10; P0=tablege; P2|=0x07; delay1(350); P0=tableshi; P2&=0xfe; delay1(200); void display_() P0=tableshijian16; P2&=0xfe; P2|=0x06; delay1(100); P0=tableshijian16; P2|=0x07; delay1(50); /*/

41、* 對(duì)18b20復(fù)位 */*/void fuwei18b20(void) uchar x=0; DQ = 1; /DQ復(fù)位 delay1(8); /稍做延時(shí) DQ = 0; /單片機(jī)將DQ拉低 delay1(80); /精確延時(shí) 大于 480us DQ = 1; /拉高總線 delay1(10); x=DQ; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay1(5);/*/* 讀一個(gè)字節(jié) */*/unsigned char ReadOneChar(void)uchar i=0;uchar dat=0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號(hào) d

42、at>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) dat|=0x80; delay1(5); return(dat);/*/* 寫一個(gè)字節(jié) */*/void WriteOneChar(unsigned char dat) uchar i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay1(5); DQ = 1; dat>>=1; delay1(5);/*/* 讀取溫度 */*/unsigned int readtemp(void)uchar a=0;uint b=0;uint t=0;fuwe

43、i18b20();WriteOneChar(0xCC); / 跳過讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay1(20);fuwei18b20();WriteOneChar(0xCC); /跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b<<=4;t=(a>>4)+b;return(t);void keyscanwen() if(s1zhi&&s2zhi)=1) if(

44、fengzhuang=0) if(w1=0) delay2(2); if(w1=0) while(!w1); w1zhi=0; snum+; wendu=1; if(snum=1) temp1=0xff; jia=0; if(snum=1) if(w2=0) delay2(5);if(w2=0) delay2(100); made=1; temp1+;if(temp1=100)temp1=0; if(w3=0) delay2(5);if(w3=0) delay2(100); made=1; if(temp1=0xff) temp1=1; temp1-;if(temp1=0)temp1=99;

45、if(made=0) display_(); else display(temp1); if(snum=2) snum=0; wendu=0; made=0; w1zhi=1; if(temp1=0xff) c8563_Store6=shibcd(110); else c8563_Store6=shibcd(temp1); g8563_Store6=c8563_Store6; /存溫度 P8563_setwen(); delay(2); P8563_Readwen(); delay(2); temp1=bcdshi(g8563_Store6); /定溫?cái)?shù)據(jù)讀取 if(temp1=110) le

46、d=1; else led=0; void jiancewendu(uchar ding) if(ding>=temp1) if(jia=0) fengming=0; /開蜂鳴器 ming=0; else if(jia=1) fengming=1; ming=1; jidian=0; /開繼電器 else jidian=1; /關(guān)繼電器 fengming=1; /關(guān)蜂鳴器 ming=1; PCF8563程序/8563實(shí)時(shí)時(shí)鐘時(shí)序#include <intrins.h> #define MIN 0x02 /秒寄存器 #define SEC 0x03 /分寄存器 #define

47、HOUR 0x04 /時(shí)寄存器 #define DAY 0x05 /日寄存器 #define WEEK 0x06 /周寄存器 #define MONTH 0x07 /月寄存器 #define YEAR 0x08 /年寄存器 #define read_ADD 0xA3 /讀器件地址 #define write_ADD 0xA2 /寫器件地址 void delayNOP() ; /- / 函數(shù)名稱: iic_start() / 函數(shù)功能: 啟動(dòng)I2C總線子程序 /- void iic_start() sda=1;delayNOP(); / 延時(shí)5usscl=1;delayNOP(); / 延時(shí)5u

48、ssda=0;delayNOP(); / 延時(shí)5us /- / 函數(shù)名稱: iic_stop() / 函數(shù)功能: 停止I2C總線數(shù)據(jù)傳送子程序 /- void iic_stop() sda=0; delayNOP();scl=1; delayNOP();sda=1; delayNOP(); /- / 函數(shù)名稱: slave_ACK / 函數(shù)功能: 向從機(jī)發(fā)送應(yīng)答位子程序 /- void slave_ACK() sda = 0; delayNOP(); scl = 1; delayNOP(); scl = 0; /- / 函數(shù)名稱: slave_NOACK / 函數(shù)功能: 從機(jī)發(fā)送非應(yīng)答位子程序

49、,迫使數(shù)據(jù)傳輸過程結(jié)束 /- void slave_NOACK() sda = 1; delayNOP(); scl = 1; delayNOP(); scl = 0; /- / 函數(shù)名稱: check_ACK / 函數(shù)功能: 主機(jī)應(yīng)答位檢查子程序,迫使數(shù)據(jù)傳輸過程結(jié)束 /- void check_ACK() scl=1; delayNOP(); while(sda=1); scl=0; delayNOP(); /- / 函數(shù)名稱: IICSendByte / 入口參數(shù): ch / 函數(shù)功能: 發(fā)送一個(gè)字節(jié) /- void IICSendByte(uchar date) /寫一個(gè)字節(jié)uchar

50、 i,temp;temp=date;for(i=0;i<8;i+)temp=temp<<1;scl=0; delayNOP();sda=CY;delayNOP();scl=1;delayNOP();scl=0;delayNOP();sda=1;delayNOP();/- / 函數(shù)名稱: IICreceiveByte / 返回接收的數(shù)據(jù) / 函數(shù)功能: 接收一字節(jié)子程序 /- uchar IICreceiveByte()/讀一個(gè)字節(jié)uchar i,k;scl=0;delayNOP();sda=1;delayNOP();for(i=0;i<8;i+)scl=1;delayN

51、OP();k=(k<<1)|sda;scl=0;delayNOP(); return k;/- / 用戶調(diào)用子程序 / 函數(shù)名稱: write_CFGbyte / 入口參數(shù): CFG_add寄存器地址,CFG_data要寫入寄存器的數(shù)值 / 函數(shù)功能: 發(fā)送1位數(shù)據(jù)子程序 /- void write_CFGbyte(uchar CFG_add,uchar CFG_data) iic_start(); IICSendByte(write_ADD); / 發(fā)送器件寫地址 check_ACK(); / 檢查應(yīng)答位 IICSendByte(CFG_add); / 發(fā)送寄存器地址 check

52、_ACK(); / 檢查應(yīng)答位 IICSendByte(CFG_data); / 發(fā)送寄存器數(shù)據(jù) check_ACK(); / 檢查應(yīng)答位 iic_stop(); / 全部發(fā)完則停止 /- / 用戶調(diào)用子程序 / 函數(shù)名稱: receiveNbyte / 入口參數(shù): CFG_add寄存器地址地址 / 出口參數(shù): receive_da / 函數(shù)功能: 接收某個(gè)寄存器數(shù)據(jù)子程序 /- uchar receive_CFGbyte(uchar idata CFG_add) uchar receive_da; iic_start(); IICSendByte(write_ADD); /器件寫地址 che

53、ck_ACK(); IICSendByte(CFG_add); /寄存器地址 check_ACK(); iic_start(); IICSendByte(read_ADD); /器件讀地址 check_ACK(); receive_da=IICreceiveByte(); slave_NOACK(); / 收到最后一個(gè)字節(jié)后發(fā)送一個(gè)非應(yīng)答位 iic_stop(); return(receive_da); /- / 用戶調(diào)用函數(shù) / 函數(shù)名稱: P8563_Readtime / 函數(shù)功能: 讀出時(shí)間信息 /- void P8563_Readtime() g8563_Store0=(receive_CFGbyte(0x02)&0x7f; /*秒*/ g8563_Store1=(receive_CFGbyte(0x03)&0x7f; /*分*/ g8563_Store2=(receive_CFGbyte(0x04)&0x3f; /*小時(shí)*/ void P8563_Readwen() g8563_Store6=(receive_CFGbyte(0x08); /*溫度*/ voi

溫馨提示

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

評(píng)論

0/150

提交評(píng)論