verelog闹钟设计
基于labviewd的闹钟设计

华侨大学厦门工学院目录1、设计实现的功能 (2)2、前面板设计 (2)3、程序框图设计 (3)3.1方案论证 (3)3.2总体设计 (5)3.3使用控件说明 (5)3.4 选出该方案的优缺点 (7)3.5 程序框图 (7)4.调试过程 (9)4.1调试中遇到的问题 (9)4.2解决方法: (10)4.3、调试结果 (10)5、结论 (11)6、致谢 (12)7、参考文献 (12)附录:课程设计成绩评定表....................................................... 错误!未定义书签。
1、设计实现的功能本次设计要完成一个十字路口交通信号灯的设计,这个交通信号灯系统能为行驶的车辆指示能否通行。
主要分为4个模式:禁止通行模式、常规通行模式、东西方向通行模式、南北方向通行模式。
这个交通路口每一个方向上的红绿黄灯按绿—黄—红的顺序循环,其中可人为根据当下路面情况设置通行(绿灯)的时间,等待通行(黄灯)的时间,禁止通行(红灯)的时间为绿灯与黄灯所输入时间之和。
当停止键按下时,循环停止。
信号灯按一定规律循环点亮。
每个循环包括四个阶段。
第一阶段:南北绿灯和东西红灯点亮,时间根据为输入值。
第二阶段:南北黄灯和东西红灯点亮第三阶段:南北红灯和东西绿灯点亮,第四阶段:南北红灯和东西黄灯点亮东、南、西、北四个方向分别放置一个时间显示器来显示离下一个信号到来的时间。
、特殊通行情况分为:禁止通行(红灯全亮)、东西方向通行模式(东西绿灯亮,南北红灯亮)、南北方向通行(南北绿灯亮,东西红灯亮)。
时间设置为人为手动输入。
用计数器产生以秒为单位的计时信号,再将产生的时间信号进行分段,每到一个时间段时系统进行相应的动作。
2、前面板设计前面板是VI的用户界面。
创建VI时,通常应先设计前面板,然后在前面板上创建输入/输出任务。
本课程设计需要用二十个指示灯、四个时间显示器、一个停止按键、一个菜单下拉列表、七个数值输入控件和一些仿真真实路面的线条。
vhdl课程设计(电子钟+闹铃)

