北邮·数电综合实验·双色点阵显示控制器的设计与实现
LED双色点阵显示屏工作原理

LED双色点阵显示屏工作原理返回首页LED显示屏LED电子显示屏上海LED显示屏上海LED电子显示屏LED大屏幕电子显示屏LED照明LED灯饰LED显示屏维修LED显示屏报价【摘要】16×16 双色LED 点阵显示屏,以AT89S52 单片机为主控芯片,由74HC595 作为数据扫描、74HC154 和9012PNP 型三极管作为行驱动。
本显示屏带有四个基本按键、一个蜂鸣器、程序下载模块,不仅可作为显示屏显示使用,还可以作为开发板使用,能支持51 系列芯片的下载,能实现汉字或图片的循环显示、上下左右滚动显示、上下左右卷动显示。
本系统大部分功能是通过软件实现的,电路简单明了,系统稳定可靠。
1 引言LED 显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。
它具有发光率高、使用寿命长、组态灵活、色彩丰富、制作简单,安装方便以及对室内外环境适应能力强等优点,被广泛应用于各种公共场合。
如汽车报站器、广告屏以及公告牌等。
本文介绍的是一种可用在实验室等场合的公告牌的LED 点阵电子显示屏设计。
公告内容随时可以更新,能实现汉字或图片的循环显示、上下左右滚动显示、上下左右卷动显示。
考虑到所需元器件的易购性,本设计使用了8×8 的点阵发光管模块,组成16×16 发光点阵,显示待定的中文、字符以及数字。
16*16 双色点阵显示屏,自带两种颜色,通过程序控制,可以实现RGB 三色显示,且数据由单片机的串行移位寄存器发送,方便快捷,操作灵活。
对于显字方式有以下三种:1、循环闪烁显示;2、上下左右滚动显示;3、上下左右卷动显示。
另外,带程序下载模块,可作为一个开发板使用,带四个独立按键,一个锋呜器,可实现对51系列的单片机的烧写。
2 系统硬件设计2.1 总体设计本显示屏由AT89S52 单片机为核心,由四个8*8 点阵模块组成16 行16 列的显示屏,通过四个74HC595 级联控制点阵的16 列和颜色,一个74HC154 控制点阵的16 行,数据由单片机的串口发送,串口发送数据有一个缺点:发送速度慢,容易造成文字的闪烁,程序控制比较吃力,但使用串口,大大节约了IO 口,无需要对IO 口的扩展,直接就可使用,十分方便。
基于8086双色点阵发光二极管的设计与实现概论

郑州科技学院《微机原理与接口技术》课程设计题目基于8086双色点阵发光二极管的设计与实现学生姓年 1 月11日1■引言LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
但是LED等也有诸多不足,还有很多的发展空间,在样式和色彩搭配上还有很多的提升空间,有时间信号不稳定无信号输出。
显示板有时会不亮,整个屏幕重影或者晃动,这些都是LED 的弊端,需要我们改进,能够提高它的性能,发挥更大的价值。
现代LED的发展很快,很多研究领域非常已经深刻,所以想利用自己学的微机知识简单的研究一下用微机驱动的LED显示汉字,以达到学以致用和实践相结合的目的,同时巩固加深自己的微机知识。
用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。
因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的,对应于每种颜色都有自己的显示矩阵。
显示的时候,各颜色的显示点阵是分开控制的。
事先设计好各种颜色的显示数据,显示时分别送到各自的显示点阵,即可实现预期效果。
每一种颜色的控制方法和单色的完全相同,因此掌握了单色图文显示屏的原理,双色屏和多色屏就不难理解了。
因而我设计了“年”的LED等,采用双色点阵,能够显示红和黄两种颜色,能够闪烁。
可以在夜晚焕发出绚丽的色彩。
2■方案论证本设计方案中主要包括处理器选择,驱动电流设计,程序设计三部分。
下面逐次介绍各种方案的选择。
2.1处理器的选择方案一:利用80C51单片机作为程序处理器,80C51单片机有4个并行I/O接口,分别为P0.P1.P2.P3,每个接口有8个引脚,每个引脚均是双向输入输出通道,输入是可以实现所存,输出时可以实现数据缓冲。
数电实验报告-贪吃蛇-北邮

