玩一玩点阵流动显示

上传人:mg****85 文档编号:44556887 上传时间:2018-06-14 格式:PDF 页数:6 大小:489KB
返回 下载 相关 举报
玩一玩点阵流动显示_第1页
第1页 / 共6页
玩一玩点阵流动显示_第2页
第2页 / 共6页
玩一玩点阵流动显示_第3页
第3页 / 共6页
玩一玩点阵流动显示_第4页
第4页 / 共6页
玩一玩点阵流动显示_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《玩一玩点阵流动显示》由会员分享,可在线阅读,更多相关《玩一玩点阵流动显示(6页珍藏版)》请在金锄头文库上搜索。

1、DoY 电子技术 创造独立资源! 玩一玩流动显示玩一玩流动显示 DoY DoY 原创原创 V1.0 2007.6.3 V1.0 2007.6.3 目录目录 1. 概要. 11. 概要. 1 2. 实际应用 . 22. 实际应用 . 2 版本信息. 5版本信息. 5 1 1/6 /6 玩一玩流动显示 玩一玩流动显示 DoY DoY 原创 原创 1. 概要 1. 概要 感慨一二 刚写好了 3208LED 电子钟的 V3.0 版应用程序就被一个 72hour 的网友找到了一处毛病,我竟然把闹 钟的小时值设置最大为 59,本应是 23。这是一个前不见古人的失误,测试程序的时候竟然没有发 现。之后 7

2、2hour 网友又问到了流动显示的实现方法,我知道这对我来说是简单,可是我是不是也 应该简单到更多的朋友身上,让这个纸老虎变成普通思想呢?于是开始撰写本文。 现在我有一个极好的平台,那就是我的网站(DoY) ,可是近来我发现没有多少朋友愿意在 我的网站上交流,而大多是下载代码或寻找资料,可能是用于自己的小制作,也会有是为了偷工减 料的毕业设计。我处在了迷局之中,我的网站应该怎么样的发展呢?我又可以通过这个平台与多少 志同之友合作呢?一肚子的话说不出来。 一目了然 流动显示在许多网友看来是有趣的,我一开始也这样以为过。可是这个东西对于一行不超过 16 个 字符的 LED 或 LCD 显示屏并不实

3、用,而且用到流动显示的地方一定要有许多信息需要显示的。这一 点在我设计的 3208LED 电子钟上得不到价值。 用一句话说明白流动显示的实现原理应该并不容易,最好的方法就是举例子和画图片。 1) 有一组 7 段数码管,共有 4 块组成,分别用 A、B、C、D 表示。 2) 现在需要流动显示一组数字:1、2、3、4、5、6、7、8、9、0 3) 在程序上的实现应该先把 1、2、3、4 放入 A、B、C、D 四个块中显示。 4) 再把 2、3、4、5 放入 A、B、C、D 5) 再把 3、4、5、6 放入 A、B、C、D 6) 一直这样放下去,每次放的间隔就是流动的速度了。 上面是基本的模型, 因

4、为有了数学和逻辑, 一些上流社会的绅士才不会在别人面前数手指头算零钱, 同时也才会让我们实现流动显示的编程方法更简单可靠。 1) 第一次先放入 1+0、1+1、1+2、1+3 到 A、B、C、D 2) 下一次放入 2+0、2+1、2+2、2+3 到 A、B、C、D 3) 再一次放入 3+0、3+1、3+2、3+3 到 A、B、C、D 大家会强烈的同意我将数字用变量来表示,这样会看起来更绅士些。这个变量在每一次完成放入 A、 B、C、D 的工作之后就自动加 1,而在每一次放完 A、B、C、D 后进入下一次流动显示时也要加 1, 既然这样就设计两个变量吧,他们各自为战,支撑了整个流动显示方法的基础

