单片机LED点阵显示方法与程序代码

合集下载

基于单片机控制的LED点阵屏 含设计报告 电路原理图 C语言程序

基于单片机控制的LED点阵屏 含设计报告 电路原理图 C语言程序

电子系统综合设计与训练系部:工业中心项目:LED点阵显示屏班级:D自集成111班姓名:万文强(第4组)指导老师:杨老师时间:6月10日-7月12日前言LED是发光二极管英文Light Emitting Diode 的简称,是六十年代末发展起来的一种半导体显示器件,七十年代,随着半导体材料合成技术、单晶制造技术和P-N结形成技术的研究进展,发光二极管在发光颜色、亮度等性能得以提高并迅速进入批量化和实用化。

进入八十年代后,LED在发光波长范围和性能方面大大提高,并开始形成平板显示产品即LED显示屏。

LED电子显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。

它是集微电子技术、光电子技术、计算机技术、信息处理技术于一体的显示系统,是目前国际上极为先进的显示媒体。

由于它具有发光效率高、使用寿命长、组态灵活、色彩丰富、工作性能稳定以及对室内室外环境适应能力强等优点而日渐成为显示媒体中的佼佼者。

在我国改革开放之后,特别是进入90年代国民经济高速增长,对公众场合发布信息的需求日益强烈,LED显示屏的出现正好适应了这一市场形势,因而在LED 显示屏的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。

LED显示屏经历了从单色、双色图文显示屏,到图像显示屏的发展过程。

LED电子显示屏是由几万--几十万个半导体发光二极管像素点均匀排列组成。

用不同的材料可以制造不同色彩的LED像素点。

目前应用最广的是红色、绿色、黄色。

而蓝色和纯绿色LED的开发已经达到了实用阶段。

随着信息产业的高速发展,LED显示屏作为信息传播的一种重要手段成为现代信息化社会的一个闪亮标志。

近年LED显示屏已广泛应用于室内、外需要进行服务内容和服务宗旨宣传的公众场所如银行、营业部、车站、机场、港口、体育场馆等信息的发布,政府机关政策、政令,各类市场行情信息的发部和宣传等。

目前,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,它可以用单片机控制实现显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型。

单片机控制LED点阵显示屏

单片机控制LED点阵显示屏

单片机控制LED点阵显示屏一、简介单片机控制LED点阵显示屏是一种常见的电子显示器件,可以用于显示各种文字、图形等信息。

本文将介绍如何利用单片机来控制LED 点阵显示屏,实现信息的显示功能。

二、材料准备在开始搭建单片机控制LED点阵显示屏系统之前,我们需要准备以下材料:•单片机开发板:例如STC89C52•LED点阵显示屏:常见的有8×8、16×16等不同尺寸•连接线:用于连接单片机和LED点阵显示屏•电源:用于为单片机开发板和LED点阵显示屏供电三、搭建电路将单片机开发板和LED点阵显示屏通过连接线进行连接。

具体连接方法如下:•将单片机的IO口与LED点阵显示屏的对应引脚相连。

根据具体的LED点阵显示屏型号和单片机开发板的引脚分配情况,选择合适的IO口进行连接。

•将单片机的VCC引脚与LED点阵显示屏的VCC脚相连,将GND引脚与LED点阵显示屏的GND脚相连,确保电源供电正常。

四、编程控制编写单片机程序,实现对LED点阵显示屏的控制。

本文以STC89C52单片机为例,演示如何利用C语言编写简单的程序实现LED点阵显示屏的控制。

首先,需要使用单片机开发工具(如Keil、IAR等)创建一个新的工程。

在工程中添加必要的头文件,并定义相关的引脚和变量。

