<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于單片機簡(jiǎn)單實(shí)現圖形顯示的方法

基于單片機簡(jiǎn)單實(shí)現圖形顯示的方法

作者: 時(shí)間:2011-08-23 來(lái)源:網(wǎng)絡(luò ) 收藏

3軟件設計

上點(diǎn)復位后,Po__P3口均輸出高電平,所以在上電復位之后,我們首先用程序把所有端口置零,使輸出電壓為零,從而使鏡面處于原始靜止位置,并把中斷開(kāi)啟,并置一些初始值。

QQ截圖未命名1.jpg

當程序開(kāi)始運行之后就會(huì )進(jìn)入的選擇程序,我們設置一個(gè)延時(shí)程序,當這段時(shí)問(wèn)內沒(méi)有按鍵按下時(shí),按照我們設置的初始值一個(gè)固定的;當這段時(shí)間內有按鍵按下時(shí),程序會(huì )根據我們按下的按鍵賦值,從而不同的或改變圖形的大小或者是改變圖形閃爍的頻率。本段程序的按鍵判斷可用比較法來(lái)完成,當有按鍵按下時(shí),程序會(huì )進(jìn)入中斷,我們判斷Pl寄存器中的數據是否為FEH,若是則說(shuō)明此時(shí)P1.0連接的按鍵按下,此時(shí)我們讓程序返回執行某一圖形的顯示程序。圖形顯示程序是最重要的部分,我們根據對應的按鍵按下時(shí),從中斷程序返回的數值判斷出,主程序中應該要執行某個(gè)圖形的顯示程序。圖形顯示程序中我們首先從直線(xiàn)開(kāi)始說(shuō)明,直線(xiàn)顯示比較,我們想顯示一條橫線(xiàn)的時(shí)候,就從的P2口輸出一組從H開(kāi)始逐漸增大,然后又逐漸減小的值,從而是動(dòng)力裝置得到一個(gè)從0逐漸變大再逐漸變小的信號,使其中一個(gè)鏡面沿中心軸逐漸的向一側偏轉,然后在彈簧的恢復力的作用下漸漸復原,在顯示屏上投下一條橫線(xiàn)。同樣想顯示豎線(xiàn)的時(shí)候,我們只需要使程序從P2口輸出一段H逐漸變大,然后由大逐漸變小的值即可。

顯示一條斜線(xiàn)時(shí),根據函數Y:KX+B可知,當X軸上變化的值已知時(shí),就能算出對應的Y軸的值,我們x軸上的數值從00H開(kāi)始變大,然后變小時(shí),就能得到對應的Y的值的變化趨勢,把這兩個(gè)值分別從P0口和P2口輸出,就會(huì )使兩個(gè)鏡子共同轉動(dòng),使顯示的圖形呈Y=KX+B趨勢。

同樣,我們想顯示三角形時(shí),任何三角形都是有三條兩兩相交的有限的直線(xiàn)夠成,分別記作Y=KX,+B.,Y,=K,X,+BY= KX+B,我們把X軸的變量從H逐漸變大,再逐漸變小,而Y軸上的值分別按照各自的值在各自的區間內變化一次,從而在P0口和P2口分別輸出一組對應的變化信號,使輸出的圖形顯示出三角形。

最后,矩形是由四條有限直線(xiàn)的構成,并且是有兩組平行線(xiàn),我們按照這個(gè)規律讓X軸和Y軸的數值各自變化一次,即可得到結果。型圖形,是由四條相交于一點(diǎn)的直線(xiàn)構成,顯示的時(shí)候,我們必須首先計算出,相交點(diǎn)的坐標,然后分別按各自的變化規律,從P0口和P2口輸出一次就行。圓形顯示時(shí),我們首先計算出圓點(diǎn)的坐標然后,按照公式 Xz+Yz:Rz計算出各個(gè)點(diǎn)的坐標,進(jìn)而輸出顯示即可。

圖形的大小的確定,圖形的大小是由兩個(gè)鏡面每次變化的最大范圍決定,當我們改變每次變化時(shí)X的最大值時(shí),就會(huì )改變各個(gè)圖形對應的大小。我們在程序的起始時(shí),給一個(gè)中間值,當我們按下變大按鍵式,在中斷程序中改變這個(gè)值,主程序中,當X或者Y的值增大到這個(gè)值時(shí),開(kāi)始變小。注意,因為鏡面的轉動(dòng)是有限的,超過(guò)這個(gè)值時(shí),光線(xiàn)就不會(huì )被反射,所以當增大按鍵一直按下,中間值就會(huì )一直增大,當達到極限值后,就不在增大。圖像變小按鍵的程序算法也一樣,只是變化時(shí),是讓中間值變小而已。

圖形閃爍的原理,就是利用當我們讓入射光線(xiàn)和鏡面的夾角小于0?;蛘呤谴笥?0。時(shí),光線(xiàn)就不會(huì )被反射到外界了,所以,系統顯示時(shí),鏡面和 ^射光線(xiàn)的夾角應在0。到90。之間。我們在圖形完成一次整體顯示時(shí),改變P0和P2口的輸出值,使鏡面和光線(xiàn)的夾角小于0?;蛘呤谴笥?0。,使外界沒(méi)有顯示,在運行延時(shí)程序,程序開(kāi)始時(shí)給一個(gè)延時(shí)值,通過(guò)按鍵按下時(shí),在中斷程序中改變這個(gè)延時(shí)值的大小,這樣當我們不斷的按這個(gè)按鍵時(shí),圖形的閃爍頻率從快到慢,或者是從慢到快。系統程序總體流程圖如圖2所示。

本設計為單片機應用實(shí)例一種可行的方案,但是由于經(jīng)驗和水平有限,在設計中難免存在一些缺陷,還望批評指正。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>