电子节拍器的设计与实现

合集下载

电子节拍器的设计与实现

电子节拍器的设计与实现

北京邮电大学数字系统与逻辑设计实验报告电子节拍器的设计与实现学院 : 电子工程学院班级 : 2013211207学号: 2013210999姓名: 刘炜伦日期 : 2015-11-08电子节拍器的设计与实现一.设计课题的任务要求设计并实现一个具有声光显示的电子节拍器。

基本要求:1、速度在 40~120 次/分钟范围内连续可调,通过 2 个按键进行速度调节,一个用来增加,一个用来减少,当长按按键时,按 5 次/秒的速度连续增加或减少,用 3 个数码管显示当前速度。

2、节拍有 1/4、2/4、3/4、4/4、3/8、6/8 可选,通过一个按键选择,用 2个数码管显示。

3、通过一个按键开始和停止打节拍,开始后按照设置好的节拍和速度打节拍。

4、要求有声音和灯光提示,声音要有强弱区别,灯光可用不同颜色的发光二极管表示强弱。

提高要求:1、通过一个按键选择时值(节奏类型),并在用点阵显示,如下图。

2、实现在无节奏型的情况下,用点阵计时,点阵的显示从0到9,时间间隔为一秒,从而帮助使用者学习乐理知识。

二.系统设计(设计思路,总体框图,分块设计)1.设计思路程序分为输入模块,分频模块,中央控制模块和显示模块四大模块,其中显示模块又可细分为数码管显示,点阵显示,LED灯亮灯显示和蜂鸣器发声四个部分。

输入有reset(复位键),st(开关键),tn(调速键),tk(调节拍键),tj(调节奏键)五个键。

利用三个数码管显示速率,两个数码管显示节拍型,使用点阵显示节奏型,无节奏时点阵显示0到9的计时(时间间隔为1秒)。

对于开关,速率,节拍,节奏的调节,使用5HZ的时钟信号进行防抖和控制调节的速度。

利用取余函数将节拍器的速率的个十百位数字分别提取出来,并通过扫描显示将节拍器的速率和节拍型显示出来。

LED灯和点阵的信号依据节奏和节拍型确定,先考虑节奏型,分列出各个节奏型的信号,如果无节奏型再考虑节拍型,确定节拍型的信号。

最后蜂鸣器的信号由红灯信号与250HZ高频相乘所得信号和绿灯信号与500HZ高频相乘所得信号共同合成。

北邮数字电路与逻辑设计实验下 节拍器

北邮数字电路与逻辑设计实验下 节拍器

数字电路与逻辑设计实验电子节拍器的设计与实现综合实验报告学院:信息与通信工程学院班级:2013211124姓名:***学号:**********班内序号:062015年11月12日目录一、实验题目和任务要求 (2)(一)实验题目 (2)(二)基本要求 (2)(三)提高要求 (2)二、系统设计 (2)(一)设计思路 (2)(二)总体框图 (3)(三)分块设计 (6)三、仿真波形及波形分析 (6)(一)encode文件仿真 (6)(二)change文件仿真 (7)(三)fangdou文件仿真 (7)四、源程序 (8)(一)connect.vhd (8)(二)beat.vhd (10)(三)change.vhd (12)(四)chw.vhd (12)(五)cnta.vhd (13)(六)cora.vhd (14)(七)encode.vhd (17)(八)fangdou.vhd (18)(九)fenpin.vhd (18)(十)jibenpinlv.vhd (20)(十一)v oice.vhd (21)(十二)x ianshi.vhd (22)五、功能说明及资源利用情况 (23)(一)功能说明 (23)(二)资源占用情况 (24)六、故障及问题分析 (24)七、总结和结论 (25)八、参考文献 (26)一、实验题目和任务要求(一)实验题目电子节拍器的设计与实现,设计并实现一个具有声光显示的电子节拍器。

(二)基本要求1、速度在40~120次/分钟范围内连续可调,通过2个按键进行速度调节,一个用来增加,一个用来减少,当长按按键时,按5次/秒的速度连续增加或减少,用3个数码管显示当前速度。

2、节拍有1/4、2/4、3/4、4/4、3/8、6/8可选,通过一个按键选择,用2个数码管显示。

3、通过一个按键开始和停止打节拍,开始后按照设置好的节拍和速度打节拍。

4、要求有声音和灯光提示,声音要有强弱区别,灯光可用不同颜色的发光二极管表示强弱。

电子节拍器的设计与实现

电子节拍器的设计与实现

电子节拍器的设计与实现学院: 明光桥北技术学院班级:姓名:学号:班内序号:1、设计思想本实验采用自顶向下设计的方法。

从整体上考虑系统的功能,划分出不同 的功能模块,然后选用器件实现相应模块,反复改进、反复实践,最终完成系统的设计。

在前期,我主要是进行各个模块的测试,分别测试完成之后,再通过顶层文件进行电路的连接,实现全部的设计。

2、总体框图(1)系统框图一、 故障及问题分析1.当按键按下之后,按下一次会产生多次按下的效果。

问题分析与解决:由于抖动的原因,需要加上一个防抖的程序。

分频器clk 50MHZ 高频 低频 译码器 选择变速产生节拍 add sub clear 切换节拍2. 速度加1加5的时钟计时时间偏小。

问题分析与解决:通过实验室多次调试解决。

3.播放自制歌曲时无法进行节拍演示。

问题分析与解决:case语句需要改进。

(由于此歌曲在验收实验前一天晚上才完成没有时间改进。

)4.蜂鸣器一开始输入高低电平。

问题分析与解决:后来查阅资料和同学沟通发现应该是输入不同频率的方波信号。

5.导致数码管显示不正常。