1 / 13简易贪食蛇游戏机学院:信息与通信工程专业:班级:姓名:学号:班内序号:简易贪食蛇游戏机一.设计课题的任务要求基本任务:用一个 8×8 点阵做为基本显示屏,4 个连续移动的的发光点表示一条蛇,用任意出现的一个亮点表示老鼠,用4 个排成一条线的发光点表示“墙”,用四个按键控制蛇的运动方向,完成贪食蛇游戏,蛇撞“墙”、边或者游戏时间到,则游戏结束。
1. 老鼠出现的地方是随机的,在某个地点出现的时间是5 秒钟,如果5 秒钟之内没有被吃掉,它就会在其它地方出现;2. 用数码管显示得分情况和游戏的剩余时间,每吃掉一只老鼠就加一分;提高要求:1. 游戏时间和速度可以手动设置。
2. 增加游戏难度或自拟其它功能。
二.系统设计1.设计思路当复位键置为1时, 8*8点阵也初始化为全不亮,每来一个时钟脉冲就对8*8点阵进行一次扫描,并依次点亮四个蛇身点、一个老鼠点、四个墙点,由于扫描频率远远超出人眼所能分辨的范围,故人眼看来蛇身是连续的。
在数码管上显示得分与倒计时情况。
用四个按键分别控制蛇的运动方向“上下左右”,每次按键时通过和蛇原来的运动方向进行比较来控制蛇接下来的运动方向。
当蛇撞墙、出界、游戏时间到时游戏结束,点阵全亮。
每当蛇吃到一个老鼠时则自动加一分并重设老鼠位置。
老鼠存活5秒钟时重设老鼠位置。
用M序列发生器实现老鼠位置的随机变化。
2.总体框架图:复位开关方向输入按键3.逻辑划分框图4.6.分块电路设计⑴点阵显示模块此模块采用频率为1Mhz的时钟clk3。
每来一个时钟就对整个8*8点阵全部扫描一次,当某个点的行为低电平,列为高电平时被点亮。
由于蛇身有4个移动的点,墙有4个固定的点以及一个老鼠的亮点,那么一共有9个点需要在8*8点阵上显示。
所以我将时钟用point分成9个周期,每个周期扫描一个点。
clk3频率很高,虽然是逐点扫描,但由于视觉暂留我们看到的是9个点同时亮。
当复位信号clear置为1时,点阵全不亮。
北邮数电综合实验报告

北邮数电综合实验报告综合实验报告:基于北邮数电实验的电子门禁系统设计与实现摘要:本次实验通过使用北邮数电实验室提供的器件和设备,设计并实现了一个简易的电子门禁系统。
该系统能够通过输入正确的密码或使用合法的身份卡,实现对门禁的控制和管理。
本文将详细介绍系统设计的原理、实验过程和结果,并对实验进行了总结和评价。
一、引言电子门禁系统是当前社会中广泛应用的一种重要安全保障设施。
它通过使用密码、身份卡等识别方式,对人员出入进行控制和管理。
本实验旨在通过北邮数电实验的学习和实践,学习和掌握电子门禁系统的设计与实现。
二、实验器材与原理实验器材:1.键盘2.蜂鸣器3.LCD显示屏4.数码安全码锁5.单片机开发板6.电源模块7.连线模块实验原理:该电子门禁系统的基本原理如下:1.用户通过键盘输入密码或刷合法的身份卡;2.单片机接收到输入的密码或读取身份卡信息;3.单片机对输入的密码或身份卡信息进行核对;5. 若核对失败,则控制蜂鸣器发出门禁错误提示音,并在LCD显示屏上显示“Access Denied”等拒绝信息。
三、实验过程与结果1.按照实验器材的接线要求,将键盘、蜂鸣器和LCD显示屏与开发板连接好;2.根据实验原理,编写相应的控制程序,并将程序烧录到单片机中;3.打开电源模块,开启电子门禁系统;4.用户通过键盘输入密码或刷合法的身份卡;5.系统接收到用户输入并进行核对;7. 核对失败时,蜂鸣器发出门禁错误提示音,LCD显示屏上显示“Access Denied”等拒绝信息。
实验结果显示,该电子门禁系统能够根据用户输入的密码或身份卡信息,进行核对并作出相应的操作。
当核对成功时,系统会解锁门禁并显示欢迎信息;当核对失败时,系统会发出错误提示并拒绝门禁。
四、实验总结本次实验通过设计和实现基于北邮数电实验的电子门禁系统,使得我们更加深入地了解了电子门禁系统的原理和应用。
通过实验,我们学会了利用键盘、蜂鸣器和LCD显示屏等器材,通过单片机控制,实现了一个简易的电子门禁系统。
北邮 数电实验PPT

