这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » zwsheng的进程贴--出租车制动收费器

共61条 2/7 1 2 3 4 5 6 ›| 跳转至
工程师
2012-10-26 20:42:42     打赏
11楼


一首永无止境的歌伴你一起欣赏花样LED--FPGA。



顶层实体:
这是原理图形式:


将下面个程序生成原理图模块,这样方便调用!上面的视频已经演示了!

分频程序:
LIBRARY   IEEE;
USE    IEEE.STD_LOGIC_1164.ALL;
USE    IEEE.STD_LOGIC_UNSIGNED.ALL;
entity  fp50M is
port(clk_50MHZ: in std_logic; 
     clk_1HZ: out std_logic
     );
end  fp50M;
architecture behav of  fp50M is
 signal clk_1HZ_r: std_logic;
 signal count : std_logic_vector(23 downto 0);  
begin
 process (clk_50MHZ)
begin
if clk_50MHZ'event and clk_50MHZ='1' then
   if count="101111101011110000100000"then
   count<=(others=>'0');
  clk_1HZ_r<=not clk_1HZ_r;
  else count<=count+1;
   clk_1HZ<=clk_1HZ_r;
   end if;
 end if;
end process;
end behav;

下面是各种LED控制程序(提供三个):
LED闪烁:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all ;
entity led_shan is
 port (clk,reset: in std_logic;
          led : out std_logic_vector(10 downto 0)
 );

end led_shan;
architecture behva of led_shan is
signal led_r: std_logic;

begin
process(clk)
 begin
    
      if reset='0' then
         led<="11111111111";
       else 
         if  clk'event and clk='1' then
             led_r<=not led_r;
          if led_r='0'then
                led<="00000000000";
                else
                if led_r='1' then
                   led<="11111111111";
            
            end if;
          end if;
      
   
             
            --case led_r is
            --when '0' => led<="00000000000";
            --when '1' =>led<="11111111111";
           --end case;
      end if;
    end if;
 end process;
 end ;

LED跑马灯:
library ieee ;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity led_liu is
  port (clk ,reset: in std_logic;
        led       : out std_logic_vector(10 downto 0)
        );
        end led_liu;
 architecture behav of led_liu is
 signal bcd_r :std_logic_vector(3 downto 0);
 
 begin
 process(clk,reset)
begin
   if reset='0'then
      led<="11111111111";
      else
      if clk'event and clk='1' then
         bcd_r<=bcd_r+1;
         case bcd_r is
              when "0000"=>led<="11111011111";
              when "0001"=>led<="11110101111";
              when "0010"=>led<="11101110111";
              when "0011"=>led<="11011111011";
              when "0100"=>led<="10111111101";
              when "0101"=>led<="01111111110";
              when "0110"=>led<="10111111101";
              when "0111"=>led<="11011111011";
              when "1000"=>led<="11101110111";
              when "1001"=>led<="11110101111";
              when "1010"=>led<="11111011111" ; bcd_r<="0000";
              when  others=>led<="11111111111";

          end case;
      end if;
    end if;
  end process;
  end;


LED流水:

LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.all ;
use ieee.std_logic_unsigned.all;
entity liu is
port(clk ,reset : in std_logic;
 led : out std_logic_vector(10 downto 0)
);
end liu;

architecture behave of liu is
signal bcd_r :std_logic_vector(3 downto 0);
 
 begin
 process(clk,reset)
begin
   if reset='0'then
      led<="11111111111";
      else
      if clk'event and clk='1' then
         bcd_r<=bcd_r+1;
         case bcd_r is
              when "0000"=>led<="11111111110";
              when "0001"=>led<="11111111100";
              when "0010"=>led<="11111111000";
              when "0011"=>led<="11111110000";
              when "0100"=>led<="11111100000";
              when "0101"=>led<="11111000000";
              when "0110"=>led<="11110000000";
              when "0111"=>led<="11100000000";
              when "1000"=>led<="11000000000";
              when "1001"=>led<="10000000000";
              when "1010"=>led<="00000000000" ; bcd_r<="0000";
              when  others=>null;

          end case;
      end if;
    end if;
  end process;
  end


LED闪烁、跑马、流水,等各种花样LED的.SOF文件:http://share.eepw.com.cn/share/download/id/79219
 


