中國教育機器人大賽教育機器人創(chuàng)意設計項目報告書_第1頁
中國教育機器人大賽教育機器人創(chuàng)意設計項目報告書_第2頁
中國教育機器人大賽教育機器人創(chuàng)意設計項目報告書_第3頁
中國教育機器人大賽教育機器人創(chuàng)意設計項目報告書_第4頁
中國教育機器人大賽教育機器人創(chuàng)意設計項目報告書_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、2012 中國教育機器人大賽教育機器人創(chuàng)意設計項目報告書項目名稱:無線協(xié)作搬運機器人 學 校: 院 系: 專 業(yè): 學生姓名: 指導教師: 時 間:2012年11月20日 目錄1.設計任務與要求.12.方案設計與論證.13.硬件單元電路設計.23.1主控制電路.23.2 循跡電路.33.3 電源模塊.43.4 最小系統(tǒng)原理圖.43.5物塊顏色識別傳感器.43.6無線通信傳感器.44.安裝與調(diào)試.54.1 電路的安裝.54.2 電路的調(diào)試.54.3 軟件的調(diào)試.55. 性能測試與分析.55.1 循跡模塊.55.2 tcs3200顏色傳感器.55.3 nrf905通信模塊無線通信.56.結論與心得

2、.67.致謝.68.參考文獻.69. 程序清單.69.1 無線通信部分.69.2 顏色傳感器部分.159.3 主程序部分.19 9.3.1 機器人a主程序.19 9.3.2 機器人b主程序.39 摘要:目前,隨著現(xiàn)代傳感器技術、自動控制技術以及網(wǎng)絡通信技術的不斷提高和完善,機器人技術的發(fā)展更加趨于自動化和智能化。機器人愛好者藉此趨勢設計了各種各具風格的機器人。本設計以兩個機器人為主體,這兩個機器人通過相互協(xié)作,以推的方式進行物體的搬運并將不同顏色的物體加以分類。通過無線通信控制搬運過程。該設計是以at89s52為系統(tǒng)核心,結合trc5000尋跡模塊、nrf905無線通信模塊和tcs3200顏色

3、傳感器模塊,綜合了運用機器人技術、現(xiàn)代傳感器技術,自動控制技術。關鍵詞:無線搬運、機器人、tcs3200顏色傳感器、nrf905無線通信模塊1 設計任務與要求設計兩個智能搬運機器人,由兩個搬運機器人在一類似蜘蛛網(wǎng)的循跡圖里交替搜尋物塊,讓機器人識別出物塊的顏色,并將物塊搬運至對應的物體存放區(qū),如果正在搬運物塊的那個機器人發(fā)現(xiàn)有另一個搬運機器人占用了它的行走路線,它就會馬上通知另一個搬運機器人為它讓路,當該機器人把物體搬運到目的地后,它就會通知另一個機器人搜尋物體,如此循環(huán),直到把所有物體搬運完。實物圖如下圖所示: 圖1-1 搬運路線圖 圖1-2 機器人實物圖2 方案設計與論證方案一:通過51單

4、片機外接nrf905無線模塊實現(xiàn),這種51單片機非常普遍,主要運用于小的系統(tǒng),但是如果要處理比較復雜的任務就會非常吃力,51單片機是我們學習編程入門很好的工具,操作簡單方便。方案二:采用cc2510無線單片機來實現(xiàn)任務,cc2510是一種低成本的無線soc,也是為低功耗無線應用而設計。其工作在2.4ghz頻段,此芯片包含標準的增強型8051mcu和一個收發(fā)芯片。其通信更是其最大優(yōu)點但本設計中沒有很復雜的功能要實現(xiàn),cc2510操作起來比較難,并且cc2510外接的可控io端口數(shù)量較少,不能滿足我們的設計需求。方案論證:通過以上比較,對于通過用51單片機外接nrf905無線模塊實現(xiàn)明顯足以滿足我