数字系统概述
数字系统:由若干数字电路和逻辑部件 构成的能够处理或传送数字信息的设备。 数字系统的三大组成部分:输入输出接 口、数据处理器、控制器 区分数字系统与功能部件(数字单元电 路)的标志:有无控制器
11
数字系统结构框图
输入控 制信号
输入 接口
控 制 器
输出 接口
输出控 制信号
信息 输入
35
用户自定义数据类型
用户自定义数据类型定义语句
TYPE m_state IS ( s0,s1,s2,s3,s4,s5 );
SIGNAL pre_state,next_state : m_state ; CASE pre_state IS WHEN s0 => next_state <= s1 ; WHEN s1 => next_state <= s2 ; ………… END CASE ;
21
两人乒乓游戏机逻辑划分方框图
球台
S CP 分频器 STOP CNT,Cr 控制器 m 记分器 C 译码显示器
SA SB
22
数字系统的描述方法(二)
定时图(时序图或时间关系图)
用来定时地描述系统各模块之间、模块内部 各功能组件之间以及组件内部各门电路或触 发器之间输入信号、输出信号和控制信号的 对应时序关系和特征(信号是电平还是脉冲, 是同步信号还是异步信号等)。
36
有限状态机
有限状态机是时序逻辑电路的一种特殊 的表示形式,同时包含有时序逻辑的部 分和组合逻辑的部分。 有限状态机的两种类型
Moore型有限状态机:输出信号只与状态 机当前状态有关。 Mealy型有限状态机:输出信号不仅与状 态机当前状态有关,还与状态机的输入信 号有关。
点阵实验报告 LED点阵字符驱动显示实验报告_图文