工程师
2012-10-26 20:55:03     打赏
12楼

视频好大啊呵呵。。


工程师
2012-10-26 21:23:53     打赏
13楼
第一次录视频

工程师
2012-10-27 14:07:44     打赏
14楼


按键读取信号视频!



按键读取信息程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned;

entity anjian is
port (an_jian : in std_logic_vector(7 downto 0);
      led     : out std_logic_vector(7 downto 0)


);
end anjian;

architecture behave of anjian is
--signal count: std_logic_vector(7 downto 0);
begin
process(an_jian)
begin
led<=an_jian;
end process;
end;

按键读取的.SOF文件链接:http://share.eepw.com.cn/share/download/id/79220


菜鸟
2012-10-28 16:21:36     打赏
15楼
感谢楼主啦,学习到了一些东西的。。。。

工程师
2012-10-29 18:18:42     打赏
16楼
谢谢啦!本来是打算讲解的,但是发现表达的不好,所以只能演示了!

工程师
2012-10-29 21:46:27     打赏
17楼

一首迈克杰克逊的——颤抖,来帮你按键消消抖



程序:

LIBRARY IEEE;                     
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_Arith.ALL;
USE IEEE.STD_LOGIC_Unsigned.ALL;

ENTITY qudou IS
GENERIC(KEY_WIDTH:Integer:=8);
PORT(
clk: IN  STD_LOGIC;           --系统时钟输入
key_in: IN STD_LOGIC_VECTOR(4 DOWNTO 0); --外部按键输入
key_out:OUT STD_LOGIC_VECTOR(4 DOWNTO 0)  --按键消抖输出
);
END;

ARCHITECTURE one OF qudou IS
SIGNAL dout1,dout2,dout3:STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
key_out<=dout1 OR dout2 OR dout3;--按键消抖输出
PROCESS(clk)
BEGIN
 IF RISING_EDGE(clk)THEN
  dout1<=key_in;
  dout2<=dout1;
  dout3<=dout2;
 END IF;
END PROCESS;
END;

按键消抖的.SOF文件下载链接:http://share.eepw.com.cn/share/download/id/79237


工程师
2012-10-30 12:55:23     打赏
18楼
大家一起加油哦!

工程师
2012-11-01 11:46:40     打赏
19楼
拨键开关点亮LED视频:



拨键读取信息程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned;

entity bojian is
port (an_jian : in std_logic_vector(7 downto 0);
led : out std_logic_vector(7 downto 0)


);
end bojian;

architecture behave of bojian is
--signal count: std_logic_vector(7 downto 0);
begin
process(bo_jian)
begin
led<=bo_jian;
end process;
end;


工程师
2012-11-04 14:06:08     打赏
20楼

这几天有的郁闷,因为我第一次做的单片机板子出了些问题,这样我损失了些资金,呜呜。。
但是值得高兴的是我把问题解决 了,学到了不少东西。

下面给大家一个下载单片机原图的地址:http://share.eepw.com.cn/share/download/id/79307

第一我犯得错误是USB的负极我没有放置网络标号,这样就没有和其他的GND接到一起,所以每次我测量其他地方GND的电压不是0V。这样整个电路就不能工作,下面我把我错误的地方指出来:




第二个错误就是错在一个芯片上,CH340T这个芯片的第三引脚没有接到单片机的P3.0引脚上,这样就不能使得USB和电脑建立连接,这样就USB接到电脑上自然就没有反应,希望大家以后不要犯这样的错误了,下面我把我错误的地方指出来:



第三个错误就是按键封装,其实不是我画的按键封装右问题,是因为我我对按键内部结构了解错了,我做板子时以为按键的四个引脚是独立的,当按下去的时候四个引脚就都连通了,实践上不是这样的,按键的左右两边的引脚的一对的,当按下去,这两对就连接起来,但是上下两对的引脚却分别连接起来,如果你把上下的两对引脚任一对连接起来那么只要你焊接上引脚就接通了,这样按键就没用了,在我设计的原理图中有个复位键,这个按键已焊接上去就使得一直在复位,所以我一直下载不进去,这也使得我检查了好久。希望大家不要犯这样的错误哦!

下面的我做的好板子:





共61条 2/7 1 2 3 4 5 6 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]