5、。 1) 设置 2 个变量 a、b。 2) 设置 a=0,并在每放入一个块之后加 1,加到 3 时为止。 3) 第一次先放入 b+a、b+a、b+a、b+a 到 A、B、C、D 4) 而 b 的初值是 1,在每加完一次 A、B、C、D 之后就加 1 5) 下一次放入 b+a、b+a、b+a、b+a 到 A、B、C、D 6) 再之后简化成每一次都是 b+a 了,当 b 加到 7 之后流动显示则完成了。 2 2/6 /6 玩一玩流动显示 玩一玩流动显示 DoY DoY 原创 原创 用程序表示是一样的了,不过这个例子是不能用的。 For(b=1;b /定义头文件 #define uchar uns

6、igned char /宏定义 #define uint unsigned int /*/ /全局变量/ uint mov;/ uint con; /*/ /硬件初定义/ #define data1 P0 #define data2 P2 #define bcd P1 sbit cs1 = P1 4; sbit cs2 = P1 5; /*/ /寄存器初定义/ #define fast 1048 /变更字符长度变量 #define speed 2 /变更流动速度变量 #define stop 1 /流动 1 停止 0 #define light 40 /字符亮度 /*/ 3 3/6 /6 玩一

7、玩流动显示 玩一玩流动显示 DoY DoY 原创 原创 /字库表/在这里添加字模,将第而二行 uchar code is = /*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*/ /*- - 宋体 12; 此字体下对应的点阵为:宽 x 高=16x16 - - */ 0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18,0x00,

8、0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; /*/ /pro/ void delay(void) uint n; for(n=0;n=16) lie_off(); bc

9、d = i; cs1 = 0; cs2 = 1; 4 4/6 /6 玩一玩流动显示 玩一玩流动显示 DoY DoY 原创 原创 /*/ /列扫描 pro/ void saomiao (uint y) uchar t,m=0; for (t=0;t Speed) /Speed 是修改流动速度(0255) con = 0; mov = mov + 2; if(mov Fast) / Fast 修改流动字符的长度(065535,一个字是 32,不能是奇数) mov =0; /*/ main() /主程序/ TH0 = 0x3c; /50MS 延时 TL0 = 0xb0; TMOD = 0x01;

10、/定时器 0 工作方式 1 ET0 = stop; TR0 = stop; EA = stop; while (1)/主循环/ saomiao (mov); 5 5/6 /6 玩一玩流动显示 玩一玩流动显示 DoY DoY 原创 原创 使用缓冲区 在要求显示内容多样、显示扫描较快的时候可以使用显示缓冲区,这适用于 LED 显示,会让程序的 运用更为方便。 程序分成两个部分: n 将显示数据放入与显示屏同样大的显示缓冲区中(RAM 指定区域) n 从显示缓冲区中调出数据进行显示(一旦设定了这个函数体就不用再理显示屏了) 这样我们只要将我们的数据放入指定的 RAM 中,而显示部分循环的用 RAM

11、 调出数据并流动显示 A、B、C、D R1、R2、R3、R4 (这部分实现流动显示,R14 是 RAM 缓冲区域) 我们想显示什么只要放入 R14 就可以了,它会自己流动。 如果要显示的数据大于显示的区域,就可以设置更多的缓冲区,如 R19 那么 第一次 A、B、C、D 等于 R1、R2、R3、R4 第二次 A、B、C、D 等于 R2、R3、R4、R5 最后次 A、B、C、D 等于 R6、R7、R8、R9 R19 的数据由另一个程序来写入,就好像操作个静态的 RAM 一样,而不用还要再考虑流动的事。 3208LED 电子钟 V1.00(汇编)的程序工程即是采用了众多的 RAM 当成缓冲区来实现流动显示的, 可供参考。 (可到 http:/ 下载工程包) 版本信息 题目 玩一玩流动显示 作者 杜洋 时间 2007.6.3 版本 V1.0 声明 本站内容(包括程序代码、文档、照片、视频等)属个人所有,未经网站作者同意请勿转载或引用,对于 转载或复制而造成的任何不良后果概不负责。 对于本站内免费下载的资料、图片及视频不能保证其真实可 靠,对于免费下载的程序代码本站作者不给矛技术支持和服务。 标注 ST2007D

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号