




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于Arduino的多功能數(shù)字時(shí)鐘實(shí)現(xiàn)功能:顯示時(shí)間、日期和星期斷電保存時(shí)間通過按鈕設(shè)置時(shí)間、日期整點(diǎn)響鈴自定義鬧鐘顯示溫度自定義報(bào)警溫度按鍵功能:按選擇鍵進(jìn)入設(shè)置時(shí)間功能;同時(shí)按+-鍵進(jìn)入鬧鐘和報(bào)警溫度設(shè)置功能;再按選擇鍵光標(biāo)跳動(dòng),光標(biāo)跳到哪當(dāng)前的參數(shù)即可通過加減鍵修改。實(shí)驗(yàn)所需器件:Arduino開發(fā)板或Atmega328P芯片、DS1302時(shí)鐘芯片、溫度傳感器DS18b20、蜂鳴器、不帶鎖開關(guān)、LCD1602、10K可調(diào)電阻、10K電阻(可不接,即DS18b20端口的電阻可去掉,不影響讀數(shù))ProteusISIS仿真圖:BUZIERkTEXTaWF旳陽伽ChT忻poiyreifaMTiT
2、PO2lMTQfi:riiT16Ki3riTi*XrSf1Hri9PDWDiXCKjFaMTKro5/T1fiKDBK:Hl21旳&(OftHOCDAFCTiT22FTiTj(ArdJPCIWT23.ijJhTESH勵(lì)2015-65-175嘰用|歸0?AECHJl陽3鵡溝i*K仙陀nnFBiMSCijFtlMTqFffi/TOECIIXTALIJ1iZITtPHrjTiSZSHTALCWT?rauAcaLUTsraK1#LHT9PC*jftKqreC1ACHTI2JCE斤.:5CLKT-IIgaVC-1VOZ2奇SCLKDSi.jfl2:Te:Ki網(wǎng)沁0或TEXT*實(shí)物圖;Arduino程序如
3、下:/*LCDRSpintodigitalpin12*LCDEnablepintodigitalpin11*LCDD4pintodigitalpin5*LCDD5pintodigitalpin4*LCDD6pintodigitalpin3*LCDD7pintodigitalpin2*LCDR/Wpintoground*LCDVSSpintoground/LCD1602顯示頭文件/溫度傳感器DS18B20頭文件/溫度傳感器DS18B20頭文件/DS18B20信號(hào)端口*LCDVCCpinto5V*/#include#include#include#include#defineONE_WIRE_BU
4、SA3OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(&oneWire);LiquidCrystallcd(12,11,5,4,3,2);#definechooseA0/選擇端口#defineaddA1/加#defineminusA2/減#defineTone13/蜂鳴器端口uint8_tCE_PIN=8;/DS1302RST端口uint8_tIO_PIN=9;/DS1302DAT端口uint8_tSCLK_PIN=10;/DS1302CLK端口DS1302rtc(CE_PIN,IO_PIN,SCLK_PIN);/創(chuàng)建DS1302對(duì)象
5、unsignedlongseconds;ints=0,m=0,h=0,d=0,mon=0,y=0;/時(shí)間進(jìn)位intsecond=0,minute=0,hour=0,day=0,month=0,year=0;/當(dāng)前時(shí)間intSECOND=0,MINUTE=0,HOUR=0,DAY=0,MONTH=0,YEAR=0;/初始時(shí)間intchose=0,alarm_choose=0,ButtonDelay=10,frequence=2093;intalarm_hour=7,alarm_minute=30,alarm_second=0;/鬧鐘時(shí)間doubleTemperatures,Temp_Alarm=
6、30;voidsetup()for(inti=2;i=13;i+)pinMode(i,OUTPUT);digitalWrite(add,HIGH);digitalWrite(minus,HIGH);digitalWrite(choose,HIGH);lcd.begin(16,2);/初始化LCD1602sensors.begin();/初始化溫度傳感器DS18B20/Timet(2015,5,16,0,2,20,1);rtc.time(t);設(shè)置DS1302芯片初始時(shí)間set(rtc.year(),rtc.month(),rtc.date(),rtc.hour(),rtc.minutes(),
7、rtc.seconds();/通電讀取DS1302芯片的時(shí)間rtc.write_protect(false);/關(guān)閉DS1302芯片寫保護(hù)rtc.halt(false);為true時(shí)DS1302暫停voidFormatDisplay(intcol,introw,intnum)/格式化輸出lcd.setCursor(col,row);if(num10)lcd.print(0);lcd.print(num);voidtime()/計(jì)算時(shí)間second=(SECOND+seconds)%60;/計(jì)算秒m=(SECOND+seconds)/60;/分鐘進(jìn)位FormatDisplay(6,1,secon
8、d);minute=(MINUTE+m)%60;/計(jì)算分鐘h=(MINUTE+m)/60;/小時(shí)進(jìn)位FormatDisplay(3,1,minute);hour=(HOUR+h)%24;/計(jì)算小時(shí)d=(HOUR+h)/24;/天數(shù)進(jìn)位FormatDisplay(0,1,hour);lcd.setCursor(2,1);lcd.print(:);lcd.setCursor(5,1);lcd.print(:);intDays(intyear,intmonth)/根據(jù)年月計(jì)算當(dāng)月天數(shù)intdays=0;if(month!=2)switch(month)case1:case3:case5:case7:
9、case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;else/閏年if(year%4=0&year%100!=0|year%400=0)days=29;elsedays=28;returndays;voidDay()/計(jì)算當(dāng)月天數(shù)intdays=Days(year,month);intdays_up;if(month=1)days_up=Days(year-1,12);elsedays_up=Days(year,month-1);day=(DAY+d)%days;if(day=0)day=days;i
10、f(DAY+d)=days+1)DAY-=days;mon+;if(DAY+d)=0)DAY+=days_up;mon-;FormatDisplay(8,0,day);voidMonth()/計(jì)算月份month=(MONTH+mon)%12;if(month=0)month=12;y=(MONTH+mon-1)/12;FormatDisplay(5,0,month);lcd.setCursor(7,0);lcd.print(-);voidYear()/計(jì)算年份year=(YEAR+y)%9999;if(year=0)year=9999;lcd.setCursor(0,0);if(year100
11、0)lcd.print(0);if(year100)lcd.print(0);if(year=7)chose=0;break;voidSet_Alarm_Hour()/設(shè)置鬧鐘小時(shí)DisplayCursor(1,1);if(digitalRead(add)=LOW)delay(ButtonDelay);if(digitalRead(add)=LOW)alarm_hour+;if(alarm_hour=24)alarm_hour=0;FormatDisplay(0,1,alarm_hour);if(digitalRead(minus)=LOW)delay(ButtonDelay);if(digi
12、talRead(minus)=LOW)alarm_hour-;if(alarm_hour=-1)alarm_hour=23;FormatDisplay(0,1,alarm_hour);voidSet_Alarm_Minute()/設(shè)置鬧鐘分鐘DisplayCursor(4,1);if(digitalRead(add)=LOW)delay(ButtonDelay);if(digitalRead(add)=LOW)alarm_minute+;if(alarm_minute=60)alarm_minute=0;FormatDisplay(3,1,alarm_minute);if(digitalRea
13、d(minus)=LOW)delay(ButtonDelay);if(digitalRead(minus)=LOW)alarm_minute-;if(alarm_minute=-1)alarm_minute=59;FormatDisplay(3,1,alarm_minute);voidSet_Alarm_Temp()/設(shè)置報(bào)警溫度DisplayCursor(10,1);if(digitalRead(add)=LOW)delay(ButtonDelay);if(digitalRead(add)=LOW)Temp_Alarm+;if(digitalRead(minus)=LOW)delay(But
14、tonDelay);if(digitalRead(minus)=LOW)Temp_Alarm-;voidSet_Alarm()/進(jìn)入報(bào)警設(shè)置if(digitalRead(add)=LOW&digitalRead(minus)=LOW)alarm_hour=hour;alarm_minute=minute;/alarm_choose=1;lcd.setCursor(0,0);lcd.print(setalarm);lcd.setCursor(6,1);lcd.print(00);/鬧鐘秒數(shù)while(1)if(digitalRead(choose)=LOW)delay(ButtonDelay);
15、if(digitalRead(choose)=LOW)alarm_choose+;lcd.setCursor(9,1);lcd.print(Temp_Alarm);lcd.setCursor(14,1);lcd.print(char)223);/顯示o符號(hào)lcd.setCursor(15,1);lcd.print(C);/顯示字母Cif(alarm_choose=1)Set_Alarm_Hour();if(alarm_choose=2)Set_Alarm_Minute();if(alarm_choose=3)Set_Alarm_Temp();if(alarm_choose=4)alarm_ch
16、oose=0;break;voidPoint_Time_Alarm()/正點(diǎn)蜂鳴if(minute=0&second=0)tone(Tone,frequence);delay(500);noTone(Tone);voidClock_Alarm()/鬧鐘指定時(shí)間蜂鳴if(hour=alarm_hour&minute=alarm_minute&second=alarm_second)tone(Tone,frequence);delay(5000);noTone(Tone);voidGetTemperatures()/獲取DS18B20溫度sensors.requestTemperatures();
17、/SendthecommandtogettemperaturesTemperatures=sensors.getTempCByIndex(0);lcd.setCursor(9,1);lcd.print(Temperatures);/獲取溫度lcd.setCursor(14,1);lcd.print(char)223);/顯示o符號(hào)lcd.setCursor(15,1);lcd.print(C);/顯示字母CvoidTemperatures_Alarm()/超過指定溫度報(bào)警if(Temperatures=Temp_Alarm)tone(Tone,frequence);delay(500);noTone(Tone);voidloo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省課題申報(bào)評(píng)審書
- 婦聯(lián)調(diào)研課題申報(bào)書
- 課題申報(bào)書序號(hào)
- 節(jié)水潔具研究課題申報(bào)書
- Unit 3 Keep Fit 單元檢測練習(xí)(含答案)七年級(jí)英語下冊(cè)(人教版2024)
- 員工合同范本32條
- 學(xué)校美育工作課題申報(bào)書
- 付款保證合同范本
- 三拆除工程合同范本
- 農(nóng)村梯田出租合同范本
- 【MOOC】現(xiàn)代老年醫(yī)學(xué)-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 小紅書品牌博主合作合同(2024年版)
- 腫瘤內(nèi)科學(xué)(中級(jí)341)專業(yè)實(shí)踐能力衛(wèi)生專業(yè)技術(shù)資格考試試題與參考答案
- 2023年貴州省公務(wù)員錄用考試《行測》真題及答案解析
- 家族族譜模板
- 柴油機(jī)維修施工方案
- 根管治療病例分享
- 數(shù)學(xué)課后訓(xùn)練:正態(tài)分布
- DB5115-T 129-2024《油樟優(yōu)樹選擇技術(shù)規(guī)程》
- (完整版)西泠印社出版社三年級(jí)下冊(cè)《書法練習(xí)指導(dǎo)》完整教案
- 《電工儀表與測量》課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論