数字钟的设计一.体系功效概述(一).体系实现的功效:1.具有“时”.“分”.“秒”的十进制数字显示(小时从00~ 23).2.具有手动校时.校分.校秒的功效.3.有准时和闹钟功效,可以或许在设定的时光发出闹铃声.4.能进行整点报时.从59分50秒起,每隔2秒发一次低音“嘟”的旌旗灯号,持续5次,最后一次为高音“嘀”的旌旗灯号.(二).各项设计指标:1.显示部分采取的6个LED显示器,从高位至低位分离显示时.分.秒.2.有一个设置调闹钟准不时光.正常时光的按钮,选择调的对象.3.有三个按钮分离调时.分.秒的时光.4.有一个按钮用作开启/封闭闹铃.5.别的须要两个时钟旌旗灯号来给体系供给脉冲旌旗灯号,使时钟和闹钟正常工作,分离为1Hz.1kHz的脉冲.二.体系构成以及体系各部分的设计1.体系构造描写//请求:体系(或顶层文件)构造描写,各个模块(或子程序)的功效描写;(一)体系的顶层文件:1、顶层文件图:(见下页)2、各模块的解释:(1).7个输入量clk_1khz.clk_1hz.key_slt.key_alarm.sec_set.min_set.hou r_set:个中clk_1khz为闹铃模块供给时钟,处理后能产生“嘟”.“嘀”和变更的闹铃声音;clk_1hz为计时模块供给时钟旌旗灯号,每秒计数一次;key_slt选择设置对象:准时或正常时光;key_alarm可以或许开启和封闭闹铃;sec_set.min_set.hour_set用于设置时光或准时,与key_slt相联系关系.各按键输出为脉冲旌旗灯号.(2).CNT60_A_SEC模块:这个模块式将clk_1hz这个时钟旌旗灯号进行60进制计数,并产生一个分钟的触发旌旗灯号.该模块能将当前计数值及时按BCD码的格局输出.将该输出接到两位LED数码后能不时显示秒的状况.经由过程alarm_clk可以选择设置对象为时光照样准时价.在设置时光模式上,key上的一个输入脉冲可以将clk的输入旌旗灯号加一.在设置准时模式上,key上的脉冲只修正准时价,不影响时光脉冲clk的状况.同时该模块具有两个输出口out_do.out_di来触发整点报时的“嘟”.“嘀”声音.(3).CNT60_A_MIN模块:这个模块式将CNT60_A_SEC的输出旌旗灯号进行60进制计数,并产生一个时位的触发旌旗灯号.该模块能将当前计数值及时按BCD码的格局输出.将该输出接到两位LED数码后能不时显示分的状况.经由过程alarm_clk可以选择设置对象为时光照样准时价.在设置时光模式上,key上的一个输入脉冲可以将clk的输入旌旗灯号加一.在设置准时模式上,key上的脉冲只修正准时价,不影响时光脉冲clk的状况.同时该模块具有三个输出口out_do.out_di.out_alarm来触发整点报时的“嘟”.“嘀”.闹铃声音.(4).CNT24_A_HOUR模块:这个模块式将CNT60_A_MIN的输出旌旗灯号做24进制计数.该模块能将当前计数值及时按BCD码的格局输出.将该输出接到两位LED数码后能不时显示时的状况.经由过程alarm_clk 可以选择设置对象为时光照样准时价.在设置时光模式上,key 上的一个输入脉冲可以将clk的输入旌旗灯号加一.在设置准时模式上,key上的脉冲只修正准时价,不影响时光脉冲clk的状况.同时该模块具有一个输出口out_alarm来触发整点报时的闹铃声音.(5).PWM_OUT模块:该模块为PWM产生模块,经由过程EN可开启和封闭PWM输出.模块依据CLK旌旗灯号二分频产生的高下音,并组合,能输出三种声音状况——“嘟”.“嘀”.闹铃.而该三种声音要被秒.分.时的输出触发才干输出PWM.(二)体系各个模块的VHDL程序:(1).CNT60_A_SEC模块:程序源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60_a_sec isport(clk,clr,enb: in std_logic;--clk:时钟输入旌旗灯号,clr:清零端,enb:使能端key: in std_logic;--输入按键脉冲,调剂闹铃准时或时光alarm_clk: in std_logic;--1:alarm 0:clk--设置模式选择:闹铃调节模式.时光调节模式qout_sl: out std_logic_vector(3 downto 0); --显示输出秒的低位qout_sh: out std_logic_vector(3 downto 0);--显示输出秒的高位co: out std_logic; --进位输出,触发分计数模块out_do: out std_logic;--在整点报时中输出“嘟”触发旌旗灯号out_di: out std_logic --在整点报时中输出“嘀”触发旌旗灯号);end;architecture a of cnt60_a_sec issignal qout2_l:std_logic_vector(3 downto 0);signal qout2_h:std_logic_vector(3 downto 0);signal alarm_l:std_logic_vector(3 downto 0);signal alarm_h:std_logic_vector(3 downto 0);signal clk1,clk2,tclk,aclk,ac_slt: std_logic;beginprocess(alarm_clk) --当该端口输入一个脉冲时,修正设置模式:时光调剂或闹铃模式切换beginif alarm_clk'event and alarm_clk='1' thenif ac_slt='0' then--假如为准时模式,将改为闹铃模式ac_slt<='1';elseac_slt<='0';end if;end if;end process;process(key,clk,ac_slt)--依据设置模式,处理key上的脉冲旌旗灯号beginif ac_slt='0' then --时光调剂模式aclk<='0';if clk='1' and key='1' then --clk=1则tclk<=0,经由过程挖洞方法添加一个脉冲tclk<='0';elsif clk='0' and key='1' then --clk=0,则tclk<=1,产生一个高电平,添加一脉冲tclk<='1';elsetclk<=clk;end if;elsif ac_slt='1' then --闹铃调剂模式tclk<=clk;aclk<=key; --key上的脉冲直接修正闹铃准时价end if;end process;process(tclk,clr,enb) --60进制计数,个位.十位放在两个暂时变量中,暗示秒的状况beginif clr='1' then--clearing works at the state of high voltageqout2_l<="0000";qout2_h<="0000";elsif tclk'event and tclk='1' thenif enb='1' then--enable works at high voltageif qout2_l="1001" and qout2_h="0101" thenqout2_l<="0000";--a full mode is completed and a carryout is generatedqout2_h<="0000";elsif qout2_l="1001" thenqout2_l<="0000";qout2_h<=qout2_h+1;elseqout2_l<=qout2_l+1;-- in process of countingend if;end if;end if;end process;process(aclk,clr,enb)--修正闹铃的准时价if clr='1' then--clearing works at the state of high voltagealarm_l<="0000";alarm_h<="0000";elsif aclk'event and aclk='1' thenif enb='1' then--enable works at high voltageif alarm_l="1001" and alarm_h="0101" thenalarm_l<="0000";--a full mode is completed and a carryout is generatedalarm_h<="0000";elsif alarm_l="0101" thenalarm_l<="0000";alarm_h<=alarm_h+1;elsealarm_l<=alarm_l+1;-- in process of countingend if;end if;end if;end process;process(qout2_l,qout2_h,alarm_l,alarm_h,alarm_clk)-- 产生进位,显示时光或闹铃准时价if qout2_l="0000" and qout2_h="0000" thenco<='1';elseco<='0';end if;if ac_slt='0' then -- 显示时光qout_sl<=qout2_l;qout_sh<=qout2_h;else -- 显示准时价qout_sh<=alarm_h;qout_sl<=alarm_l;end if;end process;process(qout2_l,qout2_h) -- 依据秒的状况输出“嘟”.“嘀”触发旌旗灯号beginif qout2_h="0101" thenif qout2_l="0000" thenout_do<='1';elsif qout2_l="0010" thenout_do<='1';elsif qout2_l="0100" then out_do<='1';elsif qout2_l="0110" then out_do<='1';elsif qout2_l="1000" then out_do<='1';elseout_do<='0';end if;elsif qout2_h="0000" then if qout2_l="0000" then out_di<='1';out_do<='0';elseout_di<='0';end if;elseout_do<='0';out_di<='0';end if;end process;end;(2).CNT60_A_MIN模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60_a_min isport(clk,clr,enb: in std_logic;--clk:时钟输入旌旗灯号,clr:清零端,enb:使能端key: in std_logic;--输入按键脉冲,调剂闹铃准时或时光alarm_clk: in std_logic;--1:alarm 0:clk--设置模式选择:闹铃调节模式.时光调节模式qout_ml: out std_logic_vector(3 downto 0);--显示输出分的低位qout_mh: out std_logic_vector(3 downto 0);--显示输出分的高位co: out std_logic; --进位输出,触发时计数模块out_alarm:out std_logic;--闹铃触发旌旗灯号,时光到后输出高电平触发闹铃out_do,out_di: out std_logic--在整点报时中输出“嘟”“嘀”触发旌旗灯号);end;architecture a of cnt60_a_min issignal qout2_l:std_logic_vector(3 downto 0);signal qout2_h:std_logic_vector(3 downto 0);signal alarm_l:std_logic_vector(3 downto 0);signal alarm_h:std_logic_vector(3 downto 0);signal clk1,clk2,tclk,aclk,ac_slt: std_logic;beginprocess(alarm_clk)--当该端口输入一个脉冲时,修正设置模式:时光调剂或闹铃模式切换beginif alarm_clk'event and alarm_clk='1' thenif ac_slt='0' then--假如为准时模式,将改为闹铃模式ac_slt<='1';elseac_slt<='0';end if;end if;end process;process(key,clk,ac_slt)--依据设置模式,处理key上的脉冲旌旗灯号beginif ac_slt='0' then --时光调剂模式aclk<='0';if clk='1' and key='1' then--clk=1则tclk<=0,经由过程挖洞方法添加一个脉冲tclk<='0';elsif clk='0' and key='1' then--clk=0,则tclk<=1,产生一个高电平,添加一脉冲tclk<='1';elsetclk<=clk;end if;elsif ac_slt='1' then --闹铃调剂模式tclk<=clk;aclk<=key;--key上的脉冲直接修正闹铃准时价end if;end process;process(tclk,clr,enb) --60进制计数,个位.十位放在两个暂时变量中,暗示分的状况beginif clr='1' then--clearing works at the state of high voltageqout2_l<="0000";qout2_h<="0000";elsif tclk'event and tclk='1' thenif enb='1' then--enable works at high voltageif qout2_l="1001" and qout2_h="0101" thenqout2_l<="0000";--a full mode is completed and a carryout is generatedqout2_h<="0000";elsif qout2_l="1001" thenqout2_l<="0000";qout2_h<=qout2_h+1;elseqout2_l<=qout2_l+1;-- in process of countingend if;end if;end if;end process;process(aclk,clr,enb)--修正闹铃的准时价beginif clr='1' then--clearing works at the state of high voltagealarm_l<="0000";alarm_h<="0000";elsif aclk'event and aclk='1' thenif enb='1' then--enable works at high voltageif alarm_l="1001" and alarm_h="0101" thenalarm_l<="0000";--a full mode is completed and a carryout is generatedalarm_h<="0000";elsif alarm_l="0101" thenalarm_l<="0000";alarm_h<=alarm_h+1;elsealarm_l<=alarm_l+1;-- in process of countingend if;end if;end if;end process;process(qout2_l,qout2_h,alarm_l,alarm_h,alarm_clk)-- 产生进位,显示时光或闹铃准时价of high voltagebeginif qout2_l="0000" and qout2_h="0000" thenco<='1';elseco<='0';end if;if ac_slt='0' thenqout_ml<=qout2_l;qout_mh<=qout2_h;elseqout_mh<=alarm_h;qout_ml<=alarm_l;end if;end process;process(qout2_l,qout2_h,alarm_l,alarm_h)–断定准时价与时光值相等,输出闹铃触发旌旗灯号beginif qout2_l=alarm_l and qout2_h=alarm_h thenout_alarm<='1';elseout_alarm<='0';end if;end process;process(qout2_l,qout2_h)-- 依据分的状况输出“嘟”.“嘀”触发旌旗灯号beginif qout2_l="1001" and qout2_h="0101" thenout_do<='1';elseout_do<='0';end if;if qout2_l="0000" and qout2_h="0000" thenout_di<='1';elseout_di<='0';end if;end process;end;(3).CNT24_A_HOUR模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24_a_hour isport(clk,clr,enb: in std_logic;--clk:时钟输入旌旗灯号,clr:清零端,enb:使能端key: in std_logic;--输入按键脉冲,调剂闹铃准时或时光alarm_clk: in std_logic;--1:alarm 0:clk--设置模式选择:闹铃调节模式.时光调节模式qout_hl: out std_logic_vector(3 downto 0);--显示输出时的低位qout_hh: out std_logic_vector(3 downto 0);--显示输出时的高位co: out std_logic;--进位输出out_alarm:out std_logi--闹铃触发旌旗灯号输出);end;architecture a of cnt24_a_hour issignal qout2_l:std_logic_vector(3 downto 0);signal qout2_h:std_logic_vector(3 downto 0);signal alarm_l:std_logic_vector(3 downto 0);signal alarm_h:std_logic_vector(3 downto 0);signal clk1,clk2,tclk,aclk,ac_slt: std_logic;beginprocess(alarm_clk)--当该端口输入一个脉冲时,修正设置模式:时光调剂或闹铃模式切换beginif alarm_clk'event and alarm_clk='1' thenif ac_slt='0' then--假如为准时模式,将改为闹铃模式ac_slt<='1';elseac_slt<='0';end if;end if;end process;process(key,clk,ac_slt)--依据设置模式,处理key上的脉冲旌旗灯号beginif ac_slt='0' then --时光调剂模式aclk<='0';if clk='1' and key='1' then--clk=1则tclk<=0,经由过程挖洞方法添加一个脉冲tclk<='0';elsif clk='0' and key='1' then--clk=0,则tclk<=1,产生一个高电平,添加一脉冲tclk<='1';elsetclk<=clk;end if;elsif ac_slt='1' then --闹铃调剂模式tclk<=clk;aclk<=key; --key上的脉冲直接修正闹铃准时价end if;end process;process(tclk,clr,enb)--24进制计数,个位.十位放在两个暂时变量中,暗示时的状况beginif clr='1' then--clearing works at the state of high voltageqout2_l<="0000";qout2_h<="0000";elsif tclk'event and tclk='1' thenif enb='1' then--enable works at high voltageif qout2_l="1001" thenqout2_l<="0000";--a full mode is completed and a carryout is generatedqout2_h<=qout2_h+1;elsif qout2_l="0011" and qout2_h="0010" thenqout2_l<="0000";qout2_h<="0000";elseqout2_l<=qout2_l+1;-- in process of countingend if;end if;end if;end process;process(aclk,clr,enb)--修正闹铃的准时价beginif clr='1' then--clearing works at the state of high voltagealarm_l<="0000";alarm_h<="0000";elsif aclk'event and aclk='1' thenif enb='1' then--enable works at high voltageif alarm_l="1001" thenalarm_l<="0000";--a full mode is completed and a carryout is generatedalarm_h<=qout2_h+1;elsif alarm_l="0011" and alarm_h="0010" thenalarm_l<="0000";alarm_h<="0000";elsealarm_l<=alarm_l+1;-- in process of countingend if;end if;end if;end process;process(qout2_l,qout2_h,alarm_l,alarm_h,alarm_clk)-- 产生进位,显示时光或闹铃准时价of high voltagebeginif qout2_l="0000" and qout2_h="0000" thenco<='1';elseco<='0';end if;if ac_slt='0' thenqout_hl<=qout2_l;qout_hh<=qout2_h;elseqout_hh<=alarm_h;qout_hl<=alarm_l;end if;end process;process(qout2_l,qout2_h,alarm_l,alarm_h)--准时价与时光值相等,则输出闹钟触发旌旗灯号beginif qout2_l=alarm_l and qout2_h=alarm_h thenout_alarm<='1';elseout_alarm<='0';end if;end process;end;2.体系以及各个模块的仿真波形(1).体系仿真波形:注:因为下面的模块仿真消失毛刺,导致体系的仿真图有必定的问题.(2).CNT60_A_SEC模块:注:在50.52.54.56.58处有嘟触发输出,00处有嘀触发输出等.(3).CNT60_A_MIN模块:注:本图展现了按键调节时光值和准时价的仿真波形(部分仿真图).注:该模块的仿真波形图,具有嘟.嘀声音触发输出,准时与时光相等时有闹铃触发输出等.(4).CNT24_A_HOUR模块注:该模块的仿真图,包含按键调剂时光.准时价,闹钟触发输出等.(5).PWM_OUT模块(分三段剪切下来的,展现了三种声音的后果)(1).“嘟”.“嘀”输出波形(只有在en有脉冲,打开PWMO后,才有用)注:在打开输出后,当两路嘟.嘀触发输入同时有用时分离输出嘟.嘀声音.当两路闹铃触发同时有用时开端闹铃声音的输出.注:闹铃输出的变更情形(“嘀”.“嘟”瓜代发声).注:闹铃输出的变更情形.3.下载时选择的开辟体系模式以及管脚界说表1 GW48-CK开辟体系工作模式:3三.课程设计过程中碰到的问题以及解决办法主如果在“调剂时光”和“调剂准时”的上面碰到异常大的艰苦.与开端想象的不一样,一个过程中不克不及参加时钟旌旗灯号,没可以或许将按键脉冲直接与时钟脉冲进行累加.同时,在对VHDL的语法的熟习上也消费了大量的时光.最后的解决办法是,经由过程另一个过程,先将这两个旌旗灯号进行处理后,分离产生aclk和tclk分离为准时调剂部分.和时光调剂部分供给时钟旌旗灯号.调剂按键的脉冲旌旗灯号和正常的时钟旌旗灯号不是按照简略的或运算来处理的.1).假如要调剂时光:1、当时钟旌旗灯号是高电平,按键旌旗灯号也是高电日常平凡,则给tclk赋值0.2、当时钟旌旗灯号是高电平,按键旌旗灯号是低电日常平凡,则给tclk赋值1.3、当时钟旌旗灯号是低电平,按键旌旗灯号是高电日常平凡,则给tclk赋值1.4、当时钟旌旗灯号是低电平,按键旌旗灯号是低电平是,则给tclk赋值0.如许无论按键脉冲是在高电平照样低电平,或者是在高下电平两种状况下消失,其最终成果都是会多产生一个脉冲旌旗灯号,导致计数值变更,达到修正时光的目标.时代,aclk始终不变.2).假如要调剂准时:1.时钟输入旌旗灯号赋值给tclk2.按键输入旌旗灯号赋值给aclk如许,当按键脉冲停止时,准时调剂旌旗灯号会消失一个脉冲.而时钟旌旗灯号不受影响.别的,在闹铃产生上也碰到了一些小问题,最后,经由过程在产生周期较长的旌旗灯号,切换输出值的内容“嘟”还有“嘀”,最后的后果就是“嘟”.“嘀”声音瓜代发出.在仿真时,大多半模块会消失毛刺,会导致最后的总仿真成果不是很乐不雅,会评脉冲的几个干扰加上去.这方面,我试图调了良久也没解决.不过因为在现实下载后照样相比较较正常的,仿真中的毛刺最后没有清除失落.。
【每周FPGA案例】至简设计系列_闹钟

