8×8的LED点阵组件DOT8的应用
[实验4]“玉”字显示
在点阵组件DOT8上以动态扫描方式显示一个8×8点阵构成的“玉”字。用到的端口有P5和P6。
硬件电路参考今年第2期39页图5。端口P5与点阵的列接口,端口P6与点阵的行接口。
点阵式LED(或LCD)显示板,既可以采取逐行扫描方式,也可以采取逐列扫描方式,在本实验范例中采用的是后者。用P5选通点阵的某一列,用P6输出被选通列的显示编码,如图8所示。例如,当P5输出“10000000”和P6输出“10000001”时,点阵的显示图案为图8中的(1)。
;***************
;《“玉”字显示》
; 文件名称: DOT8.ASM
; 使用组件: DOT8
;***************
SETCHIP EM78447;向汇编器声明目标单片机型号
ORG 000H;声明主程序开始地址
MOV A,@0X11;控制数据送累加器
IOW0X 0E;禁止看门狗活动
MOV A,@0;令A=00H
IOW 5;设置端口5为输出
IOW 6;设置端口6为输出
LOOP MOV A,@10000001B;第7列中该点亮的管编码送A
CLR 6;清零端口6
BS 5,7;选通第7列
MOV 6,A;把A值送端口6
MOV A,@10010001B;第6列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,6;选通第6列
MOV 6,A;把A值送端口6
MOV A,@10010001B;第5列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,5;选通第5列
MOV 6,A;把A值送端口6
MOV A,@11111111B;第4列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,4;选通第4列
MOV 6,A;把A值送端口6
MOV A,@10010001B;第3列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,3;选通第3列
MOV 6,A;把A值送端口6
MOV A,@10010101B;第2列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,2;选通第2列
MOV 6,A;把A值送端口6
MOV A,@10000011B;第1列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,1;选通第1列
MOV 6,A;把A值送端口6
MOV A,@00000001B;第0列中该点亮的管编码送A
CLR 5;关闭所有列
CLR 6;清零端口6
BS 5,0;选通第0列
MOV 6,A;把A值送端口6
NOP;插入一个指令周期延时
CLR 5;关闭所有列
JMP LOOP;循环返回
;***************
END;源程序结束
※程序调试方法
由于SIM447模拟执行程序的速度要比单片机实际执行程序的速度低得多,所以显示效果存在明显的闪烁现象。可以利用“连续单步运行方式”来观察在点阵DOT8上的显示结果是否正确,即可达到调试的目的。方法是在“>”提示符下按住9邀F79妖。
※几点说明
1.利用Windows 98之下的“画图”工具软件,可以获取字形的点阵数据。方法是:先利用画图的“文字”按钮工具输入适当字号和字体的文字(在此以“玉”字为例)。利用“查看” 菜单命令之下的“放大”功能和“显示网格”功能,再利用“图像” 菜单命令之下的“拉伸/扭曲”的拉伸功能,可以在水平和垂直方向上放大选定倍数,即可获得效果如图8所示的字符点阵图。
2.如果所显字符或图案符合一定规则(比如图9所示的图案),也可以采用“静态驱动”方式。程序清单如下:
;***************
;《反白显示“井”字》
; 文件名称: DOT8-1.ASM
; 使用组件: DOT8
;***************
SETCHIP EM78447;向汇编器声明目标
单片机型号
ORG 000H;声明主程序开始地址
MOV A,@0X11;控制数据送累加器
IOW 0X0E;禁止看门狗活动
MOV A,@0;令A=00H
IOW 5;设置端口5为输出
IOW 6;设置端口6为输出
LOOP MOV A,@11011011B;把行选编
码送A
MOV 6,A;把A值送端口6
MOV A,@11011011B;把行选编码送A
MOV 5,A;把A值送端口5
LOOP1 JMP LOOP1;原地踏步
;***************
END;源程序结束
示波器组件SCOPE的应用
在这个范例中,我们示范如何使用SIM84 提供的波形显示功能。下面的范例程序会利用查表方式,将正弦波的波形输出至波形显示器中。在程序执行的同时,您可以按下功能键F6,来调整波形显示器的取样周期,以使其输出的正弦波更漂亮。
[实验5]三角波信号发生器
※实验项目实现的功能
在这个范例中将P6定义为输出口,利用了P6口外接的虚拟数模转换器ADC和示波器组件SCOPE,来模拟产生三角波信号。当然也可以产生其他任意形状的周期信号及非周期信号。
※硬件电路规划
SCOPE电子组件示意图参见本刊第2期39页图7。端口P6经过一只外接并行端口的ADC,把单片机输出的8bit数字信号给转换成0~5V之间的模拟电压信号。该模拟信号作为示波器的输入信号,在虚拟的荧光屏上即可看到该模拟信号随着时间变化的波形。
※程序流程图
程序流程图比较简单,如图10所示。
※程序清单
;****************
;《三角波信号发生器》
; 文件名称: SCOPE-3.ASM
; 使用组件: SCOPE
;****************
SETCHIP EM78447;向汇编器声明目标
单片机型号
P6==6;端口6数据和方向寄存器地址
定义
STATUS==3;状态寄存器地址定义
Z==2;进位标志位的位地址定义
ORG 000H;声明主程序开始地址
MOV A,@0X11;控制数据送累加器
IOW 0X0E;禁止看门狗活动
MOV A,@0;令A=00H
IOW P6;设置端口6为输出
LOOP:INC P6;上升
JBS STATUS,Z;上升到最高点了吗
JMP LOOP;否!继续上升
LOOP1:DEC P6;是!下降
JBS STATUS,Z;下降到最低点了吗
JMP LOOP1;否!继续下降
JMP LOOP;是!开始下一个周期
;***************
END;源程序结束
※程序调试方法
在打开SIM447之后,首先关掉所有组件,再打开SCOPE组件,然后装载汇编过的目标程序,采用连续运行方式(所用命令也可以参考图11的左上角部分)。运行期间按动9邀F79妖功能键以及“+”号键,使得在“示波器屏幕”上看到比例适中的波形(如图11所示)。
※说明
通过编程也可以产生如图12所示的正弦波信号,只是要比三角波程序麻烦得多,也长得多。具体实现方法是:对于一个完整周期正弦波信号的幅度,在时间上均匀采样,把这些样值依次制成数据表格,然后在程序执行期间匀速读表并送ADC进行转换,进而由“示波器”呈现出正弦波。
(大海创作室)
本期有奖问答的题目是:1.电子组件DIP1、DIP2和DIP3主要用做程序运行过程中的动态开关量的输入,那么能否用做静止状态下开关量的输入设置呢?如果可以怎样来实现?2. LED数码管或点阵的静态驱动和动态驱动方式存在哪些不同之处?各具什么特点?动态驱动的工作原理是怎样的?答案请来信至编辑部,或E-mail至computer@radio.com.cn。本刊2003年第2期“义隆单片机课堂”有奖问答获奖名单张延波 张 军 周明理 蔡兴伟 卢 江赵铁林 李 荣 高 玺 陈贺春 向正元以上读者将收到由义隆公司赠送的IC数据资料光盘。



