点阵显示汉字滚动图解

合集下载

LED点阵显示程序(带汉字移动)

LED点阵显示程序(带汉字移动)
P1=0;
}
}
yid++; //移动一步
}
yid=0;zimo=zimo+32; //后移一个字,
TI=0;
}
/*******左移显示读取数据 并调整**************/
void in_data(void)
{ char s,w; unsigned int qqq;
for(s=8;s>=0;s--)
{ w=s+s;
qqq=zimo+h+h+s*32;
P2=sw[h]; //输出行信号
h++; //行加一
if(h==8)h=0;
}
}
}
/***************左移显示************/
out_rxd(&hanzi[aa+15]); //从串口输出第1个字的第18字节
}
P2=0x0ff;
P1=0xff; P1=0; //锁存为高,74HC595锁存信号
while(!TI);TI=0; //等待发送中断
}
for(s=0+inc;s<16+inc;s++) //发送8字节数据
{ if(yid<8) tempyid=yid;
else tempyid=yid-8;
{ aa=(xx*8+jj)*32+ii;
out_rxd(&hanzi[aa]); //从串口输出第1个字的第1字节。
out_rxd(&hanzi[aa-1]); //从串口输出第1个字的第1字节。

8X16LED点阵屏滚动显示说明书

8X16LED点阵屏滚动显示说明书

湄洲湾职业技术学院8*16LED点阵屏滚动显示说明书系别:自动化工程系年级:10级专业:电气自动化姓名:俞成坦学号:********** 导师姓名:邱兴阳职称:讲师2013年 5 月 29 日1.前言 (1)2.系统设计技术参数要求 (2)3.系统设计 (3)3.1系统设计总体框图 (3)3.2系统各模块说明 (3)3.3系统总原理图说明 (4)3.4印刷电路板的制作图 (5)3.5系统操作说明 (5)3.6系统操作注意事项 (5)参考文献 (6)致谢词 (7)附录 (8)附录1 元件清单 (8)附录2 系统印刷电路板图 (9)附录3 系统电路总图 (10)附录4 系统程序 (11)众所周知,现在市面上已出现很多有关点阵显示器的商品,如广告活动字幕机、股票显示板、活动布告栏等。

它的优点是可按需要的大小、形状、单色、或彩色来组合,可与微处理器连接,做各种广告栏文字或图形变化。

因此可知汉字显示系统在人民的生活当中是何等的重要,也是研究的课题之一。

8*8点阵LED字符显示器系统在工业、各种比赛场合及日常生活应用中占有十分重要的地位,多年来,研究此项目的工程技术人员曾为简化电路、提高可靠性、降低成本,付出了很大的努力,做出不少成绩。

如今,美观、价廉、体积小、高可靠性8*8点阵LED字符显示器的出现,为这一领域的技术打开了新的天地。

LED字符显示器发展到今天已经从模拟化、分立化迈进数字化、集成化LED系统。

它的最大优点在于采用STC89C52掉电工作方式构成高可靠、低功耗系统方法。

在单片机程序设计中,采用“模块化”思路,设计中大量硬件尽量用软件代替,从而简化了系统结构,减少电子元件虚焊,接触不良和漂移等引起的一些故障,而且使用方便,只须改变软件中几条伪指令即可。

另外,本系统还可以方便的设计监控、故障自诊断、故障自动复原程序,以提高系统的可靠性。

系统的抗干扰设计,提高了系统的抗干扰能力。

在设计中重点要考虑单片机应用系统的设计。

88点阵显示汉子和数字

88点阵显示汉子和数字

湖南工业大学课程设计资料袋电气与信息工程学院(系、部)2016~2-17 第 1 学期课程名称单片机应用系统指导教师职称副教授学生姓名未知专业班级电气工程及其自动化学题目8*8LED点阵显示文字_____________________成绩起止日期2016 年11 月21 日~2016 年12 月2 日目录清单湖南工业大学课程设计任务书20 16—20 17第一学期电气与信息工程学院电气工程及其自动化专业1404 班级课程名称:单片机应用系统____________________设计题目:8*8LED点阵显示文字______________________指导教师(签字):年月日系(教研室)主任(签字):年月日(单片机应用系统)设计说明书8*8LED点阵显示文字起止日期:2016 年11月21 日至2016年12 月2日学生姓名哈哈班级电气工程0000学号000000000成绩指导教师(签字)电气与信息工程学院(部)2016年12月7日目录第一章系统概述 (1)1.1设计任务及目的 (1)1.2 设计发展前景 (1)第二章系统硬件设计与分析 (3)2.1 复位电路 (3)2.2 晶振电路 (3)2.3 显示电路 (4)第三章程序设计 (6)3.1 汉子与数字的编码 (6)3.2 定时程序 (6)3.3 完整程序 (6)第四章软件仿真与测试 (11)4.1 滚动循环显示 (11)4.2 逐字切换显示 (11)第五章总结 (13)参考文献 (14)附录(单片机源程序) (15)第一章系统概述LED点阵显示系统中各模块的显示方式有静态和动态显示两种。

静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。

汉字显示16X16点阵2

汉字显示16X16点阵2

16X16点阵汉字显示89C51(测试OK)1汉字显示的原理:我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。

即国标汉字库中的每一个字均由256点阵来表示。

我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。

事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。

如果用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。

一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。

在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p 07口。

方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。

即二进制00000100,转换为16进制为 04h.。

上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。

然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04 h.这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:04H,00H,04H,02H,04H,02H,04H,04H04H,08H,04H,30H,05H,0C0H,0FEH,00H05H,80H,04H,60H,04H,10H,04H,08H04H,04H,0CH,06H,04H,04H,00H,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。

88点阵数字滚动显示

88点阵数字滚动显示

项目一8×8点阵数字滚动显示LED点阵的元件符号及内部结构图:对应编码:00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;NULL00H, 00H, 3EH, 41H, 41H, 41H, 3EH, 00H ; 000H, 00H, 00H, 00H, 21H, 7FH, 01H, 00H ; 100H, 00H, 27H, 45H, 45H, 45H, 39H, 00H ; 200H, 00H, 22H, 49H, 49H, 49H, 36H, 00H ; 300H, 00H, 0CH, 14H, 24H, 7FH, 04H, 00H ; 400H, 00H, 72H, 51H, 51H, 51H, 4EH, 00H ; 500H, 00H, 3EH, 49H, 49H, 49H, 26H, 00H ; 600H, 00H, 40H, 40H, 40H, 4FH, 70H, 00H ; 700H, 00H, 36H, 49H, 49H, 49H, 36H, 00H ; 800H, 00H, 32H, 49H, 49H, 49H, 3EH, 00H ; 900H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;NULL硬件设计原理:单片机利用外部晶振作为时钟信号输入,RST端口接入上电复位信号使它加电后自动进行复位操作。

将要显示的字符码表编入单片机的程序中,由单片机控制时序输出相应的扫描数据和字符数据。

行码数据由单片机P0口输出,经一个双向总线收发器控制传输方向后进入LED点阵,点亮相应的发光二极管。

列码扫描信号由P3口输出后,直接输入LED点阵控制8列的扫描,每列选通时间为5ms,看上去就像8列同时显示的效果一样。

加上行中相应的LED灯被点亮,就能看到显示的字符了。

三、源程序代码:R_CNT EQU 31H ;列码R_NCT=31H单元NUMB EQU 32H ;行码NUMB=32H单元TCOUNT EQU 33H;拉幕计数值TCOUNT=33H单元ORG 00H ;程序起始地址LJMP STARTORG 0BH;中断入口地址LJMP INT_T0ORG 30H;子程序入口地址START: ;主程序开始MOV R0, #00H ;每列的行码起始序号置0MOV R_CNT, #00H;列:初值00送到31H单元MOV NUMB, #00H;行:初值00送到32H单元MOV TCOUNT, #00H;计数单元初值置0MOV TMOD, #01H;计数定时器选用16位的计数器,工作在方式1MOV TH0, #(65536-5000)/256;定时5ms。

全彩LED显示屏字库动态滚动方式的操作要求

全彩LED显示屏字库动态滚动方式的操作要求

全彩LED显示屏屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统,它的自带字库显示动态效果主要是依靠硬件扫描驱动,因为这样的操作方法比较简单,但如果遇到一些特殊要求的动态显示就需要利用PC机和单片机控制的LED显示屏系统通讯方法进行显示。

这种方法可以对显示内容进行实时控制,从而实现诸如闪动、滚动、打字等多种动态显示效果。

该方法同时还可以调节动态显示的速度,同时用户也可以在PC机上进行显示效果的预览,显示内容亦可以即时修改而且通过标准模块还可以实现对显示系统的远程控制。

实现动态显示速度调节的方法通常是改变定时器的中断时间,但是当显示速度很慢的时候,该方法容易使整屏的刷新率降低,从而使显示内容出现闪烁。

因此,再设计全彩LED 显示屏时通常采用一种“软定时”方法,即在程序中命名一变量作为“软定时器”,以用来设定两次动态显示的时间间隔。

在对定时中断调用计数时,如果调用次数达到设定值,则改变显示内容。

为保证能够正常显示,“软定时器”的设定值必须大于整屏显示周期,在考虑到余量的情况,可将软定时器的设定值定在大于30ms。

如此循环计数,即可实现动态显示。

“软定时器”的设定值可以通过上位机PC机来改变,这样既可实现LED动态显示的速度调节,又可保持显示内容的流畅和无闪烁感。

LED全彩屏滚动显示要求需要显示的内容每隔一定时间向指定方向移动一列,这样显示屏可以显示更多的内容。

为此,需要在下次移动显示之前对显示缓冲区的内容进行更改,从而完成相应点阵数据的移位操作。

具体操作方法是:设置一个显示缓冲区包括两部分:一部分用来保存当前LED显示屏上显示的10个汉字点阵数据;另一部分为点阵数据预装载区,用来保存即将进入全彩LED显示屏的1个汉字的点阵数据。

滚动指针始终指向显示屏的最右边原点。

当滚动指针移动到需要显示的点阵数据存储区的第1个汉字的首地址时,显示缓冲区LED显示区为空白,而预装载区已保存了第1个待显示汉字的点阵数据。

点阵式LED滚动汉字显示屏原理及设计思路

点阵式LED滚动汉字显示屏原理及设计思路

点阵式LED滚动汉字显示屏原理及设计思路1.引言点阵式LED组成的汉字显示屏在公共场所应用非常广泛。

例如,车站发车时间提示、股票大厅中的股票价格显示板、商场的活动广告栏、候机厅的起飞时间表。

点阵显示器的特点是可以按照需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图型的变化,达到广告宣传和提示的目的。

Proteus是一款新颖的嵌入式系统软硬件设计仿真平台,特别适用于单片机仿真,能够在线、实时仿真多种类型的单片机,诸如MCS-51系列单片机、PIC 单片机、AVR单片机等,能够像硬件仿真器一样进行软硬件调试,而没必要花钱去购买和维护价格不菲的仿真器,对于初学单片机的人来说,既减少了学习成本,又达到了良好的学习效果。

2.硬件电路设计点阵式LED滚动汉字显示屏硬件电路设计框图如图1所示。

电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。

本设计的核心是利用单片机读取显示字型码,通过驱动电路对16×16 LED点阵进行动态列扫描,以实现汉字的滚动显示。

本设计选用的单片机为ATMEL公司的AT89C52,显示屏采用16×16 LED点阵。

电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V工作电压。

时钟电路是单片机的驱动电路,复位电路可在需要时,手动使单片机程序计数器复位清零。

通过阳极驱动电路向16×16点阵送字型码,本设计采用74LS273。

通过阴极驱动电路对16×16点阵进行列扫描,本设计采用74HC138。

图1 硬件电路设计框图利用Proteus软件设计点阵式LED滚动汉字显示屏硬件电路原理图如图2所示。

在Proteus软件中,单片机模型本身包含了工作电源和可改变的工作频率,因此在仿真时无需设计电源电路和时钟电路。

需要说明的是在Proteus软件目前版本中还没有16×16点阵模块,本设计中采用Proteus软件中现有的8×8点阵模块组合成一个16×16点阵模块。

C51多汉字显示(16x16点阵)

C51多汉字显示(16x16点阵)

1 采用自编的软件 2 专用的C程序 3 专用的字模软件


系统可以逐个显示多个汉字 系统可以左移显示多个汉字 系统可以上移显示多个汉字


列触发方式采用低电平(0)触发,行触发方式采用高电平(1) 触发 当某点所处的行为1,列为0的时候,该点被点亮
行 列 16 15 14 13 12 11 10 9 8 7 6 5 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 4 3 2 1


void clrscr() { //行驱动低无效 RowLow=(unsigned char)0x00; RowHigh=(unsigned char)0x00; //列驱动高无效 ColLow=(unsigned char)0xff; ColHigh=(unsigned char)0xff; } void lockdisplay() { //行驱动低无效 RowLow=(unsigned char)0x00; RowHigh=(unsigned char)0x00; }


列(一次2个字节)的输入是字模数据,左边字节取 反放入高位字节,右边字节取反放入低位字节 行(一次2个字节)的输入是行选通数据,它与汉字 字模的对应关系是从上到下为
0x8000,0x4000,0x2000,0x1000,0x0800,0x0400,0x0200,0x0100,0x0080,0x0 040,0x0020,0x0010,0x0008,0x0004,0x0002,0x0001
E1 E2 E3
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
A0 A1
74LS138
A B C Y3 Y2 Y1 Y0 Y4 Y5 Y6 Y7

单片机控制技术项目训练教程-任务二 LED点阵显示屏显示汉字-PPT精选文档

单片机控制技术项目训练教程-任务二  LED点阵显示屏显示汉字-PPT精选文档

(3)LED点阵硬件驱动程序
{ DATAPO RT=1<<i;//点 阵 扫 描 线 的 数 据 RO W 0=1; RO W 0=0;//扫 描 线 输 出 选 通
} else {
}
} delay(10); //短 延 时 i++; //修 改 循 环 变 量 i& =0x0f; //限 制 循 环 变 量 的 值 DATAPO RT=0xff; //拉 高 数 据
项目四led点阵屏广告牌制作任务二led任务二led点阵显示屏显示汉字任务要求任务要求任务分析任务分析硬件电路的硬件电路的设计与搭建设计与搭建软件编写软件编写任务实施任务实施使用yl236单片机实训考核装置显示模块中的led点阵显示屏单元显示两个汉字欢迎显示效果如左图所示1汉字字模的生成与储存216x16汉字扫描方式3led点阵硬件驱动程序1汉字字模的生成与储存ucharcodezm32字模二维数组行数列数宋体12
DATAPORT=0; //输出消隐数据 COL0=1; COL0=0; COL1=1; COL1=0; COL2=1; COL2=0; COL3=1; COL3=0; ROW0=ROW1=1;//消隐选通 ROW0=ROW1=0;//消隐关闭
项目实施
5
•1.硬件电路连接:按照硬件电路接线图连线,选择所需的模块并进行布局, 然后将电源模块、主机模块和显示模块LED点阵用导线进行连接。 •2.打开KEIL软件,通过菜单“项目/新建项目”,新建立一个工程项目3216DZ1 ,然后再建一个文件名为3216DZ1.C的源程序文件,将上面的参考程序输入并保 存,同时将该文件添加到项目中。需要注意的是:数字1的字模需要用取模软件 建立图像得出,这里不再详细说明。 •3.对源程序进行编译和链接,如果有错误则必须修改错误,直到编译成功, 设置生成目标代码。 •4.将目标代码通过编程器写入到单片机中。 •5.接通电源,让单片机运行,观察点阵的显示是否正常。

点阵显示屏滚动显示程序

点阵显示屏滚动显示程序

0x10,0x40,0x10,0x40,0x22,0x44,0x7F,0x7E, // 的
0x42,0x84,0x43,0x04,0x42,0x04,0x42,0x84,
0x7E,0x64,0x42,0x24,0x42,0x04,0x42,0x04,
0x42,0x04,0x7E,0x04,0x42,0x28,0x00,0x10,
0x00,0x04,0x7F,0xFE,0x40,0x04,0x40,0x24, // 同
0x5F,0xF4,0x40,0x04,0x40,0x24,0x4F,0xF4,
0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x24,
0x4F,0xE4,0x48,0x24,0x40,0x14,0x40,0x08,
BUFF[2*s+1]=HZ[xuan][word+1+32*s+2*disrow];
} } Biblioteka /***************发送一线点阵数据*******************/
void sendoneline(void)
{
char s;uchar inc;
if(col<8)inc=0;else inc=1;
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 、
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x30,0x00,0x1E,0x00,
0x0F,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
逐行扫描,24M晶振脉冲,5V直流供电。16*64点阵滚动显示,滚动速度可调,从最快速到最慢速设置30级变速,以实现不同场合下的使用。显示内容可切换,可以将需要显示的不同内容分段写入单片机,然后可以自动定时切换内容,或者设置为手动切换显示内容。可以脱机工作,方便使用,不用总是连接电脑,板子上留有DS18B20数字温度传感器和1302时钟芯片的板载接口,可以实现时间、万年历、温度的实时滚动显示。留有备份电池接口实现掉电信息不丢失、时间不乱。设置八个轻触按钮,方便操作,预留有功能按钮可通过编程实现不同的操作

16x16点阵显示汉字并移动原理图程序

16x16点阵显示汉字并移动原理图程序

16x16点阵显示汉字并移动原理与源程序(简单)周渴望南阳理工学院QQ6本次设计中首先在做了8x8点阵汉子显示基础之上做的,其实点阵原理很简单,就像数码管动态显示一样简单,只要你分清楚行控制,与列控制,某段时间某列可以点亮,哪几行亮,动态扫描一个循环自然组成不同的图像。

这里取模方式是先最左边的一列选通,然后控制控制两个74ls164分别点亮16行中的几行,然后是从左向右第二列依次下去,形成动态扫描。

本文程序非常简单,虽然没注释,认真看几十分钟就全明白了,说白了,数码管动态显示一回事(呵呵其实我自己做的时候下了不少功夫建议先做8x8)。

源程序:#include <reg52.h>unsigned char i;sbit DATA1=P3^7;sbit DATA2=P3^5;sbit CLCK1=P3^6;sbit CLCK2=P3^4;#define uchar unsigned char#define uint unsigned intvoid shuru_1();void shuru_2();unsigned char num,k,temp1,temp2,zuo=0;unsigned int timecount;unsigned char code lie[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, };/*74hc154显示代码从左到右16列依次选通*/unsigned char code hang[288]={0x00,0x00,0x00,0x00,0x1F,0xF8,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0xFF,0 xFE,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1F,0xF9,0x00,0x01,0x00,0x0F,0x00,0x00,/*"电",0*/0x01,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x02,0x41,0x01,0x47,0xFE,0x 45,0x00,0x49,0x00,0x51,0x00,0x61,0x00,0x41,0x00,0x01,0x00,0x01,0x00,0x00,0x00,/*"子",1*/ 0x00,0x00,0x00,0x42,0x44,0x44,0x4C,0xC8,0x54,0xD0,0x65,0x42,0x45,0x41,0x46,0x7E,0 x84,0x40,0x88,0x40,0x90,0x50,0x81,0x48,0x80,0xC4,0x00,0x62,0x00,0x00,0x00,0x00,/*"系",2*/0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x11,0x22,0x31,0x22,0x51,0x22,0x91,0x22,0x1 1,0x22,0x11,0x22,0x11,0x22,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"自",3*/ 0x02,0x08,0x22,0x3C,0x23,0xC8,0x22,0x08,0x22,0x28,0x22,0x1D,0x02,0x02,0x08,0x0C,0 x08,0x70,0xFF,0x80,0x08,0x02,0x08,0x01,0x08,0x02,0x0F,0xFC,0x00,0x00,0x00,0x00,/*"动",4*/0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x20,0x00,0x40,0x00,0x80,0x FF,0xFC,0x02,0x02,0x04,0x02,0x08,0x02,0x10,0x02,0x20,0x02,0x00,0x1E,0x00,0x00,/*"化",5*/ 0x00,0x08,0x00,0x08,0x1F,0xC8,0x92,0x48,0x52,0x48,0x32,0x48,0x12,0x48,0x1F,0xFF,0x 12,0x48,0x32,0x48,0x52,0x48,0x92,0x48,0x1F,0xC8,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",6*/ 0x00,0x00,0x00,0x01,0x00,0x06,0x7F,0xF8,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x0 4,0x40,0xFC,0x40,0x04,0x7F,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,/*"片",7*/ 0x08,0x20,0x08,0xC0,0x0B,0x00,0xFF,0xFF,0x09,0x00,0x08,0xC1,0x00,0x06,0x7F,0xF8,0 x40,0x00,0x40,0x00,0x40,0x00,0x7F,0xFC,0x00,0x02,0x00,0x02,0x00,0x1E,0x00,0x00,/*"机",8*/};void shuru_1() /*74ls164进行输入数据*/{uchar t;for(t=0;t<8;t++){temp1<<=1;DATA1=CY;CLCK1=1;CLCK1=0;}}void shuru_2(){uchar t;for(t=0;t<8;t++){temp2<<=1;DATA2=CY;CLCK2=1;CLCK2=0;}}void main(void){TMOD=0x01;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TR0=1;ET0=1;EA=1;while(1);}void serve_led()interrupt 1 using 0 /*定时中断显示*/{ k=2;TH0=(65536-2000)/256;TL0=(65536-2000)%256;P2=0xff;P2 = lie[num];temp1=hang[num*2+zuo]; /*num*2表示第一个74ls164只去第偶数个字节,跟我的取模方式有关*/shuru_1();P2 = lie[num];temp2=hang[zuo+(num*2+1)]; /*num*2+1表示第二个74ls164只去第奇数个字节,最左第一列16个不控制先发送第一个74ls164字节在发送第二个的字节*/ shuru_2();num++;if(num==16){num=0;}timecount++;if(timecount==100){ num=0;timecount=0;zuo=zuo+2; /*向后扫描加一列实现移动这里每次加二是因为要跳过第二个74ls164的代码前面已经说了取模方式是最左一列16个从上到下取得*/ if(zuo==272){zuo=0;}}}14年8月。

32x16点阵滚动显示

32x16点阵滚动显示

点阵(32x16)滚动显示程序清单://****************************////取模方式:阴码,逆向,逐列式//*****************************////****************************//#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit DS=P3^0;//595数据引脚定义sbit SHCP=P3^1;sbit STCP=P3^2;sbit LDS=P1^2;//595列扫引脚定义sbit LSHCP=P1^0;sbit LSTCP=P1^1;sbit K1=P3^5;//按键定义sbit K2=P3^6;sbit K3=P3^7;uint zimuo;uchar k=0,lies,shuj,sudu,liex,yid,tong,d=10;//列扫数据,上选红色,下选绿色uchar code liexuan[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x 80};uchar code liexuana[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00};//uchar code table[];uchar code tablea[];//***********************////******yanshi**********//void delay(uint x){u char i;w hile(x--)f or (i=0;i<10;i++) ;}//*********595送数据*************//void send74HC595(uchar bydat){u char i;f or (i=0;i<8;i++){bydat<<=1;DS=CY;SHCP=1;SHCP=0;}}//******595送列扫*****************//void lies74HC595(uchar datal){u char i;f or (i=0;i<8;i++){datal<<=1;LDS=CY;LSHCP=1;LSHCP=0;}}//*********按键中断****************//void EX_INT() interrupt 0{i f(K1==0){while(K1==0);d=d-2;if(d==5) d=20;}i f(K2==0){while(K2==0);d=d+2;if(d==20) d=5;}}//*****************主函数*************************//void main(void){ IE=0x81;I T0=0x01;t ong=0;z imuo=0;w hile(1){///////////////////静态显示/////////////////////////* for(k=0;k<17;k++){for(sudu=0;sudu<50;sudu++)//显示时间{for(lies=0;lies<8;lies++)//8列扫描{for(shuj=0;shuj<4;shuj++)//8次送数据{send74HC595(table[lies*2+shuj*16+zimuo]);send74HC595(table[lies*2+shuj*16+1+zimuo]);}for(liex=0;liex<2;liex++)//列选{ if(tong%2==0)lies74HC595(liexuan[lies+liex*8]);else lies74HC595(liexuana[lies+liex*8]);}STCP=1;STCP=0;//锁存为高,595锁存信号LSTCP=1;LSTCP=0;//送行选delay(5);}}zimuo=zimuo+64;if(zimuo>1664) zimuo=0;//有字数限制tong++;if(tong>16) tong=0;//换色}//*****************************************************////////////////////滚动显示/////////////////////////////////////**************************************************///for(yid=0;yid<16;yid++)//移动并显示一个汉字{f or(sudu=0;sudu<d;sudu++)//显示时间{for(lies=0;lies<8;lies++)//8列扫描{for(shuj=0;shuj<4;shuj++)//8次送数据{send74HC595(tablea[shuj*16+lies*2+yid*2+zimuo]);send74HC595(tablea[shuj*16+lies*2+yid*2+1+zimuo]);}for(liex=0;liex<2;liex++)//列选{ if(k%2==0)lies74HC595(liexuan[lies+liex*8]);else lies74HC595(liexuana[lies+liex*8]);}STCP=1;STCP=0;//锁存为高,595锁存信号LSTCP=1;LSTCP=0;//送行选delay(1);}}}zimuo=zimuo+32;if(zimuo>1568) {zimuo=0;k++;} //减去32if(k>5) k=0;//tong++;if(tong>26) tong=0;/////////////////////////////////////////////////////////////}}uchar code tablea[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*///10x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xE0,0x07,0xE0, 0x07,0xE0,0x07,0xE0,0x07,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*////20x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE1, 0xFF,0xE1,0xFF,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0x E1,0xC7,0xE1,0xC7,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*/////30x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0x E1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///40x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00, 0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00, 0x07,0x00,0x07,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///50x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0x E1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xFF,0xC7,0xFF,0xC7,0xFF,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///60x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE1, 0xFF,0xE1,0xFF,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xFF,0xC7,0xFF,0xC7,0xFF,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///70x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01, 0xFF,0x01,0xFF,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01 ,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///80x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0xE1, 0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0 xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///90x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0xFF, 0xC7,0xFF,0xC7,0xFF,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0 xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xFF,0xE1,0xFF,0xE1,0xFF,0xE1,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///100x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*/////110x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0, 0x07,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"未命名文件",0*///120x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x04, 0xD4,0x75,0x54,0x55,0x7E,0x5F,0x54,0x55,0xD4,0x75,0x14,0x04,0x14,0x04,0x14,0x04, 0xD4,0x75,0x54,0x55,0x7E,0x5F,0x54,0x55,0xD4,0x75,0x14,0x04,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" C:\Documents and Settings\Administrator\桌面\囍.BMP",0*///130x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE1, 0xFF,0xE1,0xFF,0xE1,0xC0,0xE1,0xC0,0xE1,0xC0,0xE1,0xC0,0xE1,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xC7,0x01,0xC7,0x01,0xC7,0x01,0xC7,0x01,0xC7,0xFF,0xC7,0xFF,0xC7,0xF F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" C:\Documents and Settings\Administrator\桌面\吉祥.BMP",0*///140x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0xFF,0xC7,0xFF,0xC7,0xFF,0xC7,0x01,0xC7,0x01,0xC7,0x01,0xC7,0x01,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xC0,0xE1,0xC0,0xE1,0xC0,0xE1,0xC0,0xE1,0xFF,0xE1,0xFF,0x E1,0xFF,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* "C:\Documents and Settings\Administrator\桌面\吉祥.BMP",0*///150x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0x0F,0x00,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0 ,0x0F,0xF0,0x0F,0xF0,0x00,0xF0,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" C:\Documents and Settings\Administrator\桌面\嘉禾.BMP",0*///160x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x03,0x00, 0xF3,0xFF,0xF3,0xFF,0x33,0xC0,0x33,0xC0,0x33,0xCF,0x33,0xCF,0x33,0xCC,0x33,0xC C,0x33,0xCC,0xF3,0xCF,0xF3,0xCF,0x03,0xC0,0x03,0xC0,0xFF,0xFF,0xFF,0xFF,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" C:\Documents and Settings\Administrator\桌面\圈.BMP",0*///170x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xF0,0x00,0xF8,0x00,0xF8, 0x00,0xFC,0x00,0xFC,0xFE,0x7F,0xFE,0x1F,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00, 0x06,0x00,0x07,0x38,0x03,0x7C,0x03,0x7E,0x03,0x7F,0xFF,0x7F,0xFF,0x3F,0x00,0x1E, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" C:\Documents and Settings\Administrator\桌面\音乐.BMP",0*/0x14,0x20,0x34,0x30,0x64,0x5C,0xC4,0x4F,0xE4,0x43,0x7C,0x6F,0x3C,0x2C,0x38,0x30, 0x1F,0x1C,0xEF,0x0F,0xE8,0x07,0x08,0x1E,0x28,0x38,0x38,0x70,0x18,0x60,0x08,0x20,/* "欢",0*/0x40,0x40,0x41,0x60,0xCF,0x3F,0xCE,0x3F,0x04,0x60,0xFC,0x47,0xFC,0x47,0x06,0x43, 0x02,0x41,0xFE,0x5F,0xFC,0x5F,0x04,0x42,0x04,0x46,0xFC,0x47,0xFC,0x43,0x00,0x40, /*"迎",1*/0x00,0x20,0x80,0x20,0x84,0x30,0x84,0x10,0x94,0x18,0xB4,0x0C,0xE4,0x06,0xFF,0xFF, 0xFF,0xFF,0xC4,0x03,0xF4,0x06,0xB4,0x0C,0x94,0x18,0x84,0x38,0x84,0x30,0x80,0x10,/ *"来",2*/0x00,0x00,0x22,0x42,0x72,0xC2,0x7A,0xC2,0x2E,0x62,0xE6,0x3F,0xEA,0x3F,0x7A,0x32 ,0x72,0x12,0x22,0x12,0xF8,0x0F,0xF8,0x4F,0x00,0xC0,0xFF,0xFF,0xFF,0x7F,0x00,0x00,/ *"到",3*/0x00,0x00,0x00,0x07,0xC0,0x07,0xE0,0x24,0x30,0x24,0xF8,0x3F,0xF8,0x3F,0x00,0x24,/* "4",4*/0x00,0x00,0x30,0x18,0x38,0x38,0x88,0x20,0x88,0x20,0xC8,0x31,0x78,0x1F,0x30,0x0E,/* "3",5*/0x00,0x00,0xE0,0x0F,0xF0,0x1F,0x18,0x30,0x08,0x20,0x18,0x30,0xF0,0x1F,0xE0,0x0F,/* "0",6*/0x00,0x00,0x70,0x1C,0xF8,0x3E,0x88,0x23,0x08,0x21,0x88,0x23,0xF8,0x3E,0x70,0x1C,/ *"8",7*/0x00,0x04,0x18,0x06,0x1C,0x03,0xC4,0x7F,0xFC,0x7F,0x3C,0x00,0x95,0x7F,0x97,0x7F, 0xD6,0x24,0xF4,0x24,0xB4,0x24,0x94,0x24,0x94,0x7F,0x9C,0x7F,0x0C,0x00,0x04,0x00,/ *"宿",8*/0x20,0x00,0xA0,0x00,0xB0,0x00,0x90,0xFC,0x98,0xFC,0x9C,0x44,0x96,0x44,0xF3,0x47, 0xF3,0x47,0x96,0x44,0x9C,0x44,0x98,0xFC,0x98,0xFC,0xB0,0x00,0xB0,0x00,0x10,0x00, /*"舍",9*/0x10,0x80,0x10,0xC3,0xF0,0x63,0xFF,0x36,0x1F,0x1C,0xF0,0x7F,0xF0,0x73,0x82,0x20, 0x82,0x40,0x82,0xC0,0xF2,0xFF,0xFA,0x7F,0x8E,0x00,0x86,0x00,0x82,0x00,0x80,0x00,/ *"好",10*/0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x30,0x00,0x1C,0x00,0x0F,0xC0,0x03,0xFF,0x00, 0xFF,0x01,0xC2,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x20,/* "人",11*/0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xC0,0x00,0xC0,0x00,0x80,0x00,/* "一",12*/0x00,0x01,0x80,0x41,0xE0,0x40,0x7E,0x41,0x1E,0x41,0x10,0x41,0x10,0x41,0x10,0x41, 0xFF,0x7F,0xFF,0x7F,0x12,0x41,0x10,0x41,0x98,0x41,0x98,0x61,0x10,0x61,0x00,0x40,/* "生",13*/0x00,0x01,0x01,0x01,0x05,0x01,0x0D,0x01,0x79,0x01,0x71,0x01,0x21,0x01,0xFF,0xFF, 0xFF,0xFF,0x41,0x01,0x61,0x01,0x3D,0x01,0x1D,0x01,0x09,0x01,0x01,0x01,0x00,0x01,/* "平",14*/0x80,0x80,0x90,0x80,0x9C,0x80,0x8C,0xC0,0x84,0x47,0xF4,0x6F,0xF5,0x28,0xA7,0x38, 0x86,0x38,0x84,0x2C,0x84,0x67,0x84,0xC3,0x94,0xC0,0x9C,0x40,0x8C,0x00,0x84,0x00,/ *"安",15*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",2*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/};//////////////////////////////////。

单片机课程设计点阵汉字显示

单片机课程设计点阵汉字显示

单片机课程设计点阵汉字显示-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN摘要单片机是计算机技术、大规模集成电路技术和控制技术的综合产物。

经过30多年的发展历程,单片机应用已十分广泛和深入。

所以可以毫不夸张地说,任何设备和产品的自动化、数字化和智能化都离不开单片机。

现在,凡是电脑控制的设备和产品,必有单片机嵌入其中。

这一切表明,单片已成为人类生活中不可或缺的助手。

随着单片机应用的日益广泛,利用单片机控制汉字显示屏被广泛地应用与汽车报站器,广告屏等领域。

本文详细介绍了基于51单片机的LED显示屏控制系统的显示原理,对16*16点阵汉字进行显示,显示屏由4个8*8的LED点阵模块组成一个16*16点阵LED。

系统仿真利用PORTEUS仿真软件和KEIL软件的联调对LED点阵显示屏系统进行调试。

关键词: LED点阵显示屏单片机 PROTEUS仿真目录摘要................................................................................................................ 错误!未定义书签。

1 硬件设计........................................................................................................ 错误!未定义书签。

设计框图及介绍 ..................................................................................... 错误!未定义书签。

51系列单片机简介................................................................................ 错误!未定义书签。

LED点阵显示仿真

LED点阵显示仿真

16*16LED点阵汉字滚动显示设计目的:掌握单片机控制原理与光显示器件的应用熟悉汇编语言编程主要器件:AT89C51,RP1(100K*8), 16*16LED点阵(green共阴极),74H154,晶振(12M), 2个30PF电容, 0.01UF电容,R1(100K),按钮开关设计方案:通过AT89C51的P1.0—P1.3 连接4—16线译码器74LS154对16*16LED点阵的每一竖列进行逐列扫描,并将P0与P2端口作为数据输出端点亮数码管发光显示,实现“西安科技大学乔迺伟”字样,并依次左移循环显示设计原理:仿真示意图如下所示DB 060H,060H,066H,070H,0EEH,03FH,0ECH,01FH,000H,030H,0F6H,03FH,0F6H,06FH,03EH,06DH;DB 0FEH,06CH,036H,06CH,0FEH,06DH,03EH,06DH,0F6H,06FH,0F6H,06FH,000H,060H,000H,000H; "迺",7 DB 0C0H,000H,060H,000H,0F8H,07FH,0FFH,07FH,007H,000H,00CH,003H,06CH,003H,06CH,003H;DB 06CH,003H,0FFH,07FH,0FFH,07FH,06CH,003H,06CH,033H,06CH,03FH,00CH,01FH,000H,000H; "伟",8 END2)软件编译与调试设计心得体会:在这次光电子设计中,感触最深的就是查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的资料是十分必要的,同时也是必不可少的。

