按键控制 LED 实验

这篇具有很好参考价值的文章主要介绍了按键控制 LED 实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 按键简介

2 实验任务

3 硬件设计

4 程序设计

5 下载验证


1 按键简介

        按键开关是一种电子开关,属于电子元器件类。
        轻触式按键
        自锁式按键

2 实验任务

        使用底板上的 PL_KEY0 PL_KEY1 按键来控制底板上的 PL_LED0 PL_LED1 两个 LED 的闪烁方式。没有按键按下时,两个 LED 保持常亮;如果按键 0 按下,则两个 LED 交替闪烁;如果按键 1 按下,则两个 LED 同时闪烁。

3 硬件设计

按键控制 LED 实验
按键电路原理图
按键控制 LED 实验

         对应的 XDC 约束语句如下所示:文章来源地址https://www.toymoban.com/news/detail-500499.html

set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN L14 IOSTANDARD LVCMOS33} [get_ports key[0]]
set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS33} [get_ports key[1]]
set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports {led[0]}]
set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS33} [get_ports {led[1]}]

4 程序设计

按键控制 LED 实验
按键控制 LED 系统框图
        计数器对 50MHz 时钟进行计数,从而达到计时的目的。计数器在每次计时到 0.5 秒的时候,就改变 LED 的显示状态,然后清零并重新开始计数。然后根据两个按键(KEY0 KEY1 )的状态,在不同的 LED 状态下,分别设置 LED 的显示模式(是同时闪烁,或者交替闪烁)。
        顶层模块代码如下:
module key_led(
	input 				sys_clk ,
	input 				sys_rst_n ,

	input [1:0] 		key ,
	output reg [1:0] 	led
);

//reg define
reg [24:0] cnt;
reg led_ctrl;

//*****************************************************
//** main code
//*****************************************************

//计数器
always @ (posedge sys_clk or negedge sys_rst_n) begin
	if(!sys_rst_n)
		cnt <= 25'd0;
	else if(cnt < 25'd2500_0000) //计数 500ms
		cnt <= cnt + 1'b1;
	else
		cnt <= 25'd0;
end

//每隔 500ms 就更改 LED 的闪烁状态
always @ (posedge sys_clk or negedge sys_rst_n) begin
	if(!sys_rst_n)
		led_ctrl <= 1'b0;
	else if(cnt == 25'd2500_0000)
		led_ctrl <= ~led_ctrl;
end

//根据按键的状态以及 LED 的闪烁状态来赋值 LED
always @ (posedge sys_clk or negedge sys_rst_n) begin
	if(!sys_rst_n)
		led <= 2'b11;
	else case(key)
		2'b10 : //如果按键 0 按下,则两个 LED 交替闪烁
			if(led_ctrl == 1'b0)
				led <= 2'b01;
			else
				led <= 2'b10;
		2'b01 : //如果按键 1 按下,则两个 LED 同时闪烁
			if(led_ctrl == 1'b0)
				led <= 2'b11;
			else
				led <= 2'b00;
		2'b11 : //如果两个按键都未按下,则两个 LED 都保持点亮
				led <= 2'b11;
		default: 		;
	endcase
end

endmodule

5 下载验证

到了这里,关于按键控制 LED 实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LED灯闪烁拓展实验——单按键控制LED灯不同闪烁方式

    实现平台:Vivado2018.3 1. 使用按键KEY0和KEY_1分别控制LED0和LED1两个LED灯的闪烁方式; 2. 当没有按键按下时,两个LED灯均不亮; 3. 当按键KEY0按下后,LED0灯闪烁,当按键KEY0再次按下后则LED1灯闪烁,如此循环往复; 4. 当按键KEY1按下后,LED0和LED1交替闪烁,当按键KEY1再次按下后则

    2024年01月23日
    浏览(41)
  • verilog学习笔记- 10)按键控制 LED 灯实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证 : 总结与反思: 按键开关是一种电子开关,属于电子元器件类。我们的开发板上有两种按键开关:第一种是本实验所使用的轻触式按键开关,使用时以向开关的操作方向施加压力使内部电路闭合接通,当撤销压力时

    2023年04月16日
    浏览(43)
  • 【STM32】按键控制LED亮灭实验——GPIO、LED、KEY、SYS

    无锁存时:当按下独立按钮时LED亮,松开LED灭。 锁存时:当按下独立按钮时LED亮,松开LED仍亮,再按下独立按钮时LED熄灭。 硬件部分 软件部分 1、引入头文件 2、主函数 首先时钟、led、按键初始化 锁存时:当按下独立按钮时LED亮,松开LED仍亮,再按下独立按钮时LED熄灭。常

    2024年02月08日
    浏览(100)
  • 【STM32】控制LED灯和蜂鸣器的按键实验

    🐱作者:一只大喵咪1201 🐱专栏:《STM32学习》 🔥格言: 你只管努力,剩下的交给时间! 本喵这次介绍的实验是按键实验,同样使用STM32F103ZE型号的芯片,在开发板上有4个按键,实验目的是每按一个按键就会让LED灯或者是蜂鸣器的工作状态发生反转,下面本喵来详细介绍。

    2024年02月03日
    浏览(62)
  • 初识FreeRTOS入门,对FreeRTOS简介、任务调度、内存管理、通信机制以及IO操作,控制两个led不同频率闪烁

    当代嵌入式系统的开发越来越复杂,实时性要求也越来越高。为了满足这些需求,开发者需要使用实时操作系统(RTOS),其中一个流行的选择是FreeRTOS(Free Real-Time Operating System)。本篇博客将详细介绍FreeRTOS的特性、任务调度、内存管理、通信机制以及一些示例代码。 FreeR

    2024年02月14日
    浏览(39)
  • 四个按键控制led的四种变化(按键控制led)(附源码)

    使用开发板上的四个按键控制四个LED灯。按下不同的按键时,四个LED灯显示不同效果。本实验是在EP4CE6F17C8开发板上实现,仿真请用modelsim Altera 仿真代码: 注意:该实验并未进行按键消抖,需一直按着按键才能让该按键所操控的led变化功能实现。

    2024年02月06日
    浏览(41)
  • 实验二 基于FPGA的分频器的设计(基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。拓展任务1:用按键或开关控制蜂鸣器的响与不响。拓展任务2:用按键或开)

    1. 实验目的: (1) 掌握QuartusⅡ软件的层次型设计方法; (2) 掌握元件封装及调用方法; (3) 熟悉FPGA实验平台,掌握引脚锁定及下载。 2. 实验任务: (1) 基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。 (2) 拓展任务1:用按键或开关

    2024年02月06日
    浏览(47)
  • 触摸按键控制LED灯

    目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的,时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现,逻辑或的写法刚好是逻辑与的两个寄存器的值反过来

    2024年01月23日
    浏览(51)
  • 按键控制led变化

    使用按键控制开发板上一个led灯的亮灭,当按键按下的时候led灯就亮,当再一次按下按键的时候led就不亮了。由于按键存在抖动,按键松开的时候led灯就不亮,所以需要一个消抖模块对按键消抖 总的来说编写不算复杂,需要注意的是模块之间的连接和按键消抖模块

    2024年02月16日
    浏览(34)
  • SoC-按键控制led

    1.hps_0.h 2.main.c SoC

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包