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]。
基于Verilog HDL的闹钟设计

封面删除~你懂的摘要随着微电子技术、计算机技术、半导体技术的发展,很多传统的数字门电路的设计已经被可编程逻辑器件替代。
而对于传统的模拟控制技术,也被数字控制系统所取代。
数字系统在各个领域显示出了无穷的魅力与优势,如今已经被广泛应用于实际工程中。
本文利用Verilog HDL 语言自顶向下的设计方法设计多功能数字钟, 实现时、分、秒的计时和校时,以及整点报时和闹钟的功能。
突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点, 并通过ModelSim SE 6.5 完成综合、仿真。
通过Verilog HDL语言完成数字钟的层次化设计。
关键词:数字电子时钟,有限状态机,功能仿真AbstractAs the microelectronics, computer technology, semiconductor technology, many traditional design of digital gate programmable logic device has been replaced. As for the traditional analog control, digital control systems have also been replaced. Digital systems in various fields has shown infinite charm and advantages, and now has been widely used in practical projects. In this paper, Verilog HDL, the design of top-down multi-functional digital clock designed to achieve the hours, minutes, seconds, time and school, as well as the whole point timekeeping and alarm functions. Highlighted as a hardware description language, good readability, portability and ease of understanding, etc., and through the ModelSim SE 6.5 complete the comprehensive, simulation. Completed by Verilog HDL, the level of the digital clock design.Key words: Digital electronic clock, finite state machine, functional simulation.目录第1章绪论 (1)1.1时钟的发展简史 (1)1.2设计目的 (1)1.3Verilog HDL硬件描述语言 (2)1.4Modelsim仿真工具 (5)第2章数字电路设计方法 (7)2.1数字系统设计简介 (7)2.2有限状态机 (9)第3章数字钟的层次化设计 (13)3.1功能要求 (13)3.2数字钟系统的工作原理 (13)3.3 模块的设计 (13)3.4程序设计 (14)第4章功能仿真 (19)4.1 仿真前准备 (19)4.2 功能仿真 (20)第5章总结 (23)参考文献 (26)第1章绪论1.1时钟的发展简史设计目的公元1300年以前,人类主要是利用天文现象和流动物质的连续运动来计时。
虚拟仪器课程设计报告(闹钟)

时间:2012/12/31签名:一、课程设计背景1.前言20多年前,美国国家仪器公司NI (National Instruments)提出“软件即是仪器”的虚拟仪器(VI)概念,引发了传统仪器领域的一场重大革命,使得计算机和网络技术得以长驱直入仪器领域,和仪器技术结合起来,从而开创了“软件即是仪器”的先河。
LabVIEW是NI推出的虚拟仪器开发平台软件,它们能够以其直观简便的编程方式、众多的源码级的设备驱动程序、多种多样的分析和表达功能支持,为用户快捷的构筑自己的实际生产中所需要的仪器系统创造了基础条件。
虚拟仪器由计算机、模块化功能硬件和应用软件三大部分组成,一般而言,虚拟仪器所用的计算机是通用的计算机,虚拟仪器根据其模块化功能硬件不同,而有多种构成方式。
其中NI—DAQ测试系统是构成虚拟仪器VI得最常用的最基本的方式,因为一般而言,这种类型的虚拟仪器成本比较低,它能充分利用计算机的设计能力,并通过软件实现对数据的显示、存储以及分析处理。
图1 虚拟仪器系统框架图2.工具软件简介令的先后顺序决定程序执行顺序,而LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。
VI指虚拟仪器,是LabVIEW 的程序模块。
LabVIEW是图形化编程语言,也是第三代的编程语言,LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。
用户界面在LabVIEW中被称为前面板。
使用图标和连线,可以通过编程对前面板上的对象进行控制。
这就是图形化源代码,又称G 代码。
LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。
定时闹钟的设计毕业设计