在这此设计中我们虽然可以抛开实际题目,任意发挥,但我们的一切都要有根据,有理可寻,不求实际的构想。

点阵动态显示汉字与LCM(LCD)显示图片

点阵动态显示汉字与LCM(LCD)显示图片
if(d>32*N)
d=d-32*N;
if(yu<8)
temp=(word[a]<<yu)|(word[b]>>(8-yu));
else
temp=(word[c]<<(yu-8))|(word[d]>>(16-yu));
}
else;
TR0=1;
return temp;
}
void send()//数据发送函数,写入595芯片数据
我使用的LCM是LM4229;为点阵型,不带字库,其封装如下所示:
LM4229分辨率是240X128,共20个引脚,其引脚名称和功能如下:
1.VSS:GND
2.VDD:VCC(LCD供电电源)
3.VO:LCD背光调节电压
4.C/D:WR=0、C/D=1写命令WR=0、C/D=0写数据
RD=0、C/D=1读状态RD=0、C/D=0读数据
一.

设计一个采用8x8点阵的汉字显示屏,要求能连续动态显示多个汉字,字体最少为16x16点阵。

题目要求能动态显示多个汉字,且字体最少为16x16点阵,所以最少要用到4块8x8的点阵;如果采用常规的并口连接的话要使用到4个并口(32个输出),显然这是不现实的,而且使用并口也很不经济,占用太多的IO会大大降低单片机的扩张能力,如果要想后继加入一些功能模块的话,IO的个数将十分捉襟见肘。