5、們的設計要求。綜合以上論述,我們選擇方案一。3 硬件單元設計3.1 主控制電路以采用plcc封裝at89s52單片機作為主控制器,at89s52單片機是靠程序運行的,并且可以修改。8051 cpu與mcs-51 兼容,全靜態(tài)工作:0hz-24khz,4k字節(jié)可編程flash存儲器(壽命:1000寫/擦循環(huán)),三級程序存儲器保密鎖定,128*8位內(nèi)部ram,32條可編程i/o線,兩個16位定時器6個中斷源,可編程串行通道 ,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時鐘電路。此控制芯片資源豐富,但價格比較貴,盡管它可以實現(xiàn)各種復雜的邏輯功能,功耗小,在此非常適合,外圍接無線模塊進行控制機器人的搬運。3

6、.2 循跡電路循跡電路如圖所示: 圖3-2-1 尋跡電路圖3-2-2 循跡電路pcb圖我們用的循跡模塊是用貼片元件來制作,類似工業(yè)制板,制作設備由學校提供。該制作過程大大提高了我們的制板技能和焊接技術。我們用到的紅外傳感器是tcr5000紅外對管,傳感器的紅外發(fā)射三極管不斷發(fā)射紅外線,當發(fā)射出的紅外線沒有被反射回來或者被反射回來但強度不夠大時,光敏三極管一直處于關斷狀態(tài),此時模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);被監(jiān)測物體出現(xiàn)在監(jiān)測范圍內(nèi)時,紅外線被反射回來且強度足夠大,光敏三極管飽和,此時模塊的輸出端為高電平,指示二極管被點亮。tcrt5000光電傳感器模塊是基于tcrt5000

7、紅外關電傳感器設計的一款紅外反射式光電開關,傳感器采用高發(fā)射功率紅外光電二極管和高靈敏度光晶體管組成,輸出信號經(jīng)施密特電路整形,穩(wěn)定可靠。3.3 電源模塊電源電路圖如圖3-4-1所示: 圖3-3 電源部分電路圖該穩(wěn)壓電路主要實現(xiàn)5v(供給控制芯片及其它模塊)、6v(供給舵機)和3.3v(nrf905無線模塊需要3.3v的電壓)穩(wěn)壓,采用lm7805、lm7806和lm1117芯片作為穩(wěn)壓芯片。這些穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。它的樣子象是普通的三極管,to- 220 的標準封裝,也有l(wèi)m9013樣子的to-92封。用7805、7806和1117來組成穩(wěn)壓電源

8、所需的外圍元件極少,電路內(nèi)部還有過流、過熱及調(diào)整管的保護電路,使用起來可靠方便,而且價格便。3.4 at89s52最小系統(tǒng)原理圖 圖3-4 單片機最小系統(tǒng)3.5 物塊顏色識別傳感器根據(jù)德國物理學家赫姆霍茲的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍)混合而成的。通過顏色傳感器測出構成各種顏色的三原色的值,就能知道物體的顏色。以前的顏色傳感器通常是在獨立的光電二極管上覆蓋經(jīng)過修正的紅、綠、藍濾波片,然后對輸出信號進行相應的處理,才能將顏色信號識別出來;有的將兩者集合起來,但是輸出模擬信號,需要一個a/d電路進行采集,對該信號進一步處理,才能進行識別,增加了電路的復雜性,并且存在較大