【每周FPGA案例】⾄简设计系列_闹钟1.1 总体设计1.1.1 概述数字时钟是采⽤数字电路技术实现时、分、秒计时显⽰的装置,可以⽤数字同时显⽰时,分,秒的精确时间并实现准确校时,具备体积⼩、重量轻、抗⼲扰能⼒强、对环境要求⾼、⾼精确性、容易开发等特性,在⼯业控制系统、智能化仪器表、办公⾃动化系统等诸多领域取得了极为⼴泛的应⽤,诸如⾃动报警、按时⾃动打铃、时间程序⾃动控制、定时⼴播、⾃定启闭路灯、定时开关烘箱、通断动⼒设备、甚⾄各种定时电器的⾃动启⽤等。
与传统表盘式机械时钟相⽐,数字时钟具有更⾼的准确性和直观性,由于没有机械装置,其使⽤寿命更长。
1.1.2 设计⽬标设计⼀款具有闹钟功能的数字时钟,具体要求如下1、⽤8个数码管实现,四个⼀组,每组有分钟和秒。
左边⼀组是时间显⽰,右边⼀组⽤来做闹钟时间。
2、当左边时间等于右边时,蜂鸣器响5秒。
3、闹钟时间和显⽰时间均可通过3个按键设置。
设置⽅法:按下按键1,时钟暂停,跳到设置时间状态,再按下按键1,回到正常状态。
通过按键2,选择要设置的位置,初始设置秒个位,按⼀下,设置秒⼗位,再按下,设置分个位,以此类推,循环设置。
通过按键3,设置数值,按⼀下数值加1,如果溢出则重新变为0。
1.1.3 系统结构框图系统结构框图如下所⽰:结构图共分两个,如果使⽤的开发板上是矩阵键盘的时候,对应的结构图是图⼀。
如果使⽤的开发板上是普通按键的时候,对应的结构图是图⼆。
图⼀图⼆1.1.4模块功能按键检测模块实现功能1、将外来异步信号打两拍处理,将异步信号同步化。
2、实现20ms按键消抖功能,并输出有效按键信号。
矩阵键盘模块实现功能1、将外来异步信号打两拍处理,将异步信号同步化。
2、实现20ms按键消抖功能。
3、实现矩阵键盘的按键检测功能,并输出有效按键信号。
时间产⽣模块实现功能1、产⽣显⽰时间数据。
2、产⽣闹钟时间数据,3、根据接收到的不同的按键信号,产⽣暂停、开启、设置时间的功能。
闹钟的制作方法