综上考虑,我在硬件设计时,用P2口产生片选信号,而P3口的4端和5端控制74LS595数据的擦除和输出,以下是电路图:
连线的特写如下:
译码器参数片选信号IN。
IN信号控制移位脉冲的输出管道。
74LS595除了脉冲信号CLK(相当于芯片使能)外,其他信号都是并联共用的。

16×16点阵字库

16×16点阵字库

16×16点阵字库2007-06-25 09:07 分类:单片机一般我们使用16*16的点阵宋体字库,所谓16*16,是每一个汉字在纵、横各16点的区域内显示的.不过后来又有了HZK12、HZK24,HZK32和HZK48字库及黑体、楷体和隶书字库.虽然汉字库种类繁多,但都是按照区位的顺序排列的.前一个字节为该汉字的区号,后一个字节为该字的位号.每一个区记录94个汉字,位号则为该字在该区中的位置.因此,汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1.减1是因为数组是以0为开始而区号位号是以1为开始的.这仅为以汉字为单位该汉字在汉字库中的位置,那么,如何得到以字节为单位得到该汉字在汉字库中的位置呢?只需乘上一个汉字字模占用的字节数即可,即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,而按每种汉字库的汉字大小不同又会得到不同的结果.以16*16点阵字库为例,计算公式则为:(94*(区号-1)+(位号-1))*32.汉字库文该从该位置起的32字节信息即记录了该字的字模信息.了解点阵汉字及汉字库的构成原理后,显示汉字就变得简单.以16*16点阵字库为例, 通常的方法是:将文件工作指针移到需要的汉字字模处、将汉字库文件读入一2*16数组再用for循环一位位地显示.#include "graphics.h"#include "stdio.h"main(){ int i=VGA,j=VGAHI,k;unsigned char mat[16][2],chinease[3]="我";FILE *HZK;if((HZK=fopen("hzk16","rb"))==NULL)exit(0);initgraph(&i,&j,"");i=chinease[0]-0xa0;j=chinease[1]-0xa0; /*获得区码与位码*/fseek(HZK,(94*(i-1)+(j-1))*32l,SEEK_SET);fread(mat,32,1,HZK);for(j=0;j<16;j++)for(i=0;i<2;i++)for(k=0;k<8;k++)if(mat[j][i]&(0x80>>k)) /*测试为1的位则显示*/putpixel(i*8+k,j,WHITE);getch();closegraph(); fclose(HZK);。

