16乘16点阵显示实验报告剖析

合集下载

16x16点阵显示实验报告

16x16点阵显示实验报告

16*16点阵显示实验报告一、实验目的(1)学习点阵显示字符的基本原理。

(2)掌握用数控分频控制速度,实现点阵扫描的基本方式。

(3)会使用Quartus II软件中的Verilog HDL语言实现点真的行列循环显示。

二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可通过编写Verilog HDL语言,实现点阵的行列交替扫描。

先是行扫描,扫描间隔为1s,16行都扫描完之后开始列扫描,扫描间隔仍然为1s,16列扫描完之后,行继续扫描,依次循环。

2.点阵基本知识16*16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

应用时限流电阻可以放在X轴或Y轴。

它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。

LED点阵每个点都有一个红色的发光二极管。

点阵内的二极管间的连接都是行共阳,列共阴。

本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。

3.系统工作原理本系统用了两个模块,其中dianzhen.v是顶层文件,而hangsaomiao.v和liesaomiao.v是两个子模块,总体的系统功能框图如图3.3.1所示。

图3.3.1 系统功能图示通过流程图可以看到,体统是先将试验箱的50MHz时钟信号分频为1s,因为要实现16*16的点阵扫描,所以用一个16s的计时器计时,每经过16s行扫描与列扫描的状态转换一次,通过点阵显示出来。

4.模块化程序设计(1)点阵显示顶层程序设计module dianzhen (clk50mhz,row,sel0,sel1,sel2,sel3,line);input clk50mhz; //实验箱提供50MHz时钟信号output sel0,sel1,sel2,sel3; //设置引脚选通点阵output reg [15:0] row; //行output reg [3:0] line; //列wire [15:0] row1,row2;wire [3:0] line1,line2;reg [24:0] cnt=0; //1Hz计数子reg [4:0] cnt1=0; //16s计数子assign sel0=1'b0;assign sel1=1'b1;assign sel2=1'b0;assign sel3=1'b0;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0; //1Hz计时器cnt1<=cnt1+1; //16s计时器endelsecnt<=cnt+1;endhangsaomiao u1(.clk50mhz(clk50mhz),.row(row1),.line(line1)); liesaomiao u2(.clk50mhz(clk50mhz),.row(row2),.line(line2));always@(*)if(cnt1<=5'd15)beginrow<=row1; //行扫描line<=line1;endelsebeginrow<=row2; //列扫描line<=line2;endendmodule(2)行扫描模块hangsaomiao.v程序设计module hangsaomiao(clk50mhz,line,row);input clk50mhz; //实验箱输入50MHz时钟信号output reg [15:0] row; //列output reg [3:0] line; //行reg [24:0] cnt1,cnt2; //计数子reg clkrow,clkline; //行脉冲、列脉冲always@(posedge clk50mhz)beginif(cnt1>=25'd5*******)begincnt1<=25'b0;clkrow=~clkrow; //1s列脉冲endelsecnt1<=cnt1+1;endalways@(posedge clk50mhz)beginif(cnt2>=25'd500)begincnt2<=25'b0;clkline=~clkline; //50KHz行脉冲endelsecnt2<=cnt2+1;endalways@(posedge clkline)begincase(line)4'd0:line<=4'd1; //高速行扫描4'd1:line<=4'd2;4'd2:line<=4'd3;4'd3:line<=4'd4;4'd4:line<=4'd5;4'd5:line<=4'd6;4'd6:line<=4'd7;4'd7:line<=4'd8;4'd8:line<=4'd9;4'd9:line<=4'd10;4'd10:line<=4'd11;4'd11:line<=4'd12;4'd12:line<=4'd13;4'd13:line<=4'd14;4'd14:line<=4'd15;4'd15:line<=4'd0;default:line<=4'd0;endcaseendalways@(posedge clkrow) //时间间隔为1s的列扫描begincase(row)16'b0000000000000001: row<=16'b0000000000000010;16'b0000000000000010: row<=16'b0000000000000100;16'b0000000000000100: row<=16'b0000000000001000;16'b0000000000001000: row<=16'b0000000000010000;16'b0000000000010000: row<=16'b0000000000100000;16'b0000000000100000: row<=16'b0000000001000000;16'b0000000001000000: row<=16'b0000000010000000;16'b0000000010000000: row<=16'b0000000100000000;16'b0000000100000000: row<=16'b0000001000000000;16'b0000001000000000: row<=16'b0000010000000000;16'b0000010000000000: row<=16'b0000100000000000;16'b0000100000000000: row<=16'b0001000000000000;16'b0001000000000000: row<=16'b0010000000000000;16'b0010000000000000: row<=16'b0100000000000000;16'b0100000000000000: row<=16'b1000000000000000;16'b1000000000000000: row<=16'b0000000000000001;default : row<=16'b0000000000000001;endcaseendendmodule(3)列扫描模块liesaomiao.v程序设计module liesaomiao(clk50mhz,row,line);input clk50mhz; //实验箱输入50MHz 时钟信号output reg [15:0] row; //行output reg [3:0] line; //列reg [24:0] cnt; //计数子reg clk;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0;clk=~clk; //1sendelsecnt<=cnt+1;endalways @ (posedge clk) //列扫描begincase(line)4'h0:begin row=16'b1111111111111111;line<=4'h1; end4'h1:begin row=16'b1111111111111111;line<=4'h2; end4'h2:begin row=16'b1111111111111111;line<=4'h3; end4'h3:begin row=16'b1111111111111111;line<=4'h4; end4'h4:begin row=16'b1111111111111111;line<=4'h5; end4'h5:begin row=16'b1111111111111111;line<=4'h6; end4'h6:begin row=16'b1111111111111111;line<=4'h7; end4'h7:begin row=16'b1111111111111111;line<=4'h8; end4'h8:begin row=16'b1111111111111111;line<=4'h9; end4'h9:begin row=16'b1111111111111111;line<=4'ha; end4'ha:begin row=16'b1111111111111111;line<=4'hb; end4'hb:begin row=16'b1111111111111111;line<=4'hc; end4'hc:begin row=16'b1111111111111111;line<=4'hd; end4'hd:begin row=16'b1111111111111111;line<=4'he; end4'he:begin row=16'b1111111111111111;line<=4'hf; end4'hf:begin row=16'b1111111111111111;line<=4'h0; enddefault:line<=4'h0;endcaseendendmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2、sel3四个使能端选通点阵,EP2C8Q208C8就会工作在给点阵下命令的状态,并用line和row分别作为点阵的行、列选通端,最终使得点阵正常工作,如图3.5.1所示。

