点阵显示汉字滚动图解
- 格式:doc
- 大小:823.00 KB
- 文档页数:8
先说明一下:在TC下面显示汉字是比较麻烦的,实在想用,可以用VC。
DOS下的点阵汉字你是否碰到过用启动盘启动系统后用DIR命令得到一串串莫名其妙的字符?有经验的朋友会告诉你:那是汉字。
汉字?你不禁会问:怎么一个我一个也不认识。
但那确确实实是汉字,如果你启动UCDOS或其他的汉字系统后,就会看到那是一个个熟悉的汉字。
同样是汉字,为什么前后会看到不同的结果?呵呵,其实在电脑硬件中,根本没有汉字这个概念,也没有英文的概念,这铁玩意认识的概念只有——内码。
☆汉字的内码点头表示什么?是“对”、“YES”,偏偏有的地方表示的意义却恰恰相反。
一个动作,有不同的诠释;一个问题,有不同的答案;而一个符号,却有不同的意义,关键在于:你是如何地理解。
在电脑中亦如此,所有的数据都是以0和1保存的,按不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有5000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
不信,你可以用记事本写一C文件:main(){unsigned char *s,*e="ABcd",*c="你好";clrscr();printf("English char =");s=e;while(*s!=0) /*C的字符串以0为结束符*/{printf("%3d,",*s);s++;}printf("\nChinease char=");s=c;while(*s!=0){printf("%3d,",*s);s++;}getch();}再用TC输入*.txt打开运行,看见了没有,那些数值即英文和汉字的各字节内码。
CPLD在LED点阵屏上实现字符滚动本实验箱是16*16LED点阵屏,采用共阳极发光二极管,在某一时刻点阵屏只有一列中的指定的发光二极管发光,原理图如下:CPLD提供四个控制信号来为LED点阵屏的某一列提供电源,D6为0时,IC1起作用,根据D4、D5、P163的值来译中L1~L8中的某一列;D6为1时,IC2起作用,根据D4、D5、P163的值来译中L9~L16中的某一列。
而行数据是通过两片74LS373来控制的,当P175接高电平1时,IC3起作用,根据输入来显示出某一列的R1~R8行数据;当P176接高电平1时,IC4起作用,根据输入来显示出某一列的R9~R16行数据。
(1)顶层模块原理图该原理图包括三个模块:分频模块(fp模块)、存储器模块(rom模块)和滚动控制模块(scancontrol模块),如下图所示:(1)分频模块该模块将50MHz时钟信号分频为1MHz和1Hz两个时钟信号,用于对字符滚动的控制。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fp isport(inclk:in std_logic;clk1Hz,clk1MHz:out std_logic);end entity;architecture arch_fp of fp issignal fp1:std_logic_vector(24 downto 0);signal fp2:std_logic_vector(4 downto 0);signal f1,f2:std_logic;beginprocess(inclk)beginif(inclk'event and inclk='1') thenif fp1= thenfp1<="0000000000000000000000000";f1<=not f1; -- f1产生1Hz的频率elsefp1<=fp1+1;end if;if fp2=24 thenfp2<="00000";f2<=not f2; -- f2产生1MHz的频率elsefp2<=fp2+1;end if;end if;end process;clk1Hz<=f1;clk1MHz<=f2;end arch_fp;(2)rom模块该模块用于存储要显示的字符的字模信息,字模信息可以从专用的字模提取软件中提取出来。
HUBEI NORMAL UNIVERSITY综合课程设计(二)Integrated Curriculum Design(2)目录1 设计目的 02 设计思路 03 设计过程 0时钟电路模块 (1)复位电路模块 (1)单片机控制模块 (2)显示模块 (2)列控制模块 (2)行控制模块 (2)汉字取模 (3)4电路仿真与分析 (3)仿真结果显示 (3)仿真分析 (5)5 焊接实物 (5)点阵部分 (5)最小系统 (5)整体实物图 (5)焊接线路图 (6)6 总结 (6)参考文献 (6)附件 (7)LED点阵(24*24)汉字系统设计1 设计目的(1) 熟悉Proteus仿真软件的使用,了解各元件的功能及作用;(2) 熟悉LED点阵的行与列的判别方法,以及熟悉一般设计过程。
(3) 熟悉AT89C52单片机的基本结构、引脚功能、存储器结构等基本知识。
(4) 掌握74HC138芯片的引脚功能及使用方法,芯片的级联方法,以及掌握电路的基本调试能力。
(5) 掌握Keil软件的使用方法,以及如何创建文件和编写程序。
2 设计思路本次设计采用Proteus单片机仿真平台对用9个8*8点阵组成的24*24点阵式LED显示屏进行仿真设计,实现汉字显示。
在设计中共有6个模块,其分别是时钟电路模块,复位电路模块,单片机控制模块,显示器模块,列控制模块,行控制模块。
在Proteus中完成硬件的设计,同时采用Keil开发平台软件设计程序,最终实现点阵显示屏的特定汉字显示。
3 设计过程LED点阵汉字系统主要有6个模块,每个模块都有自己特定的功能,是不可缺少的组成部分。
在设计前的首要条件是先对LED点阵汉字系统的实现过程有深入的了解,然后按功能分模块设计电路,最后组成完整的工作电路。
本次设计由AT89C52作为主控单元,显示屏选用9个8*8点阵显示模块来组成24*24点阵显示器,行控制直接使用单片机的引脚控制,列控制选用3个移位寄存器74HC138来控制,汉字的字模是使用取模软件实现的。
湖南工业大学课程设计资料袋电气与信息工程学院(系、部)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点阵显示系统中各模块的显示方式有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
VHDL/EDA实习报告设计题目:基于FPGA的8*8点阵汉字滚动显示目录FPGA设计的特点 (2)设计任务与要求 (3)设计原理 (3)LED点阵原理 (3)汉字的存储 (5)字符样式设计 (7)开发环境介绍 (13)FPGA设计的特点FPGA 通常被认为是ASIC 实现的一种替代手段. 一般ASIC 包括三种, 既全定制、半定制(含标准单元和门阵列) 以及可编程器件。
对于前两种, 需要支付不可重复使用的工程费用NRE (Non recurring Engineering) , 主要用于芯片的流片、中测、分析的工程开销, 一次费用一般在 1 万至数万美元以上。
如果一次不成功、返工、甚至多次返工,NRE 费用将要上升。
成本高、风险大, 而通常对每个ASIC 品种的需求量往往不大,NRE 费用分摊到每个产品上价太高, 用户无法接受。
而对于可编程器件PLD (Programmable Logic Device) 正是可以解决上述问题的新型ASIC, PLD 以其操作灵活、使用方便、开发迅速、投资风险小等突出优点, 特别适合于产品开发初期、科研样品研制或小批量的产品. FPGA 是一种新型的PLD, 其除了具有PLD 的优点外, 其规模比一般的PLD 的规模大。
目前,Xilinx 推出的XC4025 可以达到25000 门的规模,Altera 公司的FLEX10K100 系列芯片可达到十万门的规模,完全可以满足用户的一般设计需要。
FPGA 的主要特点是: 寄存器数目多, 采用查找表计数,适合时序逻辑设计。
但是互连复杂, 由于互连采用开关矩阵,因而使得延时估计往往不十分准确。
FPGA 也有其自身的局限性, 其一就是器件规模的限制,其二就是单元延迟比较大。
所以, 在设计者选定某一FPGA器件后, 要求设计者对器件的结构、性能作深入的了解, 在体系结构设计时, 就必须考虑到器件本身的结构及性能, 尽可能使设计的结构满足器件本身的要求. 这样就增加了设计的难度。
LED点阵显示程序(带汉字移动).txt-//自私,让我们只看见自己却容不下别人。
如果发短信给你喜欢的人,他不回,不要再发。
看着你的相片,我就特冲动的想P成黑白挂墙上!有时,不是世界太虚伪,只是,我们太天真。
LED点阵显示程序(带汉字移动)#include <AT89x51.H>unsigned int zimo,xx=0; //zimo是字模计数器,xx为分屏显示的时候的字数。
unsigned char yid,h; //yid为移动计数器,h为行段计数器unsigned char code hanzi[]; //汉字字模unsigned char BUFF[18],BUFF2[18]; //左移显示的缓存void qing(void); void xianshi(void);void fen(void); void zuo(void);void in_data(void); //调整数据void rxd_data(void); //左移发送数据void out_rxd(unsigned char *d); //分屏、上移发送数据char code sw[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x00}; /*8行段码*//* 百强电子世界网: *//***********主程序******************/void main(void){ unsigned char ee;SCON=0;P1=0;yid=0;zimo=0;while(1){ fen(); //分屏显示for(ee=30;ee>0;ee--)//清屏幕3秒{qing();}zuo(); //左移显示for(ee=30;ee>0;ee--){qing();}}}/**********清屏幕*******************/void qing (void){ unsigned char zz,xx=0x0ff;for (zz=33;zz>0;zz--){out_rxd(&xx);}P1=0xff; P1=0; //锁存为高,74HC595锁存信号P2=0; //清74LS138的使能端}/**********分屏显示***********/void fen(void){ do{ xianshi(); }while(xx++<=5); //调用单屏显示xx=0;}/************单屏显示*************/void xianshi(void){ unsigned char ii,jj; unsigned int kk,aa;for (kk=500;kk>0;kk--) //每屏显示500次{for(ii=1;ii<16;ii+=2) //每个汉字分8行扫描{for (jj=0;jj<8;jj++) //每次要发送8个汉字的2个字节,发送8次{ aa=(xx*8+jj)*32+ii;out_rxd(&hanzi[aa]); //从串口输出第1个字的第1字节。
16*32点阵数字钟及汉字显示一.电路原理框架设计制作作品:16×32点阵显示数字钟及汉字显示实现功能:点阵显示的实时时钟以及汉字等字符的左移显示实用特征:采用双电源供电,断电后时钟由电池供电还能继续运行,而且精确性较高实现原理:1.时钟显示是由DS1302精确的时钟芯片产生时钟信号并将其送至单片机,经过单片机处理后再输送到点阵显示模块。
2.汉字显示并左移原理是先写入与本点阵驱动相应的代码进单片机,通过单片机控制程序取表进行处理后送点阵模块显示电路主要模块及原理图:1.单片机最小系统及控制按键电路2.DS1302与单片机接口电路DS1302除了系统上电时由系统供电外,如果主电源断电还有一电池给DS1302供电,防止断电后DS1302数据消失。
4.点阵行驱动模块电路行驱动采用74LS154(4-16线译码器)及PNP三极管,由于是16×32点阵显示功率较大故采用8550NP三极管。
5.点阵列驱动电路列驱动采用74HC595移位寄存器将控制位级连接入单片机,每个74HC595数据输入端单独接单片机。
16×32点阵模块由8块小的8×8点阵模块通过级连而拼成,共16行,32列。
二:主要元器件选择:单片机:AT89S51采用市场上比较常用的STC89C51三极管:点阵的行驱动电路用,这里采用PNP管,具体型号用8550 点阵块:为了电路简单,采用双色8×8点阵晶振:采用的是12MHZ的晶振电源部分:采用5V电压供电,采用的是L7805稳压芯片供电电阻:大部分是限流电阻,阻值为4.7K或10K,1K译码器:4-16线采用市场上较为常用的74LS154,用来作行驱动移位寄存器:采用74HC595移位寄存器作列驱动,驱动列端口分配及连接:P1.0-P1.2:DS1302与单片机接口P1.3-P1.4:K0,K1按键,用来调整时间,按下为0P0:P0口接点阵行驱动电路接译码器P2:P2口点阵列驱动电路接74HC595最后是做好之后的图附:点阵时间显示源程序//=================================================================== ================////*标题:16*32点阵数字钟显示程序//*说明:时钟信号产生采用DS1302,列采用74HC595驱动(共4个),行驱动采用4 -16线译码器74LS154//*功能:通过动态扫描显示时钟,可显示时,分,秒,日期中的月和日//*作者:HEY//*日期:2006-05-29//*邮箱:billy3416@//*备注:此是我刚接触单片机时的一个小制作程序和电路设计上难免有不足之处请谅解//=================================================================== ================//#include <reg51.h>#include <stdlib.h>#define uchar unsigned char//=================================================================== ================////用到的引脚及端口定义//=================================================================== ================//sbit SERIALIN_0=P2^0; //定义P2.0为列向第1个74HC595的DATA输入sbit SERIALIN_1=P2^1; //定义P2.1为列向第2个74HC595的DATA输入sbit SERIALIN_2=P2^2; //定义P2.2为列向第2个74HC595的DATA输入sbit SERIALIN_3=P2^3; //定义P2.3为列向第2个74HC595的DATA输入sbit CLOCK_DATA=P1^0; //定义P1.0为DS1302的D ATA端口sbit CLOCK_RST=P1^1; //定义P1.1为DS1302的复位输出端口sbit CLOCK_SCLK=P1^2; //定义P1.2为DS1302的时钟信号状态控制sbit K0=P1^3; //K0为按键1,用来选择要调整时间的选项(时和分)sbit K1=P1^4; //K1为按键2,执行加1 sbit CLOCK=P2^4; //74HC595的移位时钟控制sbit LATCH=P2^5; //74HC595的锁存输出时钟控制void control(); //调整时间控制函数void time();uchar CLOCK_TIME[3]={0,0,0}; //定义时钟时间数据存储区,分别为(时,分,秒)uchar BUFFER[8]={0,0,0,0,0,0,0,0}; //显示缓冲区uchar YEAR[3]={0,0,0}; //定义时钟年月日数据存储区uchar temp[4]={0,0,0,0}; //定义74HC595的移位缓冲区uchar FLASH_STOP; //显示小时和分钟之间的两点控制位uchar sec_flash; //用单片机定时器模拟的一秒(用来控制小时和分中之间的两点)//=================================================================== ================////定义0-9的点阵显示代码段 8*8//=================================================================== ================//uchar code bmp[10][8]={{0xe3,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xe3}, //0{0xf7,0xc7,0xf7,0xf7,0xf7,0xf7,0xf7,0xc1}, //1{0xe3,0xdd,0xdd,0xfd,0xfb,0xf7,0xef,0xc1}, //2{0xe3,0xdd,0xfd,0xe3,0xfd,0xfd,0xdd,0xe3}, //3{0xfb,0xf3,0xeb,0xdb,0xdb,0xc1,0xfb,0xf1}, //4{0xc1,0xdf,0xdf,0xc3,0xfd,0xfd,0xdd,0xe3}, //5{0xe3,0xdd,0xdf,0xc3,0xdd,0xdd,0xdd,0xe3}, //6{0xc1,0xdd,0xfd,0xfb,0xf7,0xf7,0xf7,0xf7}, //7{0xe3,0xdd,0xdd,0xe3,0xdd,0xdd,0xdd,0xe3}, //8{0xe3,0xdd,0xdd,0xdd,0xe1,0xfd,0xdd,0xe3}, //9};//=================================================================== ================////定义0-9的点阵显示代码段 8*8 与上面不同的是多了小时和分钟之间的两点//=================================================================== ================//uchar code bmp_1[10][8]={{0xe3,0xdd,0x5d,0xdd,0xdd,0x5d,0xdd,0xe3}, //:0{0xf7,0xc7,0x77,0xf7,0xf7,0x77,0xf7,0xc1}, //:1{0xe3,0xdd,0x5d,0xfd,0xfb,0x77,0xef,0xc1}, //:2{0xe3,0xdd,0x7d,0xe3,0xfd,0x7d,0xdd,0xe3}, //:3{0xfb,0xf3,0x6b,0xdb,0xdb,0x41,0xfb,0xf1}, //:4{0xc1,0xdf,0x5f,0xc3,0xfd,0x7d,0xdd,0xe3}, //:4{0xe3,0xdd,0x5f,0xc3,0xdd,0x5d,0xdd,0xe3}, //:5{0xc1,0xdd,0x7d,0xfb,0xf7,0x77,0xf7,0xf7}, //:6{0xe3,0xdd,0x5d,0xe3,0xdd,0x5d,0xdd,0xe3}, //:7{0xe3,0xdd,0x5d,0xdd,0xe1,0x7d,0xdd,0xe3}, //:8};//=================================================================== ================////定义0-9的点阵显示代码段数码似的字模 8*8 显示数据前有一横杠将月和日格开//=================================================================== ================//uchar code bmp_2[10][8]={{0xff,0xff,0xf8,0xfa,0x8a,0xfa,0xf8,0xff}, //-0{0xff,0xff,0xfe,0xfe,0x8e,0xfe,0xfe,0xff}, //-1{0xff,0xff,0xf8,0xfe,0x88,0xfb,0xf8,0xff}, //-2{0xff,0xff,0xf8,0xfe,0x88,0xfe,0xf8,0xff}, //-3{0xff,0xff,0xfa,0xfa,0x88,0xfe,0xfe,0xff}, //-4{0xff,0xff,0xf8,0xfb,0x88,0xfe,0xf8,0xff}, //-5{0xff,0xff,0xf8,0xfb,0x88,0xfa,0xf8,0xff}, //-6{0xff,0xff,0xf8,0xfe,0x8e,0xfe,0xfe,0xff}, //-7{0xff,0xff,0xf8,0xfa,0x88,0xfa,0xf8,0xff}, //-8{0xff,0xff,0xf8,0xfa,0x88,0xfe,0xf8,0xff}, //-9};//=================================================================== ================////定义0-9的点阵显示代码段模拟数码似的字模 8*8//=================================================================== ================//uchar code bmp_3[10][8]={{0xff,0xff,0x8f,0xaf,0xaf,0xaf,0x8f,0xff}, //0{0xff,0xff,0xef,0xef,0xef,0xef,0xef,0xff}, //1{0xff,0xff,0x8f,0xef,0x8f,0xbf,0x8f,0xff}, //2{0xff,0xff,0x8f,0xef,0x8f,0xef,0x8f,0xff}, //3{0xff,0xff,0xaf,0xaf,0x8f,0xef,0xef,0xff}, //4{0xff,0xff,0x8f,0xbf,0x8f,0xef,0x8f,0xff}, //5{0xff,0xff,0x8f,0xbf,0x8f,0xaf,0x8f,0xff}, //6{0xff,0xff,0x8f,0xef,0xef,0xef,0xef,0xff}, //7{0xff,0xff,0x8f,0xaf,0x8f,0xaf,0x8f,0xff}, //8{0xff,0xff,0x8f,0xaf,0x8f,0xef,0x8f,0xff}, //9};//=================================================================== ================////定义0-59模拟七段数码管显示 8*8//=================================================================== ================//uchar code bmp_4[60][8]={{0xff,0xff,0x88,0xaa,0xaa,0xaa,0x88,0xff}, //00{0xff,0xff,0x8e,0xae,0xae,0xae,0x8e,0xff}, //01{0xff,0xff,0x88,0xae,0xa8,0xab,0x88,0xff}, //02{0xff,0xff,0x88,0xae,0xa8,0xae,0x88,0xff}, //03{0xff,0xff,0x8a,0xaa,0xa8,0xae,0x8e,0xff}, //04{0xff,0xff,0x88,0xab,0xa8,0xae,0x88,0xff}, //05{0xff,0xff,0x88,0xab,0xa8,0xaa,0x88,0xff}, //06{0xff,0xff,0x88,0xae,0xae,0xae,0x8e,0xff}, //07{0xff,0xff,0x88,0xaa,0xa8,0xaa,0x88,0xff}, //08{0xff,0xff,0x88,0xaa,0xa8,0xae,0x88,0xff}, //09{0xff,0xff,0xe8,0xea,0xea,0xea,0xe8,0xff}, //10{0xff,0xff,0xee,0xee,0xee,0xee,0xee,0xff}, //11{0xff,0xff,0xe8,0xee,0xe8,0xeb,0xe8,0xff}, //12{0xff,0xff,0xe8,0xee,0xe8,0xee,0xe8,0xff}, //13{0xff,0xff,0xea,0xea,0xe8,0xee,0xee,0xff}, //14{0xff,0xff,0xe8,0xeb,0xe8,0xee,0xe8,0xff}, //15{0xff,0xff,0xe8,0xeb,0xe8,0xea,0xe8,0xff}, //16{0xff,0xff,0xe8,0xee,0xee,0xee,0xee,0xff}, //17{0xff,0xff,0xe8,0xea,0xe8,0xea,0xe8,0xff}, //18{0xff,0xff,0xe8,0xea,0xe8,0xee,0xe8,0xff}, //19{0xff,0xff,0x88,0xea,0x8a,0xba,0x88,0xff}, //20{0xff,0xff,0x8e,0xee,0x8e,0xbe,0x8e,0xff}, //21{0xff,0xff,0x88,0xee,0x88,0xbb,0x88,0xff}, //22{0xff,0xff,0x88,0xee,0x88,0xbe,0x88,0xff}, //23{0xff,0xff,0x8a,0xea,0x88,0xbe,0x8e,0xff}, //24{0xff,0xff,0x88,0xeb,0x88,0xbe,0x88,0xff}, //25{0xff,0xff,0x88,0xeb,0x88,0xba,0x88,0xff}, //26{0xff,0xff,0x88,0xee,0x8e,0xbe,0x8e,0xff}, //27{0xff,0xff,0x88,0xea,0x88,0xba,0x88,0xff}, //28{0xff,0xff,0x88,0xea,0x88,0xbe,0x88,0xff}, //29{0xff,0xff,0x88,0xea,0x8a,0xea,0x88,0xff}, //30{0xff,0xff,0x8e,0xee,0x8e,0xee,0x8e,0xff}, //31{0xff,0xff,0x88,0xee,0x88,0xeb,0x88,0xff}, //32{0xff,0xff,0x88,0xee,0x88,0xee,0x88,0xff}, //33{0xff,0xff,0x8a,0xea,0x88,0xee,0x8e,0xff}, //34{0xff,0xff,0x88,0xeb,0x88,0xee,0x88,0xff}, //35{0xff,0xff,0x88,0xeb,0x88,0xea,0x88,0xff}, //36{0xff,0xff,0x88,0xee,0x8e,0xee,0x8e,0xff}, //37{0xff,0xff,0x88,0xea,0x88,0xea,0x88,0xff}, //38{0xff,0xff,0x88,0xea,0x88,0xee,0x88,0xff}, //39{0xff,0xff,0xa8,0xaa,0x8a,0xea,0xe8,0xff}, //40{0xff,0xff,0xae,0xae,0x8e,0xee,0xee,0xff}, //41{0xff,0xff,0xa8,0xae,0x88,0xeb,0xe8,0xff}, //42{0xff,0xff,0xa8,0xae,0x88,0xee,0xe8,0xff}, //43{0xff,0xff,0xaa,0xaa,0x88,0xee,0xee,0xff}, //44{0xff,0xff,0xa8,0xab,0x88,0xee,0xe8,0xff}, //45{0xff,0xff,0xa8,0xab,0x88,0xea,0xe8,0xff}, //46{0xff,0xff,0xa8,0xae,0x8e,0xee,0xee,0xff}, //47{0xff,0xff,0xa8,0xaa,0x88,0xea,0xe8,0xff}, //48{0xff,0xff,0xa8,0xaa,0x88,0xee,0xe8,0xff}, //49{0xff,0xff,0x88,0xba,0x8a,0xea,0x88,0xff}, //50{0xff,0xff,0x8e,0xbe,0x8e,0xee,0x8e,0xff}, //51{0xff,0xff,0x88,0xbe,0x88,0xeb,0x88,0xff}, //52{0xff,0xff,0x88,0xbe,0x88,0xee,0x88,0xff}, //53{0xff,0xff,0x8a,0xba,0x88,0xee,0x8e,0xff}, //54{0xff,0xff,0x88,0xbb,0x88,0xee,0x88,0xff}, //55{0xff,0xff,0x88,0xbb,0x88,0xea,0x88,0xff}, //56{0xff,0xff,0x88,0xbe,0x8e,0xee,0x8e,0xff}, //57{0xff,0xff,0x88,0xba,0x88,0xea,0x88,0xff}, //58{0xff,0xff,0x88,0xba,0x88,0xee,0x88,0xff}, //59};//=================================================================== ================////名称:delay//说明:延时函数//功能:根据需要取不同的值,实现不同的延时效果//=================================================================== ================//void delay(){uchar n;for(n=0;n<=125;n++);}void delay2(uchar m){uchar n;while(m--){for(n=0;n<=200;n++);}}//=================================================================== ================////名称:shift//说明:74HC595左移程序//功能:实现74HC595的移位输入//=================================================================== ================//void shift(){uchar j;for(j=0;j<8;j++){temp[0]=temp[0]<<1; //将temp[0]左移1位SERIALIN_0=CY; //进位输出到移位寄存器temp[1]=temp[1]<<1; //将temp[1]左移1位后SERIALIN_1=CY; //进位输出到移位寄存器temp[2]=temp[2]<<1; //将temp[2]左移1位后SERIALIN_2=CY; //进位输出到移位寄存器temp[3]=temp[3]<<1; //将temp[0]左移1位后的进位输出到移位寄存器SERIALIN_3=CY; //进位输出到移位寄存器CLOCK=1; //移位时钟控制移位CLOCK=0;}}//=================================================================== ================////名称:display//说明:显示函数//功能:将要显示的数据通过74HC595和74LS154用LED点阵显示出来//实现方法:该16X32点阵为8块小点阵,显示时将上下分开,上面显示时间。
点阵式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点阵模块。
大学生科技创新项目汉字信息滚动显示屏目录摘要 (1)关键词 (1)1引言 (1)1.1.设计意义 (1)1.2.系统功能要求 (2)2方案设计 (2)3硬件设计 (13)4软件设计 (6)5系统调试 (13)6.设计总结 (14)7.参考文献 (14)汉字信息滚动显示屏摘要LED显示屏又叫电子显示屏或者飘字屏幕。
是由LED点阵组成,通过红色,蓝色,绿色LED灯的亮灭来显示文字、图片、动画、视频,内容可以随时更换,各部分组件都是模块化结构的显示器件。
通常由显示模块、控制系统及电源系统组成。
显示模块由LED灯组成的点阵构成,负责发光显示;控制系统通过控制相应区域的亮灭,可以让屏幕显示文字、图片、视频等内容,电源系统负责将输入电压电流转为显示屏需要的电压电流。
LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
本设计是基于L M3S3748单片机的8x8显示屏,其中包含了硬件、软件、调试等方案的设计关键词:L M3S3748;LED;单片机1引言1.1. 设计意义LED显示屏采用了低电压扫描驱动,具有耗电省、使用寿命长、成本低、亮度高、视角大、可视距离远、防水、规格品种多等优点,可以满足各种不同应用场景的需求,发展前景非常广阔,被公认为最具增长潜力也是发展最快的的LED应用市场。
2008年LED显示屏市场规模约100亿元。
随着北京奥运会、上海世博会、广州亚运会等重大赛会的举办和筹备,体育场馆、机场、车站、银行、医院、公共广场、商业场所、居民社区的大面积应用,LED显示屏的市场应用空间不断扩大。
此外,已架设的大型LED显示屏幕每10年将历经一次换机潮,随着人们生活水平的提高,户外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点阵模块。
单片机课程设计题目8×8点阵式LED显示汉字学院名称电气工程学院指导老师黄智伟朱卫华班级电子信息工程061班学号20064470120学生姓名胡含二00九年六月点阵式LED显示汉字一、实验目的利用8X8点阵循环移动显示“胡”字二、芯片介绍AT89S51是美国ATMEL公司生产的低功耗、高性能CMOS 8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
主要性能参数:※与MCS-51产品指令系统完全兼容※4k字节在系统编程(ISP)Flash闪速存储器※1000次擦写周期※4.0—5.5V的工作电压范围※全静态工作模式:0Hz~33MHz※三级程序加密锁※128×8字节内部RAM※ 32个可编程I/O口线※ 2个16位定时/计数器※ 6个中断源※全双工串行UART通道※低功耗空闲和掉电模式※中断可以从空闲模式唤醒系统※看门狗(WDT)及双数据指针※掉电标识及快速编程特性※灵活的在系统编程(ISP—字节或页写模式)AT89S51功能特性概述:AT89S51提供以下标准功能:4k字节Flash闪速存储器,128×8字节内部RAM,32个可编程I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电模式保存RAM中的内容,但振荡器停止工作并禁止其他所有硬件工作直到下一个硬件复位。
AT89S51的方框图及封装如下:引脚功能说明:※Vcc:电源电压.※GND:地※P0口:PO日是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
16 16模块在PROTEUS中的构成Proteus中的8*8LED点阵系列分红、绿、蓝等不同颜色,其共阴还是共阳?默认行引脚在上还是列引脚在上?等等问题要在使用前先予以判断,具体方法如下图Proteus仿真16*16LED点阵显示汉字Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。
下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵,用于本例的显示任务。
首先,从Proteus元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。
此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面8个引脚是其行线,右边8个引脚是其列线(当然,如果你是将右转,则右边8个引脚是行线)。
然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行16个LED,列线也相同。
并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。
连接好的16×16点阵如下图连接成如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。
组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢,如下图我们可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。
然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如下图可以看到,原来杂乱的连线现在已经几乎全部隐藏了,一块16×16的LED点阵做成了。
需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。
项目一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点阵LED上依次显示“梅川酷子”四个字,分别用正向显示和反向显示,间隔两秒钟变换一次,电路图和效果图下图所示。
AT89 c52晶振频率为24MHz,用T0定时,改变变量flag值,从而让程序确定显示哪个汉字和显示方式(正向or反向)。
#include <atmel\regx52.h>或者#include <reg51.h>#define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag;/*flag变量MSB 7 6 5 4 3 2 1 0 LSB× ××Bit5=1,Bit4=0 时,负向显示Bit5=0,Bit4=1 时,负向显示Bit[2..0]74HC138的片选信号*/int8 n;int8 code table[][32]={{0x88,0x00,0x88,0x00,0x88,0x7F,0x48,0x00,0xDF,0x1F,0xA8,0x10,0x9C,0x1 2,0xAC,0x14,0xEA,0x7F,0x8A,0x12,0x89,0x14,0x88,0x10,0x88,0x7F,0x08,0x 10,0x08,0x14,0x08,0x08},/*"梅",0*/{0x08,0x20,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x2 1,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x04,0x 21,0x04,0x20,0x02,0x00},/*"川",1*/{0x00,0x08,0xFE,0x08,0x28,0x0A,0x28,0x7E,0xFE,0x0A,0xAA,0x09,0xAA,0xF F,0xEA,0x00,0x86,0x00,0x82,0x7E,0xFE,0x42,0x82,0x42,0x82,0x42,0xFE,0x 7E,0x82,0x42,0x00,0x00},/*"酷",2*/{0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x0 1,0x00,0x41,0xFE,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x 01,0x40,0x01,0x80,0x00}/*"子",3*/};void delay(void);void main(void){int8 i;int8 j;int8 index;flag=0x10;n=0;//定时器T0初始化TMOD=0x01;TH0=0xb1;TL0=0xe0;ET0=1;EA=1;TR0=1;while(1){index=flag&0x03;if((flag&0x30)==0x10){ //正向显示for(i=0;i<8;i++){ //显示上半屏P0=table[index][2*i];//左上P2=i|0x08;delay();P0=table[index][2*i+1];//右上P2=i|0x10;delay();}for(i=8;i<16;i++){ //显示下半屏P0=table[index][2*i];//左下P2=(i-8)|0x20;delay();P0=table[index][2*i+1];//右下P2=(i-8)|0x40;delay();}}if((flag&0x30)==0x20){ //反向显示for(i=0;i<8;i++){P0=~(table[index][2*i]);//左上P2=i|0x08;delay();P0=~(table[index][2*i+1]);//右上P2=i|0x10;delay();}for(i=8;i<16;i++){P0=~(table[index][2*i]);//左下P2=(i-8)|0x20;delay();P0=~(table[index][2*i+1]);//右下P2=(i-8)|0x40;delay();}}}}void delay(void){int16 i;for(i=0;i<50;i++);}void timer0() interrupt 1 using 3{TF0=0;TH0=0xb1;TL0=0xe0;//10ms中断一次if(n<200){n++;}else{ //2秒改变一次switch(flag){case 0x10:{flag=0x11;//下次显示正向“川”break;}case 0x11:{flag=0x12;//下次显示正向“酷”break;}case 0x12:{flag=0x13;//下次显示正向“子”break;}case 0x13:{flag=0x20;//下次显示负向“川”break;}case 0x20:{flag=0x21;//下次显示负向“梅”break;}case 0x21:{flag=0x22;//下次显示负向“酷”break;}case 0x22:{flag=0x23;//下次显示负向“子”break;}case 0x23:{flag=0x10;//下次显示正向“梅”break;}}n=0;}}。
点阵的汉字滚动实现其实很简单,用一句话概括就是:一边在行(列)上进行扫描,一遍循环依次取出显示代码输入到列(行)上。
以我们板上载有的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段又重复循环扫描就可形成,“人”字和“天”字的左右滚动了。
其中各个时间段的长度大小就可表示滚动的速度了,段时间越长,滚动速度慢,反之亦然。
这样,汉字的左右滚动显示就实现了。
视频地址:更精彩内容见青创电子官方网站:。