点阵显示汉字滚动图解

点阵显示汉字滚动图解

点阵的汉字滚动实现其实很简单,用一句话概括就是:一边在行(列)上进行扫描,一遍循环依次取出显示代码输入到列(行)上。

以我们板上载有的8×8点阵为例,当要实现2个汉字的滚动时,我们把整个滚动的过程拆开,会发现每一次完整的滚动,点阵要显示2×8=16个状态。

我们可以把两个汉字的行(或列)扫描代码通过字模提取软件提出后保存在数组里,然后顺序循环的去取数组里的数据放到行(或列)上就可。

我们用图示来解析一下整个过程。

我们假设要显示两个汉字”人”和”天”的左右滚动。

首先我们假设在行和列的输入数据中,1代表亮,0代表灭。

数组code里保存好从字模软件中按行提取出来的扫描码,假设code[15]=A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7(A代表“人”字的列扫描码,B代表“天”字的列扫描码)思路是这样的:第1个时段T1:(完整的汉字“天”)时刻t0,R=0000_0001,L=A0,R0那一列显示;、时刻t1,R=0000_0010,L=A1,R1那一列显示;时刻t2,R=0000_0100,;L=A2,R2那一列显示;…….时刻t7,R=1000_0000,;L=A7,R7那一列显示;然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T1时间段内按这样扫描的话,就形成了A0—A7所代表的数据,即汉字“人”第2个时段T2:(开始滚入“天”字)时刻t0,R=0000_0001,L=A1,R0那一列显示;、时刻t1,R=0000_0010,L=A2,R1那一列显示;时刻t2,R=0000_0100,L=A3,R2那一列显示;…….时刻t7,R=1000_0000,L=B0,R7那一列显示;“天”字第1列然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T2时间段内按这样扫描的话,就形成了A1—A7和B0所代表的数据,如下图:第3个时段T3:时刻t0,R=0000_0001,L=A2,R0那一列显示;、时刻t1,R=0000_0010,L=A3,R1那一列显示;时刻t2,R=0000_0100,;L=A4,R2那一列显示;…….时刻t6,R=1000_0000,L=B0,R6那一列显示;“天”字第1列时刻t7,R=1000_0000,L=B1,R7那一列显示;“天”字第2列然后又回到时刻t0的扫描状态,循环扫描。