问题分析与解决:对数码管扫描频率一开始过大,应该调整为10kHz六、总结和结论好人有好报----造福学弟学妹七、源程序顶层文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY jiepaiqi ISPORT(add : IN STD_LOGIC;sub : IN STD_LOGIC;clk : IN STD_LOGIC;clear :IN STD_LOGIC;state: IN STD_LOGIC;success:in std_logic;sw : IN STD_LOGIC;-- sw1 : IN STD_LOGIC;led1 : OUT STD_LOGIC;led2 : OUT STD_LOGIC;led3 : OUT STD_LOGIC;beeper0 : OUT STD_LOGIC;b : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);cat : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END jiepaiqi;ARCHITECTURE a OF jiepaiqi ISCOMPONENT beeperPORT( clk:in std_logic;clear:in std_logic;state:in std_logic;success:in std_logic;V1,V2,V3:in std_logic;show:out std_logic);END COMPONENT;COMPONENT fenpinqiPORT(clk : IN STD_LOGIC;clear : IN STD_LOGIC;S : IN STD_LOGIC_VECTOR(6 DOWNTO 0);speed : OUT STD_LOGIC;ms : OUT STD_LOGIC);END COMPONENT;COMPONENT ledPORT(speed : IN STD_LOGIC;clear : IN STD_LOGIC;J : IN STD_LOGIC_VECTOR(2 DOWNTO 0);V1 : OUT STD_LOGIC;V2 : OUT STD_LOGIC;V3 : OUT STD_LOGIC);END COMPONENT;COMPONENT pacePORT(sw : IN STD_LOGIC;clear : IN STD_LOGIC;J : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END COMPONENT;COMPONENT smgymqPORT(clk : IN STD_LOGIC;clear : IN STD_LOGIC;J : IN STD_LOGIC_VECTOR(2 DOWNTO 0);S : IN STD_LOGIC_VECTOR(6 DOWNTO 0);b : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);cat : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END COMPONENT;COMPONENT speederPORT(add : IN STD_LOGIC;sub : IN STD_LOGIC;clear : IN STD_LOGIC;clk : IN STD_LOGIC;S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END COMPONENT;COMPONENT fenpinqismgPORT(clk : IN STD_LOGIC;clear : IN STD_LOGIC;clkout : OUT STD_LOGIC);END COMPONENT;SIGNAL SW_0 : STD_LOGIC;SIGNAL SW_1 : STD_LOGIC;SIGNAL SW_2 : STD_LOGIC;SIGNAL SW_10 : STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL SW_4 : STD_LOGIC;SIGNAL SW_11 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL SW_6 : STD_LOGIC;SIGNAL SW_9 : STD_LOGIC;BEGINled1 <= SW_0;led2 <= SW_1;led3 <= SW_2;u1: beeperPORT MAP(clk => clk,clear => clear,state =>state,success=>success,V1 => SW_0,V2 => SW_1,V3 => SW_2,show => beeper0);u2: fenpinqiPORT MAP(clk => clk,clear => clear,S => SW_10,speed => SW_4,ms => SW_9);u3: ledPORT MAP(speed => SW_4,clear => clear,J => SW_11,V1 => SW_0,V2 => SW_1,V3 => SW_2);u4: pacePORT MAP(sw => sw,clear => clear,J => SW_11);u5: smgymqPORT MAP(clk => SW_6,clear => clear,J => SW_11,S => SW_10,b => b,cat => cat);u6: speederPORT MAP(add => add,sub => sub,clear => clear,clk => SW_9,S => SW_10);u7: fenpinqismgPORT MAP(clk => clk,clear => clear,clkout => SW_6);END a;数码管分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqismg isport(clk,clear :in std_logic;clkout :out std_logic);end fenpinqismg;architecture a of fenpinqismg issignal temp:integer range 0 to 2499; signal clk_tmp : std_logic;beginprocess(clk,clear)beginif clear='0'thentemp<=0;clk_tmp<='0';elseif clk'event and clk='1' then if temp=2499 thentemp<=0;clk_tmp<= not clk_tmp;elsetemp<=temp+1;end if;end if;end if;clkout<=clk_tmp;end process;end;速度调节library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speeder isport(add,sub,clear,clk :in std_logic;S:out std_logic_vector(6 downto 0));end speeder;architecture a of speeder issignal S_temp:std_logic_vector(6 downto 0);signal time1a: integer range 0 to 2000;signal time1b: integer range 0 to 2000;signal time2a: integer range 0 to 2000;signal time2b: integer range 0 to 2000;beginprocess(clk)beginif(clk'event and clk='1')then-----------add----------if S_temp<"1010000"then --节奏速度小于120if(add='0')thentime1a<=0;time1b<=0;elsif (add='1'and time1a=2000 and S_temp<"1001100") then --节奏速度小于115按键1秒速度+5 S_temp<=S_temp+5;time1a<=0;elsif(add='1'and time1b=0)thenS_temp<=S_temp+1;time1b<=time1b+1;elsif(add='1'and time1a<2000)thentime1a<=time1a+1;end if;end if;----------sub----------if S_temp>"0000000"then --节奏速度大于40if(sub='0')thentime2a<=0;time2b<=0;elsif (sub='1'and time2a=2000 and S_temp>"0000101") then --节奏速度大于45按键1秒速度-5 S_temp<=S_temp-5;time2a<=0;elsif(sub='1'and time2b=0)thenS_temp<=S_temp-1;time2b<=time2b+1;elsif(sub='1'and time2a<2000)thentime2a<=time2a+1;end if;end if;end if;if clear='0'thenS_temp<="0101000"; --重置按键使得初始速度定为80end if;end process;S<=S_temp;end a;数码管和译码器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity smgymq isport(clk:in std_logic;clear: in std_logic;J: in std_logic_vector(2 downto 0);S: in std_logic_vector(6 downto 0);cat:out std_logic_vector(5 downto 0);b:out std_logic_vector(6 downto 0));end entity smgymq;architecture a of smgymq issignal temp : STD_LOGIC_VECTOR(3 downto 0);signal j1,j2 : STD_LOGIC_VECTOR(6 downto 0);signal S1,S2,S3: STD_LOGIC_VECTOR(6 downto 0);beginprocess(clk)beginif(clear='1')thenif(clk'event and clk ='1')thenif (temp="0101")thentemp<="0000";elsetemp<=temp+1;end if;end if;end if;end process;process(temp)beginif(clear='1')thencase S iswhen"0000000" => s1 <="0000000";s2<="0110011";s3<="1111110"; --40 when"0000001" => s1 <="0000000";s2<="0110011";s3<="0110000"; --41 when"0000010" => s1 <="0000000";s2<="0110011";s3<="1101101"; --42 when"0000011" => s1 <="0000000";s2<="0110011";s3<="1111001"; --43 when"0000100" => s1 <="0000000";s2<="0110011";s3<="0110011"; --44 when"0000101" => s1 <="0000000";s2<="0110011";s3<="1011011"; --45 when"0000110" => s1 <="0000000";s2<="0110011";s3<="1011111"; --46 when"0000111" => s1 <="0000000";s2<="0110011";s3<="1110000"; --47 when"0001000" => s1 <="0000000";s2<="0110011";s3<="1111111"; --48 when"0001001" => s1 <="0000000";s2<="0110011";s3<="1111011"; --49 when"0001010" => s1 <="0000000";s2<="1011011";s3<="1111110"; --50 when"0001011" => s1 <="0000000";s2<="1011011";s3<="0110000"; --51 when"0001100" => s1 <="0000000";s2<="1011011";s3<="1101101"; --52 when"0001101" => s1 <="0000000";s2<="1011011";s3<="1111001"; --53 when"0001110" => s1 <="0000000";s2<="1011011";s3<="0110011"; --54 when"0001111" => s1 <="0000000";s2<="1011011";s3<="1011011"; --55 when"0010000" => s1 <="0000000";s2<="1011011";s3<="1011111"; --56 when"0010001" => s1 <="0000000";s2<="1011011";s3<="1110000"; --57 when"0010010" => s1 <="0000000";s2<="1011011";s3<="1111111"; --58 when"0010011" => s1 <="0000000";s2<="1011011";s3<="1111011"; --59 when"0010100" => s1 <="0000000";s2<="1011111";s3<="1111110"; --60 when"0010101" => s1 <="0000000";s2<="1011111";s3<="0110000"; --61when"0010110" => s1 <="0000000";s2<="1011111";s3<="1101101"; --62 when"0010111" => s1 <="0000000";s2<="1011111";s3<="1111001"; --63 when"0011000" => s1 <="0000000";s2<="1011111";s3<="0110011"; --64 when"0011001" => s1 <="0000000";s2<="1011111";s3<="1011011"; --65 when"0011010" => s1 <="0000000";s2<="1011111";s3<="1011111"; --66 when"0011011" => s1 <="0000000";s2<="1011111";s3<="1110000"; --67 when"0011100" => s1 <="0000000";s2<="1011111";s3<="1111111"; --68 when"0011101" => s1 <="0000000";s2<="1011111";s3<="1111011"; --69 when"0011110" => s1 <="0000000";s2<="1110000";s3<="1111110"; --70 when"0011111" => s1 <="0000000";s2<="1110000";s3<="0110000"; --71 when"0100000" => s1 <="0000000";s2<="1110000";s3<="1101101"; --72 when"0100001" => s1 <="0000000";s2<="1110000";s3<="1111001"; --73 when"0100010" => s1 <="0000000";s2<="1110000";s3<="0110011"; --74 when"0100011" => s1 <="0000000";s2<="1110000";s3<="1011011"; --75 when"0100100" => s1 <="0000000";s2<="1110000";s3<="1011111"; --76 when"0100101" => s1 <="0000000";s2<="1110000";s3<="1110000"; --77 when"0100110" => s1 <="0000000";s2<="1110000";s3<="1111111"; --78 when"0100111" => s1 <="0000000";s2<="1110000";s3<="1111011"; --79 when"0101000" => s1 <="0000000";s2<="1111111";s3<="1111110"; --80 when"0101001" => s1 <="0000000";s2<="1111111";s3<="0110000"; --81 when"0101010" => s1 <="0000000";s2<="1111111";s3<="1101101"; --82 when"0101011" => s1 <="0000000";s2<="1111111";s3<="1111001"; --83 when"0101100" => s1 <="0000000";s2<="1111111";s3<="0110011"; --84 when"0101101" => s1 <="0000000";s2<="1111111";s3<="1011011"; --85 when"0101110" => s1 <="0000000";s2<="1111111";s3<="1011111"; --86 when"0101111" => s1 <="0000000";s2<="1111111";s3<="1110000"; --87 when"0110000" => s1 <="0000000";s2<="1111111";s3<="1111111"; --88 when"0110001" => s1 <="0000000";s2<="1111111";s3<="1111011"; --89 when"0110010" => s1 <="0000000";s2<="1111011";s3<="1111110"; --90 when"0110011" => s1 <="0000000";s2<="1111011";s3<="0110000"; --91 when"0110100" => s1 <="0000000";s2<="1111011";s3<="1101101"; --92 when"0110101" => s1 <="0000000";s2<="1111011";s3<="1111001"; --93 when"0110110" => s1 <="0000000";s2<="1111011";s3<="0110011"; --94 when"0110111" => s1 <="0000000";s2<="1111011";s3<="1011011"; --95 when"0111000" => s1 <="0000000";s2<="1111011";s3<="1011111"; --96 when"0111001" => s1 <="0000000";s2<="1111011";s3<="1110000"; --97 when"0111010" => s1 <="0000000";s2<="1111011";s3<="1111111"; --98 when"0111011" => s1 <="0000000";s2<="1111011";s3<="1111011"; --99 when"0111100" => s1 <="0110000";s2<="1111110";s3<="1111110"; --100 when"0111101" => s1 <="0110000";s2<="1111110";s3<="0110000"; --101 when"0111110" => s1 <="0110000";s2<="1111110";s3<="1101101"; --102 when"0111111" => s1 <="0110000";s2<="1111110";s3<="1111001"; --103 when"1000000" => s1 <="0110000";s2<="1111110";s3<="0110011"; --104 when"1000001" => s1 <="0110000";s2<="1111110";s3<="1011011"; --105when"1000010" => s1 <="0110000";s2<="1111110";s3<="1011111"; --106when"1000011" => s1 <="0110000";s2<="1111110";s3<="1110000"; --107when"1000100" => s1 <="0110000";s2<="1111110";s3<="1111111"; --108when"1000101" => s1 <="0110000";s2<="1111110";s3<="1111011"; --109when"1000110" => s1 <="0110000";s2<="0110000";s3<="1111110"; --110when"1000111" => s1 <="0110000";s2<="0110000";s3<="0110000"; --111when"1001000" => s1 <="0110000";s2<="0110000";s3<="1101101"; --112when"1001001" => s1 <="0110000";s2<="0110000";s3<="1111001"; --113when"1001010" => s1 <="0110000";s2<="0110000";s3<="0110011"; --114when"1001011" => s1 <="0110000";s2<="0110000";s3<="1011011"; --115when"1001100" => s1 <="0110000";s2<="0110000";s3<="1011111"; --116when"1001101" => s1 <="0110000";s2<="0110000";s3<="1110000"; --117when"1001110" => s1 <="0110000";s2<="0110000";s3<="1111111"; --118when"1001111" => s1 <="0110000";s2<="0110000";s3<="1111011"; --119when"1010000" => s1 <="0110000";s2<="1101101";s3<="1111110"; --120 when others => s1 <="0000000";s2<="0000000";s3<="0000000"; --nullend case;case J iswhen"001" => j1 <="0110000"; j2 <="0110011";--1/4when"010" => j1 <="1101101"; j2 <="0110011";--2/4when"011" => j1 <="1111001"; j2 <="0110011";--3/4when"100" => j1 <="0110011"; j2 <="0110011";--4/4when"101" => j1 <="1111001"; j2 <="1111111";--3/8when"110" => j1 <="1011111"; j2 <="1111111";--6/8when others=>j1 <="0000000"; j2 <="0000000";--nullend case;case temp iswhen "0000" => b <=j1; --"1111110"; --number0when "0001" => b <=j2; --"0110000"; -- 1when "0010" => b <="0000000"; --"1101101"; -- 2when "0011" => b <=s1; --"1111001"; -- 3when "0100" => b <=s2; --"0110011"; -- 4when "0101" => b <=s3; --"1011011"; -- 5when others => b <="0000000";end case;elseb<="0000000";end if;end process;--------shumaguan number--------process(temp)beginif(clear='1')thencase temp iswhen "0000"=>cat<="111110";when "0001"=>cat<="111101";when "0010"=>cat<="111011";when "0011"=>cat<="110111";when "0100"=>cat<="101111";when "0101"=>cat<="011111";when others=>cat<="111111";end case;elsecat<="111111";end if;end process;end a;节奏类型计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pace isport(sw,clear :in std_logic;J:out std_logic_vector(2 downto 0));end pace;architecture a of pace issignal J_tmp:std_logic_vector(2 downto 0);beginprocess(sw)beginif clear='0'thenJ_tmp<="001";elseif(sw'event and sw='1')then if J_tmp="110" thenJ_tmp<="001";elseJ_tmp<=J_tmp+1;end if;end if;end if;end process;J<=J_tmp;end a;Led灯library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Led isport(speed,clear:in std_logic;J :in std_logic_vector(2 downto 0);V1,V2,V3:out std_logic);--LEDsend Led;architecture a of Led issignal s:integer range 0 to 23; --6/8 beginprocess(speed)beginif clear='0' thenV1<='0';V2<='0';V3<='0';elsif (speed'event and speed='1')then case J iswhen "001"=> --1/4 Scase s iswhen 0|1 =>V1<='1';V2<='0';V3<='0';when others=> V1<='0';V2<='0';V3<='0'; end case;if s>=3 thens<=0;elses<=s+1;end if;when "010"=>--2/4 S-Wcase s iswhen 0|1 =>V1<='1';V2<='0';V3<='0';when 4|5 => V1<='0';V2<='0';V3<='1';when others=> V1<='0';V2<='0';V3<='0';end case;if s>=8 thens<=0;elses<=s+1;end if;when "011"=>--3/4 S-W-Wcase s iswhen 0|1 =>V1<='1';V2<='0';V3<='0';when 4|5|8|9 => V1<='0';V2<='0';V3<='1'; when others=> V1<='0';V2<='0';V3<='0';end case;if s>=12 thens<=0;elses<=s+1;end if;when "100"=>--4/4 S-W-RS-Wcase s iswhen 0|1=> V1<='1';V2<='0';V3<='0';when 4|5|12|13=> V1<='0';V2<='0';V3<='1'; when 8|9=> V1<='0';V2<='1';V3<='0';when others=> V1<='0';V2<='0';V3<='0';end case;if s>=16 thens<=0;elses<=s+1;end if;when "101"=>--3/8 S-W-Wcase s iswhen 0 =>V1<='1';V2<='0';V3<='0';when 2|4 => V1<='0';V2<='0';V3<='1';when others=>V1<='0';V2<='0';V3<='0';end case;if s>=6 thens<=0;elses<=s+1;end if;when "110"=>--6/8 S-W-W RS-W-Wcase s iswhen 0 =>V1<='1';V2<='0';V3<='0';when 2|4|8|10 => V1<='0';V2<='0';V3<='1';when 6=> V1<='0';V2<='1';V3<='0';when others=>V1<='0';V2<='0';V3<='0';end case;if s=12 thens<=0;elses<=s+1;end if;when others=>V1<='0';V2<='0';V3<='0';end case;end if;end process;end a;分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi isport(clk,clear :in std_logic;S:in std_logic_vector(6 downto 0);--81个速度,7位2进制数计数 speed,ms:out std_logic);end fenpinqi;architecture a of fenpinqi issignal clk_temp:std_logic;signal ms_temp:std_logic;signal s1:integer range 0 to 10000000; --40signal sms:integer range 0 to 12499;process(clk,clear)beginif clear='0' thenclk_temp<='0';ms_temp<='0';elsif clk'event and clk='1'thenif sms=12499 thensms<=0;ms_temp<=not ms_temp; elsesms<=sms+1;end if;case S iswhen "1010000"=>if s1>=3333333 then -- 120p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001111"=>if s1>=3361344 then -- 119p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001110"=>if s1>=3389830 then -- 118p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001101"=>if s1>=3418803 then -- 117p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001100"=>if s1>=3448275 then -- 116p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001011"=>if s1>=3478260 then -- 115p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001010"=>if s1>=3508771 then -- 114p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001001"=>if s1>=3539823 then -- 113p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001000"=>if s1>=3571428 then -- 112p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000111"=>if s1>=3603603 then -- 111p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000110"=>if s1>=3636363 then -- 110p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000101"=>if s1>=3669724 then -- 109p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000100"=>if s1>=3703703 then -- 108p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000011"=>if s1>=3738317 then -- 107p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000010"=>if s1>=3773584 then -- 106p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000001"=>if s1>=3809523 then -- 105p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000000"=>if s1>=3846153 then -- 104p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111111"=>if s1>=3883495 then -- 103p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111110"=>if s1>=3921568 then -- 102p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111101"=>if s1>=3960396 then -- 101p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111100"=>if s1>=4000000 then -- 100p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111011"=>if s1>=4040404 then -- 99p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111010"=>if s1>=4081632 then -- 98p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111001"=>if s1>=4123711 then -- 97p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111000"=>if s1>=4166666 then -- 96p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0110111"=>if s1>=4210526 then -- 95p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110110"=>if s1>=4255319 then -- 94p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110101"=>if s1>=4301075 then -- 93p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110100"=>if s1>=4347826 then -- 92p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110011"=>if s1>=4395604 then -- 91p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110010"=>if s1>=4444444 then -- 90p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110001"=>if s1>=4494382 then -- 89p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110000"=>if s1>=4545454 then -- 88p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101111"=>if s1>=4597701 then -- 87p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101110"=>if s1>=4651162 then -- 86p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101101"=>if s1>=4705882 then -- 85p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101100"=>if s1>=4761904 then --84p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101011"=>if s1>=4819277 then --83p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101010"=>if s1>=4878048 then --82p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101001"=>if s1>=4938271 then --81p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101000"=>if s1>=5000000 then --80p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100111"=>if s1>=5063291 then --79p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100110"=>if s1>=5128205 then --78p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100101"=>if s1>=5194805 then --77p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100100"=>if s1>=5263157 then --76p/ss1<=0;clk_temp<=not clk_temp;。

电子节拍器课程设计解析

电子节拍器课程设计解析

课程设计报告课程设计名称:电子课程设计课程设计题目:电子节拍器学院名称:信息工程学院专业:通信工程班级: 130422班学号:姓名:评分:教师:2015年9月 25日数字电路 课程设计任务书 15 - 16 学年 第 1学期 第 2 周- 3 周注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。

2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。

摘要当今乐器的发展变化越来越快,歌曲的演奏离不开乐器,而电子节拍器作为一种节拍可调、声音悦耳、成本低、容易自制、调试简单的元器件而被被广泛应用于各种电子乐器当中。

本次课题设计的目的是:设计一电子节拍器,要求节拍器具有声光显示功能:设有2/4,3/4,4/4三档节拍转换开关,音响有强弱之分,节拍速度连续可调。

本次设计以NE555芯片和CD4017芯片组成振荡电路,驱动发光二极管发光和蜂鸣器发出声音,达到声音和发光同步。

CD4017组成的节拍选择控制电路。

当开关与不同的管脚接通时,就会有不同的节拍。

该节拍器的设计采用模块化结构,有3个模块即节拍脉冲模块、节拍选择控制模块、以及声光同步显示模块组成。

此电路是以NE555及CD4017构成振荡器产生节拍脉冲,并将脉冲输入到CD4017构成的节拍选择控制开关,此电路是以NE555构成自激振荡器产生脉冲,并将脉冲输入到蜂鸣器产生节拍的声音,及驱动发光二级管,达到声光同步显示效果。

在三周的时间内,通过作者与同组人的共同努力和在指导老师的帮助下,借助学校图书馆,网络等各种信息平台收集资料,经过分析,提炼,转变成自己的研究成果。

通过本次设计,使作者明白了一般电子产品的设计及制作过程,加深了对专业基础课的认识,以及对所学课程的实际应用有了一个更深的理解,促进了对所学专业的热爱。

关键字:节拍器,脉冲信号,声光显示,蜂鸣器目录前言 (1)第一章设计要求 (2)1.1设计基本要求 (2)第二章设计方案的选择 (3)2.1方案设计 (3)2.2方案比较 (4)第三章系统的设计及仿真 (5)3.1脉冲产生电路 (7)3.2节拍信号产生电路 (7)3.3声光显示电路 (10)第四章实验、调试及结果分析 (13)4.1试验及调试 (10)4.2测试结果与分析 (10)第五章收获与体会 (13)参考文献 (17)附录一元件清单 (18)附录二总设计图 (19)附录三实物图 (20)附录四P C B制图 (21)前言现代音乐的发展以及音乐对人们生活的重要影响,使得乐器发展变得更加迅猛,人们对乐器的要求越来越高。

电子声光节拍器课程设计

电子声光节拍器课程设计

电子声光节拍器课程设计一、课程目标知识目标:1. 学生能理解电子声光节拍器的基本原理,掌握其组成部分及功能。

2. 学生能运用电子声光节拍器的知识,分析并解决简单的音乐节奏问题。

3. 学生了解电子声光节拍器在现实生活中的应用,提高对科技与音乐结合的认识。

技能目标:1. 学生掌握电子声光节拍器的使用方法,能够独立操作并调整节拍器。

2. 学生通过实际操作,培养动手能力和团队协作能力。

3. 学生能够运用电子声光节拍器进行音乐创作和表演,提高音乐表现力。

情感态度价值观目标:1. 学生培养对音乐节奏的兴趣,激发学习音乐的积极性。

2. 学生在创作和表演过程中,体验团队合作的乐趣,增强自信心和成就感。

3. 学生认识到科技与艺术的结合之美,培养创新意识和审美观念。

本课程针对初中年级学生,结合电子声光节拍器相关知识,注重理论与实践相结合。

通过课程学习,使学生能够掌握电子声光节拍器的使用,提高音乐素养,培养创新精神和团队合作能力,为今后的音乐学习奠定基础。

同时,课程目标具体、可衡量,有助于教学设计和评估的实施。

二、教学内容1. 电子声光节拍器基本原理:介绍电子声光节拍器的工作原理,包括振荡器、分频器、计数器、显示屏等组成部分及其功能。

教材章节:《音乐与科技》第四章第三节“电子节拍器原理”2. 电子声光节拍器的使用方法:讲解如何使用电子声光节拍器,包括开关机、调整节拍、切换节奏模式等操作。

教材章节:《音乐与科技》第四章第四节“电子节拍器的使用”3. 节奏练习与应用:通过实际操作,让学生运用电子声光节拍器进行音乐节奏练习,结合教材中的实例进行创作和表演。

教材章节:《音乐与科技》第四章第五节“电子节拍器在音乐实践中的应用”4. 团队协作与创作:组织学生分组进行音乐创作和表演,鼓励他们运用电子声光节拍器进行创新实践。

教材章节:《音乐与科技》第四章第六节“团队合作与音乐创作”教学内容按照教学大纲安排,分为四个部分,共计8个课时。

简易电子节拍器课程设计

简易电子节拍器课程设计

简易电子节拍器课程设计一、课程目标知识目标:1. 学生能理解电子节拍器的基本原理和工作机制。

2. 学生能掌握简易电子节拍器电路图的识读和元件的使用。

3. 学生能掌握基本的电子元件知识,如电阻、电容、二极管等。

技能目标:1. 学生能够运用所学知识,独立完成简易电子节拍器的搭建。

2. 学生能够通过实验操作,培养动手能力,提高解决问题的能力。

3. 学生能够通过团队协作,培养沟通能力和团队精神。

情感态度价值观目标:1. 学生能够对电子技术产生兴趣,激发学习热情,形成积极的学习态度。

2. 学生能够认识到科技发展对生活的改变,增强创新意识。

3. 学生能够在学习过程中,培养耐心、细致的良好品质,树立正确的价值观。

课程性质:本课程为电子技术实践课程,注重理论知识与实际操作的相结合。

学生特点:六年级学生,具有一定的电子知识基础,好奇心强,喜欢动手操作。

教学要求:结合学生特点,以实践为主,注重培养学生的动手能力和团队协作能力。

通过课程学习,使学生能够将所学知识应用于实际操作中,提高学生的综合素养。

课程目标分解为具体学习成果,以便于教学设计和评估。

二、教学内容1. 电子节拍器原理:介绍电子节拍器的工作原理,包括振荡器、分频器、放大器和扬声器等组成部分。

相关教材章节:第五章第二节《振荡器与分频器》。

2. 电子元件知识:讲解电阻、电容、二极管等基本元件的作用和特性。

相关教材章节:第四章《电子元件》。

3. 电路图识读:教授如何阅读电子节拍器电路图,识别各元件连接关系。

相关教材章节:第六章第一节《电路图的识别和绘制》。

4. 实践操作:指导学生搭建简易电子节拍器,进行实际操作。

相关教材章节:第六章第三节《电子制作实践》。

5. 团队协作:分组进行项目实践,培养学生的团队协作能力。

教学内容安排与进度:第一课时:介绍电子节拍器原理,学习振荡器与分频器相关知识。

第二课时:讲解电子元件知识,学习电路图的识读。

第三课时:分组进行简易电子节拍器的搭建,实践操作。

11电子节拍器课程设计报告

11电子节拍器课程设计报告

电子课程设计报告课程设计名称:数字逻辑课程设计课程设计题目:电子节拍器院系名称:专业:班级:学号:姓名:评分:教师:日期2011 年月日摘要音乐能能够陶冶人的情操,进化人的灵魂,在贝多芬昏暗的世界里音乐奏响了他的第二次生命曲,随着音乐节奏的改变会带给人不一样的享受,而对节奏频率的改变进行检测会更容易让人理解。

本次设计电子节拍器采用了CD4017,555,8050,CD4069芯片等其他元器件组成完整数字电路,具有较好的声光显示功能。

并设有2/4,3/4,4/4,三档开关,它将RC振荡经过非门产生的脉冲通过分频器对指示灯LED亮暗的控制从而观察音律节奏的变化,分频器又输出脉冲经过三极管达到对电阻开关的控制以及改变555的振荡的频率,通过喇叭发出的声音可以明确的辨别节拍发生了改变。

设计实现的频率范围是1000KHZ左右,电源是5v,采用的技术方法还可以用在其他的领域,例如学音乐、学舞蹈、学唱歌节拍器都是初学者的良师益友。

关键字:节拍器频率分频器目录前言 (3)第一章设计内容及要求 (4)第二章系统的组成及工作原理 (5)第三章电路方案设计 (6)设计电路图 (6)第四章实验调试及测试结果与分析 (9)总结 (10)参考文献 (11)电路原理图 (12)元件清单 (13)前言电子节拍器是一种能在各种速度中发出一种稳定的节拍的电动或电子装置,作为一种节奏性乐器使用。

1696年巴黎人E.卢列创制第一架节拍器后,这种装置的种类很多,最普遍使用的是1816年由奥地利人J.N.梅尔策尔发明的节拍器。

梅尔策尔的节拍器外形呈现金字塔形,内部为时钟结构,有齿轮及发条,带动一摆杆,摆杆每次摆动结束时发出尖锐的“滴答”声,这些滴答声的速度可根据刻在摆杆上的游尺度上下移动摆锤,进行调整,其速度每分钟40~210拍。

约在1945年瑞士钟表业生产袖珍节拍器,形如挂表。

匈牙利作曲家G利盖蒂在《交响诗》中用过100个节拍器以不同的速度鸣响。

北邮数字电路综合实验电子节拍器

北邮数字电路综合实验电子节拍器

数字电路与逻辑设计实验(下)实验报告课题名称:数字电路与逻辑设计实验(下)学院:xxxxxx班级:xxxxxx姓名:xxxxxx学号:xxxxxx日期:xxxxxx设计课程的任务要求题目七:电子节拍器的设计与实现设计并实现一个具有声光显示的电子节拍器。

基本要求:1、速度在40~120 次/分钟范围内连续可调,通过2 个按键进行速度调节,一个用来增加,一个用来减少,当长按按键时,按5 次/秒的速度连续增加或减少,用3个数码管显示当前速度。

2、节拍有1/4、2/4、3/4、4/4、3/8、6/8 可选,通过一个按键选择,用2个数码管显示。

3、通过一个按键开始和停止打节拍,开始后按照设置好的节拍和速度打节拍。

4、要求有声音和灯光提示,声音要有强弱区别,灯光可用不同颜色的发光二极管表示强弱。

系统设计1. 设计思路整个电子节拍器可分为大体五个部分:拍速(bpm)产生部分、高低音频生成部分、节拍选择部分、数码管显示部分、声光提示部分。

首先由拍速产生部分生成一个与已选拍速相匹配的时钟和一个代表拍速的6位二进制数,时钟与6位二进制数分别进入节拍选择部分和数码管显示部分;节拍选择部分会根据按键操作生成高电平与低电平比例不同的与拍速同步的信号代表不同的节拍进入声光提示部分,并产生一个代表节拍的3位二进制数进入数码管显示部分;数码管显示部分根据6位二进制数和3位二进制数显示拍速和节拍类型;高低音频生成器生成两种音频分别代表强音与弱音,强音与弱音时钟均进入声光提示部分;声光提示部分根据由节拍选择部分发来的信号与强弱音时钟发出相应的提示声与灯光。

2.数码管显示部分节拍选择部分拍速产生部分声光提示部分高低音频生成部分总体框图3. 分块设计拍速产生器:将6位二进制数的十进制初始定义为40,对加减按键进行计时,计时功能通过一个经过分频的时钟来实现,短加减即改变1,长按即每秒改变5,最后通过一个检测来判断改变后的数值是否在40-120的区间内,若低于40则以40计,高于120以120计,并输出这个6位二进制数;通过计算将6位二进制数计算为相应的分频比并输出这一分频后的时钟(由于节拍器要求八分音符的节拍要求产生的时钟频率为对应拍速频率的二倍)。

北邮数电 节拍器实验报告

北邮数电 节拍器实验报告

数电实验报告一、设计课题的任务要求1)基本要求1、速度在40~120 次/分钟范围内连续可调,通过2 个按键进行速度调节,一个用来增加,一个用来减少,当长按按键时,按5 次/秒的速度连续增加或减少,用3 个数码管显示当前速度。

2、节拍有1/4、2/4、3/4、4/4、3/8、6/8 可选,通过一个按键选择,用2 个数码管显示。

3、通过一个按键开始和停止打节拍,开始后按照设置好的节拍和速度打节拍。

4、要求有声音和灯光提示,声音要有强弱区别,灯光可用不同颜色的发光二极管表示强弱。

2)提高要求通过一个按键选择时值(节奏类型),并在用点阵显示,如下图。