9、的識別誤差,影響了識別的效果。這里我們選擇taos公司推出的可編程彩色光到頻率的轉(zhuǎn)換器tcs3200顏色傳感器來識別物塊顏色。它的輸出信號時數(shù)字量,因此它能直接與微處理器或邏輯電路相連接,這使得組成電路變得簡單。它與測試物體的最佳位置大約為1厘米。tcs3200的引腳圖如下:圖3-5 tcs3200引腳圖3.5 無線通信模塊方案一:選擇nrf2401無線模塊。nrf2401內(nèi)置地址解碼器、先進先出堆棧區(qū)、調(diào)解處理器、時鐘處理器、gfsk濾波器、低噪聲放大器、頻率合成器、功能放大器等功能模塊,它具有收發(fā)模式、配置模式、空閑模式和關機模式,需要很少的外圍元件,且工作時能耗低(工作電流僅幾十毫安,待

10、機模式下電流為十幾微安),內(nèi)部有內(nèi)置天線,使用方便。但市場價格比較貴。方案二:選擇nrf905無線模塊。nrf905單片無線收發(fā)器是挪威nordic公司推出的單片射頻發(fā)射芯片,工作于433/868/915mhz個ism頻道,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制調(diào)解器等功能模塊,它具有多個通訊頻道,滿足多點通訊、分組跳頻等應用需求,通道切換時間短(小于6us),能進入關機模式和空閑模式,使用起來節(jié)能方便,且價格便宜。綜上所述,根據(jù)本設計的需求,nrf905無線模塊已能滿足我們的設計需求。4 安裝與調(diào)試4.1 電路的安裝與調(diào)試做好循跡模塊,并調(diào)好循跡傳感器的靈敏度。在制作模塊的過程中,

11、焊接貼片元件時不要出現(xiàn)虛焊、漏焊等,因為一旦出現(xiàn)電路出問題,虛焊是比較難查找的。還要注意元件的位置要對應,極性不要接反。電路板做好后,就可以把循跡模塊安裝在機器人上了,安裝過程中要注意傳感器與水平地面的距離(距離一般在1cm左右),連接時要注意每個紅外對管對應輸出接口的位置,以免機器人運行出錯。接下來把其他模塊安裝好。安裝顏色傳感器時,要把它牢牢的固定在它所能檢測到物體顏色的特定位置(注意:它與檢測物體的最佳距離大約為1厘米)。4.3 軟件的調(diào)試5 性能測試與分析5.1 循跡模塊讓機器人在行走軌跡上運行,機器人反應靈敏,能穩(wěn)定的按照特定軌跡行走,這說明循跡模塊性能穩(wěn)定。如果出現(xiàn)機器人跑出軌道的

12、現(xiàn)象,這可能是因為循跡模塊靈敏度未調(diào)到最佳狀態(tài),也可能是因為傳感器距離水平地面過低或過高,還可能是因為提供的電壓過低等因素造成。5.2 顏色傳感器在調(diào)試程序的過程中,當機器人接觸到物塊時,機器人很快就能識別出物塊顏色,并立即將物塊運至物體所屬區(qū)域。5.3 nrf905無線通信模塊正確將nrf905無線模塊安裝在機器人上,下載程序,讓兩個機器人進行交替搬運,當一個機器人搬運一個物塊到達目的地后,就通知另一個機器人去搜尋要搬運的物塊,調(diào)試過程中,機器人之間通信正常。如果出現(xiàn)通信問題,這可能是因為收發(fā)頻率或收發(fā)地址不一致造成的。在應用過程中需求注意的問題:一定要把接收天線接上,以免通信不穩(wěn)定;提供的

13、電壓不能超過3.6伏,否則會燒壞該模塊。 6 結論與心得通過我們小組三人的共同努力,制作完成了搬運群機器人,特色鮮明,較好的完成了預期的目標。而且通過溝通交流討論盡可能的增加了作品設計的創(chuàng)新功能,在整個過程中,我們在機器人設計和程序編寫方面獲得了很多經(jīng)驗,同時也了解到團隊精神的重要性。通過備戰(zhàn)這次中國教育機器人大賽創(chuàng)意設計和制作比賽,極大的鍛煉了我們的動手能力,通過將軟件開發(fā),電路設計,網(wǎng)絡通信,自動化控制,電子技術等多個學科融合在一起,做出令自己滿意的作品,很有成就感,通過這次活動,讓我明白不管做什么,只要努力了就會有收獲。作為一名大學在校本科生,除了學習理論知識要,還要勤于動手實踐,培養(yǎng)自