定时闹钟的设计毕业设计定时闹钟的设计毕业设计随着现代生活的快节奏发展,人们对时间的重视程度越来越高。
无论是工作、学习还是休闲娱乐,时间的合理规划和管理都变得至关重要。
在这个背景下,定时闹钟成为了人们生活中不可或缺的工具之一。
本文将探讨定时闹钟的设计,旨在提供一种创新的思路和方法,以满足人们对时间管理的需求。
一、市场调研在进行定时闹钟的设计之前,我们首先需要进行市场调研,了解人们对于闹钟的需求和使用习惯。
通过问卷调查、深入访谈等方式,我们可以获取到大量的数据和信息。
例如,人们对于闹钟的音量、铃声选择、操作便捷性等方面都有着不同的偏好。
在这个基础上,我们可以更好地理解用户需求,为设计定时闹钟提供指导。
二、功能设计基于市场调研的结果,我们可以设计出一款功能丰富的定时闹钟。
首先,闹钟应该具备可调节的音量和铃声选择功能,以满足不同用户的需求。
其次,闹钟应该具备多个闹铃设置的功能,用户可以根据自己的日程安排,设置不同的闹铃时间。
此外,闹钟还可以添加一些附加功能,如天气预报、日历提醒等,以提升用户的使用体验。
三、外观设计除了功能设计,外观设计也是定时闹钟设计的重要一环。
一个简约、美观的外观设计可以增加用户的购买欲望和使用愉悦感。
我们可以采用流线型的设计风格,使用优质的材料和工艺,打造出一款时尚、高端的定时闹钟。
同时,闹钟的显示屏可以采用LED背光技术,以提供更清晰、更舒适的视觉体验。
四、用户体验设计用户体验设计在定时闹钟的设计中起着至关重要的作用。
我们可以通过简化操作流程、提供友好的用户界面等方式,提升用户的使用体验。
例如,可以设计一个直观、易懂的设置界面,让用户可以轻松地设置闹钟时间和其他功能。
此外,我们还可以考虑添加一些智能化的功能,如语音控制、手机APP连接等,以进一步提升用户的便捷性和舒适度。
五、安全性设计在定时闹钟的设计中,安全性也是一个不可忽视的因素。
我们需要确保闹钟的电路设计合理,电池的使用安全可靠。
fpga课程设计定时闹钟

fpga课程设计定时闹钟一、教学目标本章节的教学目标旨在让学生了解和掌握FPGA技术在定时闹钟领域的应用。
通过本章节的学习,学生应能够:1.理解FPGA的基本概念和特性;2.掌握FPGA定时闹钟的设计原理和流程;3.熟悉FPGA编程语言和开发工具;4.能够独立完成FPGA定时闹钟的设计和实现。
二、教学内容本章节的教学内容主要包括以下几个部分:1.FPGA的基本概念和特性:介绍FPGA的定义、发展历程、主要性能指标等;2.FPGA定时闹钟的设计原理:讲解定时闹钟的工作原理、设计思路和关键技术;3.FPGA编程语言和开发工具:介绍FPGA编程语言(如VHDL、Verilog等)的基本语法和常用开发工具(如ISE、Vivado等);4.FPGA定时闹钟的设计和实现:通过实例分析,讲解如何使用FPGA编程语言和开发工具实现定时闹钟功能。
三、教学方法为了提高学生的学习兴趣和主动性,本章节将采用以下教学方法:1.讲授法:讲解FPGA的基本概念、特性、定时闹钟的设计原理等;2.案例分析法:通过分析实际案例,让学生了解FPGA定时闹钟的设计和实现过程;3.实验法:安排实验室实践环节,让学生动手操作,实际编写FPGA程序并验证定时闹钟功能;4.讨论法:学生进行小组讨论,分享学习心得和设计经验,互相促进。
四、教学资源为了支持本章节的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的FPGA教材,为学生提供系统性的学习资料;2.参考书:推荐一些FPGA领域的经典著作,供学生拓展阅读;3.多媒体资料:制作PPT、视频等多媒体资料,辅助讲解和展示FPGA相关概念和实例;4.实验设备:提供FPGA开发板、编程器等实验设备,让学生进行实际操作。
五、教学评估本章节的教学评估将采取多元化方式,以全面、客观、公正地评估学生的学习成果。
评估方式包括:1.平时表现:评估学生在课堂上的参与度、提问回答、小组讨论等表现;2.作业:布置相关的FPGA设计作业,评估学生的设计思路、代码质量和解决问题能力;3.实验报告:评估学生在实验环节的操作技能、数据分析和总结能力;4.考试:安排期末考试,测试学生对FPGA定时闹钟知识的掌握程度。
12小时制任意点定时数字闹钟设计方案

