打印

请教一个关于按键控制的问题

[复制链接]
1937|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
uiodh|  楼主 | 2012-9-26 12:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想实现的功能是:上电后,led灭,当按键按下一后,对应的led点亮,即使按键松开,led依然亮,我的程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TEST_1 IS
PORT(S:IN STD_LOGIC;
     L:OUT STD_LOGIC;
     NUM:BUFFER INTEGER RANGE 0 TO 1:=0);
END TEST_1;
ARCHITECTURE ONE OF TEST_1 IS
BEGIN
PROCESS(S)
BEGIN
IF(S='0') THEN
NUM<=1;
END IF;
END PROCESS;
PROCESS(NUM)
BEGIN
CASE NUM IS
WHEN 0=>L<='0';
WHEN 1=>L<='1';
END CASE;
END PROCESS;
END ONE;
但是上电后对应的灯就亮了.....郁闷,请大家帮助一下,谢谢!

相关帖子

沙发
pihois| | 2012-9-26 12:31 | 只看该作者
首先,出现上电后对应的灯就亮的情况,你仔细检查一下你用的板子按键是0表示按下还是1表示按下;然后检查一下LED对应的是0还是1;最后就是即便你能解决上电后灯就亮的问题也不能实现你想要的功能,因为根据你的设计要求,应该是用时序电路来实现(即使按键松开,led依然亮)至少得要用一个寄存器吧,但是你的程序确实个组合逻辑,虽然是process描述;

使用特权

评论回复
板凳
fgbin| | 2012-9-26 12:56 | 只看该作者
2L说的有点道理。楼主看下吧

使用特权

评论回复
地板
gaochy1126| | 2012-9-26 19:58 | 只看该作者
可以使用初始化为0 使灯灭

使用特权

评论回复
5
51xlf| | 2012-9-26 20:05 | 只看该作者
你可以直接使用输出=输入

使用特权

评论回复
6
gygp| | 2012-9-27 10:44 | 只看该作者
经常用verilog 不知道vhdl怎么写了!应该可以初始化!

使用特权

评论回复
7
ledaa| | 2012-9-27 15:06 | 只看该作者
2楼回答的不错

使用特权

评论回复
8
hawksabre| | 2012-9-27 18:29 | 只看该作者
初始化时需要先置零   然后在输出低电平   按下按键后输出高电平   然后将此端口锁住   再按时不响应动作  这个思路是这样   你要做的是检查一下上电输出是高电平还是低电平   在看一看led点亮和关断的电平是什么   一句话   查一查你得led是共阴极还是共阳极    仔细查一下

使用特权

评论回复
9
hawksabre| | 2012-9-27 18:30 | 只看该作者
这是我个人针对你的问题的思路   你再看看别人的建议吧      希望我的回答能够帮到你

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

95

帖子

0

粉丝