14、己的創(chuàng)新能力,動手能力,從而提升自己的綜合實力,為投入社會,為社會創(chuàng)造價值做好準備。7 致謝衷心感謝河池學院的領導和同學們,本次參賽是河池學院派遣學生參加全國機器人大賽,受到了全院領導和同學們的大力支持,在此一并表示感謝,在今后的日子里,我們會再接再厲,拿出更好的作品出來與大家一起分享。衷心感謝我的指導老師,在項目期間,他給予了眾多寶貴的經(jīng)驗,給我們的研制工作提供了很多硬件設備和指導,在此表示感謝。同時也感謝辛勤培育我們的老師!提供創(chuàng)新實驗室讓我們學習,營造了溫馨的第二課堂的氛圍。讓我們學到了知識能夠飛翔于廣闊的天際。8 參考文獻1康華光,鄒壽彬.電子技術基礎(數(shù)字部分)m.高等教育出版社,2

15、0022童詩白,華成英.模擬電子技術基礎m.清華大學出版社,20063吳線.實戰(zhàn)微功耗simplici ti無線網(wǎng)絡.出版地:電子產(chǎn)品世界,出版年2009.092011.10.29.9 程序清單9.1無線通信部分/-#define uint unsigned int #define uchar unsigned charuchar wuxian = 0; / 無線發(fā)送、接收標志位/-led顯示端口- sbit led=p27; uchar wx_jieshou = 0;uchar wx_fasong = 0;/*函數(shù)聲明*/void txpacket(uchar *txrxbuf,uchar

16、n) ;void spiwrite(unsigned char send);void nrf905_delay(int n); unsigned char spiread(void);void nrf905init(void);void config905(void);void settxmode(void) ;void txpacket(uchar *txrxbuf,uchar n) ;void rxpacket(void) ;void rx(void) ;void clear(void); /清空接收數(shù)組unsigned char checkdr(void); /檢查是否有新數(shù)據(jù)傳入 da

17、ta /-#define byte_bit0 0x01#define byte_bit1 0x02#define byte_bit2 0x04 #define byte_bit3 0x08 #define byte_bit4 0x10 #define byte_bit5 0x20 #define byte_bit6 0x40#define byte_bit7 0x80 /-bdata unsigned char data_buf;/可位尋址的片內(nèi)ran #define data7 (data_buf&byte_bit7) != 0) #define data0 (data_buf&byte_b

18、it0) != 0) sbit flag =data_buf7;sbit flag1=data_buf0;/- 發(fā)送數(shù)據(jù)緩沖區(qū)- #define txrxbuf_len 4 unsigned char txrxbuftxrxbuf_len=0x29,0x30,0x31,0x32; code txaddress4=0xcc,0xcc,0xcc,0xcc; unsigned char tf=0; /-nrf905工作模式控制端口- sbit txen=p33;/發(fā)射使能 2 33sbit trx_ce=p34;/發(fā)射接收使能 4 34sbit pwr=p32; / 1 32/-nrf905 數(shù)據(jù)交

19、換端口(spi)- sbit miso=p23;/輸出sbit mosi=p22;/輸入 sbit sck=p21;/時鐘sbit csn=p20;/使能 /-nrf905狀態(tài)端口- sbit am=p25; sbit dr=p24;sbit cd=p26; /-nrf905控制指令- #define wc 0x00 /寫配置寄存?#define rc 0x10 /讀配置寄存?#define wtp 0x20 /向tx-payload寄存器寫入發(fā)送有效數(shù)據(jù)#define rtp 0x21 /向tx-payload寄存器讀取發(fā)送有效數(shù)據(jù) #define wta 0x22 /向tx-addtess