二、系统设计节拍器的设计关键是由按键控制速度,并产生不同的分频。

由于对节拍器不了解,实验结果与实际节拍器不同,不过vhdl用到的模块,实现的功能是一样的。

系统的顶层设计是:输入:50MHz时钟cp、按键button,button1,button2,button3输出:beep给蜂鸣器,led1,2,3分别给不同的led灯,countout,smg控制数码管显示,hang,lie控制点阵显示节拍器的设计分为六个模块:速度设置模块vset,节拍和暂停按键处理模块jpset,分频模块fenpin,数码管显示模块ra;蜂鸣器(和二极管)模块fmq;点阵模块jpfs。

1.分频模块分频:分频模块输入50M赫兹时钟cp,给其他模块提供分频后的时钟。

输出Clk为分频比为25000000*12/(speed+40)),其每十二个周期等于对应速度的一个节拍周期,输出给蜂鸣器模块。

Clk1s为250 000分频,输出给速度设置模块vset。

Clkmap,clkbeep3为对时钟cp80 000分频625赫兹,clkmap输出给数码管模块作为扫描频率,clkbeep3为低音频率。

Clkcount,Clkbeep1为1250hz,Clkbeep1作为高音频率,Clkcount作为扫描频率检测时间片,输出到蜂鸣器模块。