16×16点阵显示实验 实验报告

16×16点阵显示实验  实验报告
二、实验原始数据记录
1.实验现象
当设计文件加载到目标器件后,将数字信号源模块的时钟选择为1KHZ,按下矩阵键盘的某一个键,则在数码管上显示对应的这个键标识的键值,当再按下第二个键的时候前一个键的键值在数码管上左移一位。按下“*”键则在数码管是显示“E”键值。按下“#”键在数码管上显示“F”键值。
2.实验图片记录
2)新建VHDL File(程序)
3)编译仿真
4)管脚分配
5)下载调试
2)加强对总线产生地址定位的CPLD实现方法的理解
3)掌握在FPGA中调用ROM的方法
成绩: 教师:
实验报告
一、实验内容及步骤
1.实验内容
1)通过编程实现对16×16点阵的控制
2)在点阵循环中显示“欢迎使用嵌入式SDC开发系统”这几个汉字和字符
3)运用软件对程序进行编译和仿真
2.实验步骤:
1)新建工程
成绩: 教师: 批改日期:
பைடு நூலகம்湖南科技大学
物理与电子科学学院专业实验报告
实验课程:FPGA实验原理
实验项目:16×16点阵显示实验
专 业:物理与电子科学学院
班 级:电子信息科学与技术3班
***********
学 号:**********
实验日期: 年 月 日
实验预习报告
一、实验目的及要求
1)加强点阵字符产生的显示原理和系统的16×16点阵的工作原理

单片机16×16点阵显示实验总结400字

单片机16×16点阵显示实验总结400字

单片机16×16点阵显示实验总结400字单片机16×16点阵显示实验总结这次实验我们使用单片机设计了16×16点阵显示器的驱动电路,并成功实现了在点阵上显示字符、数字和图案的功能。

下面是对本次实验的总结。

首先,我们按照实验手册的指示,采用逐行扫描的方式驱动16×16点阵显示器。

通过设置接口电路和引脚连接,将单片机与点阵电路相连,实现数据和控制信号的传输。

接着,我们编写了相应的程序代码,在单片机上进行编译和烧录,并使用示波器进行调试。

在调试过程中,我们发现了一些常见的问题,比如接口线连接错误、引脚配置错误等,及时解决这些问题,确保了实验的顺利进行。

接下来,我们开始编写点阵显示的控制程序。

通过对点阵每一个LED灯珠的亮灭状态进行控制,我们可以实现在点阵上显示不同的字符、数字和图案。

我们编写了一个字符库,其中包含了常用字符和数字的点阵码。

通过查表的方式,我们可以根据需要在点阵上显示相应的内容。

在编写程序的过程中,我们充分利用了单片机的IO口和定时器的功能,并采用了合理的算法,提高了程序的执行效率。

在实验过程中,我们遇到了一些困难和挑战。

首先,点阵显示器的像素较多,对于单片机的计算能力和IO口的数量有一定要求。

因此,在编写程序的过程中,我们需要注意内存和资源的使用,避免发生卡顿或者无法正常显示的情况。