分别用2个或非门接到分和秒的各输出个节点处,再用一个与非门与报时灯,当输出同时为零时,即整点时,报时灯就亮了,起到报时功能。本实验使用LED发光(1s),其电路图如下:
图4
2.5电路调试
调试这部分工作在EWB仿真软件上进行。对于电路的调试应该分为几个部分,分别对电路各个部分的功能都进行调试,之后,每连接一部分都要调试一次。
2.6数字钟的构成
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路.由于计数的起始时间不可能与标准时间(如时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定.通常使用石英晶体振荡器电路构成数字钟
2.6.1晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路.
用单片机的另一个优点是设计软件将不断积累,不断模块化,形成标准化软件,大大提高了开发效率。
数字电子钟的设计方法有很多种,例如可以用中小规模的集成电路组成电子钟;也可以用专用的电子钟芯片配以显示电路及所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟。这些方法各有特点,其中利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可以使用该电电子钟发出控制信号。
2.6.4译码驱动电路
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。
2.6.5数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。
2.7设计方案
2.7.1晶体振荡器电
晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定.通CMOS非门构成的输出为方波的数字式晶体振荡电路,这个电路中,CMOS非门U1与晶体,电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波.输出反馈电 阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器.电容C1,C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能.由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。晶体XTAL的频率选为32768HZ.该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。
课程设计 proe绘制三维闹钟

唐立亨02241. 打开Pro/e 4.0 软件,设置工作目录。
打开【新建】按钮,在弹出的新建对话框中设置如下图1(选择【零件】建模方式,设置【名称】,选择【不使用缺省模板】命令,点击【确定】),在弹出的对话框中,选择【以毫米建模方式mmns_part_solid 】,如下图2,点击【确定】。
图1 图22. 如下图3 ,进入零件建模界面。
首先打开右侧基准工具栏中的【拉伸】工具,弹出拉伸工具界面对话框,选择【放置——定义】,弹出【草绘】对话框,以FRONT 面为基准平面。
具体设置如下图3。
图33. 用右侧工具栏中【创建圆】工具,在中心画一圆,用鼠标指向【尺寸数字】,待数字变蓝色之后双击,设置直径数字为50,如下图4图44. 单击右侧【√】按钮,如下图5;选择在缺省模式下观察实体,如下图6;回到拉伸界面对话框,选择【对称式拉伸】,拉伸长度为5,如图7。
图5 图6图75. 点击右下角【√】,完成。
在缺省模式下观看如下图8 。
图86. 单击右侧基准工具栏中的【倒角工具】按钮,选择倒角方式为【D1*D2】,选择要倒角的边,双击实体上尺寸数字,更改尺寸(黄色数字为更改后的)如图9。
图97. 单击【√】完成倒角特征创建。
在缺省模式下观看如下图10:图108. 单击右侧基准工具栏中的【拉伸工具】,在弹出的对话框中点击【放置——定义】,弹出【草绘】对话框,选择闹钟最前面为基准平面,方向向右,设置如下图11图119. 在无隐藏线的情况下草绘,如图12;用【创建圆】工具在中心画圆,双击调整直径尺寸为46,设置如下图13图12图1310. 点击【√】按钮完成草绘。
在缺省状态下观察,图14。
点击拉伸对话框中【去除材料】按钮,调整方向,修改尺寸为 2 ,单击【√】完成,图15。
点击【着色】按钮,进行实体观察。
图16图14 图15图1611. 绘制闹钟的铃铛和脚。
单击右侧基准工具栏中的【扫描工具】按钮,在弹出的对话框中,选择FRONT面为草绘平面。
定时闹钟设计 课程设计报告

按时闹钟设计之马矢奏春创作摘要:本设计目的是利用单片机设计制作一个简易的按时闹铃时钟,可以放在宿舍或教室使用,在夜晚或黑暗的场所也可以使用.可以设置现在的时间以及闹铃的时间而且显示出来,若时间到则发出一阵声响.本次设计的按时闹钟在硬件方面就采纳了AT89C52芯片,用6位LED数码管进行显示.LED用P0口进行驱动,采纳的是静态扫描显示,能够比力准确显示时时—分分—秒秒.通过五个功能按键可以实现对时间的修改、按时和闹铃终止,闹钟设置的时间到时蜂鸣器可以发作声响.在软件方面用C51编程.整个按时闹钟系统能完成时间的显示,调时和设置闹钟、停止响铃等功能,并经过系统仿真后获得了正确的结果.关键词:按时闹钟;蜂鸣器;AT89C52;74HC245;目录第1章绪论11.2.1设计要求:11.2.2设计任务:1第2章系统总体设计2系统设计需求总体设计方案第3章系统硬件设计43.2.3 74HC245芯片7??????LED显示模块????????按键模块??第4章系统软件设计11第5章系统测试13??测试环境??????测试步伐??????测试环境的构建??结论15致谢16参考文献17附录18第1章绪论本次课程设计的主题是按时闹钟,其基础部份是一个数字钟.电路系统由秒信号发生器、“时、分、秒”计数器、显示器组成.其中秒信号发生器是整个系统的时基信号,它直接决定计时系统的精度,这里用51单片机的按时器来实现.利用按时器获得每一秒的时刻,然后在法式中,我们就可以给秒进行逐秒赋值,满60秒则进位为1分,满60分则进位为1小时,满24小时则时间重置实现一天24小时的循环.译码显示电路将“时”、“分”、“秒”计数器的输出状态送到七段显示译码器译码,通过一个六位八段数码管显示出来.这里利用51单片机的相关知识,来实现电子闹钟的相关功能.实验使用了AT89C52、74HC245等芯片,通过单片机的P0、P3管脚来驱动数码管显示出相应的时刻.本文将讲述AT89C52、74HC245等芯片的基本功能原理,偏重点介绍该电子闹钟的设计.1.2.1设计要求:使用6位七段LED显示器来显示现在的时间;显示格式为“时时分分秒秒”;具有4个按键来做功能设置,可以设置现在的时间及显示闹铃设置时间;时间到则发出一阵声响,可通过按键复位;对单片机系统设计的过程进行总结,认真书写课程设计陈说并按时上交.1.2.2设计任务:利用51单片机结合七段LED显示器设计一个简易的按时闹铃时钟,可以放在宿舍或教室使用,由于用七段LED显示器显示数据,在夜晚或黑暗的场所也可以使用.可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响.论文分别叙述从硬件和软件上实现该设计的过程.第2章为总体设计方案.第3章主要介绍设计实现需要解决的硬件问题.依次介绍所使用的各种硬件的使用方法,并附上仿真电路图和文字说明.第4章从软件的角度说明实现该设计需要解决的问题.第2章系统总体设计系统要求实现以下功能:1.当电源接通时,系统能正确显示以后时间.2.以后时间与实时时间有误差时,可以通过键盘调整以后时间.3.系统允许进行闹钟设置,开启闹钟功能时,当设置的闹钟时间与以后时间一致的时候,系统通过蜂鸣器发出警报声而且可以通过按键停止.功能组成:本次设计中的计时功能很容易实现,难点在于时钟功能和闹钟功能的切换和时间的设置.该电子闹钟设计对51单片机按时器0装初值,使其初值对应50ms,按时器0的中断次数达到20次就刚好为1s,当秒部份计数到60时置零,并向分部份进一;当分部份计数到60时置零,并向时部份进一,那时部份计数到24时置零,从而满足时钟的正常工作.在设计过程中,我发现通过4个按键来完成一个闹钟的基础功能虽然可以实现,可是用户用起来就会很麻烦,因为有的键必需有多种功能和分歧的触发方式,我认为可以增加少许按键来方便用户快速了解到我们的闹钟是如何进行控制的.所以本次设计设置5个键依次对其进行“时间校准”、“闹钟设置”、“秒分时切换/终止警报”、“加1按钮”、“减1按钮”.“秒分时切换/终止报警”键在调时状态中,起时分秒切换的作用,在非调试状态下,起闹钟终止的作用.当用户按下“时间校准”的按钮后,法式会关闭T0按时器,之后时钟停止工作,此时数码管会显示以后静止的时间,说明已经进入时间校准的界面了.在完成时间校准后,翻开T0按时器,时钟会在设置好的时间上继续工作走秒.当用户按下“闹钟设置”按钮后,会将以后时间复制出来提供给按时界面,注意此时我们的时钟仍然在继续工作,只是数码管显示的是按时模式的静止时间.当设置好后,此时用户设置的时间只要没有触发过闹铃,再次按“闹钟设置”按钮就能检查并修改,即闹钟会保管下用户最后一次未被触发的闹钟时间.当正常工作的时钟时刻达到了预设的闹铃时刻,蜂鸣器发出警报声,屏幕会闪烁并显示以后时间.考虑到用户可能已经被提醒而不想继续被闹铃声干扰,还提供了一个能够终止闹铃的功能,此功能与“时分秒切换”功能共用同一按键,按下后时钟继续正常工作,且闹钟功能又可以重新设置.本设计在Keil编程环境下,使用C语言进行编程的编纂.编纂胜利后,通过仿真软件Proteus进行仿真测试.LED显示屏×1主控芯片:AT89C52闹钟提示:蜂鸣器人机交互:按键×5晶振:12KHz×1排阻:RESPACK8×1电容:10nf×2总线收发器:74HC245×2第3章系统硬件设计系统硬件模块主要分为以下几个模块:1.主控模块:控制其他子模块.2.时钟模块:为系统提供实时时间.3.显示模块:显示系统时间信息.4.按键模块:用户通过按键进行人机交互,修改实时时间、设置闹钟时间和终止闹钟报警. 5.闹钟模块:在所设闹钟时间发出警报声.(1).AT89C52简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash 只读法式存储器和256 bytes的随机存取数据存储器(RAM),器件采纳ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处置器和Flash 存储单位,AT89C52单片机在电子行业中有着广泛的应用.AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程按时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以依照惯例方法进行编程,也可以在线编程.其将通用的微处置器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本钱.AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应分歧产物的需求.AT89C52引脚图如图3.2.1:(2).工作原理AT89C52为8 位通用微处置器,采纳工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制.功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等.主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振.RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路.VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端.P0~P3 为可编程通用I/O 脚,其功能用途由软件界说,在本设计中,P0 端口(32~39 脚)被界说为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚界说为IR输入端,10 脚和11脚界说为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚界说为握手信号功能端口,连接主板CPU 的相应功能端,用于以后制式的检测及会聚调整状态进入的控制功能.P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口.作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用.在访问外部数据存储器或法式存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻.在Flash编程时,P0 口接收指令字节,而在法式校验时,输出指令字节,校验时,要求外接上拉电阻.P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路.对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL).与AT89C51 分歧之处是,P1.0 和P1.1 还可分别作为按时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash 编程和法式校验期间,P1 接收低8 位地址.P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路.对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL).在访问外部法式存储器或16 位地数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据.在访问8 位地址的外部数据存储器(如执行MOVX@RI 指令)时,P2 口输出P2锁存器的内容.Flash编程或校验时,P2亦接收高位地址和一些控制信号.P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口.P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路.对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口.此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL).P3 口除作为一般的I/O 口线外,更重要的用途是它的第二功能P3 口还接收一些用于Flash闪速存储器编程和法式校验的控制信号.RST:复位输入.当振荡器工作时,RST引脚呈现两个机器周期以上高电平将使单片机复位.ALE/PROG:当访问外部法式存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节.一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于按时目的.要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲.对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG).如有需要,可通过对特殊功能寄存器(SFR)区中的8EH 单位的D0 位置位,可禁止ALE 把持.该位置位后,只有一条MOVX 和MOVC指令才华将ALE 激活.另外,该引脚会被微弱拉高,单片机执行外部法式时,应设置ALE 禁止位无效.PSEN:法式贮存允许(PSEN)输出是外部法式存储器的读选通信号,当AT89C52 由外部法式存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲.在此期间,当访问外部数据存储器,将跳过两次PSEN信号.EA/VPP:外部访问允许.欲使CPU 仅访问外部法式存储器(地址为0000H—FFFFH),EA 端必需坚持低电平(接地).需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态.如EA端为高电平(接Vcc端),CPU 则执行内部法式存储器中的指令.Flash存储器编程时,该引脚加上+12V 的编程允许电源Vpp,固然这必需是该器件是使用12V编程电压Vpp.XTAL1:振荡器反相放年夜器及内部时钟发生器的输入端.XTAL2:振荡器反相放年夜器的输出端.利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接按时元件,内部振荡器便能发生自激振荡.按时元件可以采纳石英晶体和电容组成的并联谐振电路,如图3.2.2所示.晶振可以在1.2~12MHZ之间任选,甚至可以达到24MHz,可是频率越高功耗也就越年夜.和晶振并联的电容C1、C2的年夜小对振荡频率有微小影响,可以起到频率微调作用.时钟电路如图3.2.2:3.2.3 74HC245芯片电路中用74HC245芯片充任总线收发器,作用是放年夜信号,它具有典范的CMOS型三态缓冲门电路.由于单片机或CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超越其负载能力,一般应加驱动器.引脚界说:1引脚DIR:未输入输出端口转换用,当它为高电平“1”时,信号由“A”端口输入“B”端口输出;当它为低电平“0”时,信号由“B”端口输入“A”端口输出.29引脚:“A”端口输入输出端,每个端口与“B”端口对应.1118引脚:“B”端口输入输出端,每个端口与“A”端口对应.10引脚:GUD,电源地.20引脚:VCC,电源正极.74HC245引脚图如图3.2.3(1):图3.2.3(1)仿真电路图如图3.2.3(2):图3.2.3(2)3.3 LED显示模块本次课程设计采纳了6位数码管显示电路.在6位LED显示时,为了简化电路,降低本钱,采纳静态显示的方式, 6个LED显示器共用一个8位的I/O, 6位LED数码管的位选线分别由相应的P2. 0~P2. 5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口.译码显示电路将“时”、“分”、“秒”计数器的输出状态经七段显示译码器译码,通过6位LED七段显示器显示出来.达到按时电路时根据计时系统的输出状态发生脉冲信号,然后去触发音频发生器实现闹铃.校时电路时用来对“时”、“分”、“秒”显示数字进行校对换整的.LED仿真电路图如图3.3:图3.4 按键模块按键模块共设置了五个按键,功能分别如下:(1).时间校准键“CLOCK”: 自锁开关,按下后进入校准设置,再次按下后退出.(2).闹钟设置键“ALARM CLOCK”: 自锁开关,按下后进入闹钟设置,再次按下后退出.另外可供用户对已经设置的闹钟时间进行检查或修改.(3). 秒分时切换/终止报警键“SWITCH/STOP”: 按钮开关,在按下“CLOCK”或“ALARM CLOCK”键时,为时分秒切换功能,默认是“秒”,再次按下是“分”,然后是“时”之后是“秒”,以此类推.在“CLOCK”或“ALARM CLOCK”键未按下时,为终止报警功能.(4).时间增加键“+”:按钮开关,可以在进入校准设置和闹钟设置后,进行加一把持.(5).时间减少键“”: 按钮开关,可以在进入校准设置和闹钟设置后,进行减一把持.按键模块仿真电路图如图3.4:闹铃指示设置有声和光两种形式.声音形式的关键元件是蜂鸣器.蜂鸣器有无源和有源两种,前者需要输入声音频率信号才华正常发声,后者则只需外加适当直流电源电压即可,本次设计我们使用的是后者.闹钟电路是用比力器来比力计时系统和按时系统的输出状态,如果计时系统和按时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放年夜电路驱动扬声器发声,从而实现按时闹响的功能.蜂鸣器仿真电路图如图3.5:第4章系统软件设计该部份主要分为实时时钟模块、LED显示模块、键盘中断模块、闹钟模块.实时时钟部份主要包括实时时间的读写,时间的修改.LED显示模块主要包括显示屏的初始化,显示的命令字.键盘中断模块包括各键的界说和作用,按键的消抖,各按键跳转的子法式分配.闹钟模块包括闹钟时间的设置,以及对蜂鸣器启动和停止条件的设置和处置.主法式包括三个部份.一是主函数部份,负责系统的初始化把持;从中断服务取得实时时间;判断闹钟时间是否与实时时间相等并在相等时发出警报声.第二部份是按时中断部份,分两种情况:负责处置从中断服务获得的时间数据并送至LED显示缓冲显示,或者显示闹钟设置界面并显示闹钟时间的设置过程.第三部份是外部中断,主要界说5个按键的作用,分配每一个按键跳转的子法式.第三部份负责时间和日期的修改,闹钟时间的设置,停止蜂鸣器鸣叫的功能.断系统在单片机应用系统中起着十分重要的作用,是现代嵌入式控制系统广泛采纳的一种适时控制技术,能对突发事件进行及时处置,从而年夜年夜提高系统对外部事件的处置能力.正是有了中断技术,单片机才得以能够普及.因此,中断技术是单片机的一项重要技术,掌握中断技术能开发出灵活、高效的单机片应用系统.要让单机片停止以后的法式去执行其他法式,需要向它发出请求信号,CPU接收到中断请求信号后才华发生中断.让CPU发生中断的信号称为中断源(又称中断请求源).单片机提供5个中断源,其中两个为外部中断请求源INT0(P3.2)和INT1(P3.3),两个片内按时器/计数器T0和T1的溢出请求中断源TF0和TF1,1个片内串行口发送或接收中断请求源T1和R1.单片机内的CPU工作时,如果一个中断源向它发出中断请求信号,它就会发生中断.可是,如果同时有两个中断源发出中断请求信号,CPU就会优先接收级别高的中断请求源,然后再接收优先级别低的中断请求.表4.3.2列出5个自力中断请求源由其硬件结构决定的自然优先级排列顺序.表4.3.2 单片机中断源的自然优先级、入口地址及中断编号对应于单片机的5个自力中断源,应有相应的中断服务法式.这些中断服务法式有专门规定的寄存位置,即表4.3.2的中断入口地址.当有了中断请求后,CPU可以根据入口地址迅速找到中断服务法式并开始执行,年夜年夜提高执行效率.主法式见附录.第5章系统测试Proteus仿真模拟软件.(1).在Proteus软件中绘制好按时闹钟仿真模拟电路图.(2).将Keil编译器生成的.hex文件载入AT89C52芯片.(3).在Proteus软件中,点击左下角的“play”按钮启动按时闹钟.如下图,“play”按钮在第一个.图5.3.1(3)仿真电路运行控制按钮详细测试内容如下:按时闹钟是否能正确显示时间;是否能正确显示闹钟设置时的界面;是否能正确显示时间调整时的界面.(1).显示时间点击“play”键之后,时钟系统开始走时,如图5.5.2(1):图5.3.2(1)经测试,显示结果达到预期要求.(2).时间调整测试如果用户发现时间运行分歧毛病,要对时间进行修改和调整,就需要进入时间修改的界面.预期可以对时、分、秒进行调整和修改.系统能正确显示时间修改的界面.用户可以完成时间的修改.经测试,该部份运行正常.(3).闹钟设置测试在系统能正确显示时间之后,用户若想设置闹钟,可以通过按键完成闹钟时间的设置.设置时间到后蜂鸣器报警,按下“STOP”键后警报停止经测试,该部份能正常运行.结论:通过以上对仿真项目的全面测试,可知仿真部份运行正常.通过以上测试,证明本设计基本实现系统所有要求,即能够正确显示时间信息,能够对以后时间进行调整和修改,而且能够设定闹钟并在所设置的闹钟时间发出警报声,通过按键可以停止警报.结论该系统采纳单机片AT89C52作为核心芯片,结合一些其他外围设备,一起构成了一款能够显示时间而且能够对其进行修改和设置按时闹钟的按时闹钟系统.该系统采纳数码管显示屏,能够清晰显示时间信息,而且能够友好的引导用户进行时间的修改以及闹钟的设置.可以通过各个寄存地址对时间进行读写把持,即读取时间和修改时间.利用蜂鸣器为用户提供闹铃功能,能够在设按时间发出警报声提醒用户.采纳按键较少的自力式键盘供人机交互,把持简双方便.可以通过键盘修改时间,也可以设置闹铃时间和修改闹铃时间,另外,在闹铃时间与系统时间一致,蜂鸣器鸣叫时,可以通过按键中断警报声.总之,该按时闹钟系统完成了市场上一般闹钟应有的功能,能够显示时间和设置闹钟,可以给用户提供时间信息.该设计也存在一些缺点,就是实际生产时投入资金会比市场上一般闹钟价格昂贵,如果进行包装,价格还会上升一些.另外,外观不如市场销售的闹钟美观.致谢衷心感谢雷俊红老师的指导.参考文献[1] 李强,51系列单片机应用软件编程技术[M].北京:北京航空航天年夜学出书社,.4:134138.[2] 薛慧芳.MCS51单机片串行口的一口多用[J].南京化工年夜学学报(自然科学版),1998,S1:8486.[3] 王东锋,王会良,董冠强.单机片C语言应用100例[M].北京:电子工业出书社,.3:218219,148152.[4] 楼然苗,李光飞.单片机课程设计指导(第2版)[M].北京:北京航空航天年夜学出书社,.1:285289.附录:系统电路图如下:系统电路图系统法式如下:#include<reg52.h>sbit btnTime = P1^0;sbit btnClock = P1^1;sbit btnSwitch = P1^2;sbit btnUp = P1^3;sbit btnDown = P1^4;sbit pin1 = P2^0;sbit pin2 = P2^1;sbit pin3 = P2^2;sbit pin4 = P2^3;sbit pin5 = P2^4;sbit pin6 = P2^5;sbit pinBuz = P2^6;unsigned char timer = 0,sec,min,hour,count = 0,s = 60,m = 60,h = 24,flag = 0; unsigned char code numbers[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delayMs(unsigned int k){unsigned int i,j;for(i = k;i>0;i)for(j = 110;j>0;j);}void timeChange(){sec++;if(sec == 60){sec = 0;min++;if(min == 60){min = 0;hour++;if(hour == 24)hour = 0;}}}void showTime(unsigned char zs,unsigned char zm, unsigned char zh){ pin1 = 1;P0 = numbers[zh/10];delayMs(5);pin1 = 0;pin2 = 1;P0 = numbers[zh%10]&0x7f;delayMs(5);pin2 = 0;pin3 = 1;P0 = numbers[zm/10];delayMs(5);pin3 = 0;pin4 = 1;P0 = numbers[zm%10]&0x7f;delayMs(5);pin4 = 0;pin5 = 1;P0 = numbers[zs/10];delayMs(5);pin5 = 0;pin6 = 1;P0 = numbers[zs%10];delayMs(5);pin6 = 0;}void setTime(){unsigned char st,mt,ht;if(btnTime == 0){delayMs(10);if(btnTime == 0){st = sec,mt = min,ht = hour;TR0 = 0;while(btnTime == 0){showTime(st,mt,ht);if(btnSwitch == 0){delayMs(10);if(btnSwitch == 0){while(!btnSwitch);count++;if(count == 3)count = 0;}}if(btnUp == 0){delayMs(10);if(btnUp == 0){while(!btnUp);switch(count){case 0:st++;if(st == 60)st = 0;break;case 1:mt++;if(mt == 60)mt = 0;break;case 2:ht++;if(ht == 24)ht = 0;break;default:;}}}if(btnDown == 0){delayMs(10);if(btnDown == 0){while(!btnDown);switch(count){case 0:if(st>0)st;elsest = 0;break;case 1:if(mt>0)mt;elsemt = 0;break;case 2:if(ht>0)ht;elseht = 0;break;default : ;}}}}TR0 = 1;sec = st,min = mt,hour = ht;}}showTime(sec,min,hour);}void setClock(){if(btnClock == 0){delayMs(50);if(btnClock == 0){if(flag == 0){s = sec;m = min;h = hour;}flag = 1;while(btnClock == 0){showTime(s,m,h);if(btnSwitch == 0){delayMs(10);if(btnSwitch == 0){while(!btnSwitch);count++;if(count == 3)count = 0;}}if(btnUp == 0){delayMs(10);if(btnUp == 0){while(!btnUp);switch(count){case 0:s++;if(s == 60)s = 0;break;case 1:m++;if(m == 60)m = 0;break;case 2:h++;if(h == 24)h = 0;break;default:;}}}if(btnDown == 0){delayMs(10);if(btnDown == 0){while(!btnDown);switch(count){case 0:if(s>0)s;elses = 0;break;case 1:if(m>0)m;elsem = 0;break;case 2:if(h>0)h;elseh = 0;break;default:;}}}}}}}void buzzer(){if((hour == h)&&(min == m)&&(sec == s)){int i;for(i = 1;i<30;i++){if(btnSwitch == 0){delayMs(20);if(btnSwitch == 0){break;}}pinBuz = 1;delayMs(450);showTime(sec,min,hour);pinBuz = 0;delayMs(300);showTime(sec,min,hour);}flag = 0;}}void init(){TMOD = 0x01;TH0 = (6553645872)/256;TL0 = (6553645872)%256;EA = 1;ET0 = 1;TR0 = 1;pinBuz = 0;}void main(){init();while(1){setTime();setClock();buzzer();}}void T0_ms() interrupt 1{TH0 = (6553645872)/256;TL0 = (6553645872)%256;timer++;if(timer == 20){timer = 0;timeChange();}}。
时钟文档