集成电路EDA技术课程设计——电子节拍器的设计

集成电路EDA技术课程设计——电子节拍器的设计

EDA与VHDL语言课程设计电子节拍器的设计院系:班级:学号:姓名:电子节拍器的设计节拍器在学习音乐中起着重要作用。

主要有:1、确定乐曲的速度,有的曲子要求用某一速度进行练习,通过节拍器可以找到该速度;2、帮助对于节奏感较差的学生,改善拖拍、抢拍、节奏不稳等现象。

该节拍器虽然功能有限,限制了其实用性,但其设计及制作过程的意义却是极其重要的。

通过节拍器的制作,不仅熟悉了节拍器的设计及制作过程、培养了我对电子的兴趣,还将电子技术基础理论与实际操作有机地联系起来,加深了对所学理论课程的理解。

同时,还提高了实际操作能力、独立分析和解决问题的能力及创新能力,养成了严谨细致的工作作风和态度。

一、设计要求要求本节拍器具有声光显示功能:设有2/4,3/4,4/4三档节拍转换开关。

音响有强弱之分,节拍速度连续可调,有速度显示功能。

二、系统组成原理示意图如图1所示。

该电子节拍器主要由可变比分频器、恒高音分频器、恒低音分频器、脉冲调制器、节拍产生器和节拍切换开关组成,如附图1。