#include <reg52.h>sbit DIN = P1^0; // 数据引脚sbit CS = P1^1; // 片选引脚sbit CLK = P1^2; // 时钟引脚unsigned char code ledData[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};void delay(unsigned int time) {unsigned int i, j;for(i = time; i > 0; i--)for(j = 110; j > 0; j--); // 空循环延时}void sendData(unsigned char dat) {unsigned char i;for(i = 0; i < 8; i++) {CLK = 0; // 上升沿时钟信号DIN = dat & 0x80;dat <<= 1;CLK = 1;}}void display(unsigned char *data) {unsigned char i;CS = 0; // 片选信号有效for(i = 0; i < 8; i++) {sendData(data[i]);}CS = 1; // 片选信号无效}void mn() {while(1) {display(ledData);delay(2000);}}上述代码中,我们定义了三个引脚(DIN、CS、CLK)和一个缓存数组(ledData),分别用来控制LED点阵显示屏的数据引脚、片选引脚和时钟引脚。

单片机课程设计16×16led点阵显示

单片机课程设计16×16led点阵显示

16×16LED点阵显示摘要单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。

单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。

单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。

在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。

所以研究LED显示有实用的意义。

LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。

本设计是4个16×16点阵LED电子显示屏的设计。

整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。

通过该芯片控制一个行驱动器74LS154和八个列驱动器74HC595来驱动显示屏显示。

该电子显示屏可以显示各种文字或单色图像,全屏能显示4个汉字,采用16块8 x 8点阵LED显示模块来组成4个16x16点阵显示模式。

显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。

文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。

关键词:AT89C51单片机 LED 16*16点阵显示动态显示目录第一章绪论 (1)1.1 设计课题背景知识 (1)1.2 问题提出 (3)1.3 LED显示屏的发展 (4)第二章功能要求及方案论证 (6)2.1 功能要求 (6)2.1 功能要求 (6)第三章系统电路的设计 (9)3.1 设计框图及介绍 (9)3.2 51系列单片机简介 (9)3.3 单片机最小应用系统电路设计 (13)3.4 LED点阵介绍 (14)3.5 LED显示方式 (14)3.6 点阵的移动 (17)3.7 点阵的颜色 (21)3.8 LED阵列驱动电路 (21)3.9 单片机延时子程序 (22)第四章系统程序的设计 (24)4.1 显示驱动程序 (24)4.2 系统主程序 (25)第五章调试及性能分析 (32)5.1 开发环境介绍 (32)5.2 理论性能分析 (32)5.3 系统调试 (33)第六章总结 (34)致谢 (35)附录 (36)一. 程序代码 (36)系统主程序 (37)二.主要芯片介绍 (42)三.点阵左移显示的流程图 (46)四.元件清单 (47)五.参考文献 (47)六.仿真电路图 (48)第一章绪论1.1 设计课题背景知识单片微型计算机(single chip microcomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。

单片机LED点阵显示

单片机LED点阵显示

目录1.前言 (1)1.1 LED的概念 (1)1.2 点阵LED的规格 (1)1.3 LED的过去 (1)1.4 LED的现在 (1)1.5 LED的未来 (2)1.6 LED的应用领域 (2)2.设计要求 (3)3.设计目的 (3)4.硬件设计 (3)4.1 硬件系统框图 (3)4.2 各片的简单介绍 (4)4.2.1 MD1216C-RG介绍 (4)4.2.2 74LS374芯片介绍 (5)4.2.3 74LS273芯片介绍 (6)5 LED点阵显示硬件原理 (7)5.1 P0—P1口的使用情况 (7)5.2 三总线的使用情况 (7)5.3 硬件原理图 (8)6 软件设计 (9)6.1 系统软件框图 (9)6.2 滚动显示自己的名字流程图及程序 (10)6.2.1 流程图 (10)6.2.2 对应程序 (11)6.3 计数器程序流程图及程序 (16)6.3.1 程序流程图 (16)6.3.2 程序 (17)7 测试结果 (22)7.1 滚动显示自己的名字 (22)7.2 十进制/十六进制计数器显示过程 (22)8 课题的实现过程 (23)9 心得体会 (24)10 参考资料 (25)11 附录 (25)1.前言1.1 LED的概念LED(Light Emitting Diode),即发光二极管,是一种半导体固体发光器件,它是利用固体半导体芯片作为发光材料,当两端加上正向电压,半导体中的载流子发生复合引起光子发射而产生光。

LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。

1.2 点阵LED的规格点阵LED显示器是把一些LED组合在同一个包装中,常见的规格有5*7,8*8,16*16等几种。

通常,若要显示阿拉伯数字、英文字母、特殊符号等,则可采用5*7的点阵即可够用,若要显示中文字,则需要4片8*8的点阵组成16*16的点阵显示器才能显示一个中文字。

1.3 LED的过去LED是发光二极管英文Light Emitting Diode 的简称,是六十年代末发展起来的一种半导体显示器件。

单片机控制LED点阵显示屏

单片机控制LED点阵显示屏
单片机控制LED点阵显示屏
LED点阵的应用


点阵显示是集微电子技术、计算机技术、 信息处理于一体的新型显示方式。由于其 具有色彩鲜艳,动态范围广,亮度高,寿 命长,工作稳定可靠等优点。 不仅可以静态的显示信息,而且也可以通 过动态滚动,从而增加信息显示的容量。 为了醒目,还可以产生诸如闪动、滚动等 显示效果。

74595的数据端: QA--QH: 八位并行输出端,可以接点阵的8列。 QH': 级联输出端。将它接下一个595的SI端。 SI: 串行数据输入端。
74595的控制端说明: /SCLR(10脚): 低电平时将移位寄存器的数据清零。通常将它接Vcc。 SCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移 位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。通常都选微秒级) RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器 数据不变。通常将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V 时,大于几十纳秒就行了。通常都选微秒级),更新显示数据。 /G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制 它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。 注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动 电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。 74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持 不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。 与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。