闹钟的制作方法简介闹钟是用来提醒人们起床、工作或其他重要事物的设备。
随着科技的发展,现代闹钟已经具备了各种功能和样式。
本文将介绍一种简单的制作闹钟的方法,帮助您了解闹钟的基本原理和制作过程。
材料准备在开始制作闹钟之前,您需要准备以下材料:•电子钟芯模块•蜂鸣器•按钮开关•面包板•连接线•电池或电源适配器•钳子•螺丝刀•阻焊笔(可选)制作过程1. 设计连接电路首先,您需要设计一个连接电路,将电子钟芯模块、蜂鸣器和按钮开关连接起来。
您可以使用面包板来简化连接过程并方便调试。
连接步骤如下:1.在面包板上放置电子钟芯模块,注意插针方向。
2.使用连接线将蜂鸣器的正极(一般为红色)连接到电子钟芯模块对应的蜂鸣器引脚。
3.使用连接线将按钮开关的两个端口分别连接到电子钟芯模块的两个GPIO引脚。
4.使用连接线将电子钟芯模块的电源引脚连接到电池或电源适配器的正极,将地引脚连接到电池或电源适配器的负极。
注意:在连接电路之前,您可以使用阻焊笔涂抹在面包板的导线上,防止短路。
2. 安装全套电路将连接好的电路组件安装到合适的容器中。
您可以选择一个小盒子或者其他有足够空间的物体作为闹钟外壳。
安装步骤如下:1.使用钳子将电子钟芯模块轻轻固定在合适位置上。
2.将蜂鸣器安装在与电子钟芯模块相邻的位置上,使用螺丝刀固定。
3.将按钮开关安装在容器的侧面或者顶部,确保可以方便地触摸到。
4.将面包板放置在容器中的合适位置,确保电路连接不被压断。
3. 装配电源闹钟需要电源才能正常工作。
您可以选择使用电池或者电源适配器来为闹钟供电,根据您的需求选择最适合的方式。
装配电源步骤如下:1.如果使用电池供电,打开闹钟外壳,将电池插入电子钟芯模块的电池槽中。
确保正负极正确对应。
2.如果使用电源适配器供电,将适配器的电源插头插入闹钟外壳上的DC插座中。
4. 设置闹钟时间闹钟的最基本功能是在指定的时间触发蜂鸣器发出声音。
为了正确设置闹钟时间,您需要按照电子钟芯模块的说明书进行操作。
闹钟的制作方法步骤

