版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目2点阵LED电子显示屏的设计2.1项目描述本模块的主要内容是:运用汉字点阵显示技术、LED点阵显示器件等设计出一个具有一定实用价值的32*16点LED电子显示屏。该系 统可实中英文字符信息显示,可用在公共场合做流动信息显示。 该系 统应用了点阵扫描显示的原理,以美国ATME公司AT89S51单片机为 控制芯片,采用“ Proteus+Keil C ”对LED电子显示屏进行了仿真, 仿真结果表明:该系统能达到预期的性能要求,证明采用软硬件结合, 利用单片机设计LED电子显示屏的方法是可行的。通过该项目的学习 与实践,可以让读者获得如下知识和技能:学习LED点阵器件接口技术;学习汉字点阵字模提
2、取技术;学习LED点阵扫描显示工作原理和应用方法;培养学生运用C51编写显示屏动态显示的能力;2.2知识准备要完成出以上要求的LED点阵显示屏的设计,需要具备以下一些 相关的知识和技能,下面进行阐述。2.2.1单片机输入输出端口单片机对数据有着灵活、强大的运算处理能力,但有些数据需要 从外部输入进来,并且有一些数据处理好之后,要送到外部控制相应 器件动作。例如,按键与指示电路,没键按下时是高电平,当有键按 下时,会向单片机发出低电平信号,单片机接收到之后,向指示电路 发出亮灯电平。这样,单片机就用到了对外的基本接口,也就是单片 机输入输出(I/O ) 口。1、I/O端口硬件结构AT89S51单
3、片机有四组I/O 口,每组为8位,即一个字节,它们P0,P2,P3的引脚分别是P0,P1,P2,P3 口。由于精简单片机的引脚,为功能复用或第二功能引脚。各接口的配置情况如图2.1所示vcc百匚 ADOn-WTAQQMTAQLftftqd (b)P1端口中的一位(a) P0端口中的一位Ahsrnale Output FunctranInpvt runtrllon(d)P3端口中的一位图2.1单片机端口内电路上图中可以看出,四个I/O都是双向口,既可以做输出,又可以 做输入。其中,P1、P2、P3 口有内部上拉,做为输入输出时可以直 接使用。P0和P2可以通过内部控制信号去转换开关,使 P0和P
4、2切 换成地址/数据的访问外部空间模式。P0做普通I/O 口使用时,为漏极开路输出,需在外部接上拉电 路以便产生高电平。P0 口做数据/地址功能使用时,为推挽式输出。 P0在输出地址时间段里,输出的是低 8位地址,高8位地址由P2 口 输出。如果P3 口内的锁存器已经写入 1,那么P3还可启用复用功能。P3的复用功能如表3.1所示表2.1 P3 口复用功能端口引脚复用功能P3.0RXD (串行接收接口)P3.1TXD (串行发送接口)P3.2INT0 (外部中断0)P3.3INT 1 (外部中断1)P3.4T0 (定时/计数器0外部输入口)P3.5T1 (定时/计数器1外部输入口)P3.6RW
5、 (访问外部空间时写信号)P3.7RD (访问外部空间时读信号)2、各I/O端口的访问P0P3 口在芯片内的地址处于内部特殊寄存器段中,其具体地址如分别为 80h,90h,a0h,b0h。(1)基本输入输出各端口做普通I/O进行数据输入,需先给相应的I/O端口写入数 据“ 1”,然后才能正常读取外线路引进的电平。对于 P0 口,还需要 接外部上拉。否则,有可能读不到正确的电平信号。例如,将P2.0的引脚电平读到位变量x0中bit x0; /定义一个位变量P2=P2|1; / 将P2.0置1,其它位数据不变x0=0;/ 假设P2.0的电平为低电平,x0记为0if (P2&1) /读P2 口,并判
6、断 P2.0是否为1x0=1; /P2.0是高电平,x0记为1各I/O 口作为普通I/O 口的数据输出时,即时给I/O赋值即可。 例,P仁0xa0;给P1对外输出数值0xa0。不管是进行输入还是输出操作,在对I/O 口进行编程时,既可以 使用字节操作方式,也可以进行位操作方式。(2)功能复用当有复用功能或第二功能要使用I/O 口时,相应的I/O引脚就不 能做普通I/O使用,否则会造成数据混乱。如 P3.6、P3.7,在对外 部RAM访问时,P3.6与P3.7是写、读控制线,这时就不能做普通I/O使用P0 口、P2 口做为地址/数据功能使用时,可访问外部程序存储器 或外部RAM存储器。在访问外部
7、空间时,在地址输出阶段,P0送出地址的低8位,P2送出地址的高8位,然后单片机产生ALE(地址锁 存)信号控制单片机外部的地址锁存器存入地址值。由于在整个操作 周期内P2的地址信号一直有效,一般不对P2的地址信号锁存。在数 据阶段,P0输出或输入数据。3、I/O 口的应用实例1按键状态指示灯控制。P1 口的P1.0到P1.3接有四个按键,P1.4到P1.7有四个LED发 光二极管,当P1.0按下时,P1.4所接的发光二极管点亮。P1.1的键 对应P1.5的LED其它的以此类推。实现方法:P1 口做为普通I/O使用时,有内部上拉,可以将按 键一端接地,另一端直接引脚上。而发光二极管的发光,可以利
8、用 P1 口的低电平驱动电流足够大的特性,来进行驱动。电路设计如下:R33Okooooooook.lkk?k-;dodld2dH- E E ErsijftLimJ.LJLiAMJJPO閑MP0 2/ADQKTAL?PO沁3 P0.4/W4 PO.5/AD5RSTP0.7/AD7R2(P2倔PSENP2.3/A11ALEP2.4/A12EAP2.5ZA13 P2.G/A14- P2.咖5P10P3 OffiSCDP1 1P3.1/WP1.2P1.3R3.3AMT1P1JP3.JTOP1.SP3.5/T1IP1.6P36WVRP1.7P3.7/RD23_31A1S9C51J盏弍兰云去JJ兰兰玄兰k
9、n ooo_S?22?ki o0ak2 0*-a-k3 0oa图22按键状态指示灯控制电路图程序设计如下:/实例1按键的状态指示灯控制。#in elude sbit key0=P1A0;sbit key1=P1Al;sbit key2=P1A2;sbit key3=P1A3;sbit ledO=P1A4;sbit led 1= P1A5;sbit led2=P1A6;sbit led3=P1A7;void mai n(void)while(1)led0=key0; /key按下为低电平,led为低电平亮led 1= key1; /led2=key2; /led3=key3; /实例2: RAM
10、T展。在单片机外部扩展32K字节RAM并编写程对其进行检查。实现方法:P0 P1做地址/数据功能使用。对RAM逐个字节写入数值Oxaa,然后读出是否为Oxaa,不相等即为RAM昔误。电路设计如下:ciP33土丄士 土丄MMPD.idOlPD.沁 2阳談邓PD.4i=4WETPD.7/M7ra.i/MF22JAWfsehF2.M11ALE 當P7啣地P 诃A14P2?A16Pl Q血呻0F1.fiH l/TXDPUpsjiirroPI 3rsj/ifhtP14 Pl 5円.SHUP1JPITATQdCfil1?21Hf-diHIlflD I 2 3 4 用闍A1A1AIA1Al QPPQ-O-Q
11、Qfi-i 3 4 5 TaII_DOQDDi01m02KIdoKfl5D6oeCf?Q7ACIA1衞局凹“闰总ft-ljlDj&JM 讯KD? ppp PF FrF -o-a-o-a-oppplli?zA10 All mA14Of图2.3 RAM扩展电路图程序设计如下:/实例2: RAM扩展。#in elude #define XBYTE (u nsig ned char volatile xdata *) 0)void error(void)/ram 出错处理程序,自行填写void mai n(void)un sig ned int add;for(add=0;add J J 5J J j
12、 J J 6 八八了外观图T共阴型图2.4 LED点阵外观图2.5 LED共阴共阳原理LED点阵显示器件按能显示颜色分类,可以单色和彩色显示器件。 单色LED点阵显示器件,每一个窗口内只有一只或一种单色发光二极 管,整个器件内的发光二极管只能发出一种色光。 彩色的LED点显示 器件的每个窗口内有两种或以上的可发出不同颜色光的发光二极管。LED点阵显示器件按公共端的连接方式分类,可共阴极和共阳极 两种结构。如图3.5所示,两个图形均为5*7的LED单色点阵显示器 件。其中,左边图为共阴极结构。即把7个发光二极管阴极连在一起, 作为一列,共5列。这时如果需要点亮其中的一个 LED则需要在对 应的行
13、输入高电平,列输入低电平,否则不能点亮。比如我们现在要 点亮第4行,第2只LED,则要在点阵块的9脚加高电平,3脚加低 电平,这时才能发光。当然还在 2脚或3脚串入限流电阻,以控制 LED的亮度。右边图为共阳极结构。和共阴极不同的是,对需要点亮 的LED所在行需加低电平,所在列加高电平。2、字符点阵显示与字模提取一个字符若在点阵屏上显示出来, 那么它就不可能像我们手写字一样是连续的一笔一画了,而是由一个点挨一点表示出来,比如在8*8的点阵屏上,点亮显示出字符 A那么显示方式可以如图2.6所示。12 3 4 5 6 7 85吗首 TCS9IDuI2fiMlb.lB图2.6字母A点阵图形图2.7汉
14、字中点阵图形在图中,用实心圈表示点亮,用空心表示不亮,这样形成了 A 的点阵图形。如果用1表示亮,0表示不亮,那么这个8*8的点阵 来显示 A时的数据,可以这样取出。第一行是“00001000”,刚好一个字节,用十六进制表示为0x08。第二行是0x14,后面的按顺序为 0x22, 0x22,0x3E,0x22, 0x22,0x22。这一组 8 个字节的信 息就表示字符 A的点阵图形,这样的一组信息也称之为字模。当 然还有一种取法就是按列来,第一列为0x00,后面依次为0x00,0x3F,0x48,0x88,0x48,0x3F,0x00。可见,按列得到的数据与 按行的方式是不同的。这两种取显示数
15、据均为常用方式,具体使用 哪一种要根据设计出的电路与控制软件的要求来决定。一个点阵显示屏为了能显示一屏足够清晰完整的信息,那么就会对显示屏的点数提出具体要求。如刚才的例子,显示屏显示字符A用的是8*8点阵器件,其实用5*7的点阵也能达到人能识别出 字符 A的目的。为了明了的显示一个汉字,我们需要用16*16或更多点数的点阵来完成单个汉字的显示,如图2.7所示,就是用16*16点数的点阵来显示汉字“中”的示意图。当我们以横向取字 模的方式来获得数据时,第一行的数据为“0000 0001 0000 0000”,用两个字节来表示其十六进制值为0x01,0x00,其它15行数据可依此类推。这样不同的字
16、,就有不同的显示点阵信息,也就有不同 的字模,在使用时需加以区分。为了得到不同的字符或汉字的字模,一般常用的方法有两种, 一是使用字模提取软件,二是使用集成了常用字符、汉字字模的字 库芯片。字模提取软件,网上有很多,使用者可以根据自己的需要 下载。使用比较好的字模提取软件时,有一些参数可以根据自己的 需求进行设置改动。其中有单个字符点数,有5*7、16*16、32*32等一些选项;字型设置,可设置成宋体、楷体等;设置取模方式, 如横向、竖向;数据信息格式,如C语言格式,汇编语言格式等,以及一些其设置。常用的集成字模芯片,有GT21/23系列的字库芯片,如 GT21L16S23、点阵扫描显示与接
17、口电路为了在LED点阵器件上看到完整正确的信息,那么LED点阵需 在相应的位置点亮LED,而LED点阵器件的结构决定了不能将各行 或各列同时点亮,需要米用扫描方式来实现。扫描方式显示就将LED 屏上的信息,分成一行一行或一列一列轮流点亮。由于人眼的惰性,扫描整屏所用的时间要少于或等于20ms,就察觉不出LED点阵是一行一行轮流点亮出来,而是整屏同时点亮。也就是说每秒钟扫描整 屏次数要大于等于50次。如图3.8,将“A”的显示过程分解的表示出来了图2.8逐列扫描点阵显示根据这个过程,我们可以得到图3.9所示的扫描信号与每行数据配合显示的过程。扫描信号D L 1 L 1 1 1 1D D DD00
18、010D D D D 0 0 0 01 1 1 0 J J J 100扫描显示笫四列U UUU扫描显示第T扫描显示第二列扫描显示第三列111110 11扫描显示第五列扫描显示第六列扫描信号L 1 L L 0 1 1 1显D1 1 1 1110 1I 1 1 11110扫描晶示第七列扫描d示笫八列图2.9扫描显示时行列信息假设点阵器件为共阴极方式的, 这个显示过程分成8步走。第步是给器件的列引脚送入扫描码01111111,使第一行LED进入有效状态。同时,行引脚送入第一列的显示数据0x00,由于这一组数据内没有 1,所以整屏没有一只LED点亮。否则在第一列的LED 中,所对应的行引脚为 1的就会
19、发光。第二步是在第一步显示一一 段时间后,先撤掉行引脚数据,再将列引脚送入扫描信号10111111, 改行引脚信息为第二列显示数据0x00,进行第二列的显示,同样没有一只LED点亮。第三步时,显示数据为0x3f,第三列将有6个LED 点亮。后面六步显示过程中行列信息如图所示。八步完成后,再从 头循环,以得到整屏效果。于是,根据这一过程,我们可以得出相应硬件驱动电路,如图2.10所示。图中,行显示信号由单片机 P1 口通过三极管直接提供, 行扫描信号由单片机P2 口经过缓冲器接到行引脚。单片机的软件控 制P1、P2 口的输出配合工作完成上述过程。D6D7 VCC显示信号D5D4D3D2D1DOH
20、1+4k4414电电电k电1L4444扫描信号图2.10 8*8点阵驱动电路图从上面设计可知,一块 8*8的LED点阵显示器需单独占用16 根端口线,也就是说需要占用单片机的2个字节并行端口。这样相对MC51单片机而言,端口资源是比较少的。在显示信息需要同时使用多块LED点阵器件时,需要采用并联或串联锁存芯片进行扩 展。匚p1202旧3I64175lbG157148139121011OC1Qf1 VCC Jao4Q .GND5Q Set(a) 74ls373aoR7Q6Q6D5D .1E Ji j.D D Q Q D D1 2 3 4-1 2 3 4 5 79 ljlj 匚 ILQLJCnd
21、BicDE*CK oG一mm- GI54J321-d 9 k(b) 74IS595图 2.11并行、串行锁存器图3.11为常用的并行、串行锁存器。(a)图为8位并联数据 锁存器芯片,型号为 74LS373当74LS373的C端有效时,从输入 端来的数据将锁存到74LS373,当0C端有效时,锁存的信息并行输 出。B图为8位数据串行锁存器芯片74LS595,它为两级锁存芯片。 通过数据串行移位时钟 SRC,将SER引脚的数据串行移位存入第一 级锁存器。RCK有效时(高电平),将第一级锁存器的数据复制到第 二级锁存器,G门控信号有效时(低电平),数据并行输出。4、LED点阵显示器件接口实例实例3:
22、用5*7的LED点阵器件显示数字“ 6”本例用5*7的LED点阵器件显示数字“6”,接口电路如图3.5所 示(采用共阳极LED点阵器件)。实现方法:图2.12中LED点阵的列信息由单片机P0引脚提供做 扫描信号,扫描信号低电平时LED被点亮,然后由P1 口输出电平控 制显示的内容,数字” 6”的字模信息如表6所示。表3.2.1 5*7点阵显示数字6信息表列行12345100110 丁201000310000411110510001610001701110字模信息只有七位,不足的一位,在高位补0,用十六进制方法表示为:0x1e,0x29,0x49,0x49,0x06。由于LED点阵器件是共阳的方
23、式的,当列引脚接扫描信号时,是高电平有效,行引脚接显示数据,为低电平点亮。表2.2.1信息表使用高电平点亮,为正确显示出来,需要对的数据先进行取反操作再输出显示。电路设计如下:1OuFClHIR9C3tunX7AL2RTP觌癥P0.WjM PDUAU P0 7JAP7f2仙 P2-M1DP3EN 辱 EAF2.M11F2.715P4 Q殆阿xpP1 1 P11F3.1/1I7D P3.2rtNTOMSW.3flMT1P-1會P3.4T0P1J5PI冲ey岬P1 7F-3.7/RDJ1El4TGRQ2n l 罚寸 O U U O URP1RE&PACK-BIk图2.12 5*7LED 点阵与单片
24、机的接口电路 程序设计如下:/实例3 :用5*7的LED点阵器件显示数字“ 6 ”#in elude #in elude #defi ne led_C P0#defi ne led_R P2#defi ne LED_OFF 0#defi ne LED_ON 1sbit led_CO=led_CP;sbit led_C1=led_CA1;sbit led_C2=led_CA2;sbit led_C3=led_CA3;sbit led_C4=led_CA4;unsigned char code tab=0x1e,0x29,0x49,0x49,0x06; void delay (un sig ned
25、 char tm)un sig ned char i;for(;tm0;tm_)for(i=240;i0;i-);void mai n(void)/初始化led_C=LED_OFF;关闭所有扫描,即关闭显示while(1)/显示第一列led_C=LED_OFF; /关闭所有扫描,即关闭显示 led_R=tab0;led_CO=LED_ON; 第一列有效delay(8); / 延时大约 4ms/显示第二列led_C=LED_OFF;/关闭所有扫描 led_R=tab1;led_C仁LED_ON; /第二列有效delay(8); / 延时大约 4ms/显示第三列led_C=LED_OFF;/关闭所
26、有扫描 led_R=tab2;led_C2=LED_ON;delay(8); / 延时大约 4ms/显示第四列led_C=LED_OFF;/关闭所有扫描 led_R=tab3;led_C3=LED_ON;delay(8); / 延时大约 4ms/显示第五列led_C=LED_OFF;/关闭所有扫描 led_R=tab4;led_C4=LED_ON;delay(8); / 延时大约 4ms实例4:用8*8LED点阵器件显示数字“ 678”实现方法:图3.13为单片机驱动三块8*8的共阴极LED点阵器 件显示数字“ 678”的电路。电路图中,仍采用单片机P0 口做列扫描 信号,三块LED点阵的行信
27、号分别接P1、P2、P3 口,由P1 口来提供 第一块LED的显示数据内容,P2 口提供第二块LED的数据,P3 口对 接第三块。因此,三块LED点阵所使用列扫描信号虽然是相同的,但 显示的内容却是不同。但这种方式由于过多地占用了单片机端口资 源,在实际应用中,远远不只三块8*8的LED点字,所以不实用,而 是采用扩展I/O 口的方式实现。电路设计如下:RP1U1BQtJS5 3S8b8QSS3SSEj3c:B35 8Sboooooao1XF口 _1 2iFi1芮AUPDUMDDP0.1IAD1!P02IAD2P0 3W3PQ4iAT4P0.5M6PflJsiAreItS IIPO.TiW?P
28、F USEPJ1JIA3P22TA10PS&JP2.MHALEF2.4iA2EAP2.5iA13W2iM4P2.7i5PI 1P3.1/DP1 2 PMP3刘啊1P3.W1P1AP3 /T0PI 5FSJWT1!PI JP3 了帝-jyT.1.!J.37=35VM3Q R3 r. 00U l fM m |V tiULLL LLL LL LLC M 7 J M ! H IT K E IX: E EL IL0Q2 l13 Q4 05 TQ3 7 |8 IFTG2Z2 J =N22ZL J mZ2ZZ JmE2Z JPV2Z2Z JFFCZ22 JFtCZZ2 JIdllOSb.图2.13 3 块8
29、*8LED点阵显示电路程序设计如下:/实例4 :用8*8LED点阵器件显示数字“ 678”#in elude #in elude #defi ne led_C P0#defi ne led_RB0 P2#defi ne led_RB1 P3#defi ne led_RB2 P1#defi ne LED_OFF 0#defi ne LED_ON 1un sig ned char code tab38=0xFF,0xC7,0xAB,0xAB,0xAB,0xAB,0xDF,0xFF,/*6,0*/0xFF,0xF3,0xFB,0x8B,0xEB,0xF3,0xFB,0xFF,/*7,1*/0xFF,
30、0xD3,0xAB,0xAB,0xAB,0xAB,0xD3,0xFF,/*8,2*/; /共阳极字模,取阳码void delay (un sig ned char tm) / 一个延时单位大约 0.5ms,12M晶振un sig ned char i;for(;tm0;tm_)for(i=240;i0;i-);void mai n(void)unsigned char i,j;led_C=LED_OFF;/关闭所有扫描while(1)j=OxO1;for(i=0;i8;i+)led_C=LED_OFF; /关闭所有扫描led_RB0=tab0i;led_RB1=tab1i;led_RB2=ta
31、b2i;led_C=j;j=j1;delay(4); /延时大约 2ms实例5:用四块8*8的LED点阵显示“ 1234”实现方法:上例虽然实现显示不同数字的功能,但浪费端口资源严重,故在实现显示内容点数多、LED点阵块多的情况采用扩展I/O 的方式进行显示。如图3.14所示的电路,使用了四74ls373锁存器 的方式来扩展I/O 口,以解决单片机I/O端口资源少的问题。电路设计如下:o或IDk曲 03U1血1他MipLi.weR5TTO丙向砸FT34 甌Pi 血 血应 pj j.ifilDPiiiAJi 旳wig PlftWSPIQ Pll.lR.TjiAISRjJuRXDPl ?FgZJI
32、HTiPIJ3P5.泗TPl 4fl 4-TuPLS附匹pi e削T_liRPInQ1 CC t CO t A T CO t CG t ; t CO IPMit22 JPN2L22 JPNii221PNiiiZ 1PhJ22 1Phiii;1Pb22221PhJi22 1833CSBSCBGa0SESGS3GGSE5C:BSSCtBBCF21P2IP2 刚P2+ P2J irja P2?IJU2*TFSC!li图2.14 锁存器扩展LED点阵显示电路程序设计如下:II实例5:用四块8*8的LED点阵显示“ 1234”#in elude #in elude #defi ne led_C P0#d
33、efi ne led_R P2#defi ne led_LE P3#defi ne LED_OFF 0#defi ne LED_ON 1#defi ne LS373_OFF 0#defi ne LS373_ON 1sbit led_LE0=led_LEA0;sbit led_LE1=led_LEA1;sbit led_LE2=led_LEA2;sbit led_LE3=led_LEA3;un sig ned char code tab48=0xFF,0xB7,0xB7,0x83,0xBF,0xBF,0xFF,0xFF,/*1,0*/0xFF,0xB7,0x9B,0x9B,0x9B,0xAB,0
34、x93,0xFF,/*2,1*/0xFF,0xD7,0xBB,0xB3,0xB3,0xAB,0xCB,0xFF,/*3,2*/0xFF,0xEF,0xD7,0xDB,0x9B,0x81,0xFF,0xFF,/*4,3*/ ; /共阳极字模,取阳码void delay (un sig ned char tm) / 一个延时单位大约 0.5ms,12M晶振un sig ned char i;for(;tm0;tm_)for(i=240;i0;i-);void mai n(void)unsigned char i,j;led_C=LED_OFF;关闭所有扫描led_LE=LS373_OFF;whil
35、e(1)j=OxO1;for(i=0;i8;i+)led_C=LED_OFF; /关闭所有扫描 led_R=tabOi; led_LE0=LS373_ON;led_LE0=LS373_OFF;led_R=tab1i;led_LE1=LS373_ON; led_LE1=LS373_OFF;led_R=tab2i;led_LE2=LS373_ON; led_LE2=LS373_OFF;led_R=tab3i;led_LE3=LS373_ON;led_LE3=LS373_OFF;led_C=j;j=j1;delay(4); /延时大约 2ms2.3任务实现2.3.1系统方案设计由8片8*8的LED点
36、阵显示器件组成显示屏,形成32列16行的 排布,由单片机控制其显示“学习单片机。”。每个汉字字模为16*16 点,显示屏不能一屏全显示出来,因此需要滚动显示来实现。系统拟采用“ MCU译码/驱动+锁存/限流+LED点阵”的总体设 计方案,系统框图如图3.15所示。凹 数据 锁存单片机行扫描佶号扫描译码驱动LLED点阵电路图2.15 LED点阵显示屏系统框图2.3.2系统硬件电路设计图2.16 LED点阵显示屏电路原理图nn1gUBl!B:ln皿工“ aBBVI产HU宇mQgwlm nhe:盟賈冒巒“盟誥S finniss2.3.3系统工作原理本系统中的LED点阵显示屏由8块8*8的LED点阵块
37、组成, AT89S51为本系统的核心器件,由 P0送出显示数据,然后由四个锁 存器接收,送到LED的32根列线上,P1 口的低四位接74HC154译码 器做行地址译码,从译码器出来的 16根地址线经过缓冲驱动,接到 LED点阵屏的行扫描线。系统在程序中存入了“我爱单片机! ”几个汉字的字模数据,开 机后,便通过行扫描与列数据协调控制,显示出来。几个汉字不能全 部一次显示出来,通向左滚动的方式显示出来。字模提取。本项目“我爱单片机! ”几个汉字的字模数据的提取, 是通过网上下载的免费的字模提取软件实现的, 其提取时的主要参数 设置有:单个汉字点数为16*16 ;字体为宋体;提取方式为模向;数 据
38、为阳码;格式为C51格式。234系统软件设计1、设计思路本任务采用了 74HC154译码器输出控制扫描信号,译码前为四位 数据,译码后成16根扫描线,有效的扫描线为低电平。扫描显示一 屏时间要控制在20ms以内,对于每根扫描线而言,要控制在 1.25ms 以内。32*16的LED点阵屏的点数较少,要显示多个汉字时,需滚动显 示。滚动显示时,需要对屏幕的显示内空进行移动。在程序设计时要 考虑到移到速度,以适合人眼观感。在数据移动时,需要采用一些算 法进行快速处理。这里将会用到共用体的数据类型, 以方便数据的迅速处理。2、流程图幵始初始化更新显示缓冲区数据LED点 阵显示(a)主程序流程图图 2.
39、17 LED入口关显示*锁存待显示数据*LED 灯延时行值加一V行值15 -冈JY ,丨行值=0返回(b) LED点阵显示一行子程序点阵显示屏程序流程图/*LED DISPLAY PROGRAM*LZB Desig n Code*3、程序清单*/*#in clude sbit en=P1A4;sbit led0=P2A0;sbit led1=P2A1;sbit led2=P2A2;sbit led3=P2A3;#defi ne led_ on() en=0;#defi ne led_off() en=1;union w_charun sig ned char Ion g_b4;un sig n
40、ed int Ion g_i2;un sig ned long int Ion g_l;un sig ned char d_buff232;un sig ned char row_s;un sig ned char code zimo632=/*-文字:我-*/*-新宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x04,0x40,0x0E,0x50,0x78,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08, 0x44,0x0A,0x44,0x0C,0x48,0x18,0x30,0x68,0x22,0x08,0x52,0x08,0
41、x8A,0x2B,0x06,0x10,0x02,/*-文字:爱-*/*-新宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x08,0x01,0xFC,0x7E,0x10,0x22,0x10,0x11,0x20,0x7F,0xFE,0x42,0x02,0x82, 0x04,0x7F,0xF8,0x04,0x00,0x07,0xF0,0x0A,0x10,0x11,0x20,0x20,0xC0,0x43,0x30,0x1C,0x0E,/*-文字:单-*/*-新宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x10,0x08,0x20,0x04,0x40,0
42、x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,/*-文字:片-*/*-新宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x仆,0xFC,0x10,0x00,0x10,0x00,0x10,0x00,0x1F,0xE0,0x10,0x20,0x10,0x20,0x10,0x20,
43、0x20,0x20,0x20,0x20,0x40,0x20,/*-文字:机-*/*-新宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x00,0x11,0xF0,0x11,0x10,0x11,0x10,0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,0x55,0x10,0x55,0x10,0x91,0x10,0x11,0x12,0x11,0x12,0x12,0x12,0x12,0x0E,0x14,0x00,/*- 文字:!-*/*- 新宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x10,0x00,0x10
44、,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,;void mov_buff( un sig ned char);void display。;void delay();void main (void)unsigned char i,j;/In itialise our variablesrow_s=0;P2=0;while(1)for(j=0;j96;j+)mov_buff
45、(j);for(i=0;i64;i+)display();for(i=0;i64;i+)display。; for(i=0;i64;i+)display();void mov_buff( un sig ned char lie)un sig ned char i,j,k,l;union w_char w_buff,w_buff1;i=lie/16;j=lie-i*16; for(k=0;k16;k+)if(i6)w_buff.lo ng_b0=zimoik*2;w_buff.lo ng_b1=zimoik*2+1;elsew_buff.lo ng_bO=O;w_buff.lo ng_b1=O;
46、if(i+16)w_buff.lo ng_b2=zimoi+1k*2; w_buff.lo ng_b3=zimoi+1k*2+1;elsew_buff.lo ng_b2=0;w_buff.lo ng_b3=0;if(i+20x7f) w_buff.lo ng_b3+;w_buff1.lo ng1*=2;d_buff0k*2=w_buff.lo ng_b0; d_buff0k*2+1=w_buff.lo ng_b1;d_buff1k*2=w_buff.lo ng_b2; d_buff1k*2+1=w_buff.lo ng_b3;void display。P仁 row_s|0x10; /off scanP0=d_buff0row_s*2;led3=1;led3=0;P0=d_buff0row_s*2+1;led2=1;led2=0;P0=d_buff1row_s*2;led1=1;led 仁0;P0=d_buff1row_s*2+1;led0=1;led0=0;led_ on();dela
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西华大学《数据挖掘及分析》2022-2023学年第一学期期末试卷
- 西北大学《电子与物理学基础英文含实验》2021-2022学年第一学期期末试卷
- 实验室生物安全承诺书
- 机器人操作系统(ROS)课件11ROS-2简介
- HJ2042-2014 危险废物处置工程技术导则
- 复之有道习之有效!课件 -2024-2025学年高中上学期期末复习主题班会
- 安置房框架结构施工组织设计
- 汽车维护与保养 课件 项目2 汽车油液与滤清器检查及更换
- 中国锻造机械行业市场行情监测及前景战略研判报告
- 海外仓建设行业趋势预测报告-市场集中度、投融资动态、行业政策分析(智研咨询发布)
- 9 这些是大家的 第二课时(教学设计)部编版道德与法治二年级上册
- CJT 225-2011 埋地排水用钢带增强聚乙烯(PE)螺旋波纹管
- 俄语基础语法智慧树知到期末考试答案章节答案2024年山东交通学院
- 2024版绿化树苗采购合同书
- 电子商务数据分析基础(第二版) 课件 (模块二)单元二 数据采集的渠道及工具
- JBT 14682-2024 多关节机器人用伺服电动机技术规范(正式版)
- 2023-2024学年全国初中一年级上历史人教版期末试卷(含答案解析)
- 2024ERP软件购销合同范本
- 2024届高考二元思辨作文写作指导课件
- 2024浙江宁波市轨道交通集团限公司运营分公司校园招聘400人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 保险公司案件防控工作方案
评论
0/150
提交评论