其次,点阵显示器的扫描速度要求较高,需要通过设置定时器的中断来实现,以确保显示的稳定性和清晰度。

通过本次实验,我们不仅掌握了单片机的基本原理和编程技巧,还深入了解了点阵显示器的工作原理和驱动方式。

通过自主设计和编写代码,我们成功实现了在16×16点阵上显示字符、数字和图案的功能。

这不仅加深了我们对嵌入式系统的理解,还提高了我们的动手实践能力和问题解决能力。

总之,通过这次实验,我们不仅学到了很多知识,还锻炼了自己的动手能力和团队合作能力。

虽然在实验过程中遇到了一些困难,但通过不懈努力和团队合作,我们最终取得了成功。

LED16x16点阵课程设计报告剖析

LED16x16点阵课程设计报告剖析

天津理工大学中环信息学院电子系单片机课程设计报告题目:16×16点阵LED电子显示屏的设计班级 10信科一指导教师田野设计成员陈诗静林樟侯成飞电子系2013年07月 05日三、课程设计进度计划及检查情况记录表四、成绩评定与评语目录一.课程设计意义 (2)二.课程设计任务书 (3)三、课程设计进度计划及检查情况记录表 (4)四、成绩评定与评语 (4)一、总体设计方案 (6)1.1 总体设计 (6)1.2 硬件设计 (7)1.3 软件设计 (14)二、设计内容 (16)2.1 系统硬件原理图与仿真 (16)2.2 程序清单 (18)三.结论、建议及课程设计体会 (22)四.参考文献 (22)一、总体设计方案1.1 总体设计1.1.1 工作原根据功能要求,应采用动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式。

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握动态显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握串行数据传输方式的应用。

(5)实现利用AT89S51单片机控制的LED图文屏正常工作。

1.1.2 硬件部分总体设计根据功能要求,采用AT89C51单片机,动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式,列扫描地址用P1口控制,总体结构框图如下:图1-1 系统总体结构框图1.2 硬件设计系统的组成,硬件的选用,芯片的特点1.2.1 8051系列的单片机AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图片见下图:图 1-2 89C51管脚图(1).管脚说明VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

16×16 LED点阵显示实验

16×16 LED点阵显示实验

16×16 LED点阵显示实验一、实验目的1、了解16×16矩阵LED显示的基本原理和功能2、掌握16×16矩阵LED和单片机的硬件接口和软件设计方法二、实验说明汉字显示屏广泛应用与汽车报站器,广告屏等。

实验介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,采用了16×16的点阵模块;汉字显示的原理我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。

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

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

所以在这个汉字屏上不仅可以显示汉字,也可以显示在256像素范围内的任何图形。

我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。

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

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

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

方向为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进制04h。

这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h. 依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”。

16×16点阵LED电子显示屏设计报告.

16×16点阵LED电子显示屏设计报告.
2.2数据传输和显示方案
采用扫描方式进行显示时,每行一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上,这就存在着一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案不可取。
3.3列驱动电路
列驱动器由集成电路74HC595构成。它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
引脚SI为串行数据输入端,与单片机串口RXD(P3.0)相连,用来传送数据;引脚SCK为移位寄存器的移位时钟脉冲,与单片机串口TXD(P3.1)相连;引脚SCLR信号是移位寄存器的清0输入端,低电平有效,接与单片机P1.5口;RCLK是输出寄存器的打入信号,与单片机P1.6口相接;
静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。
如果用静态显示的方法,16×16的点阵共有256个发光二极管,单片机没有那么多的端口,如果用锁存器来扩展端口,按8位锁存器来计算,也需要32个锁存器。两位显示就需要64个锁存器。因此在实际应用中的显示屏几乎都不采用静态显示,而是采用动态扫描的显示方法。

1616点阵LED显示屏的原理与制作实验报告

1616点阵LED显示屏的原理与制作实验报告

16*16点阵LED显示屏的原理与制作实验报告一、实验目的1.学会LED点阵模块的引脚判别,学会多块LED点阵模块的拼接使用。

2.进一步了解LED点阵的显示原理。

3.了解用单片机控制LED点阵显示字符的基本原理。

4.学会根据电路图连接电路。

二、实验内容在4块8*8LED合并而成的16*16LED显示屏上显示名字。

三、实验过程1.显示屏驱动电路原理图2.程序编写#include<reg52.h>#define CCED2 0x0000 /*吴*/unsigned char code word_zai[16][2] = {/*吴CCED2 */0x00,0x84,0x00,0x84,0x80,0x44,0xBE,0x44,0xA2,0x24,0xA2,0x14,0xA2,0x0C,0xA 2,0x07,0xA2,0x0C,0xA2,0x14,0xA2,0x24,0xBE,0x64,0x80,0xC4,0x00,0x44,0x00,0x04,0x0 0,0x00};/*"吴",0*/void main(){ char scan,i,j;P0=0;P1=0;P2=0;while(1){ scan=0;for(i=0;i<16;i++){ P1=scan;for(j=0;j<50;j++) //显示五十次{ P2=word_zai[i][0] ;P0=word_zai[i][1] ;}P0=0;P2=0;scan++;}}}四、实验总结在本次的实验里,我感觉本次实验的任务对我的挑战蛮大,因为在实验中要编写一个C语言有点麻烦,需要算的数据比较多,一不小心的话可能就会导致最后的实验结果出现问题,所以要非常的仔细才行。