闹钟的制作方法步骤闹钟是我们日常生活中常用的物品,它能够在特定的时间发出响亮的声音,提醒我们起床、做事或者其他重要的时间安排。
如果你对电子制作有一定的兴趣,那么不妨尝试亲手制作一台闹钟。
下面,我将为大家介绍闹钟的制作方法步骤。
材料准备。
首先,我们需要准备一些基本的材料,包括电子元件和工具。
电子元件包括主控芯片、显示屏、按键、蜂鸣器、电池盒等。
工具包括焊接工具、螺丝刀、剪线钳等。
确保所有的材料都是质量可靠的,以确保制作出来的闹钟能够正常运行。
电路设计。
接下来,我们需要进行电路设计。
根据闹钟的功能需求,设计出相应的电路图。
主要包括时钟模块、显示模块、按键模块、报警模块等。
在设计电路时,需要考虑电路的稳定性、可靠性和耐用性,确保电路能够长时间稳定运行。
焊接组装。
当电路设计完成后,就可以进行焊接组装工作了。
根据电路图,将各个电子元件进行焊接,组装成一个完整的电路板。
在焊接过程中,需要注意焊点的质量和连接的稳固性,确保电路板能够正常工作。
程序编写。
完成电路焊接组装后,就需要进行程序编写工作了。
根据闹钟的功能需求,编写相应的程序代码,并将程序烧录到主控芯片中。
程序编写需要考虑时钟的精准性、显示的清晰性、按键的灵敏度以及报警的响亮度,确保闹钟能够准确、方便地使用。
调试测试。
完成程序编写后,就可以进行调试测试了。
将电池安装到电池盒中,连接电路板,开机测试。
测试包括时钟的走时准确性、显示的清晰度、按键的灵敏度以及报警的响亮度等。
如果发现问题,需要及时调整和修正,直到闹钟能够正常运行。
外壳装配。
最后,将调试好的电路板安装到外壳中。
外壳可以是塑料外壳、金属外壳或者其他材质的外壳。
确保外壳能够保护电路板,并且方便用户使用。
安装外壳时,需要考虑外壳的美观性、实用性和稳固性,确保闹钟外观整洁、结实耐用。
通过以上的步骤,我们就可以成功制作出一台功能完善的闹钟了。
制作闹钟不仅可以锻炼我们的动手能力和创造力,还可以让我们更加深入地了解电子制作的原理和技术。
带定时功能的闹铃时钟设计 (3)