20、寄存器寫入發(fā)送地址 #define rta 0x23 /向tx-addtess寄存器讀取發(fā)送地址 #define rrp 0x24 /從rx-payload寄存器讀取接收到的有效數(shù)據(jù)/-nrf905寄存器配置- unsigned char idata rfconf11=0x00, /配置命令/0x4c, /ch_no,配置頻段在430mhz字節(jié)0,配置頻段0x0c, /輸出功率為10db,不重發(fā),節(jié)電為正常模式 字節(jié)1,000 11000x44, /地址寬度設置,為4字節(jié)字節(jié)2,6:4 是tx地址寬度, 2:0是rx地址寬度0x04,0x04, /接收發(fā)送有效數(shù)據(jù)長度為4字節(jié)字節(jié)3(rx),字

21、節(jié)(tx):可設置為1,2,4,8,16,32 字節(jié),其中6,7 兩位為空,寫00,則4字節(jié)為:0000 0100 : 0x04 依次類推0xcc,0xcc,0xcc,0xcc, /接收地址字節(jié)5到字節(jié)8 0x58, /crc充許,8位crc校驗,外部時鐘信號不使能,16m晶振 字節(jié)9,;/=延時= void nrf905_delay(int n)uchar i;while(n-) for(i=0;i80;i+); /=spi讀函數(shù)= /步驟一:miso線準備好需要發(fā)送的數(shù)據(jù)位/步驟二:sck置高,主機讀取miso線上的數(shù)據(jù) /步驟三:sck置低,準備接收數(shù)據(jù)的下一位 / 以上步驟循環(huán)執(zhí)行8次

22、,通過spi從器件上讀取數(shù)據(jù)完成/數(shù)據(jù)傳送時候。高位在前,低位在后。unsigned char spiread(void) unsigned char j;for (j=0;j8;j+) data_buf=data_buf1; sck=1; if (miso)/讀取最高位,保存至最末尾,通過左移位完成整個字節(jié) data_buf|=byte_bit0; else data_buf&=byte_bit0; sck=0; return data_buf; /=spi寫函數(shù)= /步驟一:mosi線準備好需要發(fā)送的數(shù)據(jù)位/步驟二:sck置高,器件讀取mosi線上的數(shù)據(jù)/步驟三:sck置低,準備發(fā)送數(shù)據(jù)的

23、下一位/以上步驟循環(huán)執(zhí)行8次,通過spi從器件上發(fā)送數(shù)據(jù)完成/數(shù)據(jù)傳送時候。低位在前,高位在后。void spiwrite(unsigned char send) unsigned char i; data_buf=send; for (i=0;i8;i+) if (data7)/總是發(fā)送最高位 mosi=1;/spi輸入,主機寫操作 else mosi=0; sck=1; data_buf=data_buf1; sck=0; /-初始化nrf905-void nrf905init(void) csn=1;/ spi disable sck=0;/ spi clock line init lo

24、w dr=1;/ init dr for input am=1;/ init am for inputcd=1;/ init cd for input pwr=1;/ nrf905 power on trx_ce=0;/ set nrf905 in standby mode txen=0;/ set radio in rx mode /-初始化寄存器- /步驟一:csn置低電平,spi接口開始等待第一條命令/步驟二:調(diào)用spiwrite函數(shù),向nrf905發(fā)送wc指令,準備寫入配置信息/步驟三:反復調(diào)用spiwrite函數(shù),向器件配置寄存器寫入配置信息 /步驟四:csn置高電平,結束spi通訊

25、。即nrf905配置完成!void config905(void) uchar i; csn=0;/ csn片選信號,spi使能/spiwrite(wc);/ 向905芯片寫配置命令 for (i=0;i=650us) /步驟一:trx_ce=0;必須將次引腳置低,使905進入standby模式 /步驟二:發(fā)送rrp指令 /步驟三:循環(huán)調(diào)用spiwrite函數(shù),讀取接收到的數(shù)據(jù) /步驟四:等待dr和am引腳復位為低電平 / am 地址匹配,接收到有效地址,被置高 / dr 接收到有效數(shù)據(jù)包,并解碼后,被置高,當所有有效數(shù)據(jù)被讀取后,/ nrf905降am和dr置低,最后需要注意的是,必須首先設

