版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于光敏電阻的簡易傳感器</p><p> ——光感自動控制百葉窗</p><p><b> 1.摘要</b></p><p> 本設(shè)計(jì)題目是光感自動控制百葉窗,用光照的強(qiáng)弱來改變光敏電阻的阻值大小,采用了MS-C51單片機(jī)為主控制電路,用數(shù)碼管顯示光照強(qiáng)度值,進(jìn)而控制步進(jìn)電動機(jī)控制百葉窗的旋轉(zhuǎn)包括正轉(zhuǎn)、反轉(zhuǎn)和暫停。
2、本設(shè)計(jì)電路各個(gè)部分電路的設(shè)計(jì)原理及功能都能實(shí)現(xiàn),要求對各種基本的電子元器件,電阻、電容、二極管、三極管等熟悉,掌握Proteus 仿真軟件的運(yùn)用、Protel 99 SE工具軟件等繪圖軟件,并加以運(yùn)用。用單片機(jī)內(nèi)部的AD轉(zhuǎn)換實(shí)現(xiàn)模擬轉(zhuǎn)化為數(shù)字量,通過編程控制各個(gè)外圍電路并實(shí)現(xiàn)其功能。本設(shè)計(jì)具有有線路簡單、結(jié)構(gòu)緊湊、價(jià)格低廉、性能優(yōu)越等特點(diǎn)。</p><p> 單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列
3、優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于各領(lǐng)域各方面。本次設(shè)計(jì)是以單片機(jī)為核心,加上其他器件,設(shè)計(jì)電路來實(shí)現(xiàn)百葉窗的控制。</p><p> 2.系統(tǒng)總體設(shè)計(jì)方案</p><p><b> 2.1設(shè)計(jì)要求</b></p><p> 單片機(jī)以其高可靠性、高性價(jià)比、低電壓、低功耗等一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于
4、各領(lǐng)域各方面。本次設(shè)計(jì)是以單片機(jī)為核心,加上其他器件,設(shè)計(jì)電路來實(shí)現(xiàn)百葉窗的控制。</p><p> 利用光敏電阻與標(biāo)準(zhǔn)電阻串聯(lián)輸入模擬信號,通過ADC0809芯片轉(zhuǎn)換成數(shù)字信號傳送給單片機(jī),通過單片機(jī)處理并控制LCD顯示當(dāng)前的測量光強(qiáng)值,以及輸出步進(jìn)電動機(jī)的驅(qū)動信號,再利用達(dá)林頓管ULN2003提高單片機(jī)的輸出功率驅(qū)動步進(jìn)電動機(jī)。</p><p><b> 2.2總體框圖&
5、lt;/b></p><p><b> 3.系統(tǒng)硬件設(shè)計(jì)</b></p><p><b> 3.1總體電路圖</b></p><p><b> 3.2組成模塊介紹</b></p><p> 單片機(jī):AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Fl
6、ash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。</p><p> AD轉(zhuǎn)換模塊: 將光敏電阻用滑
7、動變阻器代替。R10為標(biāo)準(zhǔn)10K電阻,RV1為10K滑動變阻器,以代替光敏電阻仿真。由于仿真軟件只支持ADC0808芯片仿真,故在仿真時(shí)使用此芯片,實(shí)際電路板中選用了ADC0808。處于實(shí)際電路板焊接時(shí)候引腳選用方便考慮,選用IN7輸出口。即將模擬輸入選擇口ADD A、ADD B、ADD C接入VCC。處于實(shí)際電路焊接考慮,將ST接入P3.0口,EOC接入P3.1口,OE接入P3.2口,CLK接入P3.3口,具體電路如右圖。</p
8、><p> 步進(jìn)電動機(jī)驅(qū)動:如果直接用單片機(jī)驅(qū)動步進(jìn)電動機(jī),因?yàn)閱纹瑱C(jī)的輸出電流太低,功率不夠,無法驅(qū)動步進(jìn)電動機(jī),故接入達(dá)林頓管ULN2003來增加輸出功率,處于實(shí)際電路焊接考慮,使用P3.4~P3.7端口。電路如下圖</p><p> 暫??刂疲河瞄_關(guān)控制,開關(guān)閉合時(shí)步進(jìn)電動機(jī)暫停,LCD顯示暫停狀態(tài)(*字符),但依舊可以測量出光強(qiáng)值。</p><p> LC
9、D顯示:LCD接口如圖所示,由于單片機(jī)P0口和P2口在單片機(jī)的右邊,故將LCD的輸入口和控制口分別接入P0和P2口,由于P0口無上拉電阻,故接入LCD時(shí)接入一排上拉電阻。如右圖</p><p><b> 4.元件清單</b></p><p> 5.系統(tǒng)調(diào)試與測量結(jié)果</p><p><b> 5.1程序流程圖</b>
10、</p><p><b> 5.2程序代碼</b></p><p> #include <reg52.h></p><p> unsigned char get_data;</p><p> unsigned int temp;</p><p> unsigned char
11、code tab1[]="welcome on!";</p><p> unsigned char code tab2[]="light:";</p><p> unsigned char code tab3[]="mcd";</p><p> sbit ST = P3^0;</p>&
12、lt;p> sbit EOC= P3^1;</p><p> sbit OE = P3^2;</p><p> sbit CLK= P3^3;</p><p> sbit A1 = P3^5;</p><p> sbit B1 = P3^6;</p><p> sbit C1 = P3^7;</
13、p><p> sbit D1 = P3^4;</p><p> sbit RS = P2^0;</p><p> sbit RW = P2^1;</p><p> sbit E = P2^2;</p><p> sbit key= P2^4;</p><p> #define r1 {
14、A1=1;B1=1;C1=1;D1=0;} </p><p> #define r2 {A1=1;B1=1;C1=0;D1=0;}</p><p> #define r3 {A1=1;B1=1;C1=0;D1=1;}</p><p> #define r4 {A1=1;B1=0;C1=0;D1=1;}</p><p> #define
15、 r5 {A1=1;B1=0;C1=1;D1=1;}</p><p> #define r6 {A1=0;B1=0;C1=1;D1=1;}</p><p> #define r7 {A1=0;B1=1;C1=1;D1=1;}</p><p> #define r8 {A1=0;B1=1;C1=1;D1=0;}</p><p> voi
16、d timer()</p><p><b> {</b></p><p> TMOD=0x10;</p><p> TH0=(65536-190)/256;</p><p> TL0=(65536-190)%256;</p><p><b> EA=1;</b>&l
17、t;/p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p> void delay(unsigned int t)</p><p><b> {&
18、lt;/b></p><p><b> int i,j;</b></p><p> for(i=t;i>0;i--)</p><p> for(j=112;j>0;j--);</p><p><b> }</b></p><p> writecom
19、(unsigned char com)</p><p><b> {</b></p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p><b> P0=com;</b></p><
20、;p><b> E=0;</b></p><p><b> delay(1);</b></p><p><b> E=1;</b></p><p><b> delay(1);</b></p><p><b> E=0;</
21、b></p><p><b> }</b></p><p> writedata(unsigned char date)</p><p><b> {</b></p><p><b> RS=1;</b></p><p><b>
22、 RW=0;</b></p><p><b> P0=date;</b></p><p><b> E=0;</b></p><p><b> delay(1);</b></p><p><b> E=1;</b></p>
23、<p><b> delay(1);</b></p><p><b> E=0;</b></p><p><b> }</b></p><p> void writecount(unsigned int Data)</p><p><b> {
24、</b></p><p> switch(Data)</p><p> {case 0: writedata(0x30);break;</p><p> case 1: writedata(0x31);break;</p><p> case 2: writedata(0x32);break;</p>&l
25、t;p> case 3: writedata(0x33);break;</p><p> case 4: writedata(0x34);break;</p><p> case 5: writedata(0x35);break;</p><p> case 6: writedata(0x36);break;</p><p>
26、 case 7: writedata(0x37);break;</p><p> case 8: writedata(0x38);break;</p><p> case 9: writedata(0x39);break;</p><p><b> }</b></p><p><b> }</b&
27、gt;</p><p> void bujin(unsigned int pd)</p><p><b> {</b></p><p><b> if(pd) </b></p><p> { </p><p><b> r1</b&g
28、t;</p><p><b> delay(5);</b></p><p><b> r2</b></p><p><b> delay(5);</b></p><p><b> r3</b></p><p><b&g
29、t; delay(5);</b></p><p><b> r4</b></p><p><b> delay(5);</b></p><p><b> r5</b></p><p><b> delay(5);</b></p&
30、gt;<p><b> r6</b></p><p><b> delay(5);</b></p><p><b> r7</b></p><p><b> delay(5);</b></p><p><b> r8<
31、;/b></p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b>
32、 r8</b></p><p><b> delay(5);</b></p><p><b> r7</b></p><p><b> delay(5);</b></p><p><b> r6</b></p><
33、p><b> delay(5);</b></p><p><b> r5</b></p><p><b> delay(5);</b></p><p><b> r4</b></p><p><b> delay(5);</
34、b></p><p><b> r3</b></p><p><b> delay(5);</b></p><p><b> r2</b></p><p><b> delay(5);</b></p><p><
35、b> r1</b></p><p><b> delay(5);</b></p><p><b> };</b></p><p><b> }</b></p><p> void disp(unsigned int a) </p>
36、<p><b> {</b></p><p> unsigned int c;</p><p> a*=4; </p><p> writecom(0xc0+7);</p><p> writecount(a/1000);</p><p> writecom(0
37、xc0+8);</p><p> writecount(a%1000/100);</p><p> writecom(0xc0+9);</p><p> writecount(a%100/10);</p><p> writecom(0xc0+10);</p><p> writecount(a%10);&l
38、t;/p><p> writecom(0xc0+11);</p><p> for(c=0;c<3;c++)</p><p> writedata(tab3[c]);</p><p><b> }</b></p><p> pduan(unsigned int a)</p>
39、<p><b> {</b></p><p> unsigned int x;</p><p> if(a<51) x=0;</p><p> else if(a<102) x=1;</p><p> else if(a<153) x=2;</p><p>
40、; else if(a<204) x=3;</p><p><b> else x=4;</b></p><p> return(x);</p><p><b> }</b></p><p><b> main()</b></p><p>
41、;<b> {</b></p><p> unsigned int compare=0;</p><p> unsigned int dji;</p><p> unsigned int i,j,k;</p><p> writecom(0x38);</p><p> writecom
42、(0x0c);</p><p> writecom(0x06);</p><p> writecom(0x80+1);</p><p> for(i=0;i<11;i++)</p><p> writedata(tab1[i]);</p><p> writecom(0xc0+1);</p>
43、<p> for(j=0;j<6;j++)</p><p> writedata(tab2[j]);</p><p><b> timer();</b></p><p> while(1) </p><p><b> {</b></p>
44、<p><b> ST=0;</b></p><p><b> OE=0;</b></p><p><b> ST=1;</b></p><p><b> ST=0;</b></p><p> while(EOC==0);</
45、p><p><b> OE=1;</b></p><p> get_data=P1;</p><p><b> OE=0;</b></p><p> temp=get_data;</p><p> disp(temp); </p>&
46、lt;p> dji=pduan(temp);</p><p> writecom(0x80+14);</p><p> writedata(0x2a); </p><p> if(key) </p><p><b> {</b></p><
47、;p> writecom(0x80+14);</p><p> writedata(0x20); </p><p> if(dji>compare) </p><p><b> {</b></p><p> for(k=25*(dji-compare);k>0;k--)
48、</p><p><b> bujin(0);</b></p><p> compare=dji;</p><p><b> }</b></p><p> else if(dji<compare)</p><p><b> {</b>&l
49、t;/p><p> for(k=25*(compare-dji);k>0;k--)</p><p><b> bujin(1);</b></p><p> compare=dji;</p><p><b> }</b></p><p> else compare=
50、dji;</p><p><b> };</b></p><p><b> };</b></p><p><b> }</b></p><p> void t0(void) interrupt 1 using 0</p><p><b>
51、; {</b></p><p> TH0=(65536-190)/256;</p><p> TL0=(65536-190)%256;</p><p><b> CLK=~CLK;</b></p><p><b> }</b></p><p><b
52、> 6.測量結(jié)果分析</b></p><p> 當(dāng)光敏電阻受光照強(qiáng)度的不同時(shí)電阻值改變,進(jìn)而改變步電機(jī)的轉(zhuǎn)速與方向,是室內(nèi)的采光程度最好。</p><p> 如果想自己手動改變采光度,停止步電機(jī)的工作可以關(guān)閉開關(guān)。</p><p><b> 7.心得體會</b></p><p> 通過這一次的
53、電路設(shè)計(jì),掌握了LCD液晶顯示、AD轉(zhuǎn)換和步進(jìn)電動機(jī)驅(qū)動的方法,對單片機(jī)運(yùn)用技術(shù)又有了進(jìn)一步的提高。單片機(jī)可以驅(qū)動電路和實(shí)現(xiàn)的功能多種多樣,對單片機(jī)的靈活運(yùn)用顯然還欠缺許多知識,但經(jīng)過這次的課程設(shè)計(jì),相信對單片機(jī)的各方面可以慢慢學(xué)習(xí)滲透,將其融會貫通。</p><p> 仿真時(shí)LCD無任何字符顯示,檢查源程序的LCD初始化是否正確,修改錯誤,重新載入源程序仿真。</p><p> 顯示
54、的轉(zhuǎn)換數(shù)據(jù)為錯亂數(shù)據(jù),網(wǎng)上查閱ADC0809芯片功能書發(fā)現(xiàn)改芯片的輸出口與IO口的高低位相反,OUT0~OUT7為高位到低位,恰與我們平時(shí)定義的相反。</p><p><b> 8.參考文獻(xiàn)</b></p><p> 《傳感器與檢測技術(shù)》 陳杰 黃鴻 編著</p><p> 《基于單片機(jī)的百葉窗設(shè)計(jì)》 網(wǎng)絡(luò)文獻(xiàn)</p&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光敏電阻傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)--電阻應(yīng)變式傳感器
- 電阻傳感器課程設(shè)計(jì)--電阻式傳感器應(yīng)用電路設(shè)計(jì)
- 傳感器課程設(shè)計(jì)-應(yīng)變片電阻式傳感器測壓力
- 傳感器課程設(shè)計(jì)--由光敏電阻構(gòu)成的基本光控電路
- 傳感器課程設(shè)計(jì)-- 壓力傳感器
- 傳感器課程設(shè)計(jì)-- 電容式傳感器
- 傳感器課程設(shè)計(jì)--論霍爾傳感器的應(yīng)用
- 傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)---霍爾電流傳感器設(shè)計(jì)
- 傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)--- 傳感器原理及應(yīng)用
- 傳感器課程設(shè)計(jì)---應(yīng)變式拉壓傳感器
- 傳感器課程設(shè)計(jì)---應(yīng)變式拉壓傳感器
- 應(yīng)變傳感器及稱重系統(tǒng)傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)--電渦流位移傳感器設(shè)計(jì)
- 傳感器課程設(shè)計(jì)
- 傳感器課程設(shè)計(jì)---大量程稱重傳感器設(shè)計(jì)
評論
0/150
提交評論