课程设计任务书带定时功能的闹铃时钟设计摘要:本设计是根据单片机带定时功能的闹铃时钟设计。
单片机是在一块半导体芯片上集成了CPU、存储器以及输入和输出接口电路的微型计算机,其集成度高、功能强、通用性好,并且市场利润率高。
而51单片机是各单片机中最为典型和最有代表性的一种。
本次设计的定时闹钟在硬件方面,采用了AT89S52芯片,用4位共阳极数码管来进行显示,LED用P1口进行驱动,采用的是动态扫描,能够比较准确的显示时间。
电源电路主要是由变压器、桥堆、电容、稳压管2W10D、电阻、发光二极管等元件构成,由电容和晶振等构成时钟电路,一个开关和电容电阻接上电源构成了复位电路,然后通过S1、S2、S3和S4四个功能按键可以进行对时间的调整和定时,定时时间到后蜂鸣器发出响声。
在软件方面采用汇编语言编程,整个系统能完成时间的显示、调时和定时、复位等功能,并通过仿真后得到正确的结果。
关键词:电源电路定时闹钟时钟电路AT89S52目录1.设计背景 (1)2.设计方案 (2)2.1定时闹钟的系统设计 (2)2.2定时闹钟的硬件和软件 (2)2.3时钟设计方案 (3)2.4数码管显示方案 (3)3. 方案实施 (4)3.1单片机的功能 (4)3.2电路模块 (6)3.3电路原理图 (10)3.4程序设计 (10)3.5系统仿真 (10)4. 结果与结论 (11)4.1设计结果 (11)4.2结论 (11)5. 收获与致谢 (12)6. 参考文献 (13)7. 附件 (14)附件1电路图 (14)附件2程序原代码 (14)附件3流程图 (23)附件4实物图 (25)附件5元件清单 (25)1.设计背景单片机就是在一块半导体硅片上集成了中央处理器(CPU),存储器(RAM,ROM),并行I/O口,串行I/O口,定时器/计数器,中断系统,系统时钟电路及系统总线的微型计算机。
其集成度高,功能强,通用性好,因此受到人们的广泛关注和信赖。
闹钟设计

