下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)題目:電加熱爐溫度控制系統(tǒng)設(shè)計(jì)專業(yè) : 機(jī)械電子工程組名:第三組班級:機(jī)電班 組成員 : 彭江林、謝超、薛文熙1 意義與要求 21.1 實(shí)際意義 21.2 技術(shù)要求 22 設(shè)計(jì)內(nèi)容及步驟 22.1 方案設(shè)計(jì) 22.2 詳細(xì)設(shè)計(jì) 32.2.1 主要硬件介紹 32.2.2 電路設(shè)計(jì)方法 42.2.3 繪制流程圖 72.2.4 程序設(shè)計(jì) 82.3 調(diào)試和仿真 83 結(jié)果分析 94 課程設(shè)計(jì)心得體會(huì) 10參考文獻(xiàn) 10附錄 10-271 意義與要求1.1 實(shí)際意義在現(xiàn)實(shí)生活當(dāng)中,很多場合需要對溫度進(jìn)行智能控制,日常生活中最常見的要算空調(diào)和冰箱了,他們都能根據(jù)環(huán)境實(shí)時(shí)情況,結(jié)合人為的設(shè)定,對溫度
2、進(jìn)行智能控制。工業(yè)生產(chǎn)中的電加熱爐溫度監(jiān)控系統(tǒng)和培養(yǎng)基的溫度監(jiān)控系統(tǒng)都是計(jì)算機(jī)控制系統(tǒng)的典型應(yīng)用。通過這次課程設(shè)計(jì),我們將自己動(dòng)手設(shè)計(jì)一個(gè)小型的計(jì)算機(jī)控制系統(tǒng),目的在于將理論結(jié)合實(shí)踐以加深我們對課本知識的理解。1.2 技術(shù)要求要求利用所學(xué)過的知識設(shè)計(jì)一個(gè)溫度控制系統(tǒng),并用軟件仿真。功能要求如下:( 1)能夠利用溫度傳感器檢測環(huán)境中的實(shí)時(shí)溫度;( 2)能對所要求的溫度進(jìn)行設(shè)定;( 3)將傳感器檢測到得實(shí)時(shí)溫度與設(shè)定值相比較,當(dāng)環(huán)境中的溫度高于或低于所設(shè)定的溫度時(shí),系統(tǒng)會(huì)自動(dòng)做出相應(yīng)的動(dòng)作來改變這一狀況,使系統(tǒng)溫度始終保持在設(shè)定的溫度值。2 設(shè)計(jì)內(nèi)容及步驟2.1 方案設(shè)計(jì)要想達(dá)到技術(shù)要求的內(nèi)容,少
3、不了以下幾種器件:單片機(jī)、溫度傳感器、LCD 顯示屏、直流電動(dòng)機(jī)等。其中單片機(jī)用作主控制器,控制其他器件的工作和處理數(shù)據(jù);溫度傳感器用來檢測環(huán)境中的實(shí)時(shí)溫度,并將檢測值送到單片機(jī)中進(jìn)行數(shù)值對比;LCD 顯示屏用來顯示溫度、時(shí)間的數(shù)字值;直流電動(dòng)機(jī)用來表示電加熱爐的工作情況,轉(zhuǎn)動(dòng)表示電加熱爐通電加熱,停止轉(zhuǎn)動(dòng)表示電加熱爐斷整體思路是這樣的:首先我們通過按鍵設(shè)定所需要的溫度值,然后利用溫度傳感器檢測電加熱爐的實(shí)時(shí)加熱溫度,并送至單片機(jī)與設(shè)定值進(jìn)行比較。若檢測值小于設(shè)定值,則無任何動(dòng)作,電加熱爐繼續(xù)導(dǎo)通加熱;若檢測值大于設(shè)定值,則單片機(jī)控制光電耦合器導(dǎo)通,繼電器動(dòng)作,電加熱爐斷電停止加熱。一旦爐溫低
4、于設(shè)定值,單片機(jī)又控制光電耦合器斷開,繼電器開關(guān)分離,電加熱爐開始導(dǎo)通加熱。這個(gè)過程中所設(shè)定的溫度值和傳感器檢測到得溫度值都要在LCD 顯示屏上顯示出來,以方便操作人員觀察。另外, 還可以加上時(shí)鐘模塊,以方便計(jì)時(shí)。這個(gè)設(shè)計(jì)思路相對比較簡單,利用所學(xué)過的知識容易實(shí)現(xiàn),加上光電耦合器用于隔離強(qiáng)電和弱電,比較安全,正好符合我們自動(dòng)化專業(yè)用弱電控制強(qiáng)電的目的,正所謂學(xué)以致用。2.2 詳細(xì)設(shè)計(jì)2.2.1 主要硬件介紹1單片機(jī)這里選用AT89C51單片機(jī)作為控制系統(tǒng)的處理器。AT89C51 是一種帶4K 字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的低電壓、高性能CMOS 8位微處理器。2溫度傳感器溫度傳感器有很多種型
5、號,這里我選用DS18B20溫度傳感器。數(shù)字溫度傳感器DS18B20具有獨(dú)特的單總線接口方式,支持多節(jié)點(diǎn),使分布式溫度傳感器設(shè)計(jì)大為簡化。測溫時(shí)無需任何外圍原件,可以通過數(shù)據(jù)線直接供電,具有超低功耗工作方式。測溫范圍為-55 到 +125攝氏度,可直接將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)字碼的方式串行輸出,因此特別適合單線多點(diǎn)溫度測量系統(tǒng)。由于傳輸?shù)氖谴袛?shù)據(jù),可以不需要放大器和A/D 轉(zhuǎn)換器, 因而這種測溫方式大大提高了各種溫度測控系統(tǒng)的可靠性,降低了成本,縮小了體積。3開關(guān)器件由于單片機(jī)與電動(dòng)機(jī)之間需要用開關(guān)器件連接,并且前者用弱電控制,后者由強(qiáng)電控制,這就尤其需要注意安全問題。于是我想到了在課本
6、中學(xué)過的高性能安全開關(guān)器件光電耦合器。光電耦合器是由一個(gè)發(fā)光器件和和一個(gè)光電轉(zhuǎn)換器件組成,這里所用的光電耦合器OPTOCOUPLER-NP是由一 N個(gè)發(fā)光二極管和一個(gè)光敏晶體管所組成。當(dāng)發(fā)光二極管發(fā)光,就會(huì)使得光敏晶體管導(dǎo)通,繼電器通電動(dòng)作,將開關(guān)吸合,電動(dòng)機(jī)回路斷開。2.2.2 電路設(shè)計(jì)方法1顯示部分電路顯示電路截圖如下圖所示。這里我選用LCDLM016L液晶顯示屏作為系統(tǒng)的顯示器件,如圖所示,LCDLM016L采用標(biāo)準(zhǔn)的16 腳接口,仿真時(shí)隱藏了背光正極和背光負(fù)極兩個(gè)引腳。它通過D0-D78 位數(shù)據(jù)端來與單片機(jī)進(jìn)行數(shù)據(jù)和指令傳輸,這里我們將它與單片機(jī)的P0 口連接。在顯示屏上顯示的內(nèi)容包括
7、設(shè)定的溫度值SET、 傳感器檢測到的環(huán)境溫度 SA以及時(shí)鐘,這個(gè)時(shí)鐘是可以調(diào)整的,這樣方便工作人員在對系統(tǒng)進(jìn)行操作時(shí)有一個(gè)時(shí)間概念。2溫度檢測電路溫度傳感器與單片機(jī)的連接情況如下圖所示。圖 2.2 溫度檢測電路圖溫度傳感器18B20 將檢測到的環(huán)境實(shí)時(shí)溫度進(jìn)行A/D 轉(zhuǎn)換和放大,然后串行送入單片機(jī)P1.7 口,便于單片機(jī)將此數(shù)值與設(shè)定的溫度值進(jìn)行比較,然后先做出相應(yīng)反應(yīng)。在仿真時(shí),我們只能通過按18B20 上的加減按鈕來調(diào)節(jié)實(shí)時(shí)溫度,是一個(gè)模擬的過程。3鍵盤電路鍵盤電路如下圖所示。圖 2.3 鍵盤電路圖這里減排設(shè)計(jì)得比較簡單,“ MS”鍵是切換調(diào)整對象的,調(diào)整對象包括時(shí)、分、溫度設(shè)定值三項(xiàng),“
8、 +”鍵是向上加調(diào)整對象的值,“”鍵是向下減調(diào)整對象的值,“ ON/OFF”鍵是打開和關(guān)閉系統(tǒng)自動(dòng)調(diào)節(jié)功能的開關(guān)鍵。4電氣開關(guān)及工作電路圖 2.4 電氣開關(guān)及工作電路圖如圖所示,光電耦合器1 腳接電源,2 腳接單片機(jī)P3.7 腳。工作過程用以下三個(gè)階段來描述:( 1 )單片機(jī)將溫度傳感器送入的值與設(shè)定值進(jìn)行比較,若送入值小于設(shè)定值,則P3.7 腳保持高電平,這樣發(fā)光二極管不發(fā)光,光敏晶體管保持高阻態(tài),繼電器也不會(huì)工作,電動(dòng)機(jī)和燈泡維持導(dǎo)通,相當(dāng)于電爐繼續(xù)加熱,指示燈亮;( 2)一旦送入值比設(shè)定值大,單片機(jī)將會(huì)控制P3.7 腳變?yōu)榈碗娖剑l(fā)光二極管導(dǎo)通發(fā)光,光敏晶體管受光照影響導(dǎo)通,繼而繼電器工
9、作,電磁鐵將單刀雙擲開關(guān)吸向左端,使電動(dòng)機(jī)和燈泡同時(shí)停止工作,這就相當(dāng)于電爐斷電,停止加熱;( 3) 電爐短路一段時(shí)間后,必然導(dǎo)致爐溫降低,而溫度傳感器DS18B20在不間斷地檢測爐溫,當(dāng)檢測值低于設(shè)定值后,單片機(jī)又控制P3.7 腳恢復(fù)高電平,光電耦合器恢復(fù)高阻態(tài),繼電器斷電,單刀雙擲開關(guān)被彈回右端,電動(dòng)機(jī)和燈泡又開始工作,這相當(dāng)于電爐從新開始加熱。2.2.3 繪制流程圖將 P3.7口置 1由于整個(gè)程序工程量比較大,我采用模塊化設(shè)計(jì)方法來設(shè)計(jì)這個(gè)程序。首先定義在后面將會(huì)用到的變量,不可能一次定義準(zhǔn)確,所以邊定義邊補(bǔ)充。然后編寫子函數(shù),包括LCM初始化子函數(shù)、顯示指定坐標(biāo)的一個(gè)字符子函數(shù)、ds1
10、8b20 初始化函數(shù)、ds18b20 延遲子函數(shù)、讀取ds18b20 當(dāng)前溫度子函數(shù)、液晶顯示子函數(shù)、鍵盤掃描子函數(shù)、設(shè)定工作模式子函數(shù)、按鍵加法子函數(shù)、按鍵減法子函數(shù)、24C02 讀寫驅(qū)動(dòng)程序、定時(shí)器t0 中斷子函數(shù)等子程序,最后是主函數(shù)。2.3 調(diào)試和仿真在 Keil 軟件中編寫完程序后,編譯生成.Hex 文件, 單片機(jī)可以執(zhí)行.Hex文件。在Protues 軟件中,給單片機(jī)加載所生成的.Hex 文件,按下運(yùn)行按鈕,系統(tǒng)開始仿真。系統(tǒng)仿真截圖如下圖所示。圖 2.5 系統(tǒng)仿真圖(一)上一張是當(dāng)溫度采樣值小于設(shè)定值,電熱爐處于工作狀態(tài)時(shí)的仿真截圖。以下這張是當(dāng)溫度采樣值高于設(shè)定值后,系統(tǒng)自動(dòng)做
11、出反應(yīng),使電熱爐斷電停止工作的仿真截圖。圖 2.6 系統(tǒng)仿真圖(二)3 結(jié)果分析由以上仿真結(jié)果可以知道,此次的設(shè)計(jì)基本成功。當(dāng)采樣溫度低于設(shè)EPROM24C0,使得該系統(tǒng)具有掉電保護(hù)功能,來電后自動(dòng)恢復(fù)正常24 課程設(shè)計(jì)心得體會(huì)一學(xué)期很快就過去了,大學(xué)四年的學(xué)習(xí)也差不多結(jié)束了,但對機(jī)械電子的學(xué)習(xí)沒有結(jié)束,而是才剛剛開始。說到電加熱爐,我們都比較熟悉,在日常生活中我們經(jīng)常用到,特別是冬天用它來煮火鍋。我們也會(huì)發(fā)現(xiàn)這樣一個(gè)問題,一般的電加熱爐是沒有溫度自動(dòng)控制的,當(dāng)溫度上升到我們需要的程度時(shí),它仍然繼續(xù)加熱, 這不僅會(huì)影響到加熱效果,還會(huì)造成電能的浪費(fèi)。那么就有必要設(shè)計(jì)一種能自動(dòng)調(diào)節(jié)爐溫的系統(tǒng),把
12、它應(yīng)用到日常生活中,將會(huì)給人們帶來極大的方便。在設(shè)計(jì)的過程中,我也遇到一些麻煩,比如說怎樣來實(shí)現(xiàn)電動(dòng)機(jī)回路的自動(dòng)通斷調(diào)節(jié)、怎樣來實(shí)現(xiàn)時(shí)鐘的調(diào)整等等,這些問題都令我十分棘手。通過去圖書館查閱相關(guān)資料和上網(wǎng)搜索各硬件的原理以及應(yīng)用,我最終都一一解決了這些問題。 由于我們是三個(gè)同學(xué)做同一個(gè)題目,在設(shè)計(jì)過程中,我們遇到困難的時(shí)候也經(jīng)常相互討論,相互請教,最終一起解決問題,在此也感謝我的“戰(zhàn)友”們??偟膩碚f,此次課程設(shè)計(jì)的過程比較輕松,從拿到問題到徹底解決問題,這是一個(gè)令人振奮并享受的過程。經(jīng)過去圖書館大量的查閱書籍,我也學(xué)到了很多在課本上沒有的知識,收獲頗豐。這段過程讓我懂得了一個(gè)道理,那就是學(xué)生要學(xué)
13、的絕對不該僅僅是課本上的東西,有些東西只有走進(jìn)圖書館,你才可能學(xué)習(xí)到。也只有這樣,我們才能成為一個(gè)見多識廣、淵博的人。參考文獻(xiàn)1 于海生微型計(jì)算機(jī)控制技術(shù)清華大學(xué)出版社,20042 譚浩強(qiáng) C程序設(shè)計(jì)(第三版). 清華大學(xué)出版社,20063 戴焯 . 傳感與檢測技術(shù). 武漢理工大學(xué)出版社,20064 張毅剛 . 單片機(jī)原理及應(yīng)用. 高等教育出版社,20035 柯節(jié)成 . 簡明電子元件器件手冊. 高等教育出版社,2005附錄系統(tǒng)的完整程序如下:電加熱爐溫度控制系統(tǒng)問題描述:當(dāng)溫控開關(guān)打開時(shí),若測得環(huán)境溫度大于設(shè)定溫度,則繼電器吸合,電加熱爐停止工作;若測得環(huán)境溫度小于設(shè)定溫度,則繼電器釋放,電加
14、熱爐繼續(xù)工作。#include<reg51.h>#include<intrins.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int# define BUSY 0x80/lcd# define DATAPORT P0/# define PLAYE_ADDR XBYTE0XBFFFsbit RED_ALARM=P10;sbit WRITE_ALARM=P11;sbit GREEN_ALARM=P12;sbit BLUE_ALARM=P13;sbit P1_4=P14
15、;sbit P1_5=P15;sbit P1_6=P16;sbit DQ = P17;sbit LCM_RS=P20;sbit LCM_RW=P21;sbit LCM_EN=P22;sbit sda=P23;/IOsbit scl=P24;sbit ad_busy=P32;sbit RECLED_EOC=P35;sbit OUT=P37;uchar ad_data;uchar seconde;忙檢測標(biāo)志定義 P0 口為LCD通訊端口/ 語音報(bào)警地址/ 紅色指示燈/ 白色指示燈/ 綠色指示燈/ 時(shí)鐘調(diào)整/ 時(shí)鐘加/ 時(shí)鐘減/ 定義 ds18b20 通信端口/ 數(shù)據(jù) / 命令端/ 讀 / 寫選擇端
16、口定義/LCD 使能信號/adc 中斷方式接口/ISD1420 放音結(jié)束查詢標(biāo)志/ad 采樣值存儲(chǔ)/ 定義并初始化時(shí)鐘變量uchar minite;uchar hour;uchar mstcnt=0;uchar temp1,temp2,temp;/ 溫度顯示變量uchar t,set;uchar K;bit ON_OFF=0;bit outflag;bit write=0;uchar code str0="- : : - "uchar code str1="SET: C SA: . C"/LCD 延時(shí)子程序/LCD 初始化子程序/LCD 檢測忙子程序?qū)懼?/p>
17、令到ICM 子函數(shù)void delay_LCM(uint);void initLCM( void);void lcd_wait(void);void WriteCommandLCM(uchar WCLCM,uchar BusyC); /寫數(shù)據(jù)到LCM子函數(shù)顯示指定坐標(biāo)的一個(gè)字符顯示指定坐標(biāo)的一/ 定時(shí)器初始化/ 鍵盤掃描子程序void WriteDataLCM(uchar WDLCM);/void DisplayOneChar(uchar X,uchar Y,uchar DData) /子函數(shù)void DisplayListChar(uchar X,uchar Y,uchar code *DD
18、ata);/ 串字符子函數(shù)void init_timer0(void);void displayfun1(void);void displayfun2(void);void displayfun3(void);void displayfun4(void);void keyscan(void );void set_adj(void);void inc_key(void);void dec_key(void);void delay_18B20(unsigned int i);void Init_DS18B20(void) ;uchar ReadOneChar(void);void WriteOne
19、Char(unsigned char dat);void ReadTemperature(void);void ad0809(void);void playalarm(void);/*延時(shí) K*1ms,12.000mhz*/void delay_LCM(uint k)uint i,j;for(i=0;i<k;i+)for(j=0;j<60;j+) ;/*寫指令到LCM子函數(shù) */ void WriteCommandLCM(uchar WCLCM,uchar BusyC)if(BusyC)lcd_wait();DATAPORT=WCLCM;LCM_RS=0;/選中指令寄存器LCM_R
20、W=0;/ 寫模式LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/* 寫數(shù)據(jù)到LCM子函數(shù) */void WriteDataLCM(uchar WDLCM)lcd_wait( );/檢測忙信號DATAPORT=WDLCM;LCM_RS=1;/選中數(shù)據(jù)寄存器LCM_RW=0;/寫模式LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;*/*lcm void lcd_wait(void)DATAPORT=0xff;LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();while(DATAPORT&BUSY
21、) LCM_EN=0;_nop_();_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*LCM 初始化子函數(shù)*/ void initLCM( ) DATAPORT=0;delay_LCM(15);WriteCommandLCM(0x38,0); /delay_LCM(5);WriteCommandLCM(0x38,0);delay_LCM(5);WriteCommandLCM(0x38,0);delay_LCM(5);WriteCommandLCM(0x38,1);/8bitWriteCommandLCM(0x08,1); /WriteCommandLCM
22、(0x01,1); /三次顯示模式設(shè)置,不檢測忙信號WriteCommandLCM(0x06,1); /WriteCommandLCM(0x0c,1); / /* 顯示指定坐標(biāo)的一個(gè)字符子函數(shù)數(shù)據(jù)傳送,2 行顯示,5*7 字型,檢測忙信號關(guān)閉顯示,檢測忙信號清屏,檢測忙信號顯示光標(biāo)右移設(shè)置,檢測忙信號顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號*/void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=1;若 y 為 1 (顯示第二行),地址碼+0X40指令碼為地址碼+0X80X&=15;if(Y)X|=0x40;/X|=0x80;
23、/WriteCommandLCM(X,0);WriteDataLCM(DData);/* 顯示指定坐標(biāo)的一串字符子函數(shù)*/void DisplayListChar(uchar X,uchar Y,uchar code *DData)uchar ListLength=0;Y&=0x01;X&=0x0f;while(X<16)DisplayOneChar(X,Y,DDataListLength);ListLength+;X+;/*ds18b20 延遲子函數(shù)(晶振12MHz ) */ void delay_18B20(unsigned int i) while(i-);初始化函
24、數(shù)*/*ds18b20 void Init_DS18B20(void)unsigned char x=0;DQ = 1;/DQdelay_18B20(8); /DQ = 0;/delay_18B20(80); /DQ = 1;/delay_18B20(14);x=DQ;/delay_18B20(20);復(fù)位稍做延時(shí)單片機(jī)將DQ拉低精確延時(shí)大于 480us拉高總線/*ds18b20讀一個(gè)字節(jié)*/稍做延時(shí)后如果 x=0 則初始化成功x=1 則初始化失敗unsigned char ReadOneChar(void)uchar i=0; uchar dat = 0; for (i=8;i>0;i
25、-) DQ = 0; /給脈沖信號dat>>=1;DQ = 1; /給脈沖信號if(DQ) dat|=0x80;delay_18B20(4); return(dat);/*ds18b20寫一個(gè)字節(jié)*/void WriteOneChar(uchar dat) unsigned char i=0;for (i=8; i>0; i-) DQ = 0;DQ = dat&0x01; delay_18B20(5);DQ = 1; dat>>=1;/*讀取 ds18b20 當(dāng)前溫度*/void ReadTemperature(void) unsigned char a=
26、0;unsigned char b=0;unsigned char t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay_18B20(100);/ this message is wery importantInit_DS18B20();WriteOneChar(0xCC);WriteOneChar(0xBE);是溫度delay_18B20(100);a=ReadOneChar();b=ReadOneChar();temp1=b<<4;temp1+=(a&0x
27、f0)>>4;temp2=a&0x0f;temp=(b*256+a)>>4); / 跳過讀序號列號的操作/ 讀取溫度寄存器等(共可讀9 個(gè)寄存器)前兩個(gè)就/ 讀取溫度值低位/ 讀取溫度值高位16 得實(shí)際溫度值/*液晶顯示子函數(shù)1 正常顯示*/void displayfun1(void)WriteCommandLCM(0x0c,1); /顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(3,0,hour/10+0x30);DisplayOn
28、eChar(4,0,hour%10+0x30);DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(4,1,K/10+0x30);DisplayOneChar(5,1,K%10+0x30);DisplayOneChar(11,1,temp1/10+0x30);DisplayOneChar(12,1,temp1%10+0x30);Dis
29、playOneChar(14,1,temp2/10+0x30);if(ON_OFF=0)/液晶上顯示小時(shí)/ 液晶上顯示分/液晶上顯示秒/ 液晶上顯示設(shè)定的溫度/液晶上顯示測得的溫度/ 若溫控標(biāo)志為0DisplayOneChar(14,0,0x4f);/ 液晶上顯示不控溫的標(biāo)志DisplayOneChar(15,0,0x46);else/ 液晶上顯示控溫的標(biāo)志/*液晶顯示子函數(shù)2*/DisplayOneChar(14,0,0x4f); DisplayOneChar(15,0,0x4e); if(outflag=1)DisplayOneChar(0,0,0x7c);elseDisplayOneCh
30、ar(0,0,0xef);void displayfun2(void)WriteCommandLCM(0x0c,1); / 顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(4,1,K/1
31、0+0x30);DisplayOneChar(5,1,K%10+0x30);DisplayOneChar(11,1,temp1/10+0x30);DisplayOneChar(12,1,temp1%10+0x30);DisplayOneChar(14,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); / 顯示屏打開,光標(biāo)顯示,閃爍,檢測忙信號DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x30);/*液晶顯示子函數(shù)3*/void displayfun3(void) WriteComma
32、ndLCM(0x0c,1); / 顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(4,1,K/10+0x30);DisplayOneChar(5,1,K%10+0x30);DisplayOneC
33、har(11,1,temp1/10+0x30);DisplayOneChar(12,1,temp1%10+0x30);DisplayOneChar(14,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); / 顯示屏打開,光標(biāo)顯示,閃爍,檢測忙信號DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);/*液晶顯示子函數(shù)4 */void displayfun4(void)WriteCommandLCM(0x0c,1); / 顯示屏打開,光標(biāo)不顯示,不閃爍,檢測忙信號Display
34、ListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(3,0,hour/10+0x30);DisplayOneChar(4,0,hour%10+0x30);DisplayOneChar(6,0,minite/10+0x30);DisplayOneChar(7,0,minite%10+0x30);DisplayOneChar(9,0,seconde/10+0x30);DisplayOneChar(10,0,seconde%10+0x30);DisplayOneChar(11,1,temp1/10+0x30);DisplayOneC
35、har(12,1,temp1%10+0x30);DisplayOneChar(14,1,temp2/10+0x30);WriteCommandLCM(0x0f,1); / 顯示屏打開,光標(biāo)顯示,閃爍,檢測忙信號DisplayOneChar(4,1,K/10+0x30);DisplayOneChar(5,1,K%10+0x30);/*鍵盤掃描子函數(shù)*/void keyscan(void)uchar xx;/P1=0xff;if(P1!=0xff)delay_LCM(50);if(P1!=0xff)xx=P1;switch(xx)局部變量/ 根據(jù)按鍵狀態(tài),調(diào)用不同的子函數(shù)case 0xfe:set
36、_adj();break;case 0xfd:inc_key();break;case 0xfb:dec_key(); break;case0xf7:delay_LCM(150);ON_OFF=!ON_OFF;while(!BLUE_ALARM); break; default:break;/*設(shè)定工作模式子函數(shù)*/void delay1(uchar x)void set_adj(void)delay_LCM(100);set+;if(set>=4)set=0;while(!RED_ALARM);/*按鍵加法子函數(shù)*/void inc_key(void)delay_LCM(150);sw
37、itch(set)case 0:if(P1=0xf7)delay_LCM(150);ON_OFF=!ON_OFF;break;case 1:hour+; if(hour>=23)hour=23; break;case 2:minite+; if(minite>=59)minite=59;break;case 3:K+;if(K>=99)K=99;break;default:break;while(!WRITE_ALARM);/*按鍵減法子函數(shù)*/void dec_key(void)delay_LCM(150);switch(set)case 0:if(P1=0xf7)dela
38、y_LCM(150);ON_OFF=!ON_OFF;break;case 1:hour-; if(hour<=0)hour=0; break;case 2:minite-;if(minite<=0)minite=0;break;case 3:K-;if(K<=1)K=1;break;default:break;while(!GREEN_ALARM);/*24C02讀寫驅(qū)動(dòng)程序*/uint i;for(i=0;i<x;i+);void flash() ; ; void x24c02_init() /24c02初始化子程序scl=1;flash();sda=1;flash(
39、);void start() /啟動(dòng) I2C 總線sda=1;flash();scl=1;flash();sda=0;flash();scl=0;flash();void stop() /停止 I2C 總線sda=0;flash();scl=1;flash();sda=1;flash();void writex(uchar j) /寫一個(gè)字節(jié)uchar i,temp;temp=j;for (i=0;i<8;i+)temp=temp<<1;scl=0;flash();sda=CY;flash();scl=1;flash();scl=0;flash();sda=1;flash()
40、;uchar readx() / 讀一個(gè)字節(jié)uchar i,j,k=0;scl=0;flash();sda=1;for (i=0;i<8;i+)flash();scl=1;flash();if (sda=1) j=1;else j=0;k=(k<<1)|j;scl=0;flash();return(k);void clock() /I2C總線時(shí)鐘uchar i=0;scl=1;flash();void init_timer0(void)while (sda=1)&&(i<255)i+;scl=0;flash();/ 從 24c02 的地址 address
41、 中讀取一個(gè)字節(jié)數(shù)據(jù)/uchar x24c02_read(uchar address) uchar i;start();writex(0xa0);clock();writex(address);clock();start();writex(0xa1);clock();i=readx();stop();delay1(10);return(i);/ 向 24c02 的 address 地址中寫入一字節(jié)數(shù)據(jù)info/ void x24c02_write(uchar address,uchar info) EA=0;start();writex(0xa0);clock();writex(address);c
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版木制家具生產(chǎn)加工木工合作合同范本4篇
- 2025版委托檢測合同書-光纖網(wǎng)絡(luò)性能檢測技術(shù)3篇
- 二零二五版水產(chǎn)品電商平臺(tái)大數(shù)據(jù)分析服務(wù)合同2篇
- 2025年度母子公司新能源儲(chǔ)能技術(shù)研發(fā)合作合同3篇
- 《吳組緗天下太平》課件
- 單板加工自動(dòng)化與智能化技術(shù)考核試卷
- 2025版互聯(lián)網(wǎng)醫(yī)療投資項(xiàng)目融資借款合同3篇
- 《物價(jià)上漲時(shí)政》課件
- 2025年度木工工具租賃與施工服務(wù)承包合同4篇
- 2025年兒童玩具連鎖店加盟合同
- 農(nóng)民工工資表格
- 【寒假預(yù)習(xí)】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級英語下冊寒假提前學(xué)(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 2024年度窯爐施工協(xié)議詳例細(xì)則版B版
- 幼兒園籃球課培訓(xùn)
- 【企業(yè)盈利能力探析的國內(nèi)外文獻(xiàn)綜述2400字】
- 統(tǒng)編版(2024新版)七年級《道德與法治》上冊第一單元《少年有夢》單元測試卷(含答案)
- 100道20以內(nèi)的口算題共20份
- 高三完形填空專項(xiàng)訓(xùn)練單選(部分答案)
- 護(hù)理查房高鉀血癥
- 項(xiàng)目監(jiān)理策劃方案匯報(bào)
評論
0/150
提交評論