當一個電光源的光束射人到鏡面上時就會發(fā)生反射現象,,當我們讓光束以固定角度入射到鏡面上時,,就會在另一面反射出來。這時,,我們讓鏡面以水平方向中心軸為支點前后快速晃動時,,由于人眼的余輝效應,我們就會觀測到反射出來的光在顯示屏上呈現出一條豎向的光線,;同樣當我們以豎直方向中心軸為支點前后陜速晃動時,,我們就會在顯示屏上觀測到一條豎向的光線。
我們就以這種現象為模型,,讓點光源發(fā)出的光線先經過一個以水平中心軸為支點,,前后轉動的鏡面,反射出來的光線再經過一個以豎直中心軸為支點前后晃動的鏡面,。當兩面鏡子都不晃動時所產生的點稱為原點,;把其中一個鏡面沿水平方向軸晃動時,另一面鏡子不動時產生的光線稱為Y軸,;把其中的一面不動,,而另一面沿豎直方向軸晃動時
所產生的光線稱為x軸,。
這樣我們通過這兩個鏡子的不同晃動的組合就產生各種各樣的圖形,例如:通過晃動其中一個鏡面就可以產生一條橫線或者是豎線,,當兩個鏡面—起晃動時就可以產生斜線,、三角形、矩形和圓形,,當我們快速的在同部位上利用這些圖形的組合就可以形成各種美麗的圖案,,這就是我們在各種娛樂場所看到的燈光效果。
我們只需要利用上面所建立的坐標系和最后所需要產生的圖形,,就可以轉換成各種兩個不同的鏡面組合,。我們把鏡面中心軸固定,其中一測裝上彈簧這樣的恢復裝置,,另外
一側裝上動力裝置,,如:在一側貼上貼片,利用電磁鐵的吸引力就可以驅動鏡面晃動,;還可以利用耳機中的發(fā)聲裝置產生動力,。總之,,就是把鏡面的轉動轉化電量的變化,。
2硬件電路設計
在電路的設計中,我們只需要完成利用單片機控制兩個電量的可控變化就可以完成整體設計,。我們利用單片機的P0口和P 2口分別輸出兩個二進制數,,然后經過DA轉化為模擬信號,然后在經過功放電路之后傳給動力裝置,,這就是硬件設計的整體思路,。
下面分別進行詳細說明。
A控制部分:在學校教學中考慮到教學成本,,經常采用8 9C51作為控制核心,,因為其具有出色的性價比及可靠的穩(wěn)定性??刂破鞯淖饔檬俏覀兛梢岳每刂破魍瓿僧a生何種波形的選擇,,還要利用單片機的運算能力,運算各種圖形形成所需要的變化量,,還要利用單片機不斷的輸出各種中間變化量,,從而使電路中產生一種我們所需要的信號。電路是一個基本的最小系統(tǒng),,外加一個利用中斷源擴展的八個按鈕按鍵,,八個按鍵分別接P1口各位。按鍵的作用是:產生直線圖形,、產生三角形圖形,、產生矩形圖形,、產生圓型圖形、產生型圖形,、使圖形變大,、使圖形變小、使產生圖形閃爍的頻率變化,。具體連接具體原理是,,當我們按下其中某一個按鍵時,對應的電路信號就會從高電平變?yōu)榈碗娖?,這八個信號經過與電路的運算之后從 INTO端就會輸出一個低電平,,使單片機的外部中斷0上的信號變低,進人中斷程序,。這八個信號線和單片機的P1口相連,,從而傳給單片機一個對應的數值。從而使單片機判斷出,,是那個按鍵按下,,進而進行程序處理。
B外圍電路:把從單片機的PO口和P2口輸出的數據經過轉換為模擬信號,。這部分主要是AD轉換電路,,由于我們的顯示的圖形比較多,所以在圖案比較復雜時,,信號的變化頻率是比較決的,,具體的芯片型號需要根據圖形顯示時間以及閃爍變化的頻率計算后的數據來選擇。只要芯片的工作速度跟的上就行,。
C驅動部分:由于系統(tǒng)的動力部分是由電流驅動的,所以經過外圍電路輸出的電信號不能直接連接到動力裝置上,,需要經過一個功率放大電路加強電路輸出的驅動能力,,可以采用功放芯片或者是經典的OTC功率放大電路均可,后者可以提高制作者對模擬電路的理解和調試電路的能力,。
3軟件設計
當單片機上點復位后,,Po__P3口均輸出高電平,所以在上電復位之后,,我們首先用程序把所有端口置零,,使輸出電壓為零,從而使鏡面處于原始靜止位置,,并把中斷開啟,,并置一些初始值。
當程序開始運行之后就會進入圖形顯示的選擇程序,,我們設置一個延時程序,,當這段時問內沒有按鍵按下時,,單片機按照我們設置的初始值顯示一個固定的圖形;當這段時間內有按鍵按下時,,程序會根據我們按下的按鍵賦值,,從而顯示不同的圖形或改變圖形的大小或者是改變圖形閃爍的頻率。本段程序的按鍵判斷可用比較法來完成,,當有按鍵按下時,,程序會進入中斷,我們判斷Pl寄存器中的數據是否為FEH,,若是則說明此時P1.0連接的按鍵按下,,此時我們讓程序返回執(zhí)行某一圖形的顯示程序。圖形顯示程序是最重要的部分,,我們根據對應的按鍵按下時,,從中斷程序返回的數值判斷出,主程序中應該要執(zhí)行某個圖形的顯示程序,。圖形顯示程序中我們首先從直線開始說明,,直線顯示比較簡單,我們想顯示一條橫線的時候,,就從單片機的P2口輸出一組從H開始逐漸增大,,然后又逐漸減小的值,從而是動力裝置得到一個從0逐漸變大再逐漸變小的信號,,使其中一個鏡面沿中心軸逐漸的向一側偏轉,,然后在彈簧的恢復力的作用下漸漸復原,在顯示屏上投下一條橫線,。同樣想顯示豎線的時候,,我們只需要使程序從P2口輸出一段&H逐漸變大,然后由大逐漸變小的值即可,。
顯示一條斜線時,,根據函數Y:KX+B可知,當X軸上變化的值已知時,,就能算出對應的Y軸的值,,我們x軸上的數值從00H開始變大,然后變小時,,就能得到對應的Y的值的變化趨勢,,把這兩個值分別從P0口和P2口輸出,就會使兩個鏡子共同轉動,,使顯示的圖形呈Y=KX+B趨勢,。
同樣,我們想顯示三角形時,任何三角形都是有三條兩兩相交的有限的直線夠成,,分別記作Y=KX,,+B.,Y,,=K,,X,+BY= KX+B,,我們把X軸的變量從H逐漸變大,,再逐漸變小,而Y軸上的值分別按照各自的值在各自的區(qū)間內變化一次,,從而在P0口和P2口分別輸出一組對應的變化信號,,使輸出的圖形顯示出三角形。
最后,,矩形是由四條有限直線的構成,,并且是有兩組平行線,我們按照這個規(guī)律讓X軸和Y軸的數值各自變化一次,,即可得到結果,。型圖形,是由四條相交于一點的直線構成,,顯示的時候,,我們必須首先計算出,相交點的坐標,,然后分別按各自的變化規(guī)律,,從P0口和P2口輸出一次就行。圓形顯示時,,我們首先計算出圓點的坐標然后,,按照公式 Xz+Yz:Rz計算出各個點的坐標,進而輸出顯示即可,。
圖形的大小的確定,,圖形的大小是由兩個鏡面每次變化的最大范圍決定,當我們改變每次變化時X的最大值時,,就會改變各個圖形對應的大小。我們在程序的起始時,,給一個中間值,,當我們按下變大按鍵式,在中斷程序中改變這個值,,主程序中,,當X或者Y的值增大到這個值時,開始變小,。注意,,因為鏡面的轉動是有限的,,超過這個值時,光線就不會被反射,,所以當增大按鍵一直按下,,中間值就會一直增大,當達到極限值后,,就不在增大,。圖像變小按鍵的程序算法也一樣,只是變化時,,是讓中間值變小而已,。
圖形閃爍的原理,就是利用當我們讓入射光線和鏡面的夾角小于0,?;蛘呤谴笥?0。時,,光線就不會被反射到外界了,,所以,系統(tǒng)顯示時,,鏡面和 ^射光線的夾角應在0,。到90。之間,。我們在圖形完成一次整體顯示時,,改變P0和P2口的輸出值,使鏡面和光線的夾角小于0,?;蛘呤谴笥?0。,,使外界沒有顯示,,在運行延時程序,程序開始時給一個延時值,,通過按鍵按下時,,在中斷程序中改變這個延時值的大小,這樣當我們不斷的按這個按鍵時,,圖形的閃爍頻率從快到慢,,或者是從慢到快。系統(tǒng)程序總體流程圖如圖2所示,。
本設計為單片機應用實例一種可行的方案,,但是由于經驗和水平有限,在設計中難免存在一些缺陷,還望批評指正,。