欢迎来到天天文库
浏览记录
ID:56580096
大小:265.00 KB
页数:7页
时间:2020-06-28
《fpga实验报告点阵实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、点阵实验一.实验目的理解原有程序并修改以实现点阵列的行扫描与列扫描。一、实验原理1.74HC154简介74HC154是一款高速CMOS器件,74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。当其余的使能输入端置低时,地址输出将会跟随应用的状态。7在实验中通过对74HC154输入端的计数控制
2、,实现了列的扫面。切扫描的频率从由输入变化的频率控制。在实验中,我们使用了74HC154来进行列控制信号的输出。其引脚图为:74HC154参数74HC154基本参数电压 2.0~6.0V驱动电流 +/-5.2mA传输延迟 11ns@5V74HC154其他特性逻辑电平 CMOS功耗考量 低功耗或电池供电应用74HC154封装与引脚SO24,SSOP24,DIP24,TSSOP242.点阵工作原理8*8LED点阵共由64个发光二极管组成,每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1高电平,且某一列置0低电平,则相应的发光二极管就亮;因此要用8*8LE
3、D点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。但要显示信息量大的图形,则需要n个多个8*8LED点阵,拼装成一个大屏幕才行。16×16扫描LED点阵的工作原理同8位扫描数码管类似。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以
4、其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。通过时钟的每列扫描显示完整汉字。不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16×16的点阵共有256个发光二极管,采用动态扫描的显示方法。逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。具体就16×16的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送
5、出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;……第十六行之后又重新燃亮第一行,这样反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。3.扫描原理需要实现点阵按列依次并且循环显示的效果,可以分析视觉上可以观察到列的变化,则列的扫描频率必定要远远小于行扫描的频率。在程序中,设置行扫描的频率等于前次实验中数码管扫描的频率,设置列扫描的频率为5HZ,即每0.2s显示亮的一列向前推进一列。在程序中,使用16进制
6、计数作为74HC154的输入:分出5hz的频率,并用其计数,将计数值作为74HC154,则其译码产生的输出变化也为5hz,并且实现每列一次选通。由于每行对应的数码管共阳极。直接赋高电平。则可以实现所需要的功能。行扫面则是要实现先依行点亮,再实现列点亮。三实验流程图及管脚分配1.行扫描流程图2.列扫描流程图开始初始设置列初始化i=0行置为1列计数i=i+1i<16?NY3.管脚分配四.试验程序1.行扫描程序moduleline(clk,rst,ql,ll,sel);inputclk;inputrst;output[15:0]ql;output[4:0]ll;outp
7、ut[2:0]sel;regCLK_DIV,CLK_DIV2;reg[31:0]DCLK_DIV,DCLK_DIV2;reg[4:0]cnt;reg[15:0]qql;reg[15:0]qqlx;parameterCLK_FREQ='D50_000_000;//系统时钟50MHZparameterDCLK_FREQ='D100;//AD_CLK输出时钟10/2HZparameterDCLK_FREQ2='D10000;//AD_CLK输出时钟10/2HZalways@(posedgeclk)if(DCLK_DIV<(CLK_FREQ/DCLK_FREQ))DCLK
8、_DIV<
此文档下载收益归作者所有