3.3 单片机控制LED点阵显示器显示

3.3 单片机控制LED点阵显示器显示

5.4.2 控制16×16 LED点阵显示屏的案例
//汉字“术”的16×16点阵的列码 0x7F,0xFF,0x7F,0xFB,0x7F,0xF7,0x7F,0xFF,0x00,0x8 0,0x7F,0xFF,0x3F,0xFE,0x5F,0xFD, 0x5F,0xFB,0x6F,0xF7,0x77,0xE7,0x7B,0x8F,0x7C,0x DF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF, }; void main() {
5.4.2 控制16×16 LED点阵显示屏的案例
单片机控制16×16点阵显示屏显示字符案例。 【例5-8】如图5-14,利用单片机及 74LS154(4-16 译码器)、74LS07、16×16 LED点阵显示屏来实现字符显 示,编写程序,循环显示字符“电子技术”。 图中16×16 LED点阵显示屏16行行线R0~R15电平, 由 P1 口 低 4 位 经 4-16 译 码 器 74HC154 的 16 条 译 码 输 出 线 L0~L15经驱动后的输出来控制。16列列线C0~C15的电平 由P0口和P2口控制。剩下问题是如何确定显示字符的点阵 编码,以及控制好每一屏逐行显示的扫描速度(刷新频 率)。
uchar i,j,n; while(1) {
for( j=0;j<4;j++) //共显示4个汉字 {
5.4.2 控制16×16 LED点阵显示屏的案例
for(n=0;n<40;n++)
//每个汉字整屏扫描40次
{
for(i=0;i<16;i++) {
//逐行扫描16行
out1=i%16;
//输出行码,
LED点阵显示器分为图文显示器和视频显示器,有单色 显示,还有彩色显示。下面仅介绍单片机如何来控制单色 LED点阵显示器的显示。

LED点阵显示屏工作原理及驱动程序

LED点阵显示屏工作原理及驱动程序

LED点阵显示屏工作原理及驱动程序LED显示屏驱动程序几年前本人得到一块双色LED显示屏,因为没有控制器,所以对显示屏的工作原理进行了一番研究,利用手头上的元件,搭了一块电路板,编写了一段程序就放置一边了,这几天有时间,把原来的89C51汇编程序改了一下,改为AT89C2051和STC11F04E单片机能用的程序,放到博客上希望有兴趣的同行可以参考一下。

下面是显示效果图:下面是接口电路板图:下面是电路原理图:工作原理:这块显示屏是分为上下共32行LED点阵,水平有4块16*16点阵,所以能显示16*16点阵8个汉字。

工作原理是用74ls138做为行扫描,列用74ls595控制,当138扫描到某一行时,595决定哪一列该亮,就这样快速扫描,就形成了图像了。

参见下图:以单色单元板为例走线方式如下图:各信号走向如下:l JP1排针16脚信号A->74HC245的第2脚(信号放大)->74HC245的第18脚->74HC138的第1脚->JP2排针16脚l JP1排针15脚信号B->74HC245的第3脚(信号放大)->74HC245的第17脚->74HC138的第2脚->JP2排针15脚l JP1排针1脚信号OE->74HC245的第4脚(信号放大)->74HC245的第16脚->74HC04D的第1脚->74HC04D的2脚->①74HC138的第5脚->②74HC04D的3脚->74HC04D的4脚->JP2排针1脚l JP1排针11脚信号R->74HC245的第9脚(信号放大)->74HC245的第11脚->最左上角74HC595-1的第14脚->74HC595-1的9脚->74HC595-2的14脚->74HC595-2的9脚->最右下角74HC595-16的14脚->74HC595-16的9脚->JP2排针11脚我现在用的是双色板,JP1各端口含义如下:ABCD是显示屏电路板上的74LS138地址译码端,单片机寄存器R3控制行扫描,当R3从00000000到00010000增加时ABCD的变化给138译码,当R3=0FH 时正好扫描16行,当进位到10时扫描结束,OE是138的片选使能端,低电平有效。

单片机控制LED点阵显示屏

单片机控制LED点阵显示屏
按其封装结构 ,封装外形 ,管体颜色 分为不同种类。
LED工作时应合理选定LED的工作电流,LED的正向极限电 流IFm多在50mA左右。实践验证,LED的发光强度仅在一 定范围内与IF成正比,当IF>20mA时,亮度的增强已无法 用肉眼分辨,实际亮度已经没有增加了。因此,LED的工作 电流一般选在10~20mA较为合理。
——兴趣小组活动 第2次 闫晓东
单片机控制LED 点阵显示屏
主要内容— LED点阵显 示 03 动态显示的考虑 05 单片机最小系统
02 LED电路设计 04 电源设计 06 功能设置相关
LED与LED点阵显示 发光二极管简称为LED。由镓(Ga)与砷
1. 点阵原理 点阵内部结构及外形如上,8X8点阵共由64个发 光二极管组成,且每个发光二极管是放置在行线 和列线的交叉点上,当对应的某一行置1电平,某 一列置0电平,则相应的二极管就亮;如要将第一 个点点亮,则9脚接高电平13脚接低电平,则第一 个点就亮了;如果要将第一行点亮,则第9脚要接 高电平,而(13、3、4、10、6、11、15、16) 这些引脚接低电平,那么第一行就会点亮;如要 将第一列点亮,则第13脚接低电平,而(9、14、 8、12、1、7、2、5)接高电平,那么第一列就 会点亮。
一般我们使用点阵显示汉字是用的16*16的点阵宋体字库,所谓16*16,是每一 个汉字在纵、横各16点的区域内显示的。也就是说得用四个8*8点阵组合成一个 16*16的点阵。
如下图所示,要显示“你”则相应的点就要点亮,由于我们的点阵在列线上是低 电平有效,而在行线上是高电平有效,所以要显示“你”字的话,它的位代码信 息要取反,即所有列(13~16脚)送,0xF7,0x7F),而第一行(9脚)送1信 号,然后第一行送0;再送第二行要显示的数据(13~16脚)送,0xF7,0x7F), 而第二行(14脚)送1信号。依此类推,只要每行数据显示时间间隔够短,利用 人眼的视觉暂停作用,这样送16次数据扫描完16行后就会看到一个“你”字;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机LED点阵显示方法与程序代码
点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。

由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。

显示的方法有两种:
1、逐列扫描方式。

如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。

2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。

以逐行扫描为例,从上图可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如下图所示。

一、行扫描静态显示,
用51单片机实现上图静态显示的程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3};
uchar i,t;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{
while(1)
{
P2=0x01;
for(i=0;i<8;i++)
{
P1=TAB;
delay(100);
P2=P2<<1|P2>>7;
}
}
}
二、行扫描翻页显示
字码取模方式为逐行
第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,……
实现图显示效果的程序如下:
/*8X8行扫描,翻页显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L
0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O
0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V
0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF, //E
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
};
uchar i,t;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar N,T;
while(1)
{
for(N=0;N<6;N++) //循环扫描一遍6帧
for(T=0;T<100;T++) //速度
{
P2=0x01;
for(i=0;i<8;i++)
{
P1=TAB[i+8*N];
delay(100);
P2=P2<<1|P2>>7;
}
}
}
}
三、行扫描上下移动显示。

如果是逐行取字模时,第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第2~9个数据,行扫描顺序仍为1~8行,显示第二帧,……如
此便是向上移动。

如果将上述的行扫描顺序改为8~1行,就是向下移动,但显示的图像是倒立的了,为了使得它不倒立,详细请看程序。

另外取模方式不同,就有不同的编程方式。

显示图上移效果的程序如下:
/*8X8行扫描,上移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L
0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O
0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V
0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF, //E
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
};
uchar i,t;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar N,T;
while(1)
{
for(N=0;N<40;N++) //循环扫描一遍40帧
for(T=0;T<60;T++) //移动速度
{
P2=0x01;
for(i=0;i<8;i++)
{
P1=TAB[i+N];
delay(100);
P2=P2<<1|P2>>7;
}
}
}
显示图下移效果的程序如下:
/*8X8行扫描,下移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L
0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O
0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V
0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF, //E
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
};
uchar idata Buffer[48]={0}; //缓存显示单元
uchar i,t;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{
uchar N,T,m,n;
for(m=0;m<6;m++)
for(n=0;n<8;n++)
Buffer[8*m+n]=TAB[7-n+m*8]; //将TAB数组中的数据重新排列
//使得下移字母顺序不变
while(1)
{
for(N=0;N<40;N++) //循环扫描一遍6帧
for(T=0;T<70;T++) //速度
{
P2=0x80;
for(i=0;i<8;i++)
P1=Buffer[i+N];
delay(100);
P2=P2>>1|P2<<7; //扫描起始行为第一行
}
}
}
}
四、行扫描左右移动显示。

如果将扫描方式改为列扫描,那么左右移动的程序就容易写了,但当点阵比较巨大并且硬件已经定下时,改变扫描方式不是好方法,甚至不可能实现。

这里是以行扫描为例(逐行取字模),第一次取字码数组中的第1~8个数据到点阵列输入端,行码扫描1~8行。

第二次将第一次的1~8个数据都循环左(右)移一位,并且将第9个数据的最高位移到第二次数据的最低处,再输入到列端口,行扫描1~8行。

即每次扫描都要把前一次扫描的列码左移一位。

图为左移效果,程序如下:
/*8X8行扫描,左移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF};
uchar i,t,j=0;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar T,Y,Q;
while(1)
{
for(Q=0;Q<8;Q++)
for(T=0;T<100;T++) //速度
{
P2=0x01;
for(i=0;i<8;i++)
{
Y=TAB[i+1]*256+TAB;
Y=Y<<(7-Q)|Y>>Q;
P1=Y%256;
delay(60);
P2=P2<<1|P2>>7;
}
}
}
}
大家可以参考上述代码实现右移。

相关文档
最新文档