16 16点阵
- 格式:ppt
- 大小:576.51 KB
- 文档页数:14
16 16点阵课程设计一、课程目标知识目标:1. 学生能理解16点阵的基本概念,掌握点阵在计算机图形学中的应用。
2. 学生能运用16点阵进行图案设计和创作,了解点阵与二进制之间的关系。
3. 学生了解点阵显示原理,掌握点阵屏幕的基本操作。
技能目标:1. 学生能够运用16点阵软件或编程工具进行图案设计,具备基本的点阵编程能力。
2. 学生能够通过小组合作,共同解决点阵图案设计中的问题,提高沟通与协作能力。
3. 学生能够运用所学知识,创新设计具有个性和特色的点阵作品。
情感态度价值观目标:1. 学生培养对计算机图形学的兴趣,激发探索精神,提高学习积极性。
2. 学生在创作过程中,体验团队合作的力量,培养集体荣誉感。
3. 学生通过点阵创作,培养审美观念,提高对美的感知能力。
课程性质:本课程为信息技术课程,以实践操作为主,注重培养学生的动手能力和创新能力。
学生特点:六年级学生具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:教师应注重理论与实践相结合,以学生为主体,引导他们主动探索,培养他们的创新意识和团队协作能力。
在教学过程中,关注学生的个体差异,提供有针对性的指导。
通过本课程的学习,使学生能够达到上述课程目标,实现学习成果的分解和落实。
二、教学内容本章节教学内容主要包括以下三个方面:1. 点阵基础知识:- 点阵概念及其在计算机图形学中的应用。
- 点阵与二进制的关系。
- 点阵显示原理。
2. 点阵图案设计与创作:- 点阵软件或编程工具的使用。
- 点阵图案设计的基本方法。
- 点阵作品创作实例分析。
3. 点阵编程与应用:- 点阵屏幕的基本操作。
- 点阵编程基础。
- 点阵作品展示与评价。
教学大纲安排如下:第一课时:点阵基础知识- 引导学生了解点阵概念,分析点阵在计算机图形学中的应用。
- 讲解点阵与二进制的关系,探讨点阵显示原理。
第二课时:点阵图案设计与创作- 介绍点阵软件或编程工具,指导学生进行图案设计。
16X16点阵设计摘要本设计利用简单单片机AT89C51作为主操纵模块,利用简单的外围电路来驱动16×16的点阵LED显示屏。
在本设计中要紧用两个74HC595来驱动16×16点阵显示屏的列,用AT89C51来驱动16×16点阵显示屏的行,能够最终实现——“十六乘十六点阵可调速显示屏设计” 十五个汉字的自动左移,而且它们的“进”和“出”是以转动形式设计的。
也确实是说,硬件电路大致上能够分成单片机系统及外围电路、列驱动电路和行驱动电路三部份。
从而能够实现一个室内用的16×16点阵LED图文显示屏,在目测条件下LED显示屏各点亮度均匀、充沛,可显示图形和文字,显示图形或文字应稳固、清楚无串扰,图形或文字显示有静止、移入移出等显示方式。
最后,利用烧录器能够很方便的实现单片机与PC机等外围存储设备的数据传输,并能利用软件方便的进行显示内容的多样转变,它在实际生活中具有普遍的应用。
关键词:单片机,16x16点阵,转动显示目录1 绪论 0课题描述 0功能要求 0方案论证 02 系统整体方案及硬件设计 (1)显示屏整体设计方案 (1)AT89C51的原理及说明 (1)列驱动电路 (2)行驱动电路 (2)3 系统硬件电路的设计 (6)单片机 (7)单片机系统及外围电路 (8)4 系统程序的设计 (8)系统主程序 (9)显示驱动程序 (9)单片机汇编程序 (10)总结 (18)致谢 (18)参考文献 (18)附录1.硬件原理图 (19)附录2.元器件清单表 (23)1 绪论课题描述随着LED显示技术日趋成熟和普遍公共场合需求量增大,现代工业操纵和一些智能化仪器仪表中,愈来愈多的场合所需要用点阵图形显示器显示汉字,广告屏等。
因此研究LED显示有有效意义。
功能要求设计一个室内用16×16点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充沛,可显示图形和文字,显示图形或文字应稳固、清楚无串扰,图形或文字显示有静止、移入移出等显示方式。
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);。
实验报告实验名称: [16×16点阵显示实验] 姓名: []学号: [2011]指导教师: []实验时间: [2013年4月25日]信息与通信工程学院16×16点阵显示实验1实验要求任务1:将所给程序改正使结果为正显示;任务2:使显示四个字、八个字。
2实验原理2.1 LED显示器结构和原理1>8*8LED点阵的结构图1 8*8LED点阵结构图从图1中可以看出,8*8LED点阵共由64个发光二极管组成,每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1高电平,且某一列置0低电平,则相应的发光二极管就亮;因此要用8*8LED点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。
当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。
假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。
但要显示信息量大的图形,则需要n个多个8*8LED点阵,拼装成一个大屏幕才行。
LED点阵显示器最大的特点是亮度高、功耗较低、寿命长、容易控制等,因此它的应用很广,常用在广场、车站、商业广告等室外的显示。
2>8*8LED点阵的封装和引脚规律64个发光二极管按照行共阳、列共阴4个一组的方式封装成一个模块,这样8*8LED 点阵模块就有8行、8列共16个引脚。
其实物图如图2,电路模块符号图如图3。
图2 8*8LED点阵实物图图3 8*8LED点阵符号图但8*8LED点阵的16个引脚并不是很有规律,千万不要想象成1~8个引脚是行,9~16个引脚是列。
而且不同产品的点阵外部引脚排列规律还可能不一样。
以下是NLB1388SRA 和LDM1388SRA两个型号点阵引脚对应行、列的关系表:行号H0 H1 H2 H3 H4 H5 H6 H7引脚号9 14 8 12 1 7 2 5列号L0 L1 L2 L3 L4 L5 L6 L7引脚号13 3 4 10 6 11 15 16 假如你买到一块新的8*8LED点阵,又没有关于它的相关资料,那你只有自己用万用表或通过VCC电源串接一个510欧姆的电阻来检测了。
16乘16点阵LED电子显示屏的设计概述本文将讨论16乘16点阵LED电子显示屏的设计。
这是一个可以显示图形和文字的电子屏幕,使用16列和16行LED灯来组成一个点阵,可以显示256个像素。
这样的屏幕可以广泛应用于科技展示、娱乐游戏和家庭电子设备等领域。
设计硬件LED灯基本的LED操作和驱动电路在这里不再赘述。
需要注意的是,对于16行LED 灯和16列LED灯,需要使用合适的电流控制电路并且保证它们可以受到足够的电流。
此外,将需要16个NPN晶体管来控制16列LED灯,和16个PNP晶体管来控制16行LED灯。
控制器在控制器的选择上推荐使用ATmega328p微控制器。
这个控制器也是Arduino Uno的基础。
软件代码结构代码文件应当按照以下结构进行组织:Libraries/SevSeg/SevSeg.hLedControl/LedControl.hLedControl.cppMAX7219.hMAX7219.cppSPI.hSPI.cpp16x16LEDMatrix/16x16LEDMatrix.inoREADME.md这里我们使用SevSeg和LedControl库。
打包由于ATmega328p微控制器的内存限制,将需要对代码进行压缩,以减小程序的尺寸,使它适合在所预算的存储设备中运行。
可以通过使用压缩工具完成这个任务。
推荐使用zip或tar。
结论在这篇文档中,我们讨论了16乘16点阵LED电子显示屏的设计。
我们详细介绍了硬件和软件方面的设计需求以及代码结构的组织。
通过对这些内容的了解,你可以开始创建你自己的16乘16点阵LED电子显示屏!。
16乘16点阵原理
16乘16点阵原理是一种打印原理,它是把一个字符用16个点来表示,每个点可以是黑色或白色,从而形成一个字符的图形。
16乘16点阵原理的实现是通过一个称为“点阵字库”的表格来实现的,这个表格由16行16列组成,每一行代表一个字符,每一列代表一个点,如果某一个点是黑色,则在表格中用1表示,如果某一个点是白色,则在表格中用0表示。
16乘16点阵原理可以用来打印出汉字、英文字母、数字等,它的优点是可以打印出清晰的字符,缺点是打印速度比较慢,而且打印出来的字符大小是固定的,不能改变。
16x16LED点阵实验实验名称:16x16 LED点阵实验实验⽬的:利⽤单⽚机I/O⼝实现LED点阵的⾏扫描动态显⽰。
实验原理:1、LED显⽰器的基本结构:七段显⽰器:将发光⼆极管封装成数码显⽰的形式。
共阳七段显⽰器:共阴七段显⽰器:点阵式显⽰器:发光⼆极管封装成点阵形式,构成不同的字符甚⾄汉字、图形。
发光⼆极管排列成矩阵,由亮与暗来产⽣字符或图形。
每⼀⾏的阳极连在⼀起,每⼀列的阴极连在⼀起。
2、点阵显⽰的原理:点阵显⽰器每⼀列的阴极连在⼀起,对每⼀列⽽⾔相当于⼀个共阴显⽰器。
同时每⼀⾏的阳极连在⼀起,相当于七段显⽰器的笔划。
这样,可以把5X7的发光⼆极管点阵看作⼀个五位显⽰器。
可采⽤动态显⽰电路,以笔划锁存器控制⾏信号,以位锁存器控制列信号。
3、实验原理图使⽤两⽚8位输出锁存移位寄存器74HC595(三态输出、串⼊并出),将单⽚机I/O⼝发出的串⾏数据转换为并⾏数据LD_QA~LD_QP,作为16×16 LED点阵显⽰器的⾏线,使⽤另外两⽚8位74HC595作为 16×16 LED点阵显⽰器的列线LD_1~LD_16。
当⾏输出⾼电平、列输出低电平时,可以点亮点阵。
74HC595:LD-QA~LD-QP:点阵⾏控制信号LD-1~LD-16:点阵列控制信号SER(14脚):串⾏数据输⼊端-SCLR(10脚):低电平时将移位寄存器的数据清零。
通常将它接Vcc。
SCK(11脚):上升沿时将串⾏数据移⼊移位寄存器。
RCK(12脚):上升沿时移位寄存器的数据锁存⼊数据寄存器。
-G(13脚): ⾼电平时禁⽌输出(⾼阻态)时序图:实验内容:在16×16LED点阵上分别⽤静态⽅式和滚屏⽅式显⽰⾃⼰的姓(⾏扫描)。
实验步骤:使⽤导线将A2区的P10~P14与C3区的L_DAT_H 、L_DAT_L、L_CLK、L_OE 、 L_STR 实验设计:电路图:(修改后加上了74HC595输出端⼝与LED点阵相连的端⼝名称)流程图:代码及注释:HL EQU 70H ;⾏信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0⼝连⾏信号输⼊端LD EQU P1.1 ;P1.1⼝连列信号输⼊端SCK EQU P1.2 ;P1.2⼝连移位寄存器OE EQU P1.3 ;P1.3⼝连使能端RCK EQU P1.4 ;P1.4⼝连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00H ;字模表起始地址偏移量MOV HL,#01H ;⾏扫描信号的初值0001HMOV HL+1,#00HLOOP:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存⼊内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列⾼位数据,存⼊内存地址中LCALL SENDD ;调⽤传输数据的程序LCALL DELAY ;调⽤延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移⾏扫描信号低8位MOV HL,AMOV A,HL+1RLC A ;左移⾏扫描信号⾼8位MOV HL+1,AINC R1CJNE R1,#20H,LOOP ;判断⼀轮扫描是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号⾼⼋位地址MOV R4,HL+1 ;⾏信号⾼⼋位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;⾏信号逐位传输SETB SCK ;SCK信号上升沿到来,将串⾏数据移⼊移位寄存器DJNZ R2,BACK ;判断⾼8位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低8位地址MOV R4,HL ;⾏信号低8位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;⾏信号逐位传输SETB SCK ;SCK信号上升沿到来,将串⾏数据移⼊移位寄存器DJNZ R2,BACK1 ;判断低8位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存⼊数据寄存器RET DELAY: ;延时⼦程序MOV R7,#50DELAY1:MOV R6,#10DELAY2:DJNZ R6,$DJNZ R7,DELAY1RETDISPLAY:DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END 2、滚屏⽅式流程图:代码及注释:HL EQU 70H ;⾏信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0⼝连⾏信号输⼊端LD EQU P1.1 ;P1.1⼝连列信号输⼊端SCK EQU P1.2 ;P1.2⼝连移位寄存器OE EQU P1.3 ;P1.3⼝连使能端RCK EQU P1.4 ;P1.4⼝连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00HMOV R7,#00H ;R7⽤来表⽰字模表起始位置偏移量LOOP:MOV R5,#20 ;R5⽤来表⽰延时,改变R5的值可改变滚屏速度LOOP1: MOV R6,#10H ;R6⽤来判断是否扫描完⼀轮MOV A,R7 ;将R7的值赋值给R1MOV R1,AMOV HL,#01H ;⾏扫描信号的初值0001HMOV HL+1,#00HLOOP2:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存⼊内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列⾼位数据,存⼊内存地址中LCALL SENDD ;调⽤传输数据的程序LCALL DELAY ;调⽤延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移⾏扫描信号低⼋位MOV HL,AMOV A,HL+1RLC A ;左移⾏扫描信号⾼⼋位MOV HL+1,AINC R1DEC R6CJNE R6,#00H,LOOP2 ;通过R6判断是否扫描完⼀轮,R6减为0,⼀轮扫描结束DJNZ R5,LOOP1 ;通过R5判断⼀帧的延时是否达到INC R7 ;改变字模表的偏移量INC R7 ;R7连续加2,相当于换⾏CJNE R7,#40H,LOOP ;判断字模表是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号⾼8位地址MOV R4,HL+1 ;⾏信号⾼8位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;⾏信号逐位传输SETB SCK ;SCK信号上升沿到来,将串⾏数据移⼊移位寄存器DJNZ R2,BACK ;判断⾼⼋位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低⼋位地址MOV R4,HL ;⾏信号低⼋位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;⾏信号逐位传输SETB SCK ;SCK信号上升沿到来,将串⾏数据移⼊移位寄存器DJNZ R2,BACK1 ;判断低⼋位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存⼊数据寄存器RETDELAY: ;延时⼦程序MOV R2,#50DELAY1:MOV R3,#10DELAY2:DJNZ R3,$DJNZ R2,DELAY1RETDISPLAY:DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFFDB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;预留空⽩DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END实验结果与分析:1、程序正确运⾏后,可看到16x16 LED点阵显⽰屏上显⽰“张”,LED灯的亮暗程度有些不均匀。
16*16点阵设计摘要单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。
LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。
LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
现代LED的发展很快,很多研究领域非常已经深刻,所以想利用自己学的单片机知识简单的研究一下用单片机驱动的LED显示汉字,以达到学以致用和实践相结合的目的,同时巩固加深自己的单片机知识。
用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。
因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的。
点阵大小可以有16×16、24×24、32×32、48×48等不同规格,也有单色、双色、和多色几种,最常用的是单色图文屏。
单色屏多使用红色或橘红色或橙色LED点阵单元。
双色图文屏和多色图文屏,在LED点阵的每一个“点”上布置有两个或多个不同颜色的LED发光器件。
换句话说,对应于每种颜色都有自己的显示矩阵。
显示的时候,各颜色的显示点阵是分开控制的。
事先设计好各种颜色的显示数据,显示时分别送到各自的显示点阵,即可实现预期效果。
16×16点阵设计课程设计2008—2009学年第二学期一、设计依据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点阵实验单元,以两种方式控制点阵显示。
要求编制程序实现汉字点阵循环显示。
四、时间安排1.课题讲解:2小时。
2.阅读资料:10小时。
3.撰写设计说明书:12小时。
4.修订设计说明书:6小时。
五、主要参考资料[1] 胡汉才.单片机原理与接口技术[M].北京:清华大学出版社,1995.6.[2] 楼然苗等.51系列单片机设计实例[M].北京:北京航空航天出版社,2003.3.[3] 何立民. 单片机高级教程[M].北京:北京航空航天大学出版社,2001.[4] 赵晓安. MCS-51单片机原理及应用[M]. 天津:天津大学出版社,2001.3.[5]薛均义、张彦斌. MCS-51 系列单片微型计算机及其应用.--西安:西安交通大学出版社 2005.1[6] 夏继强. 单片机实验与实践教程[M]. 北京:北京航空航天大学出版社, 2001.[7]马忠梅. 单片机外围电路设计—北京:北京航空航天大学出版社2005指导教师(签字):陈万里教研室主任(签字):批准日期:年月日摘要1. 绪论 (1)2. AT89C51单片机概述 (2)2.1 AT89C51单片机的结构 (2)2.2 管脚说明 (3)2.3 振荡器特性 (4)3. 方案设计 (4)3.1 总体设计 (4)3.2 系统硬件选择 (5)3.3 硬件电路实现 (5)3.4 软件的程序实现 (6)5. 总结 (11)参考文献 (12)1 绪论LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
单片机系统课程设计16*16点阵设计一设计内容及设计要求1、设计内容显示屏为16×16点阵(由四块8×点阵模块组成),可显示各种图文。
2、设计要求设计一个室内用16x16的点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
二设计方案图1 显示屏电路框图1、从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
工作原理分析:从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,1 6×16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏都不采用这种设计,而采用另一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。
具体就1 6×16的点阵来说,把所有同l行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第l行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并镇存,然后选通第2行使其燃亮相同的时间,然后熄灭;-…?第16行之后,又重新燃亮第1行,腹轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并行传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
课程设计课程名称嵌入式系统课程设计课题名称16X16的点阵显示设计专业班级学号姓名指导老师2016年12月20日电气信息学院课程设计任务书课题名称16×16的点阵显示设计姓名专业班级学号指导老师课程设计时间2016年12月18日-2016年12月30日〔17、18周〕教研室意见意见:同意审核人:X望军一、任务与要求CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能.并最终完成电路的编程调试.具体要求如下:用一个16×16的点阵使用逐列循环扫描的方式不间断的显示你##的全部大写拼音字母.二、进度安排第一周:周一:集中布置课程设计相关事宜.周二~周三:子模块程序设计,顶层电路程序设计.周四~周日:子模块,顶层电路仿真.第二周:周一~周三:编程下载,系统调试.周四~周五:设计报告撰写.周五进行答辩和设计结果检查.三、参考资料1. X 原编著,可编程逻辑器件设计与应用,机械工业.2.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业.3. X洪喜,陆颖编著. VHDL电路设计实用教程清华大学.目录1.总体设计思路与功能设计11.1.基本原理11.2.总体设计框图21.3.顶层文件设计22.单元电路设计32.1列循环扫描模块3.2.2字符样式设计模块32.3循环扫描与延时模块42.4整个程序53.系统调试与仿真93.1 开发环境介绍93.2.1 创建工程93.2.2 编译前设计93.2.3 全程编译113.2.4时序仿真124.下载调试135.心得体会146.参考文献14一、总体设计思路1.1基本原理LED 就是Light Emitting Diode〔发光二极管〕的缩写.在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能.PN结加反向电压,少数载流子难以注入,故不发光.这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED.LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕.16×16扫描LED点阵的工作原理同8位扫描数码管类似.它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线〔SEL0-SEL3〕,其汉字扫描码由16位段地址〔0-15〕输入. 通过时钟的每列扫描显示完整汉字.点阵LED一般采用扫描式显示,实际运用分为三种方式:〔1〕点扫描〔2〕行扫描〔3〕列扫描若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可.若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求.此外一次驱动一列或一行〔8颗LED〕时需外加驱动电路提高电流,否则LED亮度会不足.实验箱上为我们提供了16*16的点阵显示模块.通过观察,我们可以看到,此点阵显示屏即为16行、16列的LED显示灯.那么控制这些灯的亮暗分布,就能达到字符显示的目的.首先输出预定义"吕、苏、田、口〞四个汉字,显示屏上的灯的亮暗情况具体应如何.如第一个汉字吕:00000000000000000000000000000000000000000111110000000000010001000000000001111100000000000000000000000000000000000000000000000000如果高电平‘1’时表示灯是亮的,低电平‘0’时灯是暗的,这样上面的灯呈现在我们眼前的就是吕字了.依次类推,我们就可以设计出所有要显示的汉字了.这样这些汉字就好象是被我们当作了固定模型了.但如何点亮这些灯呢,这就要求有一个脉冲循环扫描的电路,我们采用列扫描,当扫描的和我们先设计好的汉字模型的高电平相匹配时,灯就相应的点亮.由于扫描的速度很快,我们人的眼睛并不会感到灯的闪烁,所以每扫描完16列就会显示在我们眼中一个汉字了.但要所有的汉字就可以依次的显示出来并不停的循环显示,就还要再有一个时序控制电路来控制.此时序控制电路象一个计数器,有自动清零的功能,这样就可以实现循环的效果了.1.2设计框图图1.2 总体设计框图1.3顶层文件设计图1.3顶层文件设计 时序控制 扫描控制显示控制 译码输出二、单元电路设计2.1列循环扫描通过对每一列的扫描来完成对字母的现实,只要扫描的频率足够快,就能给人以连续的感觉.因此要控制扫描的频率,不能太低,否则,就会造成视觉上的不连续,输入一个时钟信号,输出为4位二进制〔用sel表示〕列选信号,用来选中列,进行扫描,扫描程序如下:Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;Entity dz_xs isPort<enable,clk:in std_logic; --端口定义输入信号Sel:out std_logic_vector<3 downto 0>>; --端口定义输出信号End dz_xs;Architecture count of dz_xs isSignal lie:std_logic_vector<3 downto 0>;BeginProcess<clk,enable> --脉冲、使能信号beginIf clk'event and clk='1'thenIf enable='1' thenIf lie>"0000" thenLie<=lie-"0001";ElseLie<="1111";End if;End if;End if;Sel<=lie;End process;2.2字符样式设计本环节是建立一个数据库,使之能在扫描的同时读取所需要的信息,从而完成汉字的显示.本次设计"吕、苏、田、口〞汉字样式设计程序如下:Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;Entity dz_xs isPort<enable,clk:in std_logic; --端口定义输入信号h0,h8:out std_logic_vector<7 downto 0>>; --端口定义输出信号〔h0-列数据输出,h8-代表行数据输出〕End dz_xs;Architecture count of dz_xs isSignal lie:std_logic_vector<3 downto 0>; --信号标志Signal past1:std_logic_vector<1 downto 0>;BeginProcess<enable,clk> --脉冲、使能信号BeginIf clk'event and clk='1'thenIf enable='1' thenCase lie isWhen "00"=>Case lie is --"吕〞字设计When "0011"=>h0<="00000000";h8<="01111110";When "0101"=>h0<="01000010";h8<="01000010"; When "0110"=>h0<="01000010";h8<="01000010"; When "0111"=>h0<="01000010";h8<="01000010"; When "1000"=>h0<="01000010";h8<="01000010"; When "1001"=>h0<="01000010";h8<="01000010"; When "1010"=>h0<="01000010";h8<="01000010"; When "1011"=>h0<="01000010";h8<="01000010"; When "1100"=>h0<="01111110";h8<="01000010"; When "1101"=>h0<="00000000";h8<="01111110"; When others=>h0<="00000000";h8<="00000000"; End case;When "01"=>Case lie is --"苏〞字设计When "0011"=>h0<="00100000";h8<="00000000"; When "0100"=>h0<="00100000";h8<="00000000"; When "0101"=>h0<="00100000";h8<="10001100"; When "0110"=>h0<="01110000";h8<="10000000"; When "0111"=>h0<="00101000";h8<="10000000"; When "1000"=>h0<="00100011";h8<="11111100"; When "1001"=>h0<="00100000";h8<="10000000"; When "1010"=>h0<="00101000";h8<="10001100"; When "1011"=>h0<="01110000";h8<="10000110"; When "1100"=>h0<="00100000";h8<="11111110"; When "1101"=>h0<="00100000";h8<="00001100";End case;When "10"=>Case lie is --"田〞字设计When"0100"=>h0<="00011111";h8<="11110000"; When"0101"=>h0<="00010001";h8<="00010000"; When"0110"=>h0<="00010001";h8<="00010000"; When"0111"=>h0<="00010001";h8<="00010000"; When"1000"=>h0<="00011111";h8<="11110000"; When"1001"=>h0<="00010001";h8<="00010000"; When"1010"=>h0<="00010001";h8<="00010000"; When"1011"=>h0<="00010001";h8<="00010000"; When"1100"=>h0<="00011111";h8<="11110000"; When others=>h0<="00000000";h8<="00000000"; End case;When "11"=>Case lie is --"口〞字设计When"0101"=>h0<="00011111";h8<="11100000"; When"0110"=>h0<="00010000";h8<="00100000"; When"0111"=>h0<="00010000";h8<="00100000"; When"1000"=>h0<="00010000";h8<="00100000"; When"1001"=>h0<="00010000";h8<="00100000"; When"1010"=>h0<="00010000";h8<="00100000"; When"1011"=>h0<="00011111";h8<="11100000"; When others=>h0<="00000000";h8<="00000000";End case;End if;End if;End process;2.3循环扫描与期间的延时环节为使汉字不断地循环显示,并且使每个汉字之间有停顿,就需要在中间加一定的延时和循环环节.在这一环节中,可以通过修改其数值来控制每个字母的显示时间,其程序如下:process<clk>variable int: integer range 0 to 10000;beginif clk’event and clk=’1’thenif int<10000 thenint:=int+1;elseint:=0;if next1=〞11〞thennext1<=〞00〞;elsenext1<= next1+’1’;end if;end if;end if;end process;2.4总程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yz_ok isport<enable,clk:in std_logic;sel:out std_logic_vector<3 downto 0>; h0,h8:out std_logic_vector<7 downto 0>>;end yz_ok;architecture count of yz_ok issignal lie:std_logic_vector<3 downto 0>;signal next1: std_logic_vector<1 downto 0>;begina1:process<clk,enable>beginIf clk'event and clk='1'thenIf enable='1' thenIf lie>"0000" thenLie<=lie-"0001";ElseLie<="1111";End if;End if;End if;Sel<=lie;End process;a2:process<enable,clk>beginIf clk'event and clk='1'thenIf enable='1' thenCase next1 isWhen "00"=>Case lie isWhen "0011"=>h0<="00000000";h8<="01111110"; When "0100"=>h0<="01111110";h8<="01000010"; When "0101"=>h0<="01000010";h8<="01000010"; When "0110"=>h0<="01000010";h8<="01000010"; When "0111"=>h0<="01000010";h8<="01000010"; When "1000"=>h0<="01000010";h8<="01000010"; When "1001"=>h0<="01000010";h8<="01000010"; When "1010"=>h0<="01000010";h8<="01000010"; When "1011"=>h0<="01000010";h8<="01000010"; When "1100"=>h0<="01111110";h8<="01000010"; When "1101"=>h0<="00000000";h8<="01111110"; When others=>h0<="00000000";h8<="00000000"; End case;When "01"=>Case lie isWhen "0011"=>h0<="00100000";h8<="00000000"; When "0100"=>h0<="00100000";h8<="00000000"; When "0101"=>h0<="00100000";h8<="10001100";When "0111"=>h0<="00101000";h8<="10000000"; When "1000"=>h0<="00100011";h8<="11111100"; When "1001"=>h0<="00100000";h8<="10000000"; When "1010"=>h0<="00101000";h8<="10001100"; When "1011"=>h0<="01110000";h8<="10000110"; When "1100"=>h0<="00100000";h8<="11111110"; When "1101"=>h0<="00100000";h8<="00001100"; When others=>h0<="00000000";h8<="00000000"; End case;When "10"=>Case lie isWhen"0100"=>h0<="00011111";h8<="11110000"; When"0101"=>h0<="00010001";h8<="00010000"; When"0110"=>h0<="00010001";h8<="00010000"; When"0111"=>h0<="00010001";h8<="00010000"; When"1000"=>h0<="00011111";h8<="11110000"; When"1001"=>h0<="00010001";h8<="00010000"; When"1010"=>h0<="00010001";h8<="00010000"; When"1011"=>h0<="00010001";h8<="00010000"; When"1100"=>h0<="00011111";h8<="11110000"; When others=>h0<="00000000";h8<="00000000";End case;When "11"=>Case lie isWhen"0110"=>h0<="00010000";h8<="00100000"; When"0111"=>h0<="00010000";h8<="00100000"; When"1000"=>h0<="00010000";h8<="00100000"; When"1001"=>h0<="00010000";h8<="00100000"; When"1010"=>h0<="00010000";h8<="00100000"; When"1011"=>h0<="00011111";h8<="11100000"; When others=>h0<="00000000";h8<="00000000";End case;When others=>h0<="00000000";h8<="00000000";End case;End if;End if;End process;a3:process<clk>variable int: integer range 0 to 10000;beginif clk'event and clk='1'thenif int<10000 thenint:=int+1;elseint:=0;if next1="11"thennext1<="00";elsenext1<= next1+'1';end if;end if;end if;end process;end count;第三章系统调试与仿真3.1开发环境介绍Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、Veril-ogHDL 以与AHDL〔Altera Hardware Description Language〕等多种设计输入形式,内嵌自有的综合器以与仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程.Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度.对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA 工具.此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统〔SOPC〕开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台.3.2调试与仿真3.2.1 创建工程在Quartus II 中新建一个VHDL File文件,将VHDL代码输入这个文件,并保存到工作目录,名为yz_ok.vhd.利用new preject wizard 工具创建一个工程,工程名为yz_ok,顶层文件实体名为yz_ok,并将上面创建的yz_ok.vhd文件加入到工程中.3.2.2 编译前设置〔1〕选择目标芯片.用assignmemts- settings命令,弹出settings对话框,选择目标芯片为EP1C3T144C8.图3-1 选择目标器件〔2〕选择工作方式,编程方式,与闲置引脚状态单击上图中的device&pin options按钮,弹出device&pin options窗口. 在General项中选中auto-restart configuration after error,使对FPGA的配置失败后能自动重新配置,并加入JTAG用户编码.图3-2 选择配置器件工作方式在configuration项中,其下方的Generate compressed bitstreams处打勾,这样就能产生用于EPCS的POF压缩配置文件.在Configuration 选项页,选择配置器件为EPCS1,其配置模式选择为active serial.图3-3选择编程方式在Unused pins项,将目标器件闲置引脚状态设置高阻态,即选择As input,tri-stated.图3-4 设置闲置引脚状态3.2.3 全程编译设置好前面的内容之后,就可以进行编译了.选择Processing菜单中start compilation,在窗口的下方processing栏中显示编译信息.图3-5 全程编译成功完成完成后在工程管理窗口左是角显示了工程yz_ok 的层次结构和其中结构模块耗用的逻辑宏单元数.此栏的右边是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等.3.2.4时序仿真〔1〕新建一个矢量波形文件,同时打开波形编辑器.设置仿真时间为50us,保存波形文件为yz_ok.vwf.〔2〕将工程yz_ok的端口信号名选入波形编辑器中,所选的端口有clk,enable 与总线h0和h8.设置clk的时钟周期为2us,占空比为50%.图3-6 选择仿真控制仿真器参数设置.选择菜单Assignment中的Settings,在Settings窗口下选择Simulator,在右侧的simulation mode项下选择timing,即选择时序仿真,并选择仿真激励文件名yz_ok.vwf.选择simulation options栏,确认选定simulation coverage reporting; 毛刺检测Glitch detection 为1ns 宽度;选中Run simulation until all vector stimuli 全程仿真.现在所有设置进行完毕,在菜单processing项下选择start simulation,直到出现simulation was successful,仿真结束 .仿真文件simulation report 通常会自动弹出,否则选择processing simulation report .图3-7 仿真波形输出四、下载调试选择tools菜单中programmer,点击左上角的Hardware Setup,选择USB,点击start即可连接硬件,进行调试 .连接成功后,即可在实验箱中LED屏循环显示字母.如下图汉字的显示:图4-1调试结果图图4-2调试结果图五、心得体会为期两周的嵌入式课程设计完成了.整过设计过程虽然不是很顺利.不过我认真对待老师给我们的课题,中间虽然也有不少挫折,但不经历挫折怎么见风雨,在我四处查看资料,请教同学下终于完成.经过这两周的课程设计,我加深了对PLD的认识,学到了很多以前不知道的东西,也明白也PLD在现实生活中的重要应用和它的发展趋势.以前在书本上学到的东西总是不能够很好地运用到现实当中去,现在终于得到了改善,这让我感到非常的高兴.从这次实习中,我体会到,如果将我们在大学里所学的知识与更多的实践结合在一起,用实践来检验真理,使一个本科生具备较强的处理基本实务的能力与比较系统的专业知识,这才是我们学习与实习的真正目的.让我们不再是一个沉睡的孩子,让我们的无知渐渐远去,把我们所学的知识运用到实际中去,为社会出上我们的一份力.感谢老师给的这次让我们自行设计的机会,通过这次设计通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力.在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固.总的来说,这次设计的16×16点阵显示控制还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心.最后,对给过我帮助的所有同学和指导老师再次表示忠心的感谢.六、参考文献1. X原编著,可编程逻辑器件设计与应用,机械工业.2.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业.3. X洪喜,陆颖编著. VHDL电路设计实用教程,清华大学.电气信息学院课程设计评分标准。
电子设计与制作课程设计16*16点阵显示一、设计方案该设计使用单片机STC90C51作为主控制模块,利用简单的外围电路来驱动16×16的点阵LED显示屏。
在本设计中主要用两个74HC595来驱动16×16点阵显示屏的列,用两个74HC138来驱动16×16点阵显示屏的行,然后动态扫描可以最终实现——“物电学院”四个汉字的自动循环左移。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。
具体就16×16的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;……第十六行之后又重新燃亮第一行,这样反复轮回。
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。
从而可以实现一个室内用的16×16点阵LED,显示有静止、移入移出等显示方式。
最后,利用烧录器可以很方便的实现单片机与PC机等外围存储设备的数据传输,并能利用软件方便的进行显示内容的多样变化。
在负载范围内,只需通过简单的级联就可以对显示屏进行扩展。
二、设计模块1、总模块2、列驱动电路列驱动电路有集成电路74HC595构成。
它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。
74HC595的外形及内部结构如图所示。
它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。
引脚SI是串行数据的输入端。
引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。