闹钟设计1.设计目的学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
2.设计要求设计一个钟表。
在数码管上显示时间。
定时时间到,屏幕显示“get up!”字符串。
显示同时,流水灯闪烁,蜂鸣器响1秒钟。
3.设计思路本设计以唐都仪实验箱为载体,结合中断控制器8259A、并行接口8255、中断定时器8253、七段数码显示管LED及八个发光二极管的功能,用汇编语言编程实现了闹钟设计的实验。
闹钟的总体设计原理是:首先利用定时芯片8253的定时作用定时计数,每10ms开一次中断即8253计数18432次调用时间显示程序,数码管加1,毫秒部分加到99后清0向前进1 秒部分到显示59S过后变为0,执行此程序后8255就会工作,把时间在四个数码管上显示时间。
当数码管显示时间与拨动KK1开关设置的定时时间相同时。
在程序里面设置了一个蜂鸣器标志变量和流水灯标志变量,当变量为0的时候,表明蜂鸣器没有响,当变量为1的时候,表明蜂鸣器正在发声。
每次秒钟加一之前,检测蜂鸣器标志变量,当蜂鸣器变量为1时,就关闭蜂鸣器,并置蜂鸣器标志变量为0。
当秒钟加一之后,若当前设定时间与实时时间相同,就开启蜂鸣器,并置蜂鸣器标志变量为1。
流水灯相似,只是多了几个判断,分别显示四个流水灯亮。
在第一个流水灯亮时,屏幕显示“get up!”,流水灯闪烁,蜂鸣器响。
闹钟具体做法:时间显示程序要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,精确的时间延迟程序,第一二块数码管显示分位,第三四块显示秒位。
数码管显示一段时间60s后再跳回到初始位置00s,再显示,由此循环下去。
设置一个闹钟开关标志变量,用来调节闹钟有效性,当开关为1时,定时设置有效,为0则无效,定时时间为有效时的时间设置。
基于ProE的闹钟外观造型设计

