




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
附錄A原理圖附錄B程序清單#include<reg52.h>#include<intrins.h>#include<UART.H>#defineucharunsignedchar //以后unsignedchar就可以用uchar代替#defineuintunsignedint //以后unsignedint就可以用uint代替sbitLED=P1^0; //模式指示燈,亮是自動模式,滅是手動模式sbitLamp=P1^4; //臺燈控制引腳sbitKey1=P1^1; //按鍵1,模式切換按鍵sbitKey2=P1^2; //按鍵2,亮度減少按鍵sbitKey3=P1^3; //按鍵3,亮度增加按鍵sbitADC_CS=P2^3; //ADC0832的CS引腳sbitADC_CLK=P2^0; //ADC0832的CLK引腳sbitADC_DAT=P2^1; //ADC0832的DI/DO引腳sbitModule=P2^2; //人體紅外檢測模塊sbitJDQ_OUT=P1^7;uchargCount=0; //全局計數(shù)變量uchargIndex; //亮度變量,0是最暗,9是最亮,一共10檔uintgTime=0; //計時變量,用于計時多久沒檢測到有人/*********************************************************///毫秒級的延時函數(shù),time是要延時的毫秒數(shù)/*********************************************************/voidDelayMs(uinttime){ uinti,j; for(i=0;i<time;i++) for(j=0;j<112;j++);}/*********************************************************///ADC0832的時鐘脈沖/*********************************************************/voidWavePlus(){ _nop_(); ADC_CLK=1; _nop_(); ADC_CLK=0;}/*********************************************************///獲取指定通道的A/D轉(zhuǎn)換結(jié)果/*********************************************************/ucharGet_ADC0832(){ uchari; uchardat1=0; uchardat2=0; ADC_CLK=0; //電平初始化 ADC_DAT=1; _nop_(); ADC_CS=0; WavePlus(); //起始信號 ADC_DAT=1; WavePlus(); //通道選擇的第一位 ADC_DAT=0; WavePlus(); //通道選擇的第二位 ADC_DAT=1; for(i=0;i<8;i++) //第一次讀取 { dat1<<=1; WavePlus(); if(ADC_DAT) dat1=dat1|0x01; else dat1=dat1|0x00; } for(i=0;i<8;i++) //第二次讀取 { dat2>>=1; if(ADC_DAT) dat2=dat2|0x80; else dat2=dat2|0x00; WavePlus(); } _nop_(); //結(jié)束此次傳輸 ADC_DAT=1; ADC_CLK=1; ADC_CS=1; if(dat1==dat2) //返回采集結(jié)果 returndat1; else return0;}/*********************************************************///定時器初始化/*********************************************************/voidTimerInit(){ TMOD=0x01; //使用定時器0,工作方式1 TH0=252; //給定時器0的TH0裝初值 TL0=24; //給定時器0的TL0裝初值 ET0=1; //定時器0中斷使能 EA=1; //打開總中斷 TR0 =1; //啟動定時器0}/*********************************************************///手動控制/*********************************************************/voidManualControl(){ //亮度減少 if((Key2==0)||(UART_Data==2)) //如果按鍵2被按下去 { UART_Data=0; if(gIndex>0) //只要當前亮度不為最低才能減少亮度 { gIndex--; //亮度降低一檔 DelayMs(300); //延時0.3秒 } } //亮度增加 if((Key3==0)||(UART_Data==3)) //如果按鍵3被按下去 { UART_Data=0; if(gIndex<9) //只要當前亮度不為最高才能增加亮度 { gIndex++; //亮度增加一檔 DelayMs(300); //延時0.3秒 } }}/*********************************************************///自動控制/*********************************************************/voidAutoControl(ucharnum){ if(num<59) //最亮 gIndex=9; elseif((num>65)&&(num<81)) //第二亮 gIndex=8; elseif((num>87)&&(num<103)) //第三亮 gIndex=7; elseif((num>109)&&(num<125)) gIndex=6; elseif((num>131)&&(num<147)) gIndex=5; elseif((num>153)&&(num<169)) gIndex=4; elseif((num>175)&&(num<191)) gIndex=3; elseif((num>197)&&(num<213)) gIndex=2; elseif((num>219)&&(num<235)) gIndex=1; elseif(num>241) //最暗 gIndex=0;}/*********************************************************///主函數(shù)/*********************************************************/voidmain(){ ucharret; TimerInit(); //定時器初始化 UART0_Init(); LED=0; //指示燈點亮(自動模式指示燈) ret=Get_ADC0832(); //獲取AD采集結(jié)果(環(huán)境光照強度) AutoControl(ret); //上電先進行一次自動亮度控制 AutoControl(ret+7); while(1) { /*模式切換控制*/ if((Key1==0)||(UART_Data==1)) //如果按鍵1被按下去 { UART_Data=0; LED=~LED; //切換LED燈狀態(tài) DelayMs(10); //延時消除按鍵按下的抖動 while(!Key1); //等待按鍵釋放 DelayMs(10); //延時消除按鍵松開的抖動 } if(UART_Data==4) { UART_Data=0; JDQ_OUT=~JDQ_OUT; } /*亮度控制*/ if(LED==1) //如果LED是滅的 { ManualControl(); //則進行手動控制 } else //如果LED是亮的 { if(gTime<60000) { ret=Get_ADC0832(); //獲取AD采集結(jié)果(環(huán)境光照強度) AutoControl(ret); //進行自動控制 DelayMs(200); } } /*檢測是否有人*/ if(Module==1) { gTime=0; //檢測到有人,則把60秒計時清零 } if(gTime>60000) //如果gTime的值超過了60000 { gTime=60000; //則把gTime的值重新賦值為60000,避免過大溢出 gIndex=0; //如果1分鐘檢測不到有人,則把臺燈熄滅 } }}/*********************************************************///定時器0服務(wù)程序,1毫秒/*********************************************************/voidTimer0(void)interrupt1{ TH0=252; //給定時器0的TH0裝初值 TL0=24; //給定時器0的TL0裝初值 gTime++; //每1毫秒,gTime變量加1 gCount++; //每1毫秒,gCount變量加1 if(gCount==10) //如果gCount加到10了 { gCount=0; //則將gCount清零,進入新一輪的計數(shù) if(gIndex!=0) //如果說臺燈不是最暗的(熄滅) { Lamp=0; //則把臺燈點亮 } } if(gCount==gIndex) //如果gCount計數(shù)到和gIndex一樣了 { if(gIndex!=9) //如果說臺燈不是最亮的 { Lamp=1; //則把臺燈熄滅 } }}#include<UART.H>volatileunsignedcharUART_Data=0;voidUART0_Init(void){ TMOD|=0X20; //T1方式2,8位自動重裝 TH1=0Xfd; TL1=0Xfd; //9600 TR1=1; //定時器1啟動 SM0=0; //設(shè)置串口的工作模式 SM1=1; //方式1 REN=1; //允許串口接收數(shù)據(jù) ES=1; //串口中斷應(yīng)許 EA=1; //開啟中斷 }/******************************************************************************************************************////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////函數(shù)voidreceive(void)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年新教材高中語文課時分層作業(yè)8中國建筑的特征新人教版必修下冊
- 2024-2025學(xué)年高中數(shù)學(xué)第二章基本初等函數(shù)Ⅰ章末總結(jié)教案新人教A版必修1
- 2025年中國中醫(yī)器械行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 2025年P(guān)P帶打包設(shè)備項目投資可行性研究分析報告
- 中國四驅(qū)多用途車行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 中國隔熱保溫材料行業(yè)未來發(fā)展趨勢分析投資規(guī)劃建議研究報告
- 線路器材用料行業(yè)深度研究報告
- 中國通迅電信配件項目投資可行性研究報告
- 數(shù)據(jù)庫加密可行性研究分析報告
- 2025年中國家庭保健器械行業(yè)市場調(diào)研分析及投資戰(zhàn)略規(guī)劃報告
- 計算機教室(微機室)學(xué)生上機使用記錄
- 第1章 會展經(jīng)濟概述
- 《植物學(xué)》練習(二)根、莖、葉營養(yǎng)器官的聯(lián)系及變態(tài)
- 中暑-紅十字應(yīng)急救護培訓(xùn)課件
- 中國農(nóng)業(yè)銀行筆試真題
- (5.5)-雜草圖片農(nóng)田雜草及防除學(xué)
- 生理學(xué)人體生理功能的調(diào)節(jié)
- 口腔護理技術(shù)
- 西師版四年級下冊100道口算題大全(全冊齊全)
- TFCC損傷的診斷及治療
- 《西藏度亡經(jīng)》及中陰解脫竅決(收藏)
評論
0/150
提交評論