点阵实验报告 LED点阵字符驱动显示实验报告_图文LED点阵字符驱动显示实验郑家贵110800533陈鹤110800524一实验目的1、掌握用CPU控制扫描的方法实现点阵LED显示器的字符、图形的显示。
2、掌握用单片机进行显示系统开发的方法。
3、了解大容量显示器点阵图形显示驱动扩展的一般方法。
二实验仪器单片机最小系统,电源模块,8*8点阵LED显示器四块,AT89C51单片机,74HC154N两片,HD74LSO4P一片,100?排阻等。
三设计思想用单片机的P1.0-P1.4和P2.0-P2.7共13个输出口来传递数据码,其中P1.0-P1.3分别接4线-16线译码器的四个数据输入端(A、B、C、D),P1.4作为片选输出信号,当P1.4为高电平时,U2工作,U3不工作;当P1.4为低电平输出,U2不工作,U3工作。
信号经过74HC154N译码后输出,再接至4片点阵LED的行信号输入端,而列信号由单片机的P2口直接控制。
1、系统框图:图1:16X16点阵硬件电路图2、单片机最小系统:上图是51单片机的最小系统。
将程序烧写进单片机后,便可以实现对硬件系统的控制。
3、LED点阵显示屏:上图即显示屏,是由4块8*8LED点阵级联,成为16*16 LED 点阵。
由单片机控制,按照程序中的控制命令和字模数据表输出相应汉字,同时按一定速率流动,显示多个汉字。
4、74HC154N工作原理:74HC154N为4线—16线译码器,可以实现地址的扩展。
引脚说明:1-11,3-17 :输出端(outputs)12:Gnd电源地(ground)18-19:使能输入端、低电平有效(enable inputs)20-23地址输入端(address inputs)24:VCC电源正(positive supply voltage)四设计的电路样品的照片如图下图所示五实验结论及心得:通过和同伴的一致努力,最终完成了整个电路的设计。
北邮数电实验电子琴
VHDL硬件描述语言程序设计简易电子琴演奏器姓名:chi目录一、设计课题的任务要求 (3)二、系统设计 (4)三、仿真波形及波形分析 (7)四、源程序 (9)五、功能说明 (20)六、元器件清单及资源利用情况 (21)七、故障及问题分析 (22)八、总结和结论 (23)一、设计课题的任务要求基本要求:1、用8×8点阵显示“1 2 3 4 5 6 7”七个音符构成的电子琴键盘。
其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。
图1 点阵显示的电子琴键盘2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1 2 3 4 5 6 7”七个音符。
当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。
下图所示为按下BTN3按键时点阵的显示情况。
图2 按键按下后的点阵显示3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。
4、通过按键BTN0进行复位,控制点阵显示图1的初始状态。
提高要求:1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能。
2、增加手动演奏的音符存储、播放功能。
二、系统设计1.设计思路简易电子琴的制作主要是利用不同频率的波来驱动蜂鸣器发出声响。
通过输入不同的音符来设置不同的分频系数,使得50MHz的主频分频出不同频率的波。
同时,演奏的音符还可以通过数码管和8*8点阵来动态显示。
根据系统设计要求,该电子琴设计采用自顶向下的设计方法。
整体的功能通过不同的底层模块配合来完成电子琴的功能。
底层模块主要包括乐曲自动演奏模块、分频预置值产生模块和数控分频模块,数码管显示模块,8*8点阵显示模块五部分组成。
用这种设计思路把整个系统分为了若干个模块,然后再在顶层文件中将各个模块组合在一起,从而体现出超、高速硬件描述语言VHDL的优势,关于提高要求中通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能,我打算将一首曲子的音符储存在自动播放的数组里面,然后通过计数器来顺序播放储存的音符。
点阵显示实验报告
一、实验目的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显示模块显示静态字符、图案等信息。
点阵led设计实验实验报告
点阵led设计实验实验报告一、实验目的本实验旨在通过设计和搭建一个点阵LED 系统,掌握点阵LED 的基本工作原理和电路设计方法,并了解如何通过编程控制点阵LED 实现各种图案显示。
二、实验材料和器件实验所用材料和器件包括:- 点阵LED 模块:用于显示图案和文字。
- Arduino 控制板:用于控制点阵LED 模块。
- 杜邦线:用于连接点阵LED 模块和Arduino 控制板。
三、实验步骤1. 硬件搭建首先,将点阵LED 模块连接到Arduino 控制板上。
具体的连接方式可以参考Arduino 官方文档或点阵LED 模块的说明书。
2. 软件设置接下来,需要在计算机上安装并配置Arduino 开发环境。
之后,通过Arduino 开发环境中的代码编辑器编写控制点阵LED 的代码。
3. 编写程序编写程序的主要步骤如下:- 导入所需的库文件:根据点阵LED 模块的型号和控制方式,导入相应的库文件。
- 设置引脚模式:设置Arduino 控制板的引脚模式,以便与点阵LED 模块进行通信。
- 定义图案:根据需要显示的图案或文字,定义相应的数组或变量。
- 初始化点阵LED 模块:根据模块的特性和控制方式,初始化点阵LED 模块。
- 显示图案:根据定义的图案,通过控制点阵LED 模块的引脚,实现图案的显示。
4. 上传程序编写完程序后,将Arduino 控制板通过USB 连接到计算机,并通过Arduino 开发环境将程序上传到控制板中。
5. 测试和调试上传完程序后,点阵LED 模块将开始显示所定义的图案。
可以通过修改程序中的图案定义部分来实现不同的显示效果,并进行测试和调试。
四、实验结果和分析经过编程和调试,我们成功实现了点阵LED 模块的图案显示功能。
通过修改程序中的图案定义,我们可以显示不同的图案、文字甚至动画效果。
点阵LED 的显示效果清晰且亮度可调,能够满足我们的需求。
在实验过程中,我们也遇到了一些问题。
北邮 大三上学期 数字电路综合实验报告
数字电路综合实验报告学院:信息与通信工程学院班级:201*******班内序号:**学生姓名:****学号:201*******一:设计课题的任务要求-------------------------------------------------------------------------------3基本要求:------------------------------------------------------------------------------3提高要求:------------------------------------------------------------------------------3二:系统设计(包括设计思路、总体框图、分块设计)------------------------------------------3设计思路:-------------------------------------------------------------------------------3总体框图:-------------------------------------------------------------------------------4分块设计:------------------------------------------------------------------------------41:分频器------------------------------------------------------------------42:防抖模块---------------------------------------------------------------53:模式调节模块---------------------------------------------------------54:手动定时&默认定时模块------------------------------------------75:倒计时模块------------------------------------------------------------86:火力调节模块---------------------------------------------------------87:数码管驱动模块------------------------------------------------------98:led显示模块----------------------------------------------------------109:关机模块---------------------------------------------------------------1110:蜂鸣器模块----------------------------------------------------------1111:点阵显示模块-------------------------------------------------------11三:仿真波形及波形分析--------------------------------------------------------------------------------121:分频器-----------------------------------------------------------------122:模式选择模块--------------------------------------------------------133:定时模块--------------------------------------------------------------134:倒计时模块-----------------------------------------------------------145:火力调节模块--------------------------------------------------------146:led显示模块---------------------------------------------------------157:蜂鸣器模块-----------------------------------------------------------15四:源程序--------------------------------------------------------------------------------------------------16总程序结构和原理图------------------------------------------------------------------16各部分程序结构原理图---------------------------------------------------------------181:分频器-----------------------------------------------------------------182:防抖模块--------------------------------------------------------------203:模式控制模块--------------------------------------------------------204:定时&倒计时模块---------------------------------------------------235:火力调节模块--------------------------------------------------------286:数码管显示模块-----------------------------------------------------307:led显示模块---------------------------------------------------------328:关机模块-------------------------------------------------------------339:蜂鸣器模块-----------------------------------------------------------3410:点阵显示模块------------------------------------------------------34五:功能说明-----------------------------------------------------------------------------------------------38六:元件清单和利用情况--------------------------------------------------------------------------------38七:故障和问题分析--------------------------------------------------------------------------------------39八:总结和结论--------------------------------------------------------------------------------------------40一:设计课题的任务要求设计制作一个简易电磁炉控制器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电路与逻辑设计实验报告
题目:双色点阵显示控制器的设计与实现
班级:
学号:
姓名:
1 实验要求 1.1基本要求: 1) 固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调 2
节,亮度变化视觉效果要尽量明显。 2) 用从红到绿8级渐变色显示一个固定汉字或图形。 3) 分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn按键进行切换。 4) 显示的图形或汉字要尽量饱满美观。 1.2提高要求: 1) 滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。 2) 自拟其它功能。 2系统设计
2.1设计思路 本实验采用自顶向下设计法:从整个系统功能出发,按一定原则将系统划分为若干子系统,再将每个子系统分为若干功能模块,然后实现所要求的的功能。总体是通过分频、按键控制、扫描控制等模块实现上述功能,通过占空比来改变色彩,实现八级渐变色,通过扫描频率的改变和信号的占空比实现亮度的调节,通过行扫描和列扫描的不同实现左右滚动显示和上下滚动显示。由于按键动作的时刻和按下的时间长短是随机的,并且存在由开关簧片反弹导致的电平抖动,所以还要为每个按键开关设置一个消抖和同步电路,这样才能保证按键的准确性。 2.2总体设计框图 1)总体结构框图
2)ASM图 选择汉字或图形
选择显示模式 选择亮度
显示不同的文字或者图案 3
no yes
yes no yes no yes
no
如图所示:开始由按键选择模式,是单个渐变色显示,还是循环显示,还是可改变亮度显示,在执行的同时检查是否按下reset键,如果reset键被按下,那么将对系统进行复位。
选择图形或文字
选择显示方式 case1? case2? csae3 左右滚动显示
上下滚动显示
四种颜色自动变换 循环显示
点阵屏显示
循环显示? 调亮显示? 固定红色 调节亮度 从红到绿八
级变色
开始 4
2.3模块划分 逻辑划分框图 CP
如图所示:系统主要分成3个模块:分频模块针对不同的模式进行分频,扫描控制模块通过行扫描或者列扫描来控制循环显示的方式,点阵显示模块主要是响应不同模式下的点阵显示方式及图形。
分频模块 扫描控制模块 点阵显示模块
分频电路
按键选择显示模式:循环,滚动 按键调节亮度 按键选择所要选择的汉字或图形
按键消抖动同步电路
控制器 行控制扫描电路
列控制扫描电路
点阵显示屏 5
3 仿真波形及其分析 如图所示 当摁下clear键时各信号复位,当模式按键按下并计数时,信号输出对应各个模式,桐乡当亮度模式按下时,信号的占空比改变。 4源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all;
entity dianzhen is port(clk_in ,clear,btn1,btn2,btn3: in std_logic; --定义时钟、复位、按键1、2、3 colred ,colgreen ,rowout : out std_logic_vector(7 downto 0); --列信号行信号输出 bout0,bout1,bout2,bout3: out std-logic --防抖动信号 ); end dianzhen;
architecture behave of dianzhen is signal stared ,stagre : std_logic_vector(3 downto 0); signal cred ,row ,cgreen,redtm,gretm : std_logic_vector(7 downto 0); signal smode,sligc,scc : std_logic_vector(1 downto 0); signal zred ,zgreen : std_logic_vector(2 downto 0); signal stm : std_logic_vector(5 downto 0); signal cnt :integer range 0 to 799999; signal xtx :integer range 0 to 99999; signal gun :integer range 0 to 1023999999;
signal cnt0,cnt1,cnt2,cnt3: integer range 0 TO 7; 6
signal data0,data1,data2,data3: std_logic; begin process(clk_in,btn1) --brn1键防抖动 begin if(clk_in'event and clk_in = '0') then if(data0 /= btn1) then cnt0 <= cnt0 + 1; else cnt0 <= 0; end if; if cnt0 >= 5 then data0 <= btn1; cnt0 <= 0; end if; end if; bout0 <= data0; end process;
process(clk_in,btn2) --btn2键防抖动 begin if (clk_in'event and clk_in = '0') then if(data1 /= btn2) THEN cnt1 <= cnt1 + 1; else cnt1 <= 1; end if; if cnt1 >= 5 then data1 <= btn2; cnt1 <= 1; end if ; end if ; bout1 <= data1; end process;
process(clk_in,btn3) --button2 --btn3键防抖动 begin if (clk_in'event and clk_in = '0') then if(data2 /= btn3) then cnt2 <= cnt2 + 1; else cnt2 <= 0; end if; if cnt2 >= 5 then data2 <= btn3; cnt2 <= 0; 7
end if; end if; bout2 <= data2; end process;
p1:process(clk_in,btn1,btn2,btn3,clear,stared,stagre,zred,zgreen,cnt,gun,xtx) --分频 begin if clear='1' then --复位模式 smode<="00"; sligc<="00"; scc<="00"; else if (btn1'event and btn1='1' )then --模式选择、亮度选择、循环选择 smode<=smode+1; end if; if (btn2'event and btn2='1') then sligc<=sligc+1; end if; if (btn3'event and btn3='1') then scc<=scc+1; end if; end if;
if (clk_in'event and clk_in='1') then --模式选择分频器 if cnt=99999 then cnt<=cnt+1; row<="11111110"; elsif cnt=199999 then cnt<=cnt+1; row<="11111101"; elsif cnt=299999 then cnt<=cnt+1; row<="11111011"; elsif cnt=399999 then cnt<=cnt+1; row<="11110111"; elsif cnt=499999 then cnt<=cnt+1; row<="11101111"; elsif cnt=599999 then cnt<=cnt+1; 8
row<="11011111"; elsif cnt=699999 then cnt<=cnt+1; row<="10111111"; elsif cnt=799999 then cnt<=cnt+1; row<="01111111"; else cnt<=cnt+1; end if;
if xtx=12499 then --亮度选择分频器 xtx<=xtx+1; zred<="000"; zgreen<="000"; elsif xtx=24999 then xtx<=xtx+1; zred<="001"; zgreen<="001"; elsif xtx=37499 then xtx<=xtx+1; zred<="010"; zgreen<="010"; elsif xtx=49999 then xtx<=xtx+1; zred<="011"; zgreen<="011"; elsif xtx=62499 then xtx<=xtx+1; zred<="100"; zgreen<="100"; elsif xtx=74999 then xtx<=xtx+1; zred<="101"; zgreen<="101"; elsif xtx=87499 then xtx<=xtx+1; zred<="110"; zgreen<="110"; elsif xtx=99999 then xtx<=xtx+1; zred<="111"; zgreen<="111";