摘要闹钟是人们日常生活中不可缺少的日用品,特别是现在市场上流行的工艺闹钟,更成为了人们买闹钟时的首选商品,本设计我们就以Pro/E软件的三维绘图对工艺闹钟进行造型设计。
作为一种高效快捷的三维CAD/CAM软件,Pro/E功能强大,操作灵活,设计理念优越。
在闹钟设计过程中,首先分析了闹钟的发展情况、类型和结构,然后选定了研究对象,并确定了其结构、组成元件及相关尺寸,本文采用了由底向上的设计方法对闹钟的各个零件进行实体建模。
在完成零件的建模后,用Pro/E的虚拟装配功能对零部件进行了装配,并通过机构仿真模块进行了闹钟的干涉分析和运动仿真。
关键词:闹钟,Pro/E,装配,运动仿真The Appearance Of Alarm Clock Design Based on Pro/EAbstractAlarm Clock is an indispensable daily necessities in people’s daily life. Especially in market nowadays,the craft alarm clock is very popular.It has became people’s first choice when they want to buy an alarm clock.In this paper,we will design an alarm clock which is based on the software for three-dimensional graphics of Pro/E.As a highly effective and efficient CAD/CAM software,Pro/E is powerful, flexible operation,and the design concept is superior.During the process,we design the alarm clock.First,we analyze the development、type and structure of an alarm clock,and then selected the study object and determine its structure,composition and related components size,In this paper,we will choose the bottom-up design method for the solid modeling for the every parts of the alarm clock.After we complete the solid modeling,we use the virtual assembly functions of Pro/E to assemble components and modules,then do the alarm clock interference analysis and motion simulation through the body simulation.Keywords:Alarm Clock,Pro/E,Assembly,Simulation目录1绪论 (1)2设计任务 (1)3设计理念 (1)3.1钟表的发展状况 (2)3.2钟表的分类和基本工作原理 (3)3.3选择钟表的类型 (3)3.4确定工艺闹钟的元件 (4)4实体建模 (4)4.1工艺闹钟上盖设计 (4)4.2下盖的绘制 (9)4.3表盘的绘制 (10)5闹钟的装配 (10)6运动仿真 (12)6.1进入机构模块 (13)6.2设置驱动、定义伺服电动机 (13)6.3创建并运行运动分析 (14)6.4进行干涉检验、结果回放及捕捉 (15)7结束语 (17)致谢 (17)参考文献 (18)附图 (19)英文文献名称(计算机辅助设计、计算机辅助制造及其应用)1绪论随着机械设计行业竞争的日益加剧和CAD/CAM技术的不断完善,三维设计技术已经发展到了一个很高的阶段,它为工程技术人员提高设计效率和产品质量做出了很大的贡献,所以现在Pro/E、UG、Solidworks等一系列三维CAD/CAM 软件应用日益广泛,并逐渐渗透到产品设计全过程中,作为一种流行的高端三维CAD/CAM软件,Pro/E功能强大,操作灵活,设计理念优越[1]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • •
• •
按键编码器
• module anjianbianma(clkout,set,TIME,alarm,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,hour_s,hour_g,minute_s,minute_g);
• • • • • •
• • • • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • end
else if(s0==1) begin S<=0;count<=count+1; end else if(s1==1) begin S<=1;count<=count+1; end else if(s2==1) begin S<=2;count<=count+1; end else if(s3==1) begin S<=3;count<=count+1; end else if(s4==1) begin S<=4;count<=count+1; end else if(s5==1) begin S<=5;count<=count+1; end else if(s6==1) begin S<=6;count<=count+1; end else if(s7==1) begin S<=7;count<=count+1; end else if(s8==1) begin S<=8;count<=count+1; end else if(s9==1) begin S<=9;count<=count+1; end else begin S<=S;count<=0; end
分频器
• • • • • • • • • • • • • • //分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1000hz的信号,作为 显示器的输入信号。 module fenpinqi(clk,clkout); input clk; output clkout; reg clkout; reg [31:0] count; reg clk_En; always @(posedge clk ) begin count <= (count == 32'd1) ? 32'd0 : (count + 32'd1);//分频系数49999. clk_En <= (count == 32'd1) ? 1'd1 : 1'd0; clkout <= clk_En; end endmodule
ห้องสมุดไป่ตู้
if(count==4) count<=0;
case(count) 3'b000: begin minute_g<=minute_g; minute_s<=minute_s; hour_g<=hour_g; hour_s<=hour_s; end
default:begin
minute_g<=S; minute_s<=minute_g; hour_g<=minute_s; hour_s<=hour_g; end endcase
闹钟设计
• 小组成员:
赵亚 简虎 王泽 卢成 潘楠楠 赵峰
作品简介
• 功能一:时钟计时 • 功能二:调整时间 • 功能三:闹钟
程序代码
• • • • • • • 顶层模块:naozhong 按键编码器:anjianbianma 计时器:jishiqi 闹钟:clock 分频器:fenpinqi 显示器:LED 控制器:kongzhiqi
end endmodule
计时器
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • //为仿真需要,此处没有分频。 module jishiqi(clk,set,TIME,alarm,time_h_s,time_h_g,time_m_s,time_m_g,hour_s,hour_g,minute_s,minute_g); input clk,set,TIME,alarm; input[3:0] hour_s,hour_g,minute_s,minute_g; output[3:0] time_h_s,time_h_g,time_m_s,time_m_g; reg[3:0] time_h_s,time_h_g,time_m_s,time_m_g; reg[5:0] Second; reg[25:0] count; reg clk_En,cin_m,cin_h; reg R; always@(posedge clk) begin // count=(count==25'd49999999)?25'd0:(count + 25'd1);//分频系数 49,999,999. // clk_En=(count==25'd49999999)?1'd1:1'd0; // if(clk_En) // begin if(set==1) R<=1; if(R==0) begin if(Second<59) Second<=Second+1; if(Second==59) begin Second<=0; cin_m<=1; end if(cin_m==1) begin if(time_m_g==9) begin
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
if(time_m_s==5) begin time_m_s<=0; time_m_g<=0; cin_m<=0; cin_h<=1; end else begin time_m_s<=time_m_s+1; time_m_g<=0; cin_m<=0; end end else begin time_m_g<=time_m_g+3'd1; cin_m<=0; end end if(cin_h==1) begin if(time_h_s==2) begin if(time_h_g==4) begin time_h_s<=0; time_h_g<=0; cin_h<=0;
input clkout,set,TIME,alarm,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9; output[3:0] hour_s,hour_g,minute_s,minute_g; reg[3:0] hour_s,hour_g,minute_s,minute_g; reg R; reg[2:0] count; reg[3:0] S;
顶层模块
• • • • • • • module naozhong(clk,set,TIME,alarm,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,led1,led2,led3,led4,fengming,led_in1,led_in2,led_in3,led_in4); input clk,set,TIME,alarm,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9; output[6:0] led1,led2,led3,led4,fengming; output[3:0] led_in1,led_in2,led_in3,led_in4; wire clkout; wire[6:0] led1,led2,led3,led4; wire[3:0] time_h_s,time_h_g,time_m_s,time_m_g,clock_h_s,clock_h_g,clock_m_s,clock_m_g,hour_s,hour_g,minute_s,minute_g,led_in1,led_in2, led_in3,led_in4; wire fengming; fenpinqi a1(clk,clkout); anjianbianma b1(clk,set,TIME,alarm,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,hour_s,hour_g,minute_s,minute_g); clock c1(clk,set,TIME,alarm,hour_s,hour_g,minute_s,minute_g,clock_h_s,clock_h_g,clock_m_s,clock_m_g); jishiqi d1(clk,set,TIME,alarm,time_h_s,time_h_g,time_m_s,time_m_g,hour_s,hour_g,minute_s,minute_g); kongzhiqi e1(clk,set,TIME,alarm,time_h_s,time_h_g,time_m_s,time_m_g,clock_h_s,clock_h_g,clock_m_s,clock_m_g,hour_s,hour_g,minute_s,min ute_g,led_in1,led_in2,led_in3,led_in4,fengming); LED f1(clkout,led_in1,led_in2,led_in3,led_in4,led1,led2,led3,led4); endmodule