vhdl实验报告_16乘16点阵_列选_显示

vhdl实验报告_16乘16点阵_列选_显示

综合实践总结报告综合实践名称: EDA技术与实践综合实践地点、时间一.题目功能分析和设计实验的要求有如下三点:1.用16*16点阵的发光二极管显示字符;2.可显示字符为0~9的数字字符与A~F英文字母的大写;3.输入为四位二进制矢量;按照要求可知,LED点阵模块,共由16×16=256个LED发光二极管组成,如何在该点阵模块上显示数字和字母是本实验的关键。

先将要显示的每一幅图像画在一个16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布以数字8为例,点阵分布为:0000000000000000000000000000000000011111111110000001111111111000000110000001100000011000000110000001100000011000000111111111100000011111111110000001100000011000000110000001100000011000000110000001111111111000000111111111100000000000000000000000000000000000考虑到实际物理实验平台上点阵发光二极管的原理,以下为16×16点阵LED外观图,只要其对应的X、Y轴顺向偏压,即可使LED 发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

所以我采用行列扫描的方法,用四位二进制数做列选信号(总共16列),如选中第一列,则扫描第一列之中哪些行是高电平(1),哪些行是低电平(0);为高电平的则点亮,为低电平的不亮。

(列信号都接地)。

如此,列选信号由“0000”变到“1111”时,16列扫描完毕,一个字也就出来了,列选信号重新由“0000”开始扫描。

注意扫描频率必须要足够快,才能保证显示一个数字或字母时所有灯在肉眼看来是同时在闪烁的。

点阵实验报告

点阵实验报告

1.实验目的(1)掌握LED16X16点阵显示与单片机接口的方法;(2)了解LED16X16点阵显示的基本原理与功能;(3)掌握LED16X16点阵显示软件编程方法。

2.点阵显示简介汉字显示屏到处可见,被广泛应用于汽车报站器,广告屏等。

本文中的16*16LED显示屏是采用4块8*8LED合并而成的,实验介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,采用了16×16的点阵模块,汉字显示的原理我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。

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

LED阵列的显示方式是按显示编码的顺序,一行一行地显示。

每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。

若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。

本文采用低电平逐行扫描,高电平输出显示信号。

即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态,其它行都处于熄灭状态。

3.点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),下图给出了两种类型的内部电路原理及相应的管脚图4 .系统电路设计(1)单片机系统及外围电路单片机采用MSC-51 或其兼容系列芯片,采用24MHZ 或更高频率晶振,以获得较高的刷新频率,时期显示更稳定。

单片机的串口与列驱动器相连,用来显示数据。

P1 口低4 位与行驱动器相连,送出行选信号;P1.5~P1.7 口则用来发送控制信号。

P0 口和P2口空着,在有必要的时候可以扩展系统的ROM 和RAM。

(2)列驱动电路列驱动电路有集成电路74HC595 构成。

它具有一个8 位串入并出的移位寄存器和一个8 位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。

它的输入侧有8 个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。

实验14LED1616点阵显示电路

实验14LED1616点阵显示电路

实验十四16*16LED点阵显示电路一. 实验目的1. 了解16*16LED点阵显示硬件电路2. 掌握状态机设计3. 掌握串行数据传输的设计思路二. 实验原理我们在一些公共场所,经常看到一些点阵显示的屏幕,点阵显示屏由若干个半导体发光二极管像素点均匀排列组成。

点阵显示就是把待显示的字符或图像等面积地分成若干个点阵单元(像素),有图像的单元点亮相应的二极管,无图像区域对应的二极管处于灭状态,整体组合成一个完整的图像,对于字符也是按照图像进行处理的。

一个字符,例如一个汉字,把它分为多少个单元,决定了其显示时的平滑程度,一般来说,在16*16的LED点阵上可以比较清晰的显示一个不太复杂的汉字。

实验箱上的有一个16*16的LED点阵,其硬件内部电路如图14.1所示。

电路中采用SPI接口的方式对LED点阵进行操作,LATTICE_SI对应SPI的MOSI,LATTICE_STR对应SPI的nCS,LATTICE_SCK对应SPI的SCK。

四个74HC595构成一个32位的串入并出的移位寄存器。

当STR低电平时,32位的数据在32个SCK时钟下由SI串行输入,当STR 由低电平变为高电平时,32位的数据并行输出。