基于FPGA的V erilog HDL语言数字钟(含秒表)设计一、功能说明1.时钟功能:完成分/时的正确计数并显示,秒由于数码管数目的限制,采取发光二极管做提示;2.闹钟定时:实现定时提醒及定时报时,利用二极管发光代替扬声器发出报时声音;3.时钟校时:当认为时钟不准确时,可以分别对分/时钟进行调整;4.秒表功能:利用4个数码管完成秒表显示:A、精度达100ms;B、可以清零;C、可暂停,并可随时记时、暂停后记录数据,最大计时为999.9s。
二、设计方案时钟模块:作用:实现时钟,时间校时,闹铃定时,秒表计时功能方案:50MHz分频到1Hz(用于时钟)和10Hz(用于秒表计时)。
选择:用于选择此时数码管显示的时哪个状态,mode=00时为普通时钟状态,mode=01时为闹铃定时状态,mode=10时为时钟校时状态,mode=11时为秒表计时状态;时钟:利用count,smin0,smin1,shour0,shour1的计数来实现,具体情况见程序;校时:当turn=1时,调整分位;当turn=0时,调整小时位;闹铃:当turn=1时,调整分位;当turn=0时,调整小时位;秒表:当pause=0时,开始计时;当pause=1时,暂停;附带码:分频模块:fdiv.vfdiv_ms.v时钟模块:clock.v显示模块:作用:显示时钟的小时(两位),分钟(两位)器件:4位7段共阳数码管方案:扫描输出【1】4位7段共阳数码管管脚说明:7个段控制端口:a,b,c,d,e,f,g,决定每位数码管显示的数字4个位控制端口:决定显示哪一位数码管1个公共的引脚,接VCC【2】方案设计:使用同步扫描电路,对4个位控制端口进行扫描,使得同一个时刻只有一个数码管亮,每隔0.5ms扫描一次,由于眼睛的视觉停留效应,会使得显示结果达到4位同时亮的效果。
这样可以节省3/4的电能消耗。
代码设计:1、采用0.5ms的扫描时钟clk2,上升沿触发。
- 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