单片微型机实时控制的简单动画制作
一、 实验目的
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 算法可以由下列公式描述:
第一象限:
当di³0 x=x+1
y=y+1
di+1=di+2Dy-2Dx
当 di<0 x=x+1
y=y
di+1=di+2Dy
第二象限:
当di³0 x=x-1
y=y+1
di+1=di+2Dy-2Dx
当 di<0 x=x-1
y=y
di+1=di+2Dy
第三象限:
当di³0 x=x-1
y=y-1
di+1=di+2Dy-2Dx
当 di<0 x=x-1
y=y
di+1=di+2Dy
第四象限:
当di³0 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. 总结,写出体会与心得,提出改进建议。
注:带“*”部分为选做要求。
评论
查看更多