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