【正文】
i++) { *(ptr+i)=read1302(addr)。 for(i=0。 } 基于單片機的溫度控制系統(tǒng)畢業(yè)設計 38 //連續(xù) 6 字節(jié)讀出程序 void ds1302_read(unsigned char *ptr,unsigned char addr) { unsigned char i。 mon=time_bcd_temp[4]。 hou=time_bcd_temp[2]。 } sec=time_bcd_temp[0]。i++) { time_bcd_temp[i] = read1302(ucAddr)。 for (i=0。 /* 控制命令 ,WP=1,寫保護 */ } //功能 : 讀取 DS1302 當前時間 void get1302(void) { unsigned char i,time_bcd_temp[6]。 i +=2。 i +=2。 i +=2。 i +=2。 i +=2。 i +=2。 i +=2。 write1302(0x8e,0x00)。 return(ucDa)。=(~rtc_rs_bit)。 /* 讀 1Byte 數(shù)據(jù) */ rtc_sc = 1。 v_RTInputByte(ucAddr)。 rtc_sc = 0。 rtc_rs_portamp。 ea=EA。 } //功能 : 讀取 DS1302 某地址的數(shù)據(jù) unsigned char read1302(unsigned char ucAddr) 基于單片機的溫度控制系統(tǒng)畢業(yè)設計 36 { unsigned char ucDa。=(~rtc_rs_bit)。 /* 寫 1Byte 數(shù)據(jù) */ rtc_sc = 1。 v_RTInputByte(ucAddr)。 rtc_sc = 0。 rtc_rs_portamp。 ea=EA。 } return(temp)。 rtc_sc = 1。 i) { temp = temp 1。 for(i=8。 } } //功能 : 從 DS1302 讀取 1Byte 數(shù)據(jù) unsigned char uc_RTOutputByte(void) { unsigned char i。 rtc_sc = 0。 i) { rtc_io = temp_0。 for(i=8。 /************************************************************** DS1302 驅動程序開始 **************************************************************/ //功能 : 往 DS1302 寫入 1Byte 數(shù)據(jù) void v_RTInputByte(unsigned char ucDa) { unsigned char i。 sbit temp_0 = temp^0。 sbit rst_1302=P3^6。 } 基于單片機的溫度控制系統(tǒng)畢業(yè)設計 34 二、 DS1302 時鐘底層驅動程序 //DS1302 引腳定義 sbit rtc_sc=P3^4。 EA=1。 y4=y3。 DS1820_Reset()。 } //計算 CRC a = [0]。 } if(CRC(9)!=0) { EA=1。i9。 DS1820_Writebyte(0xbe)。i8。 //跳過匹配傳感器 //DS1820_Writebyte(0x55)。 } DS1820_Delayms(4)。 if(DS1820_Answer()==aban_return) { EA=Ea。 EA=0。 data float y4。 } //讀所有傳感器 int DS1820_ReadTem(void) { data unsigned char a,b。 EA=Ea。i++) //DS1820_Writebyte(DS1820_temp[i])。 // for(i=0。 DS1820_Writebyte(0xcc)。 } // DS1820_Delayms(1)。 if(DS1820_Answer()==aban_return) { EA=Ea。 } } } //讀操作開始 unsigned char DS1820_StartTem(void) { EA=0。i++。i++。i++。 i++。 DS1820_DelayCount(32)。 } else { TMDAT=0。 //DS1820_DelayCount(8)。i++。i++。i++。i++。 if(testb) { TMDAT=0。 0x01。j=8。 bit testb。 } //寫一個字節(jié) void DS1820_Writebyte(unsigned char dat) { data signed char i=0。 dat=(j7)|(dat1)。i=8。 } //讀取字節(jié) unsigned char DS1820_Readbyte(void) { data unsigned char i,j,dat=0。 DS1820_DelayCount(32)。 dat = TMDAT。i++。i++。i++。i++。i++。i++。 TMDAT=0。 } //等待 DS18B20 應答 //讀取位 bit DS1820_Readbit(void) { data int i=0。 } } DS1820_DelayCount(16)。 else { j。 while(~TMDAT) { i。 } i=0xffff。 基于單片機的溫度控制系統(tǒng)畢業(yè)設計 29 while(TMDAT) { i。 data unsigned char j。 DS1820_DelayCount(16)。 DS1820_DelayCount(412)。 while(Count0) Count。 while(Count0) Count。 void DS1820_DelayCount (unsigned char Coun) { data unsigned char Count。他們在平時的學習和生活中他們給予了我無私的關懷和幫助,在此表示我最誠摯的謝意。 基于單片機的溫度控制系統(tǒng)畢業(yè)設計 27 參考文獻 [1] 李廣弟,朱月秀,王秀山 .《單片機基礎》北京航空航天大學出版社, 20xx(07). [2] 蔡美琴 ,張為民等 .《 MCS51 系列單片機系統(tǒng)及其應用》高等教育出版社,20xx(06). [3] 張毅剛 ,等 .MCS51 單片機應用設計 [M].哈爾濱工業(yè)大學出版社 ,1997. [4] 劉瑞星 ,胡健等 .《 Protel DXP 實用教程》機械工業(yè)出版社, 20xx(04). [5] 于海生 . 《 計算機控制技術》 機械工業(yè)出版社 20xx(05). [6] 譚浩強 . 《 C程序設計》 清華大學出版社 . [7] 康華光 . 《電子技術基礎 模擬部分》 高等教育出版社 1998(08). [8] 余錫存 . 《單片機原理與接口技術》 西安電子科技大學出版社, 20xx. 致謝 本論文是在我的指導老師密切關心和悉心指導下完成的。實踐過程中我們遇到了一些困難,但在解決問題的過程中,我學會了團隊合作精神和怎樣發(fā)現(xiàn)問題、分析問題,進而解決問題。 系統(tǒng)使用 USB 線供電 該 USB 線同時可作為程序串行下載線,無須另備編程器即可完成軟件調試與程序下載,方便易用。可以通過鍵盤調校時鐘初始值,具體方法是連續(xù)按“設時”鍵直至“年”、“月”、“日”、“時”、“分”、“秒”相應的位置閃爍,再通過“加”鍵和“減”鍵調整數(shù)值,調整完畢繼 續(xù)按“設時”鍵進入正常狀態(tài)。 具備不間斷時鐘電路,當前時間在液晶屏顯示。 具有溫度超限報警功能。系統(tǒng)上電時自動檢測傳感器個數(shù)及每個傳感器序號,溫度測量程序依次匹配每個傳感器并進行測溫。按下“通道切換”鍵可以切換顯示在液晶屏上的通道溫度。 設定的溫度上下限數(shù)據(jù)自動保存至 EEPROM 芯片 AT24C04 中,系統(tǒng)掉電后該設定數(shù)據(jù)不會丟失,重新上電能夠自動載入上次設定的數(shù)據(jù)。 液晶屏顯示界面 可以通過鍵盤設定當前允許溫度范圍,該范圍在液晶屏顯示,如“ 2599”表示允許溫度范圍為 25 攝氏度至 99 攝氏度。 圖 14 數(shù)據(jù)刷新子程序 四、 電路原理與接線 溫度數(shù)據(jù)移入顯示寄存器 十 位數(shù) 0? 百位數(shù) 0? 十位數(shù)顯示符號百位數(shù)不顯示 百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結束 N N Y Y 基于單片機的溫度控制系統(tǒng)畢業(yè)設計 23 1 2 3 4ABCD4321DCBAT i t l eN u m b e r R e v i s i o nS i z eAD a t e : 5 N o v 2 0 1 2 S h e e t o f F i l e : C : \ U s e r s \ Z Y \ D e s k t o p\ 10 0 4 雙路溫度控制器 \ 電路圖 \ t e m p e r a t ur e 10 0 4 2. D D BD r a w n B y :R41 0 k+ 5 VA01A12A23V s s4V c c8WP7S C L6S D A5U22 4 C 0 1 AR31 0 k2 4 0 2 _ S C L2 4 0 2 _ S D ARST9R X D / P 3 . 010I N T 0 / P 3 . 212I N T 1 / P 3 . 313T 0 / P 3 . 414T 1 / P 3 . 515EA/VPP31XTAL119GND20P 0 .0 / A D 039P 0 .1 / A D 138P 0 .2 / A D 237P 0 .3 A D 336P 0 .4 / A D 435P 0 .5 / A D 534P 0 .6 / A D 633P 0 .7 / A D 732P 1 .01P 1 .12P 1 .23P 1 .34P 1 .45P 1 .56P 1 .67P 1 .78P 2 .0 / A 821P 2 .1 / A 922P 2 .2 / A 1 023P 2 .3 / A 1 124P 2 .4 / A 1 225P 2 .5 / A 1 326P 2 .6 / A 1 427P 2 .7 / A 1 528A L E / P R O G30T X D / P 3 . 111W R / P 3 . 616