單片微型機實時控制的簡單動畫制作
一、 實驗?zāi)康?br>1. 掌握Intel MCS-51 系列單片機的內(nèi)部構(gòu)造,接口技術(shù),擴展技術(shù)及其匯編語言特點;
2. 初步掌握應(yīng)用仿真器來調(diào)試開發(fā)單片機用戶程序的技術(shù);
3. 通過實驗提高綜合調(diào)試各種儀器的能力,培養(yǎng)發(fā)現(xiàn)、分析、解決問題的能力。
二、具體要求
1. 設(shè)計一個以單片機( 8031)為核心、應(yīng)用動態(tài)掃描原理、實現(xiàn)一幅靜態(tài)畫面的顯示;
2. 以上面顯示為基礎(chǔ)實現(xiàn)簡單的畫面移動(左移,右移,上移,下移);
3. *設(shè)計一個畫面旋轉(zhuǎn)的顯示,如一條直線繞一固定點做旋轉(zhuǎn)的動畫;
4. *綜合運用查詢及中斷功能實現(xiàn)即時控制的動畫顯示。
三、實驗器材
1. PC 機一臺;
2. 仿真器(DSICEII)開發(fā)系統(tǒng)裝置一套;
3. 穩(wěn)壓電源一臺;
4. 示波器一臺;
5. 萬用表一只
四、實驗原理
1、單片微型計算機
單片微型計算機(簡稱單片機: Single-chip Microcomputer ),就是把中央處理器
CPU(Central Processing Unit),隨機存取存取器RAM(Random Access Memory),只讀存儲
器ROM (Read Only Memory ) ,定時器/計數(shù)器以及IO(Input /Output)接口電路等主要計算機
部件集成在一塊集成芯片上的微型計算機。從其組成和功能上看,已是具備了計算機系統(tǒng)的
含義,其典型結(jié)構(gòu)如圖6-1 所示:
2、 動態(tài)掃描顯示
實驗電路中是由一個16′32 的LED 點陣構(gòu)成,以這些LED 作為顯示畫面的象素顯示一
幅分辨率為16′32 的圖象。如果顯示的是漢字,則可顯示二個16′16 的漢字。由于8031 的
DataBus 只有8bits,因此無法一次顯示一幅16′32 的圖象或16′16 的漢字;但是單片機的工
作頻率較高(實驗中采用6MHz 晶振),利用人眼的視覺暫留效應(yīng),只要不斷地向點陣送數(shù)
據(jù),就可實現(xiàn)整幅畫面的顯示。
3、 *Bresenham 算法
Bresenham 算法解決了顯示一條直線的問題。實驗中要求有直線的旋轉(zhuǎn)畫面,因此要用
到顯示屏上的畫線技術(shù)。設(shè)直線從(x, y)畫至(x+Dx, y+Dy), 定義誤差項d,置其初值為零,
且直線的斜率的絕對值小于1,即|Dy/Dx|<1,Bresenham 算法可以由下列公式描述:
第一象限:
當(dāng)di30 x=x+1
y=y+1
di+1=di+2Dy-2Dx
當(dāng) di<0 x=x+1
y=y
di+1=di+2Dy
第二象限:
當(dāng)di30 x=x-1
y=y+1
di+1=di+2Dy-2Dx
當(dāng) di<0 x=x-1
y=y
di+1=di+2Dy
第三象限:
當(dāng)di30 x=x-1
y=y-1
di+1=di+2Dy-2Dx
當(dāng) di<0 x=x-1
y=y
di+1=di+2Dy
第四象限:
當(dāng)di30 x=x+1
y=y-1
di+1=di+2Dy-2Dx
當(dāng) di<0 x=x+1
y=y
di+1=di+2Dy
當(dāng)直線斜率的絕對值大于1時,需將公式中的x 和y 相互調(diào)換,具體資料可參考“計算機圖形學(xué)”相關(guān)書目。
由于實現(xiàn)一條直線的旋轉(zhuǎn)需大量的象素的重復(fù)計算,因此子程序的調(diào)用和數(shù)據(jù)寄存器6264 的使用是必需的。
4、硬件框圖及說明
圖6-2 為8031 單片機、數(shù)據(jù)存儲器6264 及其他外圍器件組成的小系統(tǒng)框圖,圖6-3 為
電原理圖。
(1) 6264 為單片機8031 擴展的數(shù)據(jù)存儲器,其數(shù)據(jù)口8 位,直接掛在8031 的
P0 口上,地址線13 根,低8 位由P0 口控制,高5 位由P2.0—P2.4 控制。由
于8031P0 口數(shù)據(jù)線(DB)和地址線(AB)采用分時復(fù)用技術(shù),故采用三態(tài)
門245 和鎖存器573 將其鎖存。
(2) LED 點陣的列驅(qū)動數(shù)據(jù)由8031 的P0.0— P0.7 輸出,送至鎖存器573,作為
列驅(qū)動器。由于數(shù)據(jù)線僅有8 位,但系統(tǒng)有32 列,因此選用4 片鎖存器573,
分時傳送數(shù)據(jù),其片選由138 和04 共同組成。
(3) LED 點陣的行驅(qū)動數(shù)據(jù)由8031 的P1.0— P1.3 輸出,經(jīng)4-16 線譯碼器4514
譯碼送至2 片2003 ,作為行驅(qū)動器。改變P1.0—P1.3 的值即可實現(xiàn)逐行掃
描。由于考慮到4514 的驅(qū)動能力限制及負載的電感效應(yīng),故系統(tǒng)采用了2003
(2003 每一路都是一個達林頓驅(qū)動電路,當(dāng)輸入高電平時輸出電阻很小,能
吸收較大電流;當(dāng)輸入低電平時輸出管截止,流過電流很小)。
(4) P2.5— P2.7 送至3-8 譯碼器138 譯碼,并與寫信號WR進行與非操作,對6264
及列驅(qū)動器573 進行片選,從而形成它們的訪問地址:
地址范圍 訪問器件
0000H~1FFFH 6264
2000H~3FFFH 第一片74LS573
4000H~5FFFH 第二片74LS573
6000H~7FFFH 第三片74LS573
8000H~9FFFH 第四片74LS573
(5) 為顯示整個畫面,必須對象素進行有序、逐行、不停地掃描,并加入適當(dāng)?shù)?br>延時,列選與行選均以“1”為有效位,即要使某一象素點亮,必須使該象素
的行數(shù)據(jù)和列數(shù)據(jù)均為“1”。
2. 軟件說明
本實驗以單片機原理為基礎(chǔ),要求較熟練掌握單片機軟硬件有關(guān)知識,詳細說明請參
見“單片機”專業(yè)資料,這里只對本實驗中用到的典型程序進行說明。
(1)LED 驅(qū)動顯示
MOV P1,#00H ;選中第一行
MOV DPTR,#2000H ;第一片573 的地址
MOV A,#07H ;(00000111)選中3 列
MOVX @DPTR,A ;輸出列選
(2)6264 使用舉例
MOV A,#24H
MOV DPTR,#0000H
MOVX @DPTR,A ;將A 中的內(nèi)容(24H)寫入6264 的0000H 單元
中
MOV DPTR,#0000H
MOVX @DPTR,A ;將6264 的0000H 單元中的內(nèi)容讀入A
(3)靜態(tài)畫面的程序框圖(如圖6-4 所示)
3、 實驗步驟
1. 熟悉電路原理,分析電路圖,弄清地址、分配。
2. 根據(jù)MCS-51 指令系統(tǒng)編制系統(tǒng)軟件。
3. 連接硬件線路,確保無誤后接通電源。
4. 利用開發(fā)裝置進行軟硬件的調(diào)試。
5. 總結(jié),寫出體會與心得,提出改進建議。
注:帶“*”部分為選做要求。
評論
查看更多