在主板上数据输出LDA~LDP对应16行,而LED1~LED16对应列,最后移入的数据被当做16列(LED16),最先移入的数据被当做第1行(LDA)。

在这里我们需要明确的是:1.一屏图像可以逐行扫描显示,也可以逐列扫描显示,本实验采取逐列扫描显示,即把显示整屏的时间分为16个时间段,第n个时间段显示第n列,点亮该列相应的LED单元。

2.若扫描显示某列,需要片选该列的列单元(低电平),例如显示第1列,需要把列1置为低电平,其它列为高电平。

如果该列的某一行对应的单元亮,则该行对应的电平为高电平,不亮的单元对应的行为低电平。

3.不论显示那一列,对于16*16 的点阵来说,都要在STR低电平时通过SI线串行送出32位的数据,先送某一列上的由上至下的16个点的数据,然后再送由左至右的该列对应的片选数据。

16x16 LED点阵实验

16x16 LED点阵实验

实验名称: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点阵相连的端口名称)1、静态方式:流程图:代码及注释: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信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序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;"张" END2、滚屏方式流程图:代码及注释: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灯的亮暗程度有些不均匀。

16x16LED汉字点阵总结报告

16x16LED汉字点阵总结报告

电子技术综合设计报告姓名及学号:黄天琦04091550、何俊04091549、李继越04091552、韩稳04081914专业与班级:电气与自动化09-9班设计题目:16*16LED汉字点阵显示系统设计时间:2011 ~2012 学年第(1)学期指导教师:冯小龙成绩:日期:一、课题任务基本要求:采用80C51单片机和LED点阵显示模块设计实现组合点阵信息显示。

提高要求:具有显示内容自动更新的功能以完成对任意存储的信息内容进行完整的显示。

二、方案比较与选择点阵LED显示器的结构和原理与七段LED数码显示器是一样的,均由发光二极管组成,但两者的排列结构不同。

LED点阵显示屏是由若干个显示单元拼接而成的。

方案一:显示接口采用静态驱动。

但点阵式LED显示器通常用在大面积汉字或图形显示的场合,因为点阵数很多,所以连接线也很多,如果采用静态驱动的方式,连线将会很复杂,硬件的成本将增加。

但软件开销小,而且显示不会出现闪烁现象。

方案二:显示接口采用动态驱动。

特点与静态驱动刚好相反,硬件成本小,但软件成本大,显示效果不如静态好。

方案三:不同于方案一与二中LED只采用一种基色,方案三中的LED显示屏中每个点阵单元又包括红、绿、蓝三种发光二极管,这三种发光二极管发出三种颜色的光混色后得到人眼所感觉到颜色,其优点为颜色丰富鲜活,能用来显示各种文字、图像,表现能力强。

缺点为,电路结构负责,软硬件成本高,且不好控制。

综合以上三种方案,从成本及实现的难易程度上来衡量,最终选择方案二。

三、电路设计我们选用的是显示接口采用动态驱动的只有一种基色的8×8点阵的LED显示模块。

用来显示单个汉字。

LED电子显示屏原理8×8点阵式LED显示器原理如图1所示为了减少引脚且便于封装,各种LED显示点阵模块都采用阵列形式排布,即在行列线的交点处接有显示LED。

因此,LED点阵显示模块的显示驱动只能采用动态驱动方式,每次最多只能点亮一行LED(共阳形式LED显示点阵模块)或一列LED(共阴形式LED显示点阵模块)。

16×16点阵显示

16×16点阵显示

目录第一章系统设计总述 (1)1.1 设计要求 (1)1.2 要求分析 (1)第二章系统设计原理 (2)第三章系统子程序设计 (3)3.1 32进制计数器设计 (3)3.2 16进制计数器设计 (4)3.3 列驱动设计 (5)3.4 行驱动设计 (6)第四章原理图仿真波形 (25)第五章设计小结 (26)参考文献 (27)SOPC/EDA综合课程设计报告―16×16点阵显示控制第一章系统设计总述1.1 设计要求使用FPGA设计一个16×16的点阵显示的控制器,使点阵显示器以两种花样显示“江西理工大学应用科学学院欢迎您!”1.2 要求分析根据设计要求可以分析出:点阵显示的花样有静态显示一个汉字,一屏一屏的显示汉字还有滚动显示汉字,还可以用亮着的灯显示汉字或者用暗着的灯显示汉字。

根据以上的分析,本实验采用如下两种花样显示:第一种花样是用亮着的灯组合所要显示的字,第二种方案是用暗着的灯组成所需要的字。

两种花样都是用一屏一屏的显示方法。

图1-1 方案一示例图1-2 方案二示例第二章系统设计原理16×16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

应用时限流电阻可以放在X轴或Y轴。

它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。

本实验就是要通过CPLD 芯片产生读时序,将字形从寄存器中读出,然后产生写时序,写入16×16的点阵,使其扫描显示输出。