分频器产生2bpm-512bpm的分频信号,传递给节拍计数器,节拍计数器记录节拍,当不是重音拍时给出轻音,当是重音拍时给出重音。

三、单元描述整体的电路如附图2,外部采用电位器调节节拍频率,电位器分压之后进入ADC,最终传入FPGA,用开关以数字量选择节拍计数2/4、3/4、4/4。

3.1 可变比分频器可变比分频器由外部输入信号,外部ADC输入8位信号,系数0~255,对应分频系数2~512,可变比分频器有外部输入的时钟进行分频,分频后信号作为高低音频分频的基础时钟输入,3.2恒高/低音分频器恒高/低音分频器仅仅只是一个简单的分频器,输出高音和低音两种频率,设输入clk为1MHz(1us),输出高音1KHz,低音500Hz,则高音为1000分频,低音为2000分频,转换成二进制为1111101000和11111010000。

3.3 节拍切换开关节拍切换开关类似于2fsk调制,两个频率输入,通过另一个输入高低电平判断输出哪个频率,原理简单便于编写。

电子节拍器课设报告

电子节拍器课设报告

电子课程设计报告题目名称:姓名:专业:班级学号:同组人:指导教师:南昌航空大学科技学院2011年月日摘要电子节拍器是一种新颖的节拍器,它具有应用范围广、节拍可调,声音悦耳、成本低、容易自制、调试简单等优点,是一种能在各种速度中发出一种稳定的节拍的电动或电子装置,作为一种节奏性乐器使用。

本次的设计课题为“设计一电子节拍器,要求节拍器具有声光显示功能:设有2/4,3/4,4/4三档节拍转换开关,音响有强弱之分。

节拍速度连续可调。

”脉冲产生环节产生脉冲信号,然后输入到脉冲分配环节,脉冲分配环节按照所规定节拍规律分配脉冲信号的输出,然后由蜂鸣器发声产生节拍声音,发光二极管发出光显示,达到声光同步。

通过这次课程设计,使作者明白了电子节拍器的设计及制作过程,对专业基础课程的学习进行了巩固和加深,以及对数字电路的应用有了一个更深的理解,增强了对所学的专业的兴趣。

关键字:脉冲信号,节拍,声光显示,蜂鸣器目录前言 (4)第一章设计内容及要求 (5)1-1 设计要求 (5)1-2 系统组成 (5)第二章系统设计方案选择 (6)第三章系统组成及工作原理 (7)3.1 系统组成 (7)3.2 工作原理 (7)第四章单元电路设计及工作原理 (8)4.1脉冲产生电路 (8)4.2节拍控制电路 (10)4.3声光控制电路 (11)第五章实验、调试及测试结果分析 (14)5-1焊接 (14)5-2调试 (14)5-3 测试结果与分析 (15)结论及收获、体会 (16)参考文献 (17)附录一 (18)附录二 (19)前言《数字电子技术基础》是一门发展迅速、实践性和应用性很强的电子技术专业基础课程。

为了适应现代电子技术飞跃发展的需要,更好的培养21世纪应用型电子技术人才,需要在加强学生基础理论学习的同时,还要加强实验技能的训练。

将理论知识、课题内容的作业、讨论与技能训练相结合,融为一体,课程设计以此为目的使能力培养贯穿于整个教学过程。

电子节拍器设计范文

电子节拍器设计范文

电子节拍器设计范文电子节拍器,也称为节拍计器或节拍器,是一种电子设备,用于产生特定的节奏和节拍。

它可以用于音乐演奏、舞蹈和其他需要精确节拍的活动。

设计一个电子节拍器需要考虑到以下几个方面:节拍控制、节拍显示、音频输出和电源供应。

首先,节拍控制是电子节拍器的核心功能之一、它负责生成和控制节拍信号。

一般来说,节拍器可以具有多种节拍类型和节拍速度可调节。

为了实现这一点,可以使用一个微控制器或编码器来控制节拍的产生。

微控制器可以编程生成各种不同的节拍类型,例如4/4拍、3/4拍和6/8拍等。

编码器可以用来控制节拍的速度,用户可以通过旋钮或按钮来调节节拍的快慢。

其次,节拍显示是另一个重要的功能。

它可以显示当前的节拍和速度,以便用户能够准确把握节奏。

常见的节拍显示方式有LED灯和数码显示屏。

LED灯可以用红、绿和蓝三种颜色来表示不同的节拍,而数码显示屏可以显示具体的节拍数字和速度。

此外,还可以增加一个辅助显示器,用于显示节拍倒计时、节拍间隔和其他相关信息。

第三,音频输出是电子节拍器必不可少的功能。

它可以将产生的节拍信号转化为可听的声音,使用户能够更直观地感受节拍。

音频输出可以使用内置的扬声器或外部音箱。

此外,还可以提供音量控制和音色选择的功能,以满足不同用户的需求。

最后,电源供应是电子节拍器正常工作所必需的。

可以使用电池或电源适配器来供电。

如果使用电池供电,应设计低功耗电路以延长电池使用寿命。

如果使用电源适配器供电,应考虑到供电电压和电流的需求,以确保电子节拍器能够稳定工作。

综上所述,设计一个电子节拍器需要考虑节拍控制、节拍显示、音频输出和电源供应等方面。

通过合理的设计和选择合适的电子元件,可以制作出功能齐全、稳定可靠的电子节拍器。

同时,为了提高用户体验,还可以增加一些附加功能,例如节拍记忆、节拍录制和节拍播放等。

电子节拍器--潘子仁

电子节拍器--潘子仁

