基于單片機簡單實現(xiàn)圖形顯示的方法
3軟件設計
當單片機上點復位后,Po__P3口均輸出高電平,所以在上電復位之后,我們首先用程序把所有端口置零,使輸出電壓為零,從而使鏡面處于原始靜止位置,并把中斷開啟,并置一些初始值。
當程序開始運行之后就會進入圖形顯示的選擇程序,我們設置一個延時程序,當這段時問內(nèi)沒有按鍵按下時,單片機按照我們設置的初始值顯示一個固定的圖形;當這段時間內(nèi)有按鍵按下時,程序會根據(jù)我們按下的按鍵賦值,從而顯示不同的圖形或改變圖形的大小或者是改變圖形閃爍的頻率。本段程序的按鍵判斷可用比較法來完成,當有按鍵按下時,程序會進入中斷,我們判斷Pl寄存器中的數(shù)據(jù)是否為FEH,若是則說明此時P1.0連接的按鍵按下,此時我們讓程序返回執(zhí)行某一圖形的顯示程序。圖形顯示程序是最重要的部分,我們根據(jù)對應的按鍵按下時,從中斷程序返回的數(shù)值判斷出,主程序中應該要執(zhí)行某個圖形的顯示程序。圖形顯示程序中我們首先從直線開始說明,直線顯示比較簡單,我們想顯示一條橫線的時候,就從單片機的P2口輸出一組從H開始逐漸增大,然后又逐漸減小的值,從而是動力裝置得到一個從0逐漸變大再逐漸變小的信號,使其中一個鏡面沿中心軸逐漸的向一側(cè)偏轉(zhuǎn),然后在彈簧的恢復力的作用下漸漸復原,在顯示屏上投下一條橫線。同樣想顯示豎線的時候,我們只需要使程序從P2口輸出一段H逐漸變大,然后由大逐漸變小的值即可。
顯示一條斜線時,根據(jù)函數(shù)Y:KX+B可知,當X軸上變化的值已知時,就能算出對應的Y軸的值,我們x軸上的數(shù)值從00H開始變大,然后變小時,就能得到對應的Y的值的變化趨勢,把這兩個值分別從P0口和P2口輸出,就會使兩個鏡子共同轉(zhuǎn)動,使顯示的圖形呈Y=KX+B趨勢。
同樣,我們想顯示三角形時,任何三角形都是有三條兩兩相交的有限的直線夠成,分別記作Y=KX,+B.,Y,=K,X,+BY= KX+B,我們把X軸的變量從H逐漸變大,再逐漸變小,而Y軸上的值分別按照各自的值在各自的區(qū)間內(nèi)變化一次,從而在P0口和P2口分別輸出一組對應的變化信號,使輸出的圖形顯示出三角形。
最后,矩形是由四條有限直線的構(gòu)成,并且是有兩組平行線,我們按照這個規(guī)律讓X軸和Y軸的數(shù)值各自變化一次,即可得到結(jié)果。型圖形,是由四條相交于一點的直線構(gòu)成,顯示的時候,我們必須首先計算出,相交點的坐標,然后分別按各自的變化規(guī)律,從P0口和P2口輸出一次就行。圓形顯示時,我們首先計算出圓點的坐標然后,按照公式 Xz+Yz:Rz計算出各個點的坐標,進而輸出顯示即可。
圖形的大小的確定,圖形的大小是由兩個鏡面每次變化的最大范圍決定,當我們改變每次變化時X的最大值時,就會改變各個圖形對應的大小。我們在程序的起始時,給一個中間值,當我們按下變大按鍵式,在中斷程序中改變這個值,主程序中,當X或者Y的值增大到這個值時,開始變小。注意,因為鏡面的轉(zhuǎn)動是有限的,超過這個值時,光線就不會被反射,所以當增大按鍵一直按下,中間值就會一直增大,當達到極限值后,就不在增大。圖像變小按鍵的程序算法也一樣,只是變化時,是讓中間值變小而已。
圖形閃爍的原理,就是利用當我們讓入射光線和鏡面的夾角小于0?;蛘呤谴笥?0。時,光線就不會被反射到外界了,所以,系統(tǒng)顯示時,鏡面和 ^射光線的夾角應在0。到90。之間。我們在圖形完成一次整體顯示時,改變P0和P2口的輸出值,使鏡面和光線的夾角小于0。或者是大于90。,使外界沒有顯示,在運行延時程序,程序開始時給一個延時值,通過按鍵按下時,在中斷程序中改變這個延時值的大小,這樣當我們不斷的按這個按鍵時,圖形的閃爍頻率從快到慢,或者是從慢到快。系統(tǒng)程序總體流程圖如圖2所示。
本設計為單片機應用實例一種可行的方案,但是由于經(jīng)驗和水平有限,在設計中難免存在一些缺陷,還望批評指正。
評論