8×8点阵数字滚动显示

8×8点阵数字滚动显示

项目一8×8点阵数字滚动显示LED点阵的元件符号及内部结构图:对应编码:00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;NULL00H, 00H, 3EH, 41H, 41H, 41H, 3EH, 00H ; 000H, 00H, 00H, 00H, 21H, 7FH, 01H, 00H ; 100H, 00H, 27H, 45H, 45H, 45H, 39H, 00H ; 200H, 00H, 22H, 49H, 49H, 49H, 36H, 00H ; 300H, 00H, 0CH, 14H, 24H, 7FH, 04H, 00H ; 400H, 00H, 72H, 51H, 51H, 51H, 4EH, 00H ; 500H, 00H, 3EH, 49H, 49H, 49H, 26H, 00H ; 600H, 00H, 40H, 40H, 40H, 4FH, 70H, 00H ; 700H, 00H, 36H, 49H, 49H, 49H, 36H, 00H ; 800H, 00H, 32H, 49H, 49H, 49H, 3EH, 00H ; 900H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;NULL硬件设计原理:单片机利用外部晶振作为时钟信号输入,RST端口接入上电复位信号使它加电后自动进行复位操作。

将要显示的字符码表编入单片机的程序中,由单片机控制时序输出相应的扫描数据和字符数据。

