王改芳, 楊正祥
(1. 中國地質大學(武漢) 信息技術教學實驗中心, 湖北 武漢 430074;2. 武漢交通職業學院 電子信息工程學院, 湖北 武漢 430065)
?
基于51單片機的CCD驅動程序和電路設計
王改芳1, 楊正祥2
(1. 中國地質大學(武漢) 信息技術教學實驗中心, 湖北 武漢430074;2. 武漢交通職業學院 電子信息工程學院, 湖北 武漢430065)
根據單片機與光電檢測課程實驗的要求,開展實用性項目設計及啟發式教學,將“基于51單片機的CCD驅動程序和電路設計”作為一個實戰性、探索性實踐教學訓練項目,主要工作包括:產生驅動CCD工作所需的時序脈沖;相關電流值經過驅動器放大;相關信號的延時處理。由單片機I/O口輸出時序信號驅動CCD工作,具有靈活方便的特點,經測試證明程序和電路符合應用要求。
51單片機; CCD驅動; 電路設計; 實踐教學
電荷耦合器件(charge-coupled device,CCD)常作為圖像傳感器的轉換器件,為人類探索微觀世界和瞬態運動過程提供了豐富的視覺信息。目前,CCD應用技術已經成為光、機、電和計算機相結合的高新技術,其應用研究涉及機器人視覺系統、安全保衛系統、智能交通系統、現代檢測技術、醫學圖像采集、廣播電視以及遙感遙測等多個領域,其中,現代檢測技術是其最活躍、最富有成果的新興應用領域之一[1-2]。
筆者帶領學生討論和嘗試完成了基于51單片機的CCD電路和驅動程序設計,其設計過程充分應用了單片機的理論知識和CCD的綜合性能,體現了設計性、工程實踐性[3]、啟發進階性[4]和項目驅動性,對學生是一次顯著的檢閱、磨煉和提升。
CCD的驅動脈沖包括兩類:一是光電轉移用的光積分脈沖,二是自掃描用的轉移脈沖(包括掃描輸出電荷檢測放大器的復位脈沖)。CCD的驅動脈沖由5種邏輯信號組成(見圖1):Φp是為光敏柵施加的光積分脈沖;ΦSH為轉移脈沖;ΦRS為復位脈沖;Φ1和Φ2為雙相轉移脈沖。Φ1和Φ2二者交替變化,在時間上相差π。因為ΦP由CCD片內提供,實際上驅動CCD只需要ΦSH、Φ1、Φ2和ΦRS4個信號[5-7]。CCD要求一個ΦSH周期中至少有1118個Φ1脈沖,即TSH>1118TΦ1。ΦRS信號邊沿應對準實線位置,但為簡化編程,先按虛線位置處理,然后用硬件延時校正。

圖1 CCD驅動脈沖信號時序圖
整個系統的硬件結構如圖2所示。在單片機的XTAL1和XTAL2端接上晶振作為定時單元,并且并聯2個25 pF的小電容作頻率微調。在RESET(簡記為RST)和Vcc端之間接一個10 μF的電容,而在RST與Vss端之間接一個10 kΩ的下拉電阻,則可實現單片機上電自動復位。

圖2 51單片機驅動CCD硬件電路圖

ΦRS脈沖應比其他3個脈沖提前一些,而由單片機輸出的信號全部是同步的,所以需要將P1.1—P1.3這3個端口輸出的信號延時,采用反相再反相的方法來實現。在P1口各輸出端和CCD各信號輸入端之間加上驅動器,適當放大P1口輸出的數字量電流。驅動器可以采用數據鎖存器74LS273(8D觸發器)、74LS373(8D鎖存器)或功率反相器74LS06(反相2次),也可用線性運算放大器(例如常用的MA741)對驅動電平稍加調整。
2.1光積分脈沖信號的產生
如圖3所示,AB段為CCD光積分時的驅動信號,出現在圖1的前一階段。P1.3輸出ΦSH信號,P1.2 輸出Φ1信號,P1.1輸出Φ2信號,P1.0輸出ΦRS信號。給圖3的各點賦值如表1所示。

圖3 CCD光積分脈沖驅動信號示意圖

