2022年單片機(jī)大作業(yè)簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng)_第1頁
2022年單片機(jī)大作業(yè)簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng)_第2頁
2022年單片機(jī)大作業(yè)簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng)_第3頁
2022年單片機(jī)大作業(yè)簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng)_第4頁
2022年單片機(jī)大作業(yè)簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課題名稱簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng)院、系、部自動化與電氣工程學(xué)院專業(yè)電氣工程及其自動化班級姓名學(xué)號指引教師單片機(jī)大作業(yè)

單片機(jī)大作業(yè)1.作業(yè)背景都市居民樓內(nèi)普通安裝有樓道燈,以便夜間居民上下樓,其工作特點(diǎn)是人來燈亮,人走燈滅。以熱釋電型樓道燈為例,其基本工作原理是:熱釋電傳感器能檢測人體與否進(jìn)入感應(yīng)范疇,當(dāng)人體未進(jìn)入感應(yīng)范疇,即離樓道燈尚有一定距離時(shí),傳感器輸出低電平;當(dāng)人體進(jìn)入感應(yīng)范疇,即接近樓道燈時(shí),傳感器輸出高電平。依照傳感器輸出,單片機(jī)可決定與否點(diǎn)亮樓道燈。由于樓道燈屬本單元全體居民共用,為便于電費(fèi)結(jié)算,現(xiàn)規(guī)定設(shè)計(jì)一套簡易樓道燈電費(fèi)計(jì)價(jià)系統(tǒng),系統(tǒng)能自動計(jì)算樓道燈在一種月內(nèi)總點(diǎn)亮?xí)r間,并據(jù)此計(jì)算出應(yīng)繳電費(fèi)額度。2.作業(yè)規(guī)定系統(tǒng)由電源電路、熱釋電傳感器、單片機(jī)、按鍵以及顯示屏構(gòu)成,樓道燈供電為220市電,功率2kW(實(shí)際燈泡功率普通不會這樣大??紤]到實(shí)驗(yàn)演示時(shí)間有限,故假設(shè)此燈泡功率為該值)。其中電源采用5V,熱釋電傳感器輸出采用按鍵按下與否進(jìn)行模擬,單片機(jī)采用51,顯示屏采用4位數(shù)碼管,電價(jià)按5.86元/千瓦時(shí)(實(shí)際電價(jià)普通為0.58??紤]到實(shí)驗(yàn)演示時(shí)間有限,故假設(shè)電價(jià)為該值),規(guī)定電費(fèi)計(jì)算精度精準(zhǔn)到0.01元。顧客可用按鍵查詢本月樓道燈總點(diǎn)亮?xí)r間(精度0.01小時(shí)),以及本月總電費(fèi)。3.硬件某些(1)仿真電路圖(2)實(shí)物電路圖: (3)元器件列表STC89C52RC一種按鈕開關(guān)3個(gè)四位共陽數(shù)碼管1個(gè)12M晶振1個(gè)CS9012三極管1個(gè)二極管1個(gè)ZS230-25G燈泡1個(gè)HK4100F-DC5V-SHG繼電器1個(gè)接線端子1個(gè)3906PNP三極管4個(gè)電容、電阻若干(4)電路簡介:1>起振電路:由一種12M晶振和兩個(gè)20pF電容構(gòu)成,接在單片機(jī)STC89C5218、19腳間,為整個(gè)電路提供時(shí)鐘脈沖,一種機(jī)器周期為1us。2>復(fù)位電路:由一種0.1nF電容和一種100Ω電阻,電容兩端并聯(lián)一種按鈕開關(guān)S6構(gòu)成復(fù)位電路,接在單片機(jī)第9腳上,按下開關(guān)S6,電路復(fù)位。同步,將31腳接至VCC,采用內(nèi)部存儲器。3>數(shù)碼管顯示電路:采用四位7段共陽數(shù)碼管位選線接至P2.0-P2.3,段選線接至P0口。4>外部中斷連線:按鈕開關(guān)S1控制定期器T0開關(guān)狀態(tài),按下S1,模擬人來,則控制燈亮;按鈕開關(guān)S2接至P3.3,控制外部中斷INT1,按下S2,數(shù)碼管顯示當(dāng)月燈亮總時(shí)間。4.軟件某些(1)程序流程圖YYN聲明變量、設(shè)立初始值開始設(shè)立定期器方式輸出設(shè)立定期值、啟動定期器T1若按下S1?設(shè)立定期值、啟動定期器T0調(diào)用計(jì)費(fèi)顯示函數(shù)主程序 NNT1_1month當(dāng)月燈亮總時(shí)間清零溢出?計(jì)數(shù)1個(gè)月?返回設(shè)立定期值、啟動定期器T1Y定期1個(gè)月中斷子程序YYNT0_30s設(shè)立燈滅設(shè)立定期值、啟動定期器T0溢出?計(jì)數(shù)30s?Y返回N定期30s中斷子程序 NNYY聲明變量、設(shè)立初始值讀取數(shù)組數(shù)據(jù)、解決數(shù)據(jù)輸出延時(shí)2ms、下一種掃描碼Ndisptime聲明變量、設(shè)立初始值讀取數(shù)組數(shù)據(jù)、解決數(shù)據(jù)輸出延時(shí)2ms、下一種掃描碼Ndisptime4次掃描?返回Y燈亮總時(shí)間顯示函數(shù)聲明變量、設(shè)立初始值讀取數(shù)組數(shù)據(jù)、解決數(shù)據(jù)輸出延時(shí)2ms、下一種掃描碼Ndispmoney4次掃描?返回Y計(jì)費(fèi)顯示函數(shù)(2)程序代碼:#include<reg52.h>#defineSEGP0 //段選線接至P0 #defineSCANPP2 //位選線接至P2sbitLAMP=P1^2; //燈接至P1.2sbitS1=P3^4; //開關(guān)S1接至P3.4sbitS2=P3^3; //開關(guān)S2接至P3.3,外部中斷INT1,顯示時(shí)間(h)#definecount50000 //聲明計(jì)數(shù)值,0.05s#defineTH(65536-count)/256 //聲明計(jì)數(shù)高8位#defineTL(65536-count)%256 //聲明計(jì)數(shù)低8位charcount_T0=0; //計(jì)數(shù)T0中斷次數(shù)charcount_T1=0; //計(jì)數(shù)T1中斷次數(shù)voiddebouncer(void);voiddelay1ms(int); //聲明動態(tài)顯示延時(shí)x(ms)函數(shù)voiddispmoney(void); //聲明計(jì)費(fèi)顯示函數(shù)charcodeTAB[11]={ 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90};chardispm[4]={0,0,0,0};//設(shè)立計(jì)費(fèi)顯示初值chardispt[4]={0,0,0,0};//設(shè)立計(jì)時(shí)顯示初值charseconds=0;charscan=1;intt=0; //聲明燈在一種月內(nèi)總點(diǎn)亮?xí)r間t變量intl=0; charp=0;charq=0;main(){ IE=0x8e; //容許T0、INT1、T1中斷 TMOD=0x11; //T0采用Mode1、T1采用Mode1 TH1=TH; TL1=TL; TR1=1; //定期器T1啟動 LAMP=1; //設(shè)立燈初始為熄滅狀態(tài) while(1) { if(S1==0) //開關(guān)S1若按下,模擬傳感器檢測到人來 { debouncer(); if(S1==0) { TH0=TH; TL0=TL; TR0=1; //定期器T0啟動 LAMP=0; //燈點(diǎn)亮 } } dispmoney(); //顯示電費(fèi)值 }}voidT0_30s(void)interrupt1 //T0定期器中斷,計(jì)時(shí)30s{ TH0=TH; TL0=TL; if(++count_T0==20) //計(jì)數(shù)溢出次數(shù),20*0.05=1s { count_T0=0; //重新計(jì)數(shù) seconds++; if(seconds==30) //計(jì)數(shù)30次,30*1=30s { seconds=0; //重新計(jì)數(shù) LAMP=1; //設(shè)立燈滅 t++; //燈點(diǎn)亮?xí)r間加1 TR0=0; //停止T0定期器 } }}voidT1_1month(void)interrupt3 //T1中斷,定期1month{ TH1=TH; TL1=TL; if(++count_T1==20) //1s { count_T1=0; l++; if(l==3600) //1h { l=0; p++; if(p==24) //1day { p=0; q++; if(q==30)//1month q=0; t=0; //燈點(diǎn)亮總時(shí)間t清零 } } } }voiddisptime(void)interrupt2//INT1中斷,顯示燈當(dāng)月總點(diǎn)亮?xí)r間{ charj; inttime; scan=0x01; for(j=0;j<4;j++) { time=t*30/36; dispt[3]=TAB[time/1000]; dispt[2]=0x7f&TAB[time%1000/100]; dispt[1]=TAB[time%100/10]; dispt[0]=TAB[time%10]; SEG=0xff; SCANP=~scan; SEG=dispt[3-j]; delay1ms(2);//延時(shí)約2ms,4*2=8ms<16ms,可實(shí)現(xiàn)動態(tài)顯示 scan<<=1; }}voiddispmoney(void) //計(jì)費(fèi)顯示函數(shù){ chari; intmoney; scan=0x01; for(i=0;i<4;i++) { money=t*293/30; dispm[3]=TAB[money/1000]; dispm[2]=0x7f&TAB[money%1000/100]; dispm[1]=TAB[money%100/10]; dispm[0]=TAB[money%10]; SEG=0xff; SCANP=~scan; SEG=dispm[3-i]; delay1ms(2); scan<<=1; }}voiddebouncer(void) //去抖動函數(shù){ intk; for(k=0;k<2400;k++);}voiddelay1ms(intx) //延時(shí)x(ms)函數(shù){ intm,n; for(m=0;m<x;m++) for(n=0;n<120;n++);}5.仿真調(diào)試:按鈕開關(guān)S1模擬人來,燈亮后定期30s,燈滅,數(shù)碼管刷新電費(fèi)值一次,單位(元),精準(zhǔn)到0.01元;按鈕開關(guān)S2被按下時(shí),數(shù)碼管顯示當(dāng)月燈亮總時(shí)間,單位(小時(shí)),精準(zhǔn)到0.01小時(shí)。未按下開關(guān)未按下開關(guān)按下開關(guān)S1,定期30s開始按下開關(guān)S1,定期30s開始30s定期結(jié)束,數(shù)碼管顯示當(dāng)月電費(fèi)30s定期結(jié)束,數(shù)碼管顯示當(dāng)月電費(fèi)按下S2,顯示當(dāng)月燈點(diǎn)亮總時(shí)間按下S2,顯示當(dāng)月燈點(diǎn)亮總時(shí)間6.實(shí)驗(yàn)總結(jié)通過本次單片機(jī)大作業(yè)完畢,從剛開始硬件電路設(shè)計(jì),到軟件程序編寫,然后通過軟件Proteus仿真調(diào)試,接著進(jìn)行電路板焊接,到最后調(diào)試成功,歷時(shí)三周左右,讓我受益頗多。其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論