行码数据由单片机P0口输出,经一个双向总线收发器控制传输方向后进入LED点阵,点亮相应的发光二极管。

列码扫描信号由P3口输出后,直接输入LED点阵控制8列的扫描,每列选通时间为5ms,看上去就像8列同时显示的效果一样。

加上行中相应的LED灯被点亮,就能看到显示的字符了。

三、源程序代码:R_CNT EQU 31H ;列码R_NCT=31H单元NUMB EQU 32H ;行码NUMB=32H单元TCOUNT EQU 33H;拉幕计数值TCOUNT=33H单元ORG 00H ;程序起始地址LJMP STARTORG 0BH;中断入口地址LJMP INT_T0ORG 30H;子程序入口地址START: ;主程序开始MOV R0, #00H ;每列的行码起始序号置0MOV R_CNT, #00H;列:初值00送到31H单元MOV NUMB, #00H;行:初值00送到32H单元MOV TCOUNT, #00H;计数单元初值置0MOV TMOD, #01H;计数定时器选用16位的计数器,工作在方式1MOV TH0, #(65536-5000)/256;定时5ms。

16×16点阵汉字设计-左移-右移-翻页-上移-下移-多种方式

16×16点阵汉字设计-左移-右移-翻页-上移-下移-多种方式

一、设计依据16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。