點號二進制值十六進制值點號二進制值十六進制值點10100B04H點51100B0CH點20101B05H點61101B0DH點31100B0CH點70100B04H點41101B0DH點80101B05H
光積分過程的信號輸出比較容易處理,因為沒有轉移指令,所以只需要把各語句的執行時間算準確就可以了。點1指令為:MOV P1,#04H,其他類推。
2.2轉移脈沖信號的產生
由于單片機是靠指令產生I/O口的輸出邏輯狀態來產生驅動時序,為了獲得精確的CCD驅動時序,最好避免使用循環結構。因為循環結構是用轉移指令實現的,轉移指令根據條件產生的程序分支在不同條件下執行的指令周期數是不同的,這樣會造成CCD的驅動時序不準確。如果要使用轉移指令,則需要精心配置指令,避免在驅動時序的局部造成相位上的遲滯而降低驅動頻率[9-10]。
在自掃描期間(即在圖1的后一階段)產生轉移脈沖信號。此驅動信號重復變化,故取一個變化周期(設為CD段),見圖4。據圖4給各點的賦值見表2。

圖4 轉移脈沖信號示意圖

點號二進制值十六進制值點號二進制值十六進制值點10010B02H點30100B04H點20011B03H點40101B05H
由表2可見,一個變化周期需要給P1口賦值4次,一個語句最短為1字節,那么一個變化周期最短也需要4字節。在不用循環結構的情況下,自掃描過程至少需要4×1118=4472字節的存儲空間;而51單片機內部程序存儲器為4 KB(即4096字節),可知51單片機的程序存儲器不能存下整個程序。既然不可能完全避免轉移指令,則應避免雙重循環結構,故采用若干重復的單循環結構填補其他指令,以解決不同分支入口處周期數不同的問題,使產生的驅動時序嚴格符合要求[11]。
循環次數計數器R1是一個8位寄存器,能存儲的最大數為28=256。256×4<1118<256×5,所以至少需要5個單循環,以達到需要的輸出次數。使用DJNZ R1,LOOP指令是對R1減1再判0,當R1減至0時,就轉向下一行指令而不執行跳轉,則下一個循環中就會執行轉移指令256次。判0而不跳轉的時鐘周期為1 TM,計算得知正好輸出1118個周期的R1值:256×4=1024,1024-4=1020,1118-1020=98。考慮到最后一個周期還要返回程序首地址,需要加轉移指令,肯定會有不對稱波形,所以使CCD多輸出2個信號,即給R1賦初值100。雖然輸出次數會大于1118,但并不會使驅動出現什么問題,只是多了空像元。
由表2知,一個變化周期的基本指令為:MOV P1,#02H;MOV P1,#03H;MOV P1,#04H;MOV P1,#05H。由于每個單循環內都加上轉移指令,必定使第4條基本指令的持續時間加長,引起信號的不對稱。經完善后,每個單循環內的程序設計為(設一個機器周期為1 TM):
LOOP:MOV P1,#02H給P1口賦值0010,輸出點1信號2TM
NOP維持前狀態1TM
MOV P1,#03H給P1口賦值0011,輸出點2信號2TM
NOP維持前狀態1TM
MOV P1,#04H給P1口賦值0100,輸出點3信號2TM
NOP維持前狀態1TM
INC P1給P1口賦值0101,輸出點4信號1TM
DJNZ R1,LOOP轉回LOOP,開始的指令新周期2TM
以上程序的MOV和DJNZ指令都需要2個機器周期。為了使波形對稱,使每次輸出數據所用時間相等,所以對P1口賦值05H時,使用1 TM的INC指令,而其他不對稱處用NOP補充。顯然每個輸出數據所用時間都為3 TM。
經過調試,筆者發現一個錯誤。用EasyPack SLD 8052F仿真,取示波器一個周期的波形觀察,A段占用0.75格,B段占用1.5格,C、D段均占用1.125格,如圖5所示。可見波形是不對稱的,而且ΦRS的占空比在50%以上。因為ΦRS為復位脈沖,若復位脈沖(“1”電平)過長,會使“0”相對變短。只有當ΦRS=0時,信號才可以輸出,如果復位時間過長輸出時間過短,會使信號還沒來得及完全輸出就會被復位,會影響CCD的檢測效果。