长沙学院数电课程设计说明书题目电子节拍器设计系(部) 电信系专业(班级) 电气02班姓名潘子仁学号2011024215指导教师龙英刘亮陈希起止日期2013.6.16—2013.6.20数字电子技术课程设计任务书(15)系(部):电子与通信工程系专业:电气工程及其自动化指导教师:陈希长沙学院课程设计鉴定表目录目录 (4)前言 (5)一、设计内容及要求 (6)二、系统的组成及工作原理 (6)三、电路方案设计 (6)四、实验调试及测试结果与分析 (9)4.1 调试 (9)4.2 测试结果与分析 (9)总结 (10)参考文献 (11)前言电子节拍器是一种能在各种速度中发出一种稳定的节拍的电动或电子装置,作为一种节奏性乐器使用。

1696年巴黎人E.卢列创制第一架节拍器后,这种装置的种类很多,最普遍使用的是1816年由奥地利人J.N.梅尔策尔发明的节拍器。

梅尔策尔的节拍器外形呈现金字塔形,内部为时钟结构,有齿轮及发条,带动一摆杆,摆杆每次摆动结束时发出尖锐的“滴答”声,这些滴答声的速度可根据刻在摆杆上的游尺度上下移动摆锤,进行调整,其速度每分钟40~210拍。

约在1945年瑞士钟表业生产袖珍节拍器,形如挂表。

匈牙利作曲家G利盖蒂在《交响诗》中用过100个节拍器以不同的速度鸣响。

节拍器最早时期是机械式的利用的是机械发车节拍,随着科学技术的发展现今的节拍器都是电子式的,现代半导体和集成电路底节拍器不但功能强性能好而且还小巧灵便,携带起来很方便。

在不久的将来还会出现只能化的电子节拍器。

电子节拍器对初学者来说是最好的指导老师,是钢琴学习者的铺助工具,合理地运用它,可使学琴者克服练习中的障碍,清楚每首乐曲所需的基本速度,并且对初级学琴者建立一定的心理节奏感,养成良好的节拍习惯具有积极的帮助作用,同时也起到速度的参照作用、纠正速度的作用。

一、设计内容及要求【基本要求】要求本节拍器具有声光显示功能:设有2/4,3/4,4/4三档节拍转换开关,音响有强弱之分。

电子节拍器电路原理图

电子节拍器电路原理图

电子节拍器电路原理图节拍器是非常重要的工具,如果你学习音乐的演奏。

有机械节拍器的装置,在过去,但今天,电子节拍器,更受欢迎,因为它可以很简单,紧凑型/小型,可靠,而且也有最有趣的特点:价格便宜。

这里是电子节拍器原理的一个例子:零件:C1的1 uF 63V涤纶电容器C2 10nF的63V涤纶电容器C3 47 UF 25V电解电容R1 10K 1/2W微调金属陶瓷R2的10K 1/4W电阻R3的330K 1/4W电阻R4 50K 1/2W微调金属陶瓷R5的100K 1/4W电阻R6,R7 1K 1/4W电阻P1的线性电位器100KSPST开关SW1(与P1伙同)SPK 8欧姆40毫米。

喇叭B1 12V电池(MN21,GP23A或VR22型)IC1选用NE555通用定时器ICQ1,Q2,BC560 45V百毫安低噪声高增益PNP晶体管第三ZTX753 100V 2A PNP晶体管Q1和Q2的周围建一个可变的电流源,提供的线性度,可直接映射到电位器的位置。

晶体管Q3放大信号,得到响亮的点击声音,类似发条的节拍器。

为了获得更多的输出功率和更紧凑的封装,12V微型电池使用。

不要担心,如果你不能得到的电池,因为它的作品也为9V 电池。

充分旋转对R2的P1,然后设置R1获得每分钟40次(与另一节拍器)。

旋转完全对R3的P1,然后设置R4获得每分钟208次。

最后,标志着整个规模与 ??共同节拍器步骤如下:40 - 42 - 44 - 46 - 48 - 50 - 52 - 54 - 58 - 60 - 63 - 66 - 69 - 72 - 76 - 80 - 84 - 88 - 92 - 96 - 100 - 104 - 108 - 112 - 116 - 120 - 126 - 132 - 138 - 144 - 152 - 160 - 168 - 176 - 184 - 192 - 200 - 208。

基于单片机的电子节拍器的设计和制作

基于单片机的电子节拍器的设计和制作

毕业设计(论文)文献综述(包括国内外现状、研究方向、进展情况、存在问题、参考依据等)基于单片机的电子节拍器的设计和制作1 节拍器的诞生中世纪时期, 大多数著名作曲家的作品都以出色的舞曲而命名,此趋势并非因为该作品具有那舞曲的特色, 而是因为作曲家要依靠该舞曲的节奏速度谱出自己喜爱的乐章。

但这些乐章的节奏究竟有多快或多慢, 则没有明确的定义。

任何一位演奏者只能凭自己的感觉或喜好, 随心所欲地去演奏乐章。

故此, 于世纪末, 一些法国音乐家和技术专家积极寻求各种方法去制定间距、速度和节奏, 好让音乐家弹奏乐曲的节奏与作曲家所编写的一致,于是便出现了节拍。

节拍是塑造音乐形象的基本表现手法,节拍器也慢慢介入了乐器市场,现在几乎已经成为了初学者必备的学习工具,他的基本功能顾名思义就是帮助新手们树立并培养良好的节奏感,用强弱关系来组织音乐,使音值相同的重音与非重音有规律的循环重复,从而使音乐练习达到事半功倍的效果。

2国内外有关节拍器的设计在国内外有关节拍器的设计中,大多都采用了单片机。

单片机以其高性能,小体积,廉价格的特点,在自动控制领域有十分广泛的应用。

日常生活所见的机械节拍器的节拍声音单调,而且有调节不便和价格较高的特点。

而采用单片机控制的电子音乐发生器有其独特的优点:电路设计简单、系统体积小、成本低;音乐中的音调和节拍准确;同时还能根据用户的要求存放其喜欢的歌曲,有较大的灵活性和趣味性,能很好的实现与使用者的交流。

2.1 基于Atmegal6的LED电子节拍器的设计基于一款性价比高的Atmegal6单片机,结合电气类组合电路和时序电路的基础知识,完成一种简单、易于制作、成本低廉的节拍器并且适合广大音乐爱好者DIY 的电路设计。

LED电子节拍器主要包括方波产生和数字显示电路、节拍控制电路、声音电路和光电路。

该节拍器具有0~7种不同的节拍.如嘀嘀嘀,滴答滴答,嘀嗒嗒嘀嗒嗒等。

拍速可从40—160拍/min的几种常用节拍进行调节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子节拍器的设计与实现学院: 明光桥北技术学院班级: 18姓名: 文熙学号: 2333班内序号: 6661、设计思想本实验采用自顶向下设计的方法。

从整体上考虑系统的功能,划分出不同的功能模块,然后选用器件实现相应模块,反复改进、反复实践,最终完成系统的设计。

在前期,我主要是进行各个模块的测试,分别测试完成之后,再通过顶层文件进行电路的连接,实现全部的设计。

2、总体框图(1)系统框图一、故障及问题分析1.当按键按下之后,按下一次会产生多次按下的效果。

问题分析与解决:由于抖动的原因,需要加上一个防抖的程序。

2. 速度加1加5的时钟计时时间偏小。

问题分析与解决:通过实验室多次调试解决。

3.播放自制歌曲时无法进行节拍演示。

问题分析与解决:case语句需要改进。

(由于此歌曲在验收实验前一天晚上才完成没有时间改进。

)4.蜂鸣器一开始输入高低电平。

问题分析与解决:后来查阅资料和同学沟通发现应该是输入不同频率的方波信号。

5.导致数码管显示不正常。