每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。

每次显示一行后再显示下一行。

本设计是利用实验仪上的16×16 LED点阵显示器,编写显示英文、汉字字符程序并进行显示,最好能移动显示。

要求在本设计过程中,通过设计合适的硬件电路及对应的软件,实现上述的控制过程,同时写出合格的课程设计说明书。

二、要求及主要内容1.硬件电路设计(1)完成89C51应用系统设计(晶振电路,上电复位电路等)(2)利用单片机I/O口或以扩展锁存器的方式控制点阵显示。

掌握单片机与16×16点阵块之间接口电路的设计方法。

2.程序设计掌握单片机与16×16点阵块之间接口电路的设计方法及编程要求完成主程序的设计及对应的子程序设计。

3.选芯片, 元件按设计连线4.完成子程序调试5.完成总调试三、途径和方法综合运用单片机和电子电路相关知识,实现本次设计。

进行程序设计时先画流程图再进行程序设计。

子程序调试按以下步骤进行:(1)实验板与PC机联机。

(2)利用实验系统16×16点阵实验单元,以两种方式控制点阵显示。

要求编制程序实现汉字点阵循环显示。

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

它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。

并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。

LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。

LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等。

文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

点阵的汉字滚动实现其实很简单,用一句话概括就是:一边在行(列)上进行扫描,一遍循环依次取出显示代码输入到列(行)上。