圖5 示波器檢測波形示意圖
通過檢查原因可知,這是一個概念上的錯誤。指令周期表示CPU執行一條指令所需要的時間,對于MOV指令來說,就是把數據傳送到指定地方所用的時間。那么在開始執行一條MOV指令時,并沒有把數據送到指定處,而是在指令執行完后,數據才出現在指定處。則初始程序中每個信號在P1口保持時間分別為:(02H)1+2=3、(03H)1+2=3、(04H)1+1=2和(05H)2+2=4。可以看出有2段信號輸出時長不對稱,和示波器測出的不對稱信號A、B段相符合(見圖5)。
修正后的指令單元程序為:
LOOP1:MOV P1,#03H03H維持1TM
INC P104H維持4TM
NOP
NOP
MOV P1,#05H05H維持1TM
MOV P1,A02H維持4TM
DJNZ R1,LOOP1
在該指令單元前面要給R1賦值100、給A賦值02H。該指令單元執行完后,后面還有4個同樣的指令單元。唯一不同的是它們的循環次數:第一個單元循環100次,后四個單元循環256次。
由程序計算各數值延時可知,4個狀態的維持時間符合占空比要求。該指令單元是把原來的點2作為起點,所以在程序中要注意驅動信號的完整性,在程序最開始要加上MOV P1,#02H;NOP;NOP;在程序最后要加上MOV P1,#03H。
所設計的基于51單片機的CCD驅動系統驅動信號的頻率較高、具有較好的穩定性。單片機程序簡短,接口簡單,制作成本較低。學生在教師的啟發和指導下探索完成項目,得以更深刻理解和掌握知識,并鍛煉了靈活應用知識和查錯改錯的能力。
References)
[1] 牟冰,張愛軍,李冬萍,等.CCD器件與光學儀器配接的物像關系及相關技術[J].實驗技術與管理,2006,23(9):32-34.
[2] 王愛星,饒黃云.CCD電子顯示系統輔助物理實驗教學[J].實驗室研究與探索,2010,29(10):239-240.
[3] 張富貴,黃海松,呂敬堂,等.單片機設計性實驗與工程實踐能力的培養[J].實驗技術與管理,2011,28(2):135-138.
[4] 唐露新,范航郡,吳黎明,等.單片機技術課程啟發進階式實驗教學探索[J].實驗室研究與探索,2015,34(9):203-207.
[5] 張智輝,田地,楊義先.線陣CCD驅動電路設計的幾種方法[J].儀表技術與傳感器,2004(6):32-33.
[6] 李旭光,元秀華.表面等離子體(SPR)檢測電路設計[J].中國醫學物理學雜志,2003,20(4):267-269.
[7] 李景林.CCD驅動方式的比較[J].微計算機信息,2010,26(2):192-193.
[8] 胡乾斌.單片微型計算機原理與應用[M].武漢:華中科技大學出版社,2014.
[9] 賀俊華.雙棱鏡自適應表面等離子共振傳感裝置的研究[D].武漢:中國地質大學(武漢),2008.
[10] 張智輝.近紅外光譜儀的陣列檢測技術研究[D].長春:吉林大學,2002.
[11] 張化朋.用單片機驅動線陣CCD的探討[J].光學技術,2000,26(4):342-347.
CCD driver and circuit design based on 51 single chip microcomputer
Wang Gaifang1, Yang Zhengxiang2
(1. Experimental Teaching Center for Information Technology,China University of Geoscience,Wuhan 430074,China; 2. Department of Electronics and Information Engineering,Wuhan Technical College of Communications,Wuhan 430065,China)
According to the Single Chip Microcomputer and Photoelectric Detection course’s experimental requirement, this article carries out practical project design and heuristic teaching. Taking CCD driver and circuit design based on 51 single chip microcomputer as a practical and exploratory training project,the main work includes producing the pulse sequence required to driver CCD,amplifying current value by driving, and delaying correlation signals. The I/O ports of single chip microcomputer output timing signal to drive CCD have the characteristics of flexibility and convenience. The test proves that the program and circuit can meet the application requirements.
51 single chip microcomputer; CCD driver; circuit design; practical teaching
10.16791/j.cnki.sjg.2016.09.035
2016-05-04
湖北省教育廳科學研究項目(Q20106401);全國交通運輸職業教育教學指導委員會2015年交通運輸職業教育科研項目(2015B44)
王改芳(1975—),女,山西陽泉,在讀博士研究生,講師,主要研究方向為軟件工程、數據處理和實驗教學.
TN386.5; G424
A
1002-4956(2016)9-0137-03