为了显示整个汉字,首先分布好汉字的排列,以行给汉字信息;然后以128HZ 的时序逐个点亮每一行,即每行逐一加高电平,根据人眼的视觉残留特性,使之形成整个汉字的显示。

LED点阵每个点都有一个红色的发光二极管。

点阵内的二极管间的连接都是行共阳,列共阴。

本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。

16X16点阵显示实验

16X16点阵显示实验

实验报告实验名称: [16X16点阵显示实验]姓名:学号:指导教师:实验时间: [2013年6月15日]信息与通信工程学院16X16点阵显示实验1、实验要求:理解并掌握点阵显示符号的原理,理解原有程序,会使用动态扫描的方式使点阵显示汉字,明白点阵滚动显示的原理。

根据原有程序,掌握LPM_ROM的应用,会应用LPM_ROM存储需要显示的内容。

参照液晶显示程序,编写16*16点阵显示程序。

任务一:实现点阵列扫描。

点亮点阵的一列,并让其不断的向右移动。

任务二:在点阵上循环滚动显示“嵌入式系统设计”。

2、实验原理:2.1点阵基本原理本实验对点阵的扫描使用列扫描的方式。

就是将要显示的数据分成16列,在某一时刻只选中一列,并向点阵传送该列需要显示的数据,那么如果从左往右依次循环选中所有列,并且循环的速度足够快,因为视觉停留效应,我们就能看到完整的显示了。

如果要显示大于16列的信息,比如要显示多个汉字,由于只能同时显示16列,那么就需要在一个比较慢的时钟的指挥下,不断更新要显示的连续的16列数据,使用这样的方法就能实现滚动显示。

2.2任务原理8*8LED点阵共由64个发光二极管组成,每个发光二极管放置在行线和列线的交叉点上,当对应的某一行高电平(置1),且某一列低电平(置0),则相应的发光二极管就亮;因此要用8*8LED点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。

当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。

假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。

16×16扫描LED点阵的工作原理同8位扫描数码管类似。

它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。

单片机LED1616点阵显示实验

单片机LED1616点阵显示实验

LED16*16点阵显示实验目录1.概述 (2)1.1课题设计的背景 (2)1.2课程设计的要求 (3)2. 系统方案设定 (3)2.1系统总体设计 (3)2.2 AT89C51 单片机概述 (4)2.2.1 AT89C51单片机的结构 (4)2.2.2 管脚说明 (4)2.2.3 振荡器特性 (6)2.3 驱动显示方式的选择 (6)2.4 数据传输方式 (7)2.5显示屏控制部分 (8)3. 系统硬件的设计 (8)3.1系统硬件选择 (8)3.2 16*16点阵显示器的设计 (9)3.3 数据存储模块 (10)3.4数据存储电路设计 (10)4. 系统软件的设计 (11)4.1 系统主程序流程 (11)4.2数据移位传送模块 (13)4.3行扫描模块 (13)4.4串行通信模块 (13)4.5 软件的程序实现 (13)5 总结 (14)6.参考文献 (15)附录 (16)附录一LED16*16点阵控制程序清单 (17)附录二系统原理图 (22)LED16*16点阵显示实验1.概述1.1课题设计的背景单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

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

正因为单片机有如此多的优点,因此其应用领域之广,几乎到了无孔不入的地步。

在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。

我们可以开发利用单片机系统以获得很高的经济效益。

更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。

例如,本文所要论述的通过单片机来控制LED点阵显示。

16x16 LED点阵实验

16x16 LED点阵实验

实验名称: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点阵相连的端口名称)1、静态方式:流程图:代码及注释: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信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序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;"张" END2、滚屏方式流程图:代码及注释: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点阵显示综合实验

16×16点阵显示综合实验

《EDA技术综合设计》课程设计报告报告题目: 16×16点阵显示综合实验作者所在系部:电子工程系作者所在专业:作者所在班级:作者姓名:指导教师:完成时间:容摘要编写16×16点阵字符发生器的程序,通过CLK信号控制它的行驱动信号和列选信号让其依次输出‘中’,‘国’,‘人’三个字,通过硬件实验观察其结果,对于其他的显示花样以及点亮方式,可以根据实际需要自行设计。

关键字:16×16点阵,CLK,显示花样目录一概述 (5)二方案设计与论证 (5)三程序清单 (5)四器件编程与下载 (9)五性能测试与分析 (10)六实验设备 (10)七心得体会 (10)八参考文献 (11)课程设计任务书一、概述在时钟信号的控制下,使16×16点阵管花样点亮,在EDA试验仪中,16×16点阵显示列的驱动已经做好,其列选信号为SELOUT[3..0],送到4线-16线译码电路,译码电路的输出通过8只75451(双2输入与门,OC门)驱动器驱动16×16点阵管的16条共阴极列线;所以在设计点阵控制接口时,其列选信号必须由SELOUT[3..0]输出去控制译码电路。