26、置器件的 / 發(fā)送/接收模式才能保證有效的數(shù)據(jù)發(fā)生接收 /-設置nrf905進入接收模式- void setrxmode(void) txen=0; trx_ce=1; nrf905_delay(1); / nrf905_delay for mode change(=650us) /-發(fā)送數(shù)據(jù)打包-/步驟一:通過spiwrite函數(shù)發(fā)送wtp命令,準備寫入tx有效數(shù)據(jù) /步驟二:循環(huán)調(diào)用spiwrite向tx-payload寄存器寫入有效數(shù)據(jù)(中間必須夾有csn電平變化/步驟三:延時 /步驟四: 通過spiwrite函數(shù)發(fā)送wta命令,準備寫入tx地址 /步驟五:循環(huán)調(diào)用spiwrite向tx

27、-address寄存器寫入tx地址 /步驟六:trc_ce=1;開始發(fā)送數(shù)據(jù),延時,nrf905數(shù)據(jù)發(fā)送完成/當nrf905接收到一條完成的信息時,會將dr引腳置高。void txpacket(uchar *txrxbuf,uchar n) uchar i;txrxbuf0=n; nrf905init(); /初始化config905(); settxmode();/config905(); csn=0; spiwrite(wtp);/ write payload command for (i=0;i4;i+) spiwrite(txrxbufi);/ 寫入32直接發(fā)送數(shù)據(jù) csn=1; nr

28、f905_delay(1);/ 關閉spi,保存寫入的數(shù)據(jù)csn=0;/ spi使能,保存寫入的數(shù)據(jù) spiwrite(wta);/ 寫數(shù)據(jù)至地址寄存器for (i=0;i4;i+)/ 寫入四字節(jié)地址 寫入與對方地址一樣的地址 spiwrite(txaddressi); csn=1;/ 關閉spi trx_ce=1;/ 進入發(fā)送模式,啟動射頻發(fā)送 nrf905_delay(1);/進入shockburst發(fā)送模式后,芯片保存數(shù)據(jù) trx_ce=0;/ 發(fā)送完成后返回atandby模式while (dr!=1);nrf905_delay(10);led=0; nrf905_delay(300);

29、led=1;nrf905_delay(300);/發(fā)送后led閃爍 /-判斷數(shù)據(jù)接收狀態(tài)- unsigned char checkdr(void)/檢查是否有新數(shù)據(jù)傳入 data dr=1; /通過對端口寫1,可以使端口為輸入狀態(tài),這51的 特性。不熟悉者可以參閱51相關書籍作證(將dr端口設置為輸入狀態(tài)。) if (dr=1) dr=0; return 1; else return 0; /-nrf905接收到數(shù)據(jù)后讀取保存-void rxpacket(void) uchar i; nrf905_delay(1);/trx_ce=0;/ 設置905進入待機模式 nrf905_delay(10

30、0); trx_ce=0; csn=0;/ 使能spi nrf905_delay(1); spiwrite(rrp); /準備讀取接收到的數(shù)據(jù)for (i = 0 ;i 4 ;i+) txrxbufi=spiread();/ 通過spi接口從905芯片讀取數(shù)據(jù) csn=1;/禁用spi nrf905_delay(10); trx_ce=1; /-void clear(void) /清空接收數(shù)組uchar i;for(i=0;i4;i+)txrxbufi=0; /-數(shù)據(jù)接收- void rx(void) clear(); /清空接收數(shù)組nrf905init(); /初始化config905();

31、tf=0;setrxmode(); / 設置為接收模式 while (tf=0) if(dr)nrf905_delay(10); rxpacket(); if(txrxbuf1=0x30) switch (txrxbuf0) case 1: wx_jieshou = 1; break; case 2: wx_jieshou = 2; break; case 3: wx_jieshou = 3; break; led=0;nrf905_delay(300); led=1;nrf905_delay(300);/接收到數(shù)據(jù) 后閃爍 tf=1;dr=0; 9.2 顏色傳感器部分#include #de

32、fine uchar unsigned char#define uint unsigned intsbit tcs230_s2=p16;/tcs230 s2接單片機p1.0sbit tcs230_s3=p17;/tcs230 s3接單片機p1.1sbit tcs230_en=p30; /tcs230 en(e0)接gnduchar flat2 = 0;/顏色傳感器函數(shù)聲明/*=*/void baipingheng();void celiang();void judge_colour(uint rb1,uint gb1,uint bb1);void delayms(uint ms);/1ms基準

33、延時程序void baipingheng();/白平衡子程序void celiang();/實際顏色程序void delayms(uint ms);uint ryz,gyz,byz;/分別定義紅色因子 綠色因子 藍色因子uint rb,gb,bb;/rgb值/*=*/*= 白平衡子程序=*/void celiang() /*求r值* th0=(65536-10000)/256; tl0=(65536-10000)%256; th1=0; tl1=0; tcs230_s2=0; tcs230_s3=0;/選擇紅色濾光器 tcs230_en=0; tr0=1;/10毫秒開始計時 tr1=1;/開始

34、計數(shù) while(tf0=0);/等待定時器溢出 tf0=0;/清楚定時器0溢出標志 tr0=0;/關閉定時0 tr1=0; rb=(unsigned long)(th1*256+tl1)*255/ryz; if(rb255)rb=255;/判斷rgb值是否合法 /*求b值* th0=(65536-10000)/256; tl0=(65536-10000)%256; th1=0; tl1=0; tcs230_s2=0; tcs230_s3=1;/選擇藍色濾光器 tr0=1;/10毫秒開始計時 tr1=1;/開始計數(shù) while(tf0=0);/等待定時器溢出 tf0=0;/清楚定時器0溢出標志

35、 tr0=0;/關閉定時0 tr1=0; bb=(unsigned long)(th1*256+tl1)*255/byz; if(bb255)bb=255;/判斷rgb值是否合法 /*求g值* th0=(65536-10000)/256; tl0=(65536-10000)%256; th1=0; tl1=0; tcs230_s2=1; tcs230_s3=1;/選擇綠色濾光器 tr0=1;/10毫秒開始計時 tr1=1;/開始計數(shù) while(tf0=0);/等待定時器溢出 tf0=0;/清楚定時器0溢出標志 tr0=0;/關閉定時0 tr1=0; tcs230_en=1; gb=(unsi

36、gned long)(th1*256+tl1)*255/gyz; if(gb255)gb=255;/判斷rgb值是否合法 /*= 白平衡子程序=*/void baipingheng() /*求取紅色因子* th0=(65536-10000)/256; tl0=(65536-10000)%256; th1=0; tl1=0; tcs230_s2=0; tcs230_s3=0;/選擇紅色濾光器 tcs230_en=0; tr0=1;/10毫秒開始計時 tr1=1;/開始計數(shù) while(tf0=0);/等待定時器溢出 tf0=0;/清處定時器0溢出標志 tr0=0;/關閉定時0 tr1=0; ry

37、z=th1*256+tl1;/其實這里的比例因子應該為255/(th1*256+tl1) /*求取藍色因子* th0=(65536-10000)/256; tl0=(65536-10000)%256; th1=0; tl1=0; tcs230_s2=0; tcs230_s3=1;/選擇藍色濾光器 tr0=1;/10毫秒開始計時 tr1=1;/開始計數(shù) while(tf0=0);/等待定時器溢出 tf0=0;/清楚定時器0溢出標志 tr0=0;/關閉定時0 tr1=0; byz=th1*256+tl1;/其實這里的比例因子應該為255/(th1*256+tl1) /*求綠紅色因子* th0=(65536-10000)/256; tl0=(65536-10000)%256; th1=0; tl1=0; tcs230_s2=1; tcs230_s3=1;/選擇綠色濾光器 tr0=1;/10毫秒開始計時 tr1=1;/開始計數(shù) while(tf0=0);/等待定時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論