版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于Si光電池的照度計(jì)設(shè)計(jì)與調(diào)試方案</p><p><b> 1 技術(shù)指標(biāo)</b></p><p> 要求系統(tǒng)測(cè)量范圍為0-200lx,測(cè)量精度達(dá)到1lx;</p><p> 設(shè)計(jì)光電池輸出信號(hào)處理電路,要求可以控制處理后的電壓幅度;</p><p> 設(shè)計(jì)照度計(jì)硬件電路系統(tǒng),要求系統(tǒng)各個(gè)
2、模塊能夠正常工作;</p><p> 設(shè)計(jì)照度計(jì)軟件控制系統(tǒng),要求系統(tǒng)整體工作穩(wěn)定;</p><p> 給設(shè)計(jì)系統(tǒng)定標(biāo),要求測(cè)量結(jié)果誤差在1%以?xún)?nèi)。</p><p> 2 設(shè)計(jì)方案及其比較</p><p> 當(dāng)光電池的光敏面收到光照射時(shí),PN節(jié)耗盡區(qū)內(nèi)的光生電子與空穴在內(nèi)建電場(chǎng)力的作用下分別向N區(qū)和P區(qū)運(yùn)動(dòng),在閉合的電路中產(chǎn)生光電流。
3、首先將光電流經(jīng)過(guò)I/V變換和電壓放大后形成直流電壓信號(hào),其次通過(guò)模數(shù)轉(zhuǎn)換電路將處理得到的直流電壓信號(hào)轉(zhuǎn)換為數(shù)字電壓信號(hào),再通過(guò)單片機(jī)處理后得到可以反應(yīng)光照度的數(shù)字信號(hào),最后通過(guò)LCD實(shí)時(shí)顯示出來(lái)。照度計(jì)的系統(tǒng)框圖如圖1所示。</p><p> 圖1 照度計(jì)系統(tǒng)框圖</p><p><b> 2.1 方案一</b></p><p> 通過(guò)電
4、阻轉(zhuǎn)換的方式進(jìn)行I/V轉(zhuǎn)換,如圖2,之后將電壓放大后的直流電壓信號(hào)通過(guò)由ADC0809構(gòu)成的A/D轉(zhuǎn)換模塊得到數(shù)字電壓信號(hào),然后,通過(guò)單片機(jī)得到可以反應(yīng)光照度的數(shù)字信號(hào),最后,通過(guò)LED數(shù)碼管實(shí)時(shí)顯示出來(lái)。</p><p><b> 圖2 電阻轉(zhuǎn)換模塊</b></p><p><b> 2.2 方案二</b></p><p
5、> 通過(guò)三極管構(gòu)建放大電路得到電壓信號(hào)進(jìn)行I/V轉(zhuǎn)換,如圖3,之后將電壓放大后的直流電壓信號(hào)通過(guò)由ADC0809構(gòu)成的A/D轉(zhuǎn)換模塊得到數(shù)字電壓信號(hào),然后,通過(guò)單片機(jī)得到可以反應(yīng)光照度的數(shù)字信號(hào),最后,通過(guò)LED數(shù)碼管實(shí)時(shí)顯示出來(lái)。</p><p> 圖3 三極管轉(zhuǎn)換模式</p><p><b> 2.3 方案三</b></p><p&
6、gt; 通過(guò)集成運(yùn)放芯片構(gòu)建放大電路得到電壓信號(hào)進(jìn)行I/V轉(zhuǎn)換,如圖4,之后將電壓放大后的直流電壓信號(hào)通過(guò)由ADC0809構(gòu)成的A/D轉(zhuǎn)換模塊得到數(shù)字電壓信號(hào),然后,通過(guò)單片機(jī)得到可以反應(yīng)光照度的數(shù)字信號(hào),最后,通過(guò)LED數(shù)碼管實(shí)時(shí)顯示出來(lái)。</p><p> 圖4 集成運(yùn)放轉(zhuǎn)換模式</p><p><b> 2.4 方案比較</b></p>&l
7、t;p> 三種方案各有優(yōu)缺點(diǎn),方案一適合在電流較大的情況下使用,方案二適合在電流變換范圍小的情況下使用,方案三適用范圍廣,但成本會(huì)提高很多。由于此次課程設(shè)計(jì)電路板上已經(jīng)有運(yùn)放芯片,故采取方案三。</p><p><b> 3 實(shí)現(xiàn)方案</b></p><p><b> 3.1 硬件部分</b></p><p>
8、 系統(tǒng)的硬件由I/V變換模塊、光電池前置放大模塊、A/D轉(zhuǎn)換模塊、單片機(jī)控制模塊以及數(shù)碼管顯示模塊組成,如圖5,Proteus仿真圖如圖6所示。</p><p> 當(dāng)光電池的光敏面收到光照射時(shí),PN節(jié)耗盡區(qū)內(nèi)的光生電子與空穴在內(nèi)建電場(chǎng)力的作用下分別向N區(qū)和P區(qū)運(yùn)動(dòng),在閉合的電路中產(chǎn)生光電流。因?yàn)楣怆娏餍枰D(zhuǎn)換為電壓信號(hào),才能通過(guò)數(shù)碼管顯示,所以需要進(jìn)行I/V變換。但是,所得的電壓值過(guò)小,不宜測(cè)量,故需要電壓放
9、大模塊將其放大為直流電壓信號(hào)。其次,數(shù)碼管顯示的是數(shù)字信號(hào),所以,需要將放大得到的直流電壓信號(hào)進(jìn)過(guò)A/D轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)字電壓信號(hào)。最后,通過(guò)單片機(jī)處理后得到可以反應(yīng)光照度的數(shù)字信號(hào),并通過(guò)數(shù)碼管實(shí)時(shí)顯示出來(lái)。</p><p><b> 圖5 系統(tǒng)電路圖</b></p><p><b> 圖6 總電路圖</b></p><
10、p> 1 光電池和電壓放大及I/V轉(zhuǎn)換模塊</p><p> 本系統(tǒng)選用的硅光電池光譜響應(yīng)波長(zhǎng)一般為0.4~1.1微米,峰值響應(yīng)波長(zhǎng)為0.9微米,其特性曲線如圖7所示。在不同光照下,硅光電池有不同的電信號(hào)輸出,且二者之間具有單值對(duì)應(yīng)關(guān)系,因此,可以通過(guò)檢測(cè)其輸出電信號(hào)并根據(jù)其輸出特性關(guān)系,得到對(duì)應(yīng)的光照度信息,以達(dá)到光照度檢測(cè)的目的。</p><p> 圖7 硅光電池光譜響應(yīng)特
11、性曲線</p><p> 該模塊使用LM358運(yùn)算放大芯片實(shí)現(xiàn),如圖8所示,該芯片引腳如圖9所示,可以實(shí)現(xiàn)I/V變換,即將光電流信號(hào)轉(zhuǎn)換為直流電壓信號(hào),并且進(jìn)行放大。</p><p> 圖8 電壓放大及I/V轉(zhuǎn)換模塊</p><p> 圖9 LM358引腳圖</p><p> 2 A/D轉(zhuǎn)換模塊</p><p&
12、gt; 該模塊由PCF8591芯片實(shí)現(xiàn),如圖10所示,該芯片引腳如圖11所示,可以實(shí)現(xiàn)A/D轉(zhuǎn)換,將直流電壓信號(hào)轉(zhuǎn)換為數(shù)字電壓信號(hào)。</p><p> PCF8591各引腳功能如下:</p><p> AIN0、AIN1、AIN2、AIN3:模擬信號(hào)輸入端;</p><p> A0、A1、A2:引腳地址端;</p><p> VDD
13、、VSS:電源端;</p><p> SDA、SCL:I2C總線的數(shù)據(jù)線、時(shí)鐘線;</p><p> OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘輸出端;</p><p> EXT:內(nèi)部、外部時(shí)鐘選擇線,使用內(nèi)部時(shí)鐘時(shí)EXT接地;</p><p> AGND:模擬信號(hào)地;</p><p> AOUT:D/A轉(zhuǎn)換輸出端;&
14、lt;/p><p> VREF:基準(zhǔn)電源端;</p><p> 圖10 A/D轉(zhuǎn)換模塊</p><p> 圖11 PCF8591引腳圖</p><p><b> 3 單片機(jī)控制模塊</b></p><p> 該模塊由89C51芯片實(shí)現(xiàn),如圖12所示,89C51引腳圖如圖13所示。該模塊通過(guò)芯
15、片內(nèi)部的程序控制驅(qū)動(dòng)PCF8591芯片并采集模數(shù)轉(zhuǎn)換后的數(shù)字信號(hào),對(duì)采集后的數(shù)字信號(hào)進(jìn)行處理,控制數(shù)碼管顯示系統(tǒng)檢測(cè)得到的照度值。</p><p><b> 圖12 單片機(jī)系統(tǒng)</b></p><p> 圖13 89C51引腳圖</p><p> 4 數(shù)碼管顯示系統(tǒng)及鎖存器</p><p> 該模塊由芯片74HC
16、573和數(shù)碼管實(shí)現(xiàn),如圖14,74HC573引腳圖如圖15所示。數(shù)碼管段選使用573鎖存器,因?yàn)閱纹瑱C(jī)引腳直接驅(qū)動(dòng)功率不太夠。</p><p> 圖14 數(shù)碼管顯示系統(tǒng)及鎖存器</p><p> 圖15 74HC573</p><p><b> 3.2 軟件部分</b></p><p><b> 程序部
17、分代碼如下:</b></p><p><b> 1 main.c</b></p><p> /*******************************************************************************</p><p> * </p>
18、<p> * 普中科技</p><p> --------------------------------------------------------------------------------</p><p> * 實(shí) 驗(yàn) 名 : AD顯示試驗(yàn)</p><p> * 實(shí)驗(yàn)說(shuō)明
19、 : 使用數(shù)碼管顯示AD讀取到電位器的電壓值</p><p> * 連接方式 : 見(jiàn)連接圖</p><p> * 注 意 : </p><p> *******************************************************************************/</p>&l
20、t;p> #include<reg51.h></p><p> #include"i2c.h"</p><p> //--定義使用的IO--//</p><p> #define GPIO_DIG P0</p><p> sbit LSA=P2^2;</p><p>
21、sbit LSB=P2^3;</p><p> sbit LSC=P2^4;</p><p> sbit LE=P2^2;</p><p> //--定義PCF8591的讀寫(xiě)地址--//</p><p> #define WRITEADDR 0x90 //寫(xiě)地址</p><p> #define R
22、EADADDR 0x91 //讀地址</p><p> //--定義全局變量--//</p><p> unsigned char code DIG_CODE[17]={</p><p> 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c
23、,0x39,0x5e,0x79,0x71};</p><p> //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼</p><p> uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};</p>&l
24、t;p> unsigned char DisplayData[8];</p><p> //用來(lái)存放要顯示的8位數(shù)的值</p><p> //--聲明全局函數(shù)--//</p><p> void DigDisplay(); //動(dòng)態(tài)顯示函數(shù)</p><p> void Pcf8591SendByte(unsigned char
25、 channel);</p><p> unsigned char Pcf8591ReadByte();</p><p> void Pcf8591DaConversion(unsigned char value);</p><p> void DigDisplay();</p><p> /*********************
26、*********************************************</p><p><b> 長(zhǎng)延時(shí)函數(shù)</b></p><p> ******************************************************************/</p><p> void delay(ucha
27、r z)</p><p><b> {</b></p><p> uchar x,y;</p><p> for(x=z;x>0;x--)</p><p> for(y=50;y>0;y--);</p><p><b> }</b></p>
28、<p> /*******************************************************************************</p><p> * 函 數(shù) 名 : main</p><p> * 函數(shù)功能 : 主函數(shù)</p><p> * 輸 入 : 無(wú)&
29、lt;/p><p> * 輸 出 : 無(wú)</p><p> *******************************************************************************/</p><p> void main()</p><p><b> {</b&g
30、t;</p><p> unsigned int adNum,n;</p><p> uint b1,b,g,s;</p><p> int time1;</p><p> float value;</p><p> uchar date[10];</p><p><b>
31、 while(1)</b></p><p><b> {</b></p><p><b> time1++;</b></p><p> if(time1%15)</p><p><b> {</b></p><p> Pcf859
32、1SendByte(0);</p><p> date[time1%15] = Pcf8591ReadByte()*2;</p><p><b> }</b></p><p> //--顯示電位器電壓--//</p><p> //Pcf8591SendByte(0); //發(fā)送電位器
33、轉(zhuǎn)換命令</p><p> if(time1==150) </p><p><b> {time1=0;</b></p><p> //adNum = Pcf8591ReadByte()*2;//將轉(zhuǎn)換結(jié)果讀走</p><p> adNum = (date[0]+date[1]+date[2]+date[3]
34、+date[4]+date[5]+date[6]+date[7]+date[8]+date[9])/10.;</p><p> //--我們8591每讀取到一個(gè)1就表示5/256V,所以要知道電壓值就乘以0.01953--//</p><p> value = adNum * 0.01953/1.3; //轉(zhuǎn)為電壓值</p><p> adNum = val
35、ue * 1000; //保留兩位小數(shù)</p><p><b> n=adNum;</b></p><p><b> }</b></p><p> // n=n*500./255;</p><p><b> // n=123;</b></p>
36、<p> b1=n/1000;</p><p> b=n%1000/100;</p><p> s=n/10%10;</p><p><b> g=n%10;</b></p><p><b> LE=1;</b></p><p> P0=0xfe;P1
37、=table[b1];delay(10);</p><p> P0=0xfd;P1=table[b];delay(10);</p><p> P0=0xfb;P1=table[s];delay(10);</p><p> P0=0xf7;P1=table[g];delay(10);</p><p><b> }</b&
38、gt;</p><p><b> }</b></p><p> /*******************************************************************************</p><p> * 函 數(shù) 名 : Pcf8591SendByte</p><
39、;p> * 函數(shù)功能 : 寫(xiě)入一個(gè)控制命令</p><p> * 輸 入 : channel(轉(zhuǎn)換通道)</p><p> * 輸 出 : 無(wú)</p><p> **********************************************************************
40、*********/</p><p> void Pcf8591SendByte(unsigned char channel)</p><p><b> {</b></p><p> I2C_Start();</p><p> I2C_SendByte(WRITEADDR, 1); //發(fā)送寫(xiě)器件地址&l
41、t;/p><p> I2C_SendByte(0x40|channel, 0); //發(fā)送控制寄存器</p><p> I2C_Stop();</p><p><b> }</b></p><p> /**********************************************************
42、*********************</p><p> * 函 數(shù) 名 : Pcf8591ReadByte</p><p> * 函數(shù)功能 : 讀取一個(gè)轉(zhuǎn)換值</p><p> * 輸 入 : 無(wú)</p><p> * 輸 出 : dat</p>
43、<p> *******************************************************************************/</p><p> unsigned char Pcf8591ReadByte()</p><p><b> {</b></p><p> unsigned
44、char dat;</p><p> I2C_Start();</p><p> I2C_SendByte(READADDR, 1);//發(fā)送讀器件地址</p><p> dat=I2C_ReadByte(); //讀取數(shù)據(jù)</p><p> I2C_Stop(); //結(jié)束總線</p>&l
45、t;p> return dat;</p><p><b> }</b></p><p> /*******************************************************************************</p><p> * 函 數(shù) 名 : Pcf8591DaConv
46、ersion</p><p> * 函數(shù)功能 : PCF8591的輸出端輸出模擬量</p><p> * 輸 入 : value(轉(zhuǎn)換的數(shù)值)</p><p> * 輸 出 : 無(wú)</p><p> ******************************************
47、*************************************/</p><p> void Pcf8591DaConversion(unsigned char value)</p><p><b> {</b></p><p> I2C_Start();</p><p> I2C_SendByte(
48、WRITEADDR, 1);//發(fā)送寫(xiě)器件地址</p><p> I2C_SendByte(0x40, 1); //開(kāi)啟DA寫(xiě)到控制寄存器</p><p> I2C_SendByte(value, 0); //發(fā)送轉(zhuǎn)換數(shù)值</p><p> I2C_Stop();</p><p><b> }</b&g
49、t;</p><p> /*******************************************************************************</p><p> * 函 數(shù) 名 : DigDisplay</p><p> * 函數(shù)功能 : 使用數(shù)碼管顯示</p><p>
50、 * 輸 入 : 無(wú)</p><p> * 輸 出 : 無(wú)</p><p> *******************************************************************************/</p><p> void DigDisplay()</p>
51、<p><b> {</b></p><p> unsigned char i;</p><p> unsigned int j;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> swit
52、ch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,</p><p><b> {</b></p><p><b> case(0):</b></p><p> LSA=0;LSB=0;LSC=0; break;//顯示第0位</p><p><b> case(1):</b>&
53、lt;/p><p> LSA=1;LSB=0;LSC=0; break;//顯示第1位</p><p><b> case(2):</b></p><p> LSA=0;LSB=1;LSC=0; break;//顯示第2位</p><p><b> case(3):</b></p>
54、<p> LSA=1;LSB=1;LSC=0; break;//顯示第3位</p><p><b> case(4):</b></p><p> LSA=0;LSB=0;LSC=1; break;//顯示第4位</p><p><b> case(5):</b></p><p>
55、 LSA=1;LSB=0;LSC=1; break;//顯示第5位</p><p><b> case(6):</b></p><p> LSA=0;LSB=1;LSC=1; break;//顯示第6位</p><p><b> case(7):</b></p><p> LSA=1;LS
56、B=1;LSC=1; break;//顯示第7位</p><p><b> }</b></p><p> GPIO_DIG=DisplayData[i];//發(fā)送段碼</p><p> j=500; //掃描間隔時(shí)間設(shè)定</p><p> while(j--);</p><p&
57、gt; GPIO_DIG=0x00;//消隱</p><p><b> }</b></p><p><b> }</b></p><p><b> 2 i2c.c</b></p><p> #include"i2c.h"</p>&l
58、t;p> /*******************************************************************************</p><p> * 函 數(shù) 名 : Delay1us()</p><p> * 函數(shù)功能 : 延時(shí)</p><p> * 輸 入 :
59、無(wú)</p><p> * 輸 出 : 無(wú)</p><p> *******************************************************************************/</p><p> void I2C_Delay10us()</p><p><b>
60、 {</b></p><p> uchar a, b;</p><p> for(b=1; b>0; b--)</p><p><b> {</b></p><p> for(a=2; a>0; a--);</p><p><b> }</b&g
61、t;</p><p><b> }</b></p><p> /*******************************************************************************</p><p> * 函 數(shù) 名 : I2C_Start()</p><p>
62、; * 函數(shù)功能 : 起始信號(hào):在I2C_SCL時(shí)鐘信號(hào)在高電平期間I2C_SDA信號(hào)產(chǎn)生一個(gè)下降沿</p><p> * 輸 入 : 無(wú)</p><p> * 輸 出 : 無(wú)</p><p> * 備 注 : 起始之后I2C_SDA和I2C_SCL都為0</p><
63、;p> *******************************************************************************/</p><p> void I2C_Start()</p><p><b> {</b></p><p> I2C_SDA = 1;</p><
64、;p> I2C_Delay10us();</p><p> I2C_SCL = 1;</p><p> I2C_Delay10us();//建立時(shí)間是I2C_SDA保持時(shí)間>4.7us</p><p> I2C_SDA = 0;</p><p> I2C_Delay10us();//保持時(shí)間是>4us</p&
65、gt;<p> I2C_SCL = 0;</p><p> I2C_Delay10us();</p><p><b> }</b></p><p> /*******************************************************************************&l
66、t;/p><p> * 函 數(shù) 名 : I2C_Stop()</p><p> * 函數(shù)功能 : 終止信號(hào):在I2C_SCL時(shí)鐘信號(hào)高電平期間I2C_SDA信號(hào)產(chǎn)生一個(gè)上升沿</p><p> * 輸 入 : 無(wú)</p><p> * 輸 出 : 無(wú)
67、</p><p> * 備 注 : 結(jié)束之后保持I2C_SDA和I2C_SCL都為1;表示總線空閑</p><p> *******************************************************************************/</p><p> void I2C_Stop()<
68、/p><p><b> {</b></p><p> I2C_SDA = 0;</p><p> I2C_Delay10us();</p><p> I2C_SCL = 1;</p><p> I2C_Delay10us();//建立時(shí)間大于4.7us</p><p>
69、; I2C_SDA = 1;</p><p> I2C_Delay10us();</p><p><b> }</b></p><p> /*******************************************************************************</p><p&
70、gt; * 函 數(shù) 名 : I2cSendByte(uchar num)</p><p> * 函數(shù)功能 : 通過(guò)I2C發(fā)送一個(gè)字節(jié)。在I2C_SCL時(shí)鐘信號(hào)高電平期間,</p><p> * * 保持發(fā)送信號(hào)I2C_SDA保持穩(wěn)定</p><p> * 輸 入
71、 : num ,ack</p><p> * 輸 出 : 0或1。發(fā)送成功返回1,發(fā)送失敗返回0</p><p> * 備 注 : 發(fā)送完一個(gè)字節(jié)I2C_SCL=0, 需要應(yīng)答則應(yīng)答設(shè)置為1,否則為0</p><p> ******************************************
72、*************************************/</p><p> uchar I2C_SendByte(uchar dat, uchar ack)</p><p><b> {</b></p><p> uchar a = 0,b = 0;//最大255,一個(gè)機(jī)器周期為1us,最大延時(shí)255us。</p
73、><p> for(a=0; a<8; a++)//要發(fā)送8位,從最高位開(kāi)始</p><p><b> {</b></p><p> I2C_SDA = dat >> 7; //起始信號(hào)之后I2C_SCL=0,所以可以直接改變I2C_SDA信號(hào)</p><p> dat = dat <<
74、; 1;</p><p> I2C_Delay10us();</p><p> I2C_SCL = 1;</p><p> I2C_Delay10us();//建立時(shí)間>4.7us</p><p> I2C_SCL = 0;</p><p> I2C_Delay10us();//時(shí)間大于4us<
75、;/p><p><b> }</b></p><p> I2C_SDA = 1;</p><p> I2C_Delay10us();</p><p> I2C_SCL = 1;</p><p> while(I2C_SDA && (ack == 1))//等待應(yīng)答,也就是等待
76、從設(shè)備把I2C_SDA拉低</p><p><b> {</b></p><p><b> b++;</b></p><p> if(b > 200) //如果超過(guò)200us沒(méi)有應(yīng)答發(fā)送失敗,或者為非應(yīng)答,表示接收結(jié)束</p><p><b> {</b><
77、;/p><p> I2C_SCL = 0;</p><p> I2C_Delay10us();</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> }</b></p>
78、<p> I2C_SCL = 0;</p><p> I2C_Delay10us();</p><p> return 1;</p><p><b> }</b></p><p> /*********************************************************
79、**********************</p><p> * 函 數(shù) 名 : I2cReadByte()</p><p> * 函數(shù)功能 : 使用I2c讀取一個(gè)字節(jié)</p><p> * 輸 入 : 無(wú)</p><p> * 輸 出 : dat&
80、lt;/p><p> * 備 注 : 接收完一個(gè)字節(jié)I2C_SCL=0</p><p> *******************************************************************************/</p><p> uchar I2C_ReadByte()</p><
81、;p><b> {</b></p><p> uchar a = 0,dat = 0;</p><p> I2C_SDA = 1;//起始和發(fā)送一個(gè)字節(jié)之后I2C_SCL都是0</p><p> I2C_Delay10us();</p><p> for(a=0; a<8; a++)//接收8
82、個(gè)字節(jié)</p><p><b> {</b></p><p> I2C_SCL = 1;</p><p> I2C_Delay10us();</p><p> dat <<= 1;</p><p> dat |= I2C_SDA;</p><p>
83、I2C_Delay10us();</p><p> I2C_SCL = 0;</p><p> I2C_Delay10us();</p><p><b> }</b></p><p> return dat;</p><p><b> }</b></p&g
84、t;<p><b> 3 i2c.h</b></p><p> #ifndef __I2C_H_</p><p> #define __I2C_H_</p><p> #include<reg51.h></p><p> //---重定義關(guān)鍵詞---//</p><
85、p> #ifndef uchar</p><p> #define uchar unsigned char</p><p><b> #endif</b></p><p> #ifndef uint </p><p> #define uint unsigned int</p><p&
86、gt;<b> #endif</b></p><p> //--定義使用的IO口--//</p><p> sbit I2C_SCL = P2^1;</p><p> sbit I2C_SDA = P2^0;</p><p> //--聲明全局變量--//</p><p> void
87、I2C_Delay10us();</p><p> void I2C_Start();</p><p> void I2C_Stop();</p><p> uchar I2C_SendByte(uchar dat, uchar ack);</p><p> uchar I2C_ReadByte();</p><p
88、><b> #endif</b></p><p><b> 3.3 測(cè)試電路</b></p><p> 測(cè)試電路布線圖如圖16所示。</p><p> 圖16 測(cè)試電路布線圖</p><p><b> 4 調(diào)試過(guò)程及結(jié)論</b></p><p
89、> 4.1 調(diào)試過(guò)程的現(xiàn)象</p><p> 連接好電路后,將單片機(jī)程序下載進(jìn)芯片,打開(kāi)開(kāi)發(fā)板總開(kāi)關(guān),數(shù)碼管顯示當(dāng)前光照度對(duì)應(yīng)的電壓值,不過(guò)有小幅跳變,當(dāng)用手完全遮擋光電池的光敏面時(shí),數(shù)碼管顯示0,當(dāng)改變光強(qiáng)時(shí),數(shù)碼管顯示的電壓值隨之變化,且光強(qiáng)變小時(shí),電壓值降低,光強(qiáng)變大時(shí),電壓值增加,即趨勢(shì)是一樣的。</p><p> 4.2 調(diào)試過(guò)程中出現(xiàn)的問(wèn)題</p>&
90、lt;p> 1 使用燒錄器下載單片機(jī)程序的過(guò)程中,發(fā)現(xiàn)程序不可下載,下載了相應(yīng)的驅(qū)動(dòng)后,仍然有問(wèn)題,在老師的指點(diǎn)下,將P3口的接線換到別的接口,并且更改了程序后正常下載程序。</p><p> 2 數(shù)碼管顯示亂碼且順序不對(duì),因?yàn)槎芜x和位選接反了,更改之后,正確顯示。</p><p> 3 數(shù)碼管顯示的電壓值跳變范圍太大,難于讀數(shù),后來(lái)將程序進(jìn)行了一些更改,電壓值稍有跳變。<
91、;/p><p> 4 數(shù)碼管顯示的電壓值在光強(qiáng)較大時(shí),變化趨勢(shì)不對(duì),在調(diào)節(jié)了滑動(dòng)變阻器的阻值后趨勢(shì)變化正確。</p><p><b> 4.3 調(diào)試結(jié)論</b></p><p> 本系統(tǒng)的設(shè)計(jì)是基于Si光電池的照度計(jì)設(shè)計(jì)與調(diào)試,設(shè)計(jì)的電路基本可實(shí)現(xiàn)光照度的測(cè)量,且測(cè)量范圍為0-200lx,測(cè)量誤差7.4lx。</p><p
92、><b> 5 心得體會(huì)</b></p><p> 在學(xué)習(xí)光電技術(shù)這門(mén)課程的過(guò)程中,了解到了光照度的概念,認(rèn)識(shí)到了光照度與人們生活的密切聯(lián)系,因此,測(cè)量生活環(huán)境的光照度是非常重要的。此次課程設(shè)計(jì)給了我一個(gè)很好的實(shí)踐機(jī)會(huì)來(lái)設(shè)計(jì)電路并測(cè)量光照度的值。</p><p> 在剛拿到題目時(shí),感覺(jué)無(wú)從下手,后來(lái),查找了相關(guān)資料并且和同學(xué)討論后,漸漸有了思路,清楚了此次
93、需要完成的目標(biāo)以及如何實(shí)現(xiàn)。準(zhǔn)備過(guò)程中,查閱了相關(guān)芯片的資料,進(jìn)一步了解了其用法,并且提高了自己實(shí)際使用相關(guān)電子器件的能力。</p><p> 在連接電路的過(guò)程中,雖然不會(huì)像以前在面包板上連接時(shí)要求不許飛線和跨線,但由于平時(shí)連接的少,連接難度還是比較大的,不過(guò),耐心連仍然是可以完成的。在這個(gè)過(guò)程中,進(jìn)一步熟悉了相關(guān)電路的連接。</p><p> 由于在單片機(jī)課程中,沒(méi)有自己進(jìn)行程序的下
94、載,相關(guān)軟件的使用并不是非常熟練,雖然有了相關(guān)軟件,可是仍然不能正常下載程序,后來(lái)在同學(xué)的幫助下,下載了相關(guān)驅(qū)動(dòng),才順利將程序下載到芯片中。</p><p> 此次課程設(shè)計(jì),獲益匪淺,不僅將理論知識(shí)和實(shí)際聯(lián)系起來(lái),加深了自己對(duì)Si光電池和光照度的理解,通過(guò)數(shù)碼管顯示的電壓值和照度計(jì)照度值的比較,直觀的了解了光照度這一概念,同時(shí)也更加熟練的掌握了proteus和keil等軟件,并且提高了自己解決問(wèn)題的能力。<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于si光電池的照度計(jì)設(shè)計(jì)與調(diào)試
- 采用硅光電池實(shí)現(xiàn)光照度計(jì)電路設(shè)計(jì)與分析
- 光照度計(jì)
- 照度計(jì)原理分析
- 高精度照度計(jì)的設(shè)計(jì).pdf
- 色溫照度計(jì)的研制.pdf
- 基于單片機(jī)數(shù)顯照度計(jì)的設(shè)計(jì).pdf
- 照度計(jì)的分類(lèi)和使用方法
- 基于嵌入式光照度計(jì)的研究.pdf
- 比較照度計(jì)、光強(qiáng)計(jì)、亮度計(jì)、光輻射計(jì)
- 光電池的制備方法與應(yīng)用
- 自制光照度計(jì)立項(xiàng)申請(qǐng)書(shū)
- mk350光譜計(jì)色溫照度計(jì)在照明行業(yè)的應(yīng)用
- 自制光照度計(jì)立項(xiàng)申請(qǐng)書(shū)
- 路燈照度計(jì)算
- 照度計(jì)算書(shū)
- 數(shù)字式照度計(jì)使用說(shuō)明書(shū)
- 照度計(jì)全自動(dòng)檢定系統(tǒng)研究.pdf
- 燈光的照度計(jì)算
- 照度計(jì)法測(cè)定乳液穩(wěn)定性的研究.pdf
評(píng)論
0/150
提交評(píng)論