问题分析与解决:对数码管扫描频率一开始过大,应该调整为10kHz六、总结和结论好人有好报----造福学弟学妹七、源程序顶层文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY jiepaiqi ISPORT(add : IN STD_LOGIC;sub : IN STD_LOGIC;clk : IN STD_LOGIC;clear :IN STD_LOGIC;state: IN STD_LOGIC;success:in std_logic;sw : IN STD_LOGIC;-- sw1 : IN STD_LOGIC;led1 : OUT STD_LOGIC;led2 : OUT STD_LOGIC;led3 : OUT STD_LOGIC;beeper0 : OUT STD_LOGIC;b : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);cat : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END jiepaiqi;ARCHITECTURE a OF jiepaiqi ISCOMPONENT beeperPORT( clk:in std_logic;clear:in std_logic;state:in std_logic;success:in std_logic;V1,V2,V3:in std_logic;show:out std_logic);END COMPONENT;COMPONENT fenpinqiPORT(clk : IN STD_LOGIC;clear : IN STD_LOGIC;S : IN STD_LOGIC_VECTOR(6 DOWNTO 0);speed : OUT STD_LOGIC;ms : OUT STD_LOGIC);END COMPONENT;COMPONENT ledPORT(speed : IN STD_LOGIC;clear : IN STD_LOGIC;J : IN STD_LOGIC_VECTOR(2 DOWNTO 0);V1 : OUT STD_LOGIC;V2 : OUT STD_LOGIC;V3 : OUT STD_LOGIC);END COMPONENT;COMPONENT pacePORT(sw : IN STD_LOGIC;clear : IN STD_LOGIC;J : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END COMPONENT;COMPONENT smgymqPORT(clk : IN STD_LOGIC;clear : IN STD_LOGIC;J : IN STD_LOGIC_VECTOR(2 DOWNTO 0);S : IN STD_LOGIC_VECTOR(6 DOWNTO 0);b : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);cat : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END COMPONENT;COMPONENT speederPORT(add : IN STD_LOGIC;sub : IN STD_LOGIC;clear : IN STD_LOGIC;clk : IN STD_LOGIC;S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END COMPONENT;COMPONENT fenpinqismgPORT(clk : IN STD_LOGIC;clear : IN STD_LOGIC;clkout : OUT STD_LOGIC);END COMPONENT;SIGNAL SW_0 : STD_LOGIC;SIGNAL SW_1 : STD_LOGIC;SIGNAL SW_2 : STD_LOGIC;SIGNAL SW_10 : STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL SW_4 : STD_LOGIC;SIGNAL SW_11 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL SW_6 : STD_LOGIC;SIGNAL SW_9 : STD_LOGIC;BEGINled1 <= SW_0;led2 <= SW_1;led3 <= SW_2;u1: beeperPORT MAP(clk => clk,clear => clear,state =>state,success=>success,V1 => SW_0,V2 => SW_1,V3 => SW_2,show => beeper0);u2: fenpinqiPORT MAP(clk => clk,clear => clear,S => SW_10,speed => SW_4,ms => SW_9);u3: ledPORT MAP(speed => SW_4,clear => clear,J => SW_11,V1 => SW_0,V2 => SW_1,V3 => SW_2);u4: pacePORT MAP(sw => sw,clear => clear,J => SW_11);u5: smgymqPORT MAP(clk => SW_6,clear => clear,J => SW_11,S => SW_10,b => b,cat => cat);u6: speederPORT MAP(add => add,sub => sub,clear => clear,clk => SW_9,S => SW_10);u7: fenpinqismgPORT MAP(clk => clk,clear => clear,clkout => SW_6);END a;数码管分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqismg isport(clk,clear :in std_logic;clkout :out std_logic);end fenpinqismg;architecture a of fenpinqismg issignal temp:integer range 0 to 2499; signal clk_tmp : std_logic;beginprocess(clk,clear)beginif clear='0'thentemp<=0;clk_tmp<='0';elseif clk'event and clk='1' then if temp=2499 thentemp<=0;clk_tmp<= not clk_tmp;elsetemp<=temp+1;end if;end if;end if;clkout<=clk_tmp;end process;end;速度调节library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speeder isport(add,sub,clear,clk :in std_logic;S:out std_logic_vector(6 downto 0));end speeder;architecture a of speeder issignal S_temp:std_logic_vector(6 downto 0);signal time1a: integer range 0 to 2000;signal time1b: integer range 0 to 2000;signal time2a: integer range 0 to 2000;signal time2b: integer range 0 to 2000;beginprocess(clk)beginif(clk'event and clk='1')then-----------add----------if S_temp<"1010000"then --节奏速度小于120if(add='0')thentime1a<=0;time1b<=0;elsif (add='1'and time1a=2000 and S_temp<"1001100") then --节奏速度小于115按键1秒速度+5 S_temp<=S_temp+5;time1a<=0;elsif(add='1'and time1b=0)thenS_temp<=S_temp+1;time1b<=time1b+1;elsif(add='1'and time1a<2000)thentime1a<=time1a+1;end if;end if;----------sub----------if S_temp>"0000000"then --节奏速度大于40if(sub='0')thentime2a<=0;time2b<=0;elsif (sub='1'and time2a=2000 and S_temp>"0000101") then --节奏速度大于45按键1秒速度-5 S_temp<=S_temp-5;time2a<=0;elsif(sub='1'and time2b=0)thenS_temp<=S_temp-1;time2b<=time2b+1;elsif(sub='1'and time2a<2000)thentime2a<=time2a+1;end if;end if;end if;if clear='0'thenS_temp<="0101000"; --重置按键使得初始速度定为80end if;end process;S<=S_temp;end a;数码管和译码器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity smgymq isport(clk:in std_logic;clear: in std_logic;J: in std_logic_vector(2 downto 0);S: in std_logic_vector(6 downto 0);cat:out std_logic_vector(5 downto 0);b:out std_logic_vector(6 downto 0));end entity smgymq;architecture a of smgymq issignal temp : STD_LOGIC_VECTOR(3 downto 0);signal j1,j2 : STD_LOGIC_VECTOR(6 downto 0);signal S1,S2,S3: STD_LOGIC_VECTOR(6 downto 0);beginprocess(clk)beginif(clear='1')thenif(clk'event and clk ='1')thenif (temp="0101")thentemp<="0000";elsetemp<=temp+1;end if;end if;end if;end process;process(temp)beginif(clear='1')thencase S iswhen"0000000" => s1 <="0000000";s2<="0110011";s3<="1111110"; --40 when"0000001" => s1 <="0000000";s2<="0110011";s3<="0110000"; --41 when"0000010" => s1 <="0000000";s2<="0110011";s3<="1101101"; --42 when"0000011" => s1 <="0000000";s2<="0110011";s3<="1111001"; --43 when"0000100" => s1 <="0000000";s2<="0110011";s3<="0110011"; --44 when"0000101" => s1 <="0000000";s2<="0110011";s3<="1011011"; --45 when"0000110" => s1 <="0000000";s2<="0110011";s3<="1011111"; --46 when"0000111" => s1 <="0000000";s2<="0110011";s3<="1110000"; --47 when"0001000" => s1 <="0000000";s2<="0110011";s3<="1111111"; --48 when"0001001" => s1 <="0000000";s2<="0110011";s3<="1111011"; --49 when"0001010" => s1 <="0000000";s2<="1011011";s3<="1111110"; --50 when"0001011" => s1 <="0000000";s2<="1011011";s3<="0110000"; --51 when"0001100" => s1 <="0000000";s2<="1011011";s3<="1101101"; --52 when"0001101" => s1 <="0000000";s2<="1011011";s3<="1111001"; --53 when"0001110" => s1 <="0000000";s2<="1011011";s3<="0110011"; --54 when"0001111" => s1 <="0000000";s2<="1011011";s3<="1011011"; --55 when"0010000" => s1 <="0000000";s2<="1011011";s3<="1011111"; --56 when"0010001" => s1 <="0000000";s2<="1011011";s3<="1110000"; --57 when"0010010" => s1 <="0000000";s2<="1011011";s3<="1111111"; --58 when"0010011" => s1 <="0000000";s2<="1011011";s3<="1111011"; --59 when"0010100" => s1 <="0000000";s2<="1011111";s3<="1111110"; --60when"0010101" => s1 <="0000000";s2<="1011111";s3<="0110000"; --61 when"0010110" => s1 <="0000000";s2<="1011111";s3<="1101101"; --62 when"0010111" => s1 <="0000000";s2<="1011111";s3<="1111001"; --63 when"0011000" => s1 <="0000000";s2<="1011111";s3<="0110011"; --64 when"0011001" => s1 <="0000000";s2<="1011111";s3<="1011011"; --65 when"0011010" => s1 <="0000000";s2<="1011111";s3<="1011111"; --66 when"0011011" => s1 <="0000000";s2<="1011111";s3<="1110000"; --67 when"0011100" => s1 <="0000000";s2<="1011111";s3<="1111111"; --68 when"0011101" => s1 <="0000000";s2<="1011111";s3<="1111011"; --69 when"0011110" => s1 <="0000000";s2<="1110000";s3<="1111110"; --70 when"0011111" => s1 <="0000000";s2<="1110000";s3<="0110000"; --71 when"0100000" => s1 <="0000000";s2<="1110000";s3<="1101101"; --72 when"0100001" => s1 <="0000000";s2<="1110000";s3<="1111001"; --73 when"0100010" => s1 <="0000000";s2<="1110000";s3<="0110011"; --74 when"0100011" => s1 <="0000000";s2<="1110000";s3<="1011011"; --75 when"0100100" => s1 <="0000000";s2<="1110000";s3<="1011111"; --76 when"0100101" => s1 <="0000000";s2<="1110000";s3<="1110000"; --77 when"0100110" => s1 <="0000000";s2<="1110000";s3<="1111111"; --78 when"0100111" => s1 <="0000000";s2<="1110000";s3<="1111011"; --79 when"0101000" => s1 <="0000000";s2<="1111111";s3<="1111110"; --80 when"0101001" => s1 <="0000000";s2<="1111111";s3<="0110000"; --81 when"0101010" => s1 <="0000000";s2<="1111111";s3<="1101101"; --82 when"0101011" => s1 <="0000000";s2<="1111111";s3<="1111001"; --83 when"0101100" => s1 <="0000000";s2<="1111111";s3<="0110011"; --84 when"0101101" => s1 <="0000000";s2<="1111111";s3<="1011011"; --85 when"0101110" => s1 <="0000000";s2<="1111111";s3<="1011111"; --86 when"0101111" => s1 <="0000000";s2<="1111111";s3<="1110000"; --87 when"0110000" => s1 <="0000000";s2<="1111111";s3<="1111111"; --88 when"0110001" => s1 <="0000000";s2<="1111111";s3<="1111011"; --89 when"0110010" => s1 <="0000000";s2<="1111011";s3<="1111110"; --90 when"0110011" => s1 <="0000000";s2<="1111011";s3<="0110000"; --91 when"0110100" => s1 <="0000000";s2<="1111011";s3<="1101101"; --92 when"0110101" => s1 <="0000000";s2<="1111011";s3<="1111001"; --93 when"0110110" => s1 <="0000000";s2<="1111011";s3<="0110011"; --94 when"0110111" => s1 <="0000000";s2<="1111011";s3<="1011011"; --95 when"0111000" => s1 <="0000000";s2<="1111011";s3<="1011111"; --96 when"0111001" => s1 <="0000000";s2<="1111011";s3<="1110000"; --97 when"0111010" => s1 <="0000000";s2<="1111011";s3<="1111111"; --98 when"0111011" => s1 <="0000000";s2<="1111011";s3<="1111011"; --99 when"0111100" => s1 <="0110000";s2<="1111110";s3<="1111110"; --100 when"0111101" => s1 <="0110000";s2<="1111110";s3<="0110000"; --101 when"0111110" => s1 <="0110000";s2<="1111110";s3<="1101101"; --102 when"0111111" => s1 <="0110000";s2<="1111110";s3<="1111001"; --103 when"1000000" => s1 <="0110000";s2<="1111110";s3<="0110011"; --104when"1000001" => s1 <="0110000";s2<="1111110";s3<="1011011"; --105when"1000010" => s1 <="0110000";s2<="1111110";s3<="1011111"; --106when"1000011" => s1 <="0110000";s2<="1111110";s3<="1110000"; --107when"1000100" => s1 <="0110000";s2<="1111110";s3<="1111111"; --108when"1000101" => s1 <="0110000";s2<="1111110";s3<="1111011"; --109when"1000110" => s1 <="0110000";s2<="0110000";s3<="1111110"; --110when"1000111" => s1 <="0110000";s2<="0110000";s3<="0110000"; --111when"1001000" => s1 <="0110000";s2<="0110000";s3<="1101101"; --112when"1001001" => s1 <="0110000";s2<="0110000";s3<="1111001"; --113when"1001010" => s1 <="0110000";s2<="0110000";s3<="0110011"; --114when"1001011" => s1 <="0110000";s2<="0110000";s3<="1011011"; --115when"1001100" => s1 <="0110000";s2<="0110000";s3<="1011111"; --116when"1001101" => s1 <="0110000";s2<="0110000";s3<="1110000"; --117when"1001110" => s1 <="0110000";s2<="0110000";s3<="1111111"; --118when"1001111" => s1 <="0110000";s2<="0110000";s3<="1111011"; --119when"1010000" => s1 <="0110000";s2<="1101101";s3<="1111110"; --120 when others => s1 <="0000000";s2<="0000000";s3<="0000000"; --nullend case;case J iswhen"001" => j1 <="0110000"; j2 <="0110011";--1/4when"010" => j1 <="1101101"; j2 <="0110011";--2/4when"011" => j1 <="1111001"; j2 <="0110011";--3/4when"100" => j1 <="0110011"; j2 <="0110011";--4/4when"101" => j1 <="1111001"; j2 <="1111111";--3/8when"110" => j1 <="1011111"; j2 <="1111111";--6/8when others=>j1 <="0000000"; j2 <="0000000";--nullend case;case temp iswhen "0000" => b <=j1; --"1111110"; --number0when "0001" => b <=j2; --"0110000"; -- 1when "0010" => b <="0000000"; --"1101101"; -- 2when "0011" => b <=s1; --"1111001"; -- 3when "0100" => b <=s2; --"0110011"; -- 4when "0101" => b <=s3; --"1011011"; -- 5when others => b <="0000000";end case;elseb<="0000000";end if;end process;--------shumaguan number--------process(temp)beginif(clear='1')thencase temp iswhen "0000"=>cat<="111110";when "0001"=>cat<="111101";when "0010"=>cat<="111011";when "0011"=>cat<="110111";when "0100"=>cat<="101111";when "0101"=>cat<="011111";when others=>cat<="111111";end case;elsecat<="111111";end if;end process;end a;节奏类型计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pace isport(sw,clear :in std_logic;J:out std_logic_vector(2 downto 0));end pace;architecture a of pace issignal J_tmp:std_logic_vector(2 downto 0);beginprocess(sw)beginif clear='0'thenJ_tmp<="001";elseif(sw'event and sw='1')then if J_tmp="110" thenJ_tmp<="001";elseJ_tmp<=J_tmp+1;end if;end if;end if;end process;J<=J_tmp;end a;Led灯library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Led isport(speed,clear:in std_logic;J :in std_logic_vector(2 downto 0);V1,V2,V3:out std_logic);--LEDsend Led;architecture a of Led issignal s:integer range 0 to 23; --6/8 beginprocess(speed)beginif clear='0' thenV1<='0';V2<='0';V3<='0';elsif (speed'event and speed='1')then case J iswhen "001"=> --1/4 Scase s iswhen 0|1 =>V1<='1';V2<='0';V3<='0';when others=> V1<='0';V2<='0';V3<='0'; end case;if s>=3 thens<=0;elses<=s+1;end if;when "010"=>--2/4 S-Wcase s iswhen 0|1 =>V1<='1';V2<='0';V3<='0';when 4|5 => V1<='0';V2<='0';V3<='1';when others=> V1<='0';V2<='0';V3<='0';end case;if s>=8 thens<=0;elses<=s+1;end if;when "011"=>--3/4 S-W-Wcase s iswhen 0|1 =>V1<='1';V2<='0';V3<='0';when 4|5|8|9 => V1<='0';V2<='0';V3<='1'; when others=> V1<='0';V2<='0';V3<='0';end case;if s>=12 thens<=0;elses<=s+1;end if;when "100"=>--4/4 S-W-RS-Wcase s iswhen 0|1=> V1<='1';V2<='0';V3<='0';when 4|5|12|13=> V1<='0';V2<='0';V3<='1'; when 8|9=> V1<='0';V2<='1';V3<='0';when others=> V1<='0';V2<='0';V3<='0';end case;if s>=16 thens<=0;elses<=s+1;end if;when "101"=>--3/8 S-W-Wcase s iswhen 0 =>V1<='1';V2<='0';V3<='0';when 2|4 => V1<='0';V2<='0';V3<='1';when others=>V1<='0';V2<='0';V3<='0';end case;if s>=6 thens<=0;elses<=s+1;end if;when "110"=>--6/8 S-W-W RS-W-Wcase s iswhen 0 =>V1<='1';V2<='0';V3<='0';when 2|4|8|10 => V1<='0';V2<='0';V3<='1';when 6=> V1<='0';V2<='1';V3<='0';when others=>V1<='0';V2<='0';V3<='0';end case;if s=12 thens<=0;elses<=s+1;end if;when others=>V1<='0';V2<='0';V3<='0';end case;end if;end process;end a;分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi isport(clk,clear :in std_logic;S:in std_logic_vector(6 downto 0);--81个速度,7位2进制数计数 speed,ms:out std_logic);end fenpinqi;architecture a of fenpinqi issignal clk_temp:std_logic;signal ms_temp:std_logic;signal s1:integer range 0 to 10000000; --40signal sms:integer range 0 to 12499;beginprocess(clk,clear)beginif clear='0' thenclk_temp<='0';ms_temp<='0';elsif clk'event and clk='1'thenif sms=12499 thensms<=0;ms_temp<=not ms_temp; elsesms<=sms+1;end if;case S iswhen "1010000"=>if s1>=3333333 then -- 120p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001111"=>if s1>=3361344 then -- 119p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001110"=>if s1>=3389830 then -- 118p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001101"=>if s1>=3418803 then -- 117p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001100"=>if s1>=3448275 then -- 116p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001011"=>if s1>=3478260 then -- 115p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001010"=>if s1>=3508771 then -- 114p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001001"=>if s1>=3539823 then -- 113p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1001000"=>if s1>=3571428 then -- 112p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000111"=>if s1>=3603603 then -- 111p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000110"=>if s1>=3636363 then -- 110p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000101"=>if s1>=3669724 then -- 109p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000100"=>if s1>=3703703 then -- 108p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000011"=>if s1>=3738317 then -- 107p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000010"=>if s1>=3773584 then -- 106p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000001"=>if s1>=3809523 then -- 105p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "1000000"=>if s1>=3846153 then -- 104p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111111"=>if s1>=3883495 then -- 103p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111110"=>if s1>=3921568 then -- 102p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111101"=>if s1>=3960396 then -- 101p/s s1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111100"=>if s1>=4000000 then -- 100p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111011"=>if s1>=4040404 then -- 99p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111010"=>if s1>=4081632 then -- 98p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111001"=>if s1>=4123711 then -- 97p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0111000"=>if s1>=4166666 then -- 96p/ss1<=0;clk_temp<=not clk_temp;elses1<=s1+1;end if;when "0110111"=>if s1>=4210526 then -- 95p/ss1<=0;clk_temp<=not clk_temp;s1<=s1+1;end if;when "0110110"=>if s1>=4255319 then -- 94p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110101"=>if s1>=4301075 then -- 93p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110100"=>if s1>=4347826 then -- 92p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110011"=>if s1>=4395604 then -- 91p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110010"=>if s1>=4444444 then -- 90p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0110001"=>if s1>=4494382 then -- 89p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;when "0110000"=>if s1>=4545454 then -- 88p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101111"=>if s1>=4597701 then -- 87p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101110"=>if s1>=4651162 then -- 86p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101101"=>if s1>=4705882 then -- 85p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101100"=>if s1>=4761904 then --84p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101011"=>if s1>=4819277 then --83p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101010"=>if s1>=4878048 then --82p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101001"=>if s1>=4938271 then --81p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0101000"=>if s1>=5000000 then --80p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100111"=>if s1>=5063291 then --79p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100110"=>if s1>=5128205 then --78p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100101"=>if s1>=5194805 then --77p/ss1<=0;clk_temp<=not clk_temp; elses1<=s1+1;end if;when "0100100"=>if s1>=5263157 then --76p/s。

相关文档
最新文档