对于信号的频率,采用与七段数码管的位选信号一样的处理方法,即扫描频率大于24Hz;通过CLK信号控制行驱动与列选信号使其动态依次显示”中国人“三个字。

其中CLK为时钟输入端,DIN[3..0]为花样显示模式选择,doout[15..0]为行驱动信号输出;SELOUT[3..0]为列选信号输出,去驱动4-16译码电路产生16×16点阵管的列选信号。

二、方案设计与论证该程序由三个进程信号组成,进程K1通过CLK信号控制扫描频率s以及计数信号q,进而由q的记述周期控制cp信号。

进程k2由cp信号控制汉字的扫描周期s0,实现汉字的依次显示,进程k3由扫描信号s控制点阵的行驱动和列选信号,使其准确显示’中国人’三个字。

16-16汉字点阵显示器制作心得

16-16汉字点阵显示器制作心得

16*16汉字点阵显示器制作心得从前天开始做16*16 点阵,做过了8*8 的,这16*16 还真的难了很多,不但连接复杂,需要的芯片也多,并且程序也不好写。

今天用了一整天的时间终于把点阵板子焊出来了,也没顾得上调试,真的好麻烦。

用的是4 个整结构的8*8 点阵连接起来的。

说复杂88 点阵居然还没说明,16 个引脚却是自己一个个测出来的,工作量真是不小。

16*16 点阵方案有好几个,可以确定的就有3 个,而最后决定是用自己买的74HC138 和74HC595 芯片做的,之所以用这两个芯片是因为买了还没用,而未用完的74HC473 还有好几个呢,也算是自己再多熟悉几个芯片吧!不过想来那两个芯片没用过用的时候肯定还会碰到不少困难。

而138 和595 都得级联,两个138 级联成4—16 译码器,正好用到数字逻辑了,而我上网查还没有级联图,也多亏了看书了。

本来就是不熟悉的芯片,还都是级联,明天调试编程可有的干了。

而今天的板子也焊的我够累的,一个板子上够飞了100 条导线,不清晰又麻烦。

想来用Altium Designer 软件做PCB 板那有多轻松,但是那板子拿到PCB 加工厂做经济就大不划算了。

累点也就没办法了,也算是自己练习焊接技术吧!昨晚终于把16*16 点阵做出来了。

汉字程序也编写出了。

前天焊好的板子昨天又更改了一些地方,也算是又增加了一种点阵驱动方案——把原来的74HC595 用两个IO 口代替,也就是阴极输出直接用单片机管脚输出,之所以这样是因为74HC595 用到了串口通讯,整个单片机就串口通讯和IIC 没有学好,只能暂且先用单片机IO 管脚直接驱动了。

74HC595 仅仅用4 个口就可以驱动16 个阴极,而用单片机驱动取得需要两个P 口。

这就对比出用芯片的好处了,绝对的节省管口。

在编程序中,用到了一个软件,真的特别省事,所有的汉字都已经编写好了,需要什么就可以直接查询,特方便。

不过有一点就自己的板子是阴极电亮,而。

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