以我们板上载有的8×8点阵为例,当要实现2个汉字的滚动时,我们把整个滚动的过程拆开,会发现每一次完整的滚动,点阵要显示2×8=16个状态。

我们可以把两个汉字的行(或列)扫描代码通过字模提取软件提出后保存在数组里,然后顺序循环的去取数组里的数据放到行(或列)上就可。

我们用图示来解析一下整个过程。

我们假设要显示两个汉字”人”和”天”的左右滚动。

首先我们假设在行和列的输入数据中,1代表亮,0代表灭。

数组code里保存好从字模软件中按行提取出来的扫描码,假设code[15]=A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7(A代表“人”字的列扫描码,B代表“天”字的列扫描码)
思路是这样的:
第1个时段T1:(完整的汉字“天”)
时刻t0,R=0000_0001,L=A0,R0那一列显示;、
时刻t1,R=0000_0010,L=A1,R1那一列显示;
时刻t2,R=0000_0100,;L=A2,R2那一列显示;
…….
时刻t7,R=1000_0000,;L=A7,R7那一列显示;
然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T1时间段内按这样扫描的话,就形成了A0—A7所代表的数据,即汉字“人”
第2个时段T2:(开始滚入“天”字)
时刻t0,R=0000_0001,L=A1,R0那一列显示;、
时刻t1,R=0000_0010,L=A2,R1那一列显示;
时刻t2,R=0000_0100,L=A3,R2那一列显示;
…….
时刻t7,R=1000_0000,L=B0,R7那一列显示;“天”字第1列
然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T2时间段内按这样扫描的话,就形成了A1—A7和B0所代表的数据,如下图:
第3个时段T3:
时刻t0,R=0000_0001,L=A2,R0那一列显示;、
时刻t1,R=0000_0010,L=A3,R1那一列显示;
时刻t2,R=0000_0100,;L=A4,R2那一列显示;
…….
时刻t6,R=1000_0000,L=B0,R6那一列显示;“天”字第1列
时刻t7,R=1000_0000,L=B1,R7那一列显示;“天”字第2列
然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T3时间段内按这样扫描的话,就形成了A1—A7和B0--B1所代表的数据,如下图:
第4个时段T4:
时刻t0,R=0000_0001,L=A2,R0那一列显示;、
时刻t1,R=0000_0010,L=A3,R1那一列显示;
时刻t2,R=0000_0100,;L=A4,R2那一列显示;
…….
时刻t5,R=1000_0000,L=B0,R5那一列显示;“天”字第1列
时刻t6,R=1000_0000,L=B1,R6那一列显示;“天”字第2列
时刻t7,R=1000_0000,L=B2,R7那一列显示;“天”字第3列
然后又回到时刻t0的扫描状态,循环扫描。

只要在这个T4时间段内按这样扫描的话,就形成了A1—A7和B0—B2所代表的数据,如下图:
按如上的取数方法,我们依次可得到如下时间段的显示:第5个时段T5:
第6个时段T6:
第7个时段T7:
第8个时段T8:
第9个时段T9:(完整的“天”字)
时刻t0,R=0000_0001,L=B0,R0那一列显示;、
时刻t1,R=0000_0010,L=B1,R1那一列显示;
时刻t2,R=0000_0100,;L=B2,R2那一列显示;
…….
时刻t5,R=1000_0000,L=B5,R5那一列显示;
时刻t6,R=1000_0000,L=B6,R6那一列显示;
时刻t7,R=1000_0000,L=B7,R7那一列显示;
第10个时段T10:(开始滚入“人”字)
时刻t0,R=0000_0001,L=B1,R0那一列显示;、
时刻t1,R=0000_0010,L=B2,R1那一列显示;
时刻t2,R=0000_0100,;L=B3,R2那一列显示;
…….
时刻t5,R=1000_0000,L=B6,R5那一列显示;
时刻t6,R=1000_0000,L=B7,R6那一列显示;
时刻t7,R=1000_0000,L=A0,R7那一列显示;“人”的第1列
第11个时段T11:
时刻t0,R=0000_0001,L=B2,R0那一列显示;、
时刻t1,R=0000_0010,L=B3,R1那一列显示;
时刻t2,R=0000_0100,;L=B4,R2那一列显示;
…….
时刻t5,R=1000_0000,L=B7,R5那一列显示;
时刻t6,R=1000_0000,L=A0,R6那一列显示;“人”的第1列时刻t7,R=1000_0000,L=A1,R7那一列显示;“人”的第2列
第12个时段T12:
时刻t0,R=0000_0001,L=B3,R0那一列显示;、
时刻t1,R=0000_0010,L=B4,R1那一列显示;
时刻t2,R=0000_0100,;L=B5,R2那一列显示;
…….
时刻t5,R=1000_0000,L=A0,R5那一列显示;“人”的第1列时刻t6,R=1000_0000,L=A1,R6那一列显示;“人”的第2列时刻t7,R=1000_0000,L=A2,R7那一列显示;“人”的第3列
第13个时段T13:
第14个时段T14:
第15个时段T15:
第16个时段T16:
第17个时段T17:(回到时间段T1的状,显示完整的“人”字)
下一个时间段,我们只要又从T1段又重复循环扫描就可形成,“人”字和“天”字的左右滚动了。

其中各个时间段的长度大小就可表示滚动的速度了,段时间越长,滚动速度慢,反之亦然。

这样,汉字的左右滚动显示就实现了。

视频地址:更精彩内容见青创电子官方网站:。

相关文档
最新文档