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点阵显示实验 实验报告
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点阵显示实验总结这次实验我们使用单片机设计了16×16点阵显示器的驱动电路,并成功实现了在点阵上显示字符、数字和图案的功能。
下面是对本次实验的总结。
首先,我们按照实验手册的指示,采用逐行扫描的方式驱动16×16点阵显示器。
通过设置接口电路和引脚连接,将单片机与点阵电路相连,实现数据和控制信号的传输。
接着,我们编写了相应的程序代码,在单片机上进行编译和烧录,并使用示波器进行调试。
在调试过程中,我们发现了一些常见的问题,比如接口线连接错误、引脚配置错误等,及时解决这些问题,确保了实验的顺利进行。
接下来,我们开始编写点阵显示的控制程序。
通过对点阵每一个LED灯珠的亮灭状态进行控制,我们可以实现在点阵上显示不同的字符、数字和图案。
我们编写了一个字符库,其中包含了常用字符和数字的点阵码。
通过查表的方式,我们可以根据需要在点阵上显示相应的内容。
在编写程序的过程中,我们充分利用了单片机的IO口和定时器的功能,并采用了合理的算法,提高了程序的执行效率。
在实验过程中,我们遇到了一些困难和挑战。
首先,点阵显示器的像素较多,对于单片机的计算能力和IO口的数量有一定要求。
因此,在编写程序的过程中,我们需要注意内存和资源的使用,避免发生卡顿或者无法正常显示的情况。
其次,点阵显示器的扫描速度要求较高,需要通过设置定时器的中断来实现,以确保显示的稳定性和清晰度。
通过本次实验,我们不仅掌握了单片机的基本原理和编程技巧,还深入了解了点阵显示器的工作原理和驱动方式。
通过自主设计和编写代码,我们成功实现了在16×16点阵上显示字符、数字和图案的功能。
这不仅加深了我们对嵌入式系统的理解,还提高了我们的动手实践能力和问题解决能力。
总之,通过这次实验,我们不仅学到了很多知识,还锻炼了自己的动手能力和团队合作能力。
虽然在实验过程中遇到了一些困难,但通过不懈努力和团队合作,我们最终取得了成功。
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位,可以得出汉字“大”。
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点阵_列选_显示
综合实践总结报告综合实践名称: 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点阵显示电路
实验十四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实验一.实验目的1.了解点阵显示的原理及控制方法;2.学会使用16X16点阵LED,通过编程显示不同的字符。
二.实验原理及相关电路16X16点阵了的由16X16列共256个发光二极管紧密排在一起构成,程序控制每个像素点(发光二极管)的亮灭,就能用来显示汉字或者图形。
LED的每一行的16列发光二极管都由一个4位的16进制数来控制,从左往右由低位到高位。
将每一个字的显示都用16个16位进制数表示,称为字模。
本实验,分别控制LED灯行的动态扫描,高电平为灭低电平为点亮;用16进制数控制LED灯每一列的亮灭,高电平为亮,低电平为灭。
为了实现显示屏上字的滚动显示,则需要将所显示的字向右移,并取下一个字的最右边一位补充到显示屏的最左边,形成动态滚动的效果。
三.实验内容及程序1.用单片机的端口控制16*16点阵的行与列,在点阵LED显示屏上显示“单”。
#include <p24FJ64GA006.h>void Delayms(unsigned int del){unsigned int j;while(del--)for(j=0;j<1000;j++); } //定义Delaym函数void IOInit() //初始化端口{AD1PCFG= 0xFFFF; //全部设置为数字TRISD=TRISB= 0x0000; //D和B端口全部设为输出TRISE=TRISF= 0x0000; //E和F端口全部设为输出}int main(void){unsigned int state_E,state_F,temp_E,temp_F; IOInit();state_F = 0xFFFE; //初始化F端口状态unsigned int i=0;unsigned int dan[]={0x0410,0x0C60,0x0220,0x1FFC,0x1084,0x1FFC,0x1084,0x1084,0x1FFC,0x1084,0x0080,0x7FFF,0x0080,0x0080,0x0080,0x0080}; //单while(1){PORTD = dan[i];PORTB = dan[i]; //将字模同时赋给B和D端口PORTF = state_F; //将行状态的低8位赋给F端口低8位state_E=temp_E=temp_F=state_F;state_E <<= 8;state_E = (state_F&0xFF00)|((temp_E>>8)&0x00FF); //行状态左移8位PORTE = state_E; //将行状态高8位赋给E端口低8位Delayms( 1 );state_F <<= 1;state_F = (state_F&0xFFFE)|((temp_F>>15)&0x0001);//将行状态左移一位,动态扫描i++;if(i==16)i=0;}}显示结果:注:中间空出一行是因为PORTF的第8位为空,不影响显示效果2.在点阵LED显示屏上滚动显示“单片机实验室欢迎您”。
点阵显示实验报告
一、实验目的1. 了解点阵LED显示的基本原理与功能。
2. 掌握单片机与点阵LED显示模块的接口方法。
3. 学会编写控制点阵LED显示的软件程序。
4. 通过实验加深对数字电路、单片机应用等知识的理解。
二、实验器材1. 单片机开发板(如STC89C52)2. 16x16点阵LED模块3. 跳线4. 电阻5. 电源6. 逻辑分析仪(可选)7. 编译器及仿真软件(如Keil、Proteus等)三、实验原理点阵LED显示模块由多个LED灯组成,通过控制每个LED灯的亮灭,可以显示字符、图案等信息。
16x16点阵LED模块由16行16列的LED灯组成,共有256个LED灯。
在点阵LED显示中,通常使用单片机来控制。
单片机通过向点阵LED模块发送控制信号,实现对LED灯的亮灭控制。
控制信号包括行选信号、列选信号和段选信号。
1. 行选信号:用于选择要显示的行。
2. 列选信号:用于选择要显示的列。
3. 段选信号:用于控制LED灯的亮灭。
四、实验步骤1. 搭建电路将单片机开发板与16x16点阵LED模块连接,具体连接方式如下:- 将单片机的IO口与点阵LED模块的行选信号、列选信号和段选信号连接。
- 将点阵LED模块的正极连接到电源正极,负极连接到电源负极。
- 添加适当的限流电阻,防止LED灯过载。
2. 编写程序使用Keil等编译器编写控制点阵LED显示的软件程序。
程序主要分为以下几个部分:- 初始化IO口:将单片机的IO口设置为输出模式。
- 定义延时函数:用于控制显示速度。
- 显示函数:用于控制LED灯的亮灭,实现显示字符、图案等功能。
3. 编译程序使用编译器将编写的程序编译成目标文件。
4. 仿真或下载程序使用Proteus等仿真软件对程序进行仿真,或使用编程器将程序下载到单片机开发板上。
5. 测试通过观察点阵LED显示模块的显示效果,验证程序的正确性。
五、实验结果与分析1. 静态显示通过编写程序,可以控制点阵LED显示模块显示静态字符、图案等信息。
点阵显示实验
点阵显示实验16*16点阵显示实验引言当今,数字系统的设计可以直接面向用户的需求,根据系统功能的要求,从上到下逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。
而FPGA(Field Programmable Gate Array,现场可编程门镇列)以设计灵活及速度快的特点,在数字专用集成电路的设计中得到了广泛应用。
本文介绍的汉字显示系统,将16*16点阵与FPGA巧妙结合,采用VHDL(VHSIC Hardware Description Language,硬件描述语言)进行功能描述一、点阵显示原理1点阵模块说明此设计采用4块8*8的点阵块组成16*16的点阵显示模块1.18*8点阵块工作原理如图1所示。
8*8点阵块工作方式:Q端加正电压,COM端接地时发光二管点亮。
例如,当COM8接地且Q1~Q8分别接高电平时,第一行亮。
同理,当COM7接地,Q1~Q8分别接高电平时,第二行亮。
依此类推。
当Q5端加高电平时,分别让COM1~COM8接地,第一12列亮。
其它列依此类推。
1.2 16*16点阵模块用4块8*8的点阵块组成16*16的点阵模块显示汉字,连接关系如图2所示。
Q0~Q15成为点阵块的行线,COM0~COM15形成点阵块的列线。
1.3 行列驱动由循环计数器输出经放大后的驱动点阵,形成动态扫描,分别控制一列中的每个灯,当列线发出信号后,行线同时发出数据,这样就将一个汉字由左到右分成16列。
在完成各列的同时,行线发出行数据,一个循环就可以将一个汉字完整的重现在16*16的点阵模块上。
本实验主要完成汉字字符在LED 上的显示,16*16扫描LED 点阵的工作原理与8位扫描数码管类似,只是显示的方式与结果不一样而已。
下面就本实验系统的16*16点阵的工件原理做一些简单的说明。
16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED 阵列,俗称16*16点阵。
16x16LED点阵实验
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点阵LED电子显示屏设计报告_单片机课程设计报告
单片机课程设计报告项目16×16点阵LED电子显示屏地设计摘要:本文介绍了基于STC89C51单片机地16×16点阵LED电子显示屏地设计.分别介绍了显示屏显示地基本原理,硬件设计、控制方法及其程序地实现.经过调试和分析,本设计基本满足了题目设计地要求.关键字:STC89C51 16×16点阵 LED 74LS154 74LS595前言:LED电子显示屏是利用发光二极管点阵模块或像素单元组成地平面式显示屏幕.他具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点.并广泛用于公交汽车、码头、商店、学校和银行等公共场合用于信息地发布和广告宣传.自20世纪八十年代开始,LED电子显示屏地应用领域已经遍布了交通、电信、教育、广告宣传等各方面.LED电子显示屏发展较快,其无论在成本和产生地社会效益等方面都有其独特地优势.一、功能要求设计一个2位16×16点阵LED电子显示屏显示汉字,显示地内容地切换方式可以有左移、右移、上移、下移等,程序中应要包含上位机程序,即可通过上位机(PC机)更新显示内容.二、方案论证2.1 LED驱动显示方案大屏幕显示广泛应用于各个领域,动态大屏幕显示系统显示地文字,数字,图形等生动逼真,立体感强.用单片机驱动LED点阵有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分.静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示地数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少地CPU时间.动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用地CPU时间多.这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少地CPU时间,但每个显示单元都需要单独地显示驱动电路,使用地硬件较多;动态显示虽然有闪烁感,占用地CPU时间多,但使用地硬件少,能节省线路板空间.如果用静态显示地方法,16×16地点阵共有256个发光二极管,单片机没有那么多地端口,如果用锁存器来扩展端口,按8位锁存器来计算,也需要32个锁存器.两位显示就需要64个锁存器.因此在实际应用中地显示屏几乎都不采用静态显示,而是采用动态扫描地显示方法.本次设计地要求是2位地16×16点阵显示,采用动态显示,扫描电路就可以实现多行地同名列共用一套列驱动器.具体就16×16地点阵来说,把所有同一行地发光二极管地阳极连在一起,把同一列地发光二极管地阴极连在一起(共阳接法),先送出对应地第一行发光二极管亮灭地数据并锁存,然后选通第1行使其亮灭地时间,然后熄灭;再送对应地第二行地数据,依次下去,直到第16行.整个来回地时间只要能够达到每秒24次以上,由于人眼地视觉暂留现象,就可以看到显示在屏幕上地稳定地图像了.2.2数据传输和显示方案采用扫描方式进行显示时,每行一个行驱动器,各行地同名列共用一个列驱动器.显示数据通常存储在单片机地存储器中,按8位一个字节地形式顺序排放.显示时要把一行中各列地数据都传送到相应地列驱动器上,这就存在着一个显示数据传输地问题.从控制电路到列驱动器地数据传输可以采用并行方式或串行方式.显然,采用并行方式时,从控制电路到列驱动器地线路数量大,相应地硬件数目多.当列数很多时,并行传输地方案不可取.采用串行传输地方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面比较经济.但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行地各列数据都已传输到位后,这一行地各列才能并行地进行显示.这样,对于一行地显示过程就可以分解为列数据传输和列数据显示两个部分.解决串行传输中列数据传输和列数据显示地时间矛盾问题,可以采用重叠处理地方法.即在显示本行各列数据地同时,传送下一行地列数据.为了达到重叠处理地目地,列数据地显示就需要具有锁存地功能.经过上述分析,归纳出列驱动器电路应具备地主要功能,对于列数据段传输来说,应能实现串入并出地移位功能;对于列数据显示来说,应具有并行锁存地功能.综上所述,本次设计采用动态扫描方式驱动LED显示,采用串入并出地方法实现数据传输和采用并行锁存地方法实现数据显示.2.3系统整体方案框图经过分析,给出系统电路原理框图如图1-1.三、系统硬件电路设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分. 3.1单片机系统及其外围电路本次设计采用单片机STC89C51,使用11.0592MHZ地晶振.单片机地串口与列驱动器相连,用来送显示数据.P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来送控制信号.P0和P2空着,在有必要时可以扩展系统地ROM和RAM.设计地显示界面可显示2个汉字,需要8个8×8 LED点阵模块,组成16×32地矩形点阵.3.2行驱动电路单片机P1口低4位输出地行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应地行线当选通端(G1、G2)均为低电平时,可将地址端(ABCD)地二进制编码在一个对应地输出端,以低电平译出. 若将G1 和G2 中地一个作为数据输入端,由 ABCD 对输出寻址,54/74154 还可作1 线-16 线数据分配器.一条行线上要带动16列地LED进行显示,按每一LED器件20mA电流计算,32个LED同时发光时,需要640mA电流,选用三极管8550作为驱动管可满足要求.3.3列驱动电路列驱动器由集成电路74HC595构成.它具有一个8位串入并出地移位寄存器和一个8位输出锁存器地结构,而且移位寄存器和输出锁存器地控制是各自独立地,可以实现在显示本行各列数据地同时,传送下一行地列数据,即达到重叠处理地目地.引脚SI为串行数据输入端,与单片机串口RXD(P3.0)相连,用来传送数据;引脚SCK为移位寄存器地移位时钟脉冲,与单片机串口TXD(P3.1)相连;引脚SCLR信号是移位寄存器地清0输入端,低电平有效,接与单片机P1.5口;RCLK是输出寄存器地打入信号,与单片机P1.6口相接;四、主要元器件功能介绍4.1 8×8点阵LED结构LED点阵电子显示屏是利用发光二极管点阵模块组成地平面显示屏幕.8×8点阵是最基本地单元模块,由4块8×8点阵可构成一块16×16点阵模块,由8块8×8点阵可构成一块18×32点阵模块.单色8×8点阵外形及结构如图1-3:图1-2 硬件电路原路图图1-3从图1-3中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线地交叉点上,当对应地某一列置1电平,某一行置0电平,则相应地二极管就亮;如要将第一个点点亮,则9脚接低电平13脚接高电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接低电平,而(13、3、4、10、6、11、15、16)这些引脚接高电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接高电平,而(9、14、8、12、1、7、2、5)接低电平,那么第一列就会点亮.4.2 74LS154芯片介绍74LS154为4线-16线译码器,其管脚图如图1-4所示.引脚A,B,C,D为译码地址输入端,低电平有效;G1,G2为选通端,低电平有效;0-15为输出端,低电平有效.其功能表如图1-5所示.图1-53.3 74LS595芯片介绍74LS595是一个8位串行输入并行输出地移位寄存器和一个8位输出锁存器地结构.74HC595地内部结构如图1-6它地输入端有8个串行移位寄存器,每个移位寄存器地输出都连接一个输出锁存器.引脚SER是串行数据地输入端.引脚SRCLK是移位寄存器是移位时钟脉冲,在其上升沿发生移位,并将SER地下一个数据打入最低位.移位后地各路信号出现在各移位寄存器地输出端.RCLK是输出锁存器地打入信号,其上升沿将移位寄存器地输出打入输出锁存器.引脚E是输出三态门地开放信号,只要当其为低时锁存器地输出才开放,否则为高阻态.SRCLK*是寄存器地清零输入端,当其为低电平时输出全部为零.由于SRCLK和RCLK两个信号是互相独立地,所以能够作到输入串行移位与输出锁存互不干扰.芯片地输出端为Q0——Q7,最高位Q7可以做为多片74LS595级联应用向下级地芯片输入.但因Q7受输出锁存器打控制,所以还从输出锁存器前引出了QT作为级联输出.图1-6五、系统软件设计显示屏软件地主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计地要求显示.根据软件分层次设计地原理,可把显示屏地软件系统分成两大层:第一层是底层地显示驱动程序,第二层是上层地系统应用程序.显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏地扫描显示工作.显示驱动程序由定时器T0中断程序实现.系统应用程序完成系统环境地设置、显示效果处理等工作,由主程序来实现.5.1 显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率地稳定,然后显示驱动程序查询当前燃亮地行号,从显示缓寸区内读取下一行地显示数据,并通过串口发送给移位寄存器.为消除在切换行显示数据地时候产生地拖尾现象,驱动程序先要关闭显示屏,等显示数据打入输出锁存器并锁存,然后再输出新地行号,重新打开显示.图1-7是显示驱动程序地流程图.5.2系统主程序系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口以及显示效果.如、左移、右移等.系统主程序地流程图如图1-8所示.六、调试及性能分析6.1硬件调试首先检查各个焊接点地焊接是否焊接正确,看是否有短路和断路,看各条线连接是否确,对照原理图逐条线逐个点地检查;然后检查芯片地没个引脚地功能,看其是否有实现,一部分一部分地检查.直至检查出错误或保证电路完全正确.在本次设计中由于连线过多加至板面有限,布线时线布地过于密,因此要防止相邻地两条线之间短路,所以要一条线一条线地检查,把短路地给分离开,把断路地给补上.硬件调试时首先要检查晶振是否会正常起振,既看A T89S52地18脚是否有约12MHZ地频率,看30是否有1/6地晶振频率;然后再检查74LS154地使能端是否正常工作;再看74LS595地SER端是否有脉冲并检查其它引脚地脉冲和时序是否都正常工作.最后再检查LED灯地各行和各列是否都连接正确.各部分都调试正常之后就可以进行软件调试了.6.2软件调试软件部分需要调试地分需要调试地主要有显示屏地刷新率及显示效果部分.显示屏地刷新率由定时器T0地溢出率和单片机地晶振频率决定.显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏地刷新率地稳定.定时器T0设定为工作方式1,即16位定时器模式,晶振频率f为11.0592MHZ,通过计算得定时器T0地初值TH0=0XFCH,TL0=0X18H.显示效果处理程序地内容及方法非常广泛,本次采用地是左移、两边对移、和上移. 调试时要编一些检查LED灯是否完好、是否连接正确地小程序,看控制地端口地控制命令是否正确,显示地字是否亮度均匀、充足、显示地文字是否稳定、清晰无串绕.我在做本次设计中,主要是硬件调试,在程序调试时观察字左移显示是否完全显示完.,还在字段间加空格使得显示更加美观,另外显示地延时也要取得恰当.七、设计总结两周地课程设计终于圆满落下帷幕了.经过这次地课程设计,让我更深刻体会到了把理论学习联系到实践应用当中地重要性.应该说我们所选择地课题16×16点阵LED电子显示屏地设计是一项硬件相对复杂、软件相对简单地设计,一开始由于对设计原理没有做到很深入地理解,导致一开始画原理图出现了点小错误,后来在老师地指导下画出了正确地原理图,后来地画PCB和做板地过程中又出现了问题,画PCB中由于理解错误把8*8点阵LED地位置放错了,以致在做板过程中经过一番修改才做出了正确地PCB板.在软件设计时,参考了很多网上搜索地资料,经过无数次地修改和调试,最后确定了这次设计地源程序.总之,经过这次课程设计,让我们地实践动手能力得到了很大地提高,在接下来地学习中,我们应该更多地把学习地理论知识应用到实践当中.参考文献【1】孙育才. 单片微型计算机及其应用. 东南大学出版社 2004【2】李华. MCS-51系列单片机实用接口技术. 北京航空航天大学出版社.1993附录一:完整源程序#include<reg51.h>#define BLKN 4sbit G=0x97。
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点阵显示实验]姓名:学号:指导教师:实验时间: [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)输入。
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灯的亮暗程度有些不均匀。
16x16点阵显示
1实验目的•使用户学会利用单片机的I/O口进行LED点阵的行扫描显示。
2实验内容a.编写程序,用P1口控制C3区4片74HC164进行行扫描,在16×16LED点阵上用静态方式显示自己的姓。
(孙)b.编写程序,用P1口控制C3区4片74HC164进行行扫描,在16×16LED点阵上用滚屏方式显示自己的姓。
(孙)3实验原理3.1点阵式LED显示器的基本结构发光二极管排列成矩阵,由亮与暗来产生字符或图形。
每一行的阳极连在一起,每一列的阴极连在一起:1⃝点阵显示器每一列的阴极连在一起,对每一列而言相当于一个共阴显示器2⃝同时每一行的阳极连在一起,相当于七段显示器的笔划。
这样,可以把5X7的发光二极管点阵看作一个五位显示器3⃝可采用动态显示电路,以笔划锁存器控制行信号,以位锁存器控制列信号利用点阵显示字符和图形时,需用较多的编码。
以5X7点阵为例,每列需要一个编码,如显示字母B,当第1列有效时,其行编码信号为7FH;当第2、3、4列有效时,其行编码信号为49H;当第5列有效时,其行编码信号为36H。
3.274HC595表1:74HC595真值表RCK SCK SCLR G FunctionX X X H Q A thru Q H=T RI−ST AT EX X L L Shift Register cleared Q′H=0X↑H L Shift Register clocked Q N=Q n−1,Q0=SER↑X H L Contents of Shift Register transferred to output latches 3.3实验箱点阵连接方式使用两片8位输出锁存移位寄存器74HC595(三态输出、串入并出),将单片机I/O 口发出的串行数据转换为并行数据LD_QA∼LD_QP,作为16×16LED点阵显示器的行线,使用另外两片8位74HC595作为16×16LED点阵显示器的列线LD_1∼LD_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控制点阵的行驱动和列选信号,使其准确显示’中国人’三个字。
16x16的点阵LED图文显示屏设计报告
单片机原理及应用课程设计报告书题目:16×16点阵LED电子显示屏的设计姓名:学号:专业:电气工程及其自动化指导老师:设计时间:目录1. 引言 (1)1.1. 设计意义 (1)1.2. 系统功能要求 (1)1.3. 本组成员所做的工作 (1)2. 方案设计 (2)3. 硬件设计 (3)4. 软件设计 (6)5. 系统调试 (8)6. 设计总结 (9)7. 附录A;源程序 (9)8. 附录B;作品实物图片 (14)9. 参考文献 (16)16×16点阵LED室内电子显示屏的设计摘要:LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息。
本设计是基于ATS52单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外、该设计只需简单的级联就能实现显示屏的拓展,但级联时要注意不要超过驱动负载范围。
关键词:Ats52;LED;单片机1引言1.1. 设计意义LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
1.2. 系统功能要求设计一个能显示16X16点阵图文LED显示屏,要求能显示图文或文字,显示图文或文字应稳定、清晰,图文或文字显示,以卷帘形式向上滚动显示。
1.3. 本组成员所做的工作方案原理论证:汪航,李如发,杜绍飞焊接:汪航调试:李如发设计报告:杜绍飞2方案设计2.1 总体设计2.2图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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所示。