实验报告实验名称: [16×16点阵显示实验] 姓名: []学号: [201]指导教师: [解*]实验时间: [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欧姆的电阻来检测了。

2.2 LPM_ROM的应用该模块为逻辑宏模块存储器。

其应用过程如下。

1选择模块2点击ok后,得到3属性编辑:可以根据实际需要选择数据宽度和内存的容量,默认是8bit,32个字空间。

修改空间和数据属性,Cyclone系列支持最大存储深度4k。

该界面可以选择输出引脚的属性,需要把hex文件或者mif其中mif文件或者hex文件可以由多种形式生成。

或由多种工具获得,如Quartus 的Text File编辑器、Matlab 等。

完成设置:放置该模块:按照基本操作步骤添加引脚,并进行编译,排除错误。

注意总线形式的引脚设置方法。

双击引脚标识,修改对话框中的内容,获得总线连接方式。

3 实验结果通过对程序及原理图的修改,逐步完成了老师的要求,最后使显示器显示“面朝大海,春暖花开。

”4 实验心得这次实验比之前更加深入一点,通过这次实验,我了解了16*16点阵的基本工作原理,学习了用Verilog HDL语言编写点阵扫描的程序。

虽然在实验中遇到了一些问题,尤其是四个字变八个字的过程,只因为一个小小的接线问题,始终看不到“春暖花开”。

但是自己看着问题一步一步的解决,知识一点一点的积累,确实很有成就感,这又增加了我对FPGA学习的热情。

虽然还不能完全读懂本实验上的所有程序,但是能够通过修改部分程序来完成老师要求的任务,也是有意义的。

附录:实验程序清单module dianzhen (clk50mhz,row,sel0,sel1,sel2,sel3,line);input clk50mhz; //实验箱提供50MHz时钟信号output sel0,sel1,sel2,sel3; //设置引脚选通点阵output reg [15:0] row; //列output reg [3:0] line; //行wire [15:0] row1,row2;wire [3:0] line1,line2;reg [24:0] cnt=0; //1Hz计数子reg [5:0] cnt1=0; //16s计数子assign sel0=1'b0;assign sel1=1'b1;assign sel2=1'b0;assign sel3=1'b0;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0; //1Hz计时器cnt1<=cnt1+1; //16s计时器endelsecnt<=cnt+1;endhangsaomiaou1(.clk50mhz(clk50mhz),.row(row1),.line(line1)); liesaomiaou2(.clk50mhz(clk50mhz),.row(row2),.line(line2)); always@(*)if(cnt1<=5'd31)beginrow<=row1; //行扫描line<=line1;endelsebeginrow<=row2; //列扫描line<=line2;endEndmodule行扫描module hangsaomiao(clk50mhz,line,row);input clk50mhz; //实验箱输入50MHz时钟信号output reg [15:0] row; //列output reg [3:0] line; //行reg [24:0] cnt1,cnt2; //计数子reg clkrow,clkline; //列脉冲、行脉冲always@(posedge clk50mhz)beginif(cnt1>=25'd5*******)begincnt1<=25'b0;clkrow=~clkrow; //1s列脉冲endelsecnt1<=cnt1+1;endalways@(posedge clk50mhz)beginif(cnt2>=25'd500)begincnt2<=25'b0;clkline=~clkline;//100KHz行脉冲endelsecnt2<=cnt2+1;endalways@(posedge clkline)begincase(line)4'd0:line<=4'd1; //高速行扫描4'd1:line<=4'd2;4'd2:line<=4'd3;4'd3:line<=4'd4;4'd4:line<=4'd5;4'd5:line<=4'd6;4'd6:line<=4'd7;4'd7:line<=4'd8;4'd8:line<=4'd9;4'd9:line<=4'd10;4'd10:line<=4'd11;4'd11:line<=4'd12;4'd12:line<=4'd13;4'd13:line<=4'd14;4'd14:line<=4'd15;4'd15:line<=4'd0;default:line<=4'd0;endcaseendalways@(posedge clkrow) //时间间隔为1s的列扫描begincase(row)16'b0000000000000001:row<=16'b0000000000000010;16'b0000000000000010:row<=16'b0000000000000100;16'b0000000000000100:row<=16'b0000000000001000;16'b0000000000001000:row<=16'b0000000000010000;16'b0000000000010000:row<=16'b0000000000100000;16'b0000000000100000:row<=16'b0000000001000000;16'b0000000001000000:row<=16'b0000000010000000;16'b0000000010000000:row<=16'b0000000100000000;16'b0000000100000000:row<=16'b0000001000000000;16'b0000001000000000:row<=16'b0000010000000000;16'b0000010000000000:row<=16'b0000100000000000;16'b0000100000000000: row<=16'b0001000000000000;16'b0001000000000000:row<=16'b0010000000000000;16'b0010000000000000:row<=16'b0100000000000000;16'b0100000000000000:row<=16'b1000000000000000;16'b1000000000000000:row<=16'b0000000000000001;default :row<=16'b0000000000000001;endcaseendendmodule列扫描module liesaomiao(clk50mhz,row,line);input clk50mhz; //实验箱输入50MHz时钟信号output reg [15:0] row; //行output reg [3:0] line; //列reg [24:0] cnt; //计数子reg clk;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0;clk=~clk; //1sendelsecnt<=cnt+1;endalways @ (posedge clk) //列扫描begincase(line)4'h0:beginrow=16'b1111111111111111;line<=4'h1;end4'h1:beginrow=16'b1111111111111111;line<=4'h2;end4'h2:beginrow=16'b1111111111111111;line<=4'h3;end4'h3:beginrow=16'b1111111111111111;line<=4'h4;end 4'h4:beginrow=16'b1111111111111111;line<=4'h5;end 4'h5:beginrow=16'b1111111111111111;line<=4'h6;end 4'h6:beginrow=16'b1111111111111111;line<=4'h7;end 4'h7:beginrow=16'b1111111111111111;line<=4'h8;end 4'h8:beginrow=16'b1111111111111111;line<=4'h9;end 4'h9:beginrow=16'b1111111111111111;line<=4'ha;end 4'ha:beginrow=16'b1111111111111111;line<=4'hb;end 4'hb:beginrow=16'b1111111111111111;line<=4'hc;end 4'hc:beginrow=16'b1111111111111111;line<=4'hd;end 4'hd:beginrow=16'b1111111111111111;line<=4'he;end 4'he:beginrow=16'b1111111111111111;line<=4'hf;end 4'hf:beginrow=16'b1111111111111111;line<=4'h0;enddefault:line<=4'h0;endcaseendendmodule。

相关文档
最新文档