版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 集美大学毕业设计 闭应明:基于FPGA的多功能电子钟 基于FPGA的多功能电子钟集美大学信息工程学院电子科学与技术专业 2015届 闭应明 学号:2011850057 摘要 本设计在基于以硬件描述语言VHDL为基础的EDA设计方法上,设计中根据系统的功能要求合理划分出层次,进行分级设计和仿真验证,将较为复杂的数字系统逻辑简化为基本的模型从而降低实现的难度。通过层次化的设计方法,自顶向下设计,把不同的功能模块组合到一起,使用quartus II工具进行设计编译仿真,最终在在FPGA的DE2_70开发板上中实现具有基本的年月日、时分秒、农历显示、节气提醒、传统节假日提醒、闹铃闰年提醒等多功能的电
2、子钟关键字 硬件描述语言VHDL EDA FPGA quartus II DE2_70开发板 多功能电子钟I 集美大学毕业设计 闭应明:基于FPGA的多功能电子钟 The multi-function electronic clock of FPGABi YingmingNO:2011850057,Electronic science and technology major,2015Information Engineering College of Jimei UniversityAbstract: This design based on VHDL( hardware descripti
3、on language) and EDA design method, so that we can through the function of the system in the design to divide reasonably into layers, hierarchical design and simulation, and to simplify the complex number system logic as a basic model to reduce the difficulty of implementation. Through the design me
4、thod of hierarchical, top-down design, the different function modules were moved together by using the quartus II tool design compiled simulation.Finally ,the multi-function electronic clock that can show the date and time,and can warn the Solar terms,Traditional festivals,the leap year and the alar
5、m,was realized in DE2_70 development board of FPGA Key words: VHDL hardware description language EDA FPGA the quartus II DE2_70 development board multi-function electronic clockI 目录 目录引言1第一章 FPGA介绍31.1 FPGA简单工作原理31.2 FPGA应用31.2.1 FPGA的硬件描述语言VHDL简述31.2.2 FPGA的DE2_70开发板简述3第二章 电子时钟设计52.1 电子钟的功能设计指标52.2
6、 电子钟的整体构造52.2.1 分频模块62.2.2 秒模块62.2.3 分模块72.2.4 小时模块72.2.5 天模块82.2.6 月份模块92.2.7年模块102.2.8 阳历转阴历模块112.2.9 闹铃模块132.2.10 译码转换模块132.2.11 七段数码管和LCD显示模块152.2.12、传统节假日提醒模块162.2.13 24节气提醒模块172.2.14 定时关机模块172.2.15 l602LCD显示驱动模块182.2.16、顶层模块20第三章 时钟验证243.1 管脚绑定243.2 时间参数一243.3 时间参数二263.4 时间参数三263.5 结果分析27总结29致
7、谢30参考文献31附录32I 目录 I 引言 引言 FPGA是现场可编程门阵列(FieldProgrammable Gate Array)的缩写,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA器件具有标准化,小型化、多功能、低功耗、高密度、系列化、高速率、低成本,可无限反复编程,并可现场模拟调试验证,设计灵活方便等特点。随着FPGA芯片的更新和发展,使数字系统的设计迈进了SOPC时代,而各种IP核的设计和应用是SOPC设计的重要特征。除了各FPGA设计厂商,还有许多第三方的IC设计公司将各种IP核推向市
8、场,用户可以方便地下载试用,将其集成到自己的系统中。 本设计是基于以硬件描述语言VHDL为基础的EDA设计方法,在FPGA芯片上实现多功能电子钟。本设计涉及了EDA设计的完整流程,可以很方便地通过修改增删,应用于各种基于FPGA的系统中。 1 引言 I 第一章 FPGA介绍 第一章 FPGA介绍1.1 FPGA基本工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括输出输入模块IOB(Input Output Block),可配置逻辑模块CLB(Configurable Logic Block)和内部连线(Interconnect)三个部分。FPG
9、A是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。1.2 FPGA应用1.2.1 FPGA的硬件描述语言VHDL简述
10、VHDL(very High Speed Integrate Circuit Hardware Description Language)是一种标准的硬件描述语言,也可以理解为超高速集成电路硬件描述语言。由于IEEE标准硬件描述语言,在电子产业中,利用VHDL进行系统行为级设计已经成为FPGA和ASIC的设计主流。一个完整的VHDL程序,通常包括程序包(package)、库(library)、实体(entity)、结构体(architecture)和配置(configuration)5部分。其中,程序包用于存放各种设计模块的能共赏的数据类型、常数和子程序等;实体用于描述设计实体的外部接口信号(
11、I/O接口);结构体用于描述设计实体的内部电路;配置用于从库中选取所需的元件,并将其安装到设计单元的实体中;库用于存放已经编译的实体、结构体、包集合和配置。1.2.2 FPGA的DE2_70开发板简述 DE2_70开发板是基于FPGA应用的一种多功能运用的电子设备,它采用了Altera Cyclone II 2C70 FPGA芯片,给用户提供了方便,且所有的端口都是由FPGA来驱动,其可以利用硬件描述语言,通过软件编程、仿真、编译、最终下载到开发板上,从而实现具有特定功能的电路。以下对DE2_70开发板的一些驱动管脚及芯片型号做简单是描述 图1 DE2_70开发板DE2平台上提供的资源如下:1
12、、 Altera Cyclone II 系列的EP2C35F672C6 FPGA芯片(板上器件标号U11),该芯片内含35 000个逻辑单元(LE)。2、 主动串行配置器件EPCS16(板上器件标号U30)。3、 板上内置用于编程调试和用户API设计的USB Blaster,支持JTAG模式和AS模式;U25是实现USB Blaster的USB接口芯片FT245B;U26是用于控制和实现JTAG模式和AS模式的CPLD器件EPM3128,可以通过SW19选择配置模式;USB接口为J9。4、 512K字节SRAM(U18)。5、 8M字节(1Mx4x16)SDRAM(U17)。6、 1M字节闪存
13、(可升级至4M字节)(U20)。7、 SD卡接口(U19)。8、 4个按键KEY0 KEY3。9、 18个拨动开关SW0 SW17。10、 9个绿色LED灯LEDG0 LEDG8。11、 18个红色LED灯LEDR0 LEDR17。12、 两个板上时钟源(50MHz晶振Y1和27 MHz晶振Y3),也可通过J5使用外部时钟。13、 24位CD品质音频编/解码器WM8371(U1),带有麦克风输入插座J1、线路输入插座J2和线路输出插座J3。14、 VGA DAC ADV7123(U34,内含3个10位高速DAC)及VGA输出接口J12。15、 支持NTSC和PAL制式的TV解码器ADV7181
14、B(U33)及TV接口J12。1 第二章 电子时钟设计 第二章 电子时钟设计2.1 电子钟的功能设计指标 A、支持日历和当日事件提醒两种显示模式; B、具有电子钟的基本功能:年月日显示、是否闰年提示、阴阳历显示、中国传统重要节日 提醒、中国24节气提示; C、支持定时自动关机功能; D、支持闹铃功能; E、FPGA基于DE2开发板。 2.2 电子钟的整体构造 本电子时钟系统含有分频模块、计时模块、显示模块、节气提醒模块、闹铃提醒模块、传统节假日提醒模块、定时关机模块,阳历转阴历模块、译码转换模块等。分频器通过晶振得到1HZ的频率时钟信号,加载到秒模块中,通过异步的计数方式,从而实现时钟计数的驱
15、动。通过译码转换模块,可以实现显示模块和提醒模块的功能,具体的框架图如下图所示: 图2 电子钟结构 2.2.1 分频模块 由于DE2_70的固有晶振为50MHZ,为满足电子钟计数要求,需要把50MHZ晶振频率分频为1HZ。其可以通过一个计数器实现,即当计数小于25000000时,输出为0,否则小于49999999时,输出1,实现分频为1HZ,可以由代码实现: IF CLK'EVENT AND CLK='1' THEN IF CQI < 25000000 THEN COUT<='0'CQI := CQI + 1; ELSIF CQI<49
16、999999 THEN COUT<='1'CQI:=CQI+1; ELSE COUT<='0'CQI:=0;详细代码描述见附录分频模块图3管脚说明如下Clk:50MHZ时钟输入COUT:1HZ时钟输出 图3 50分频结构2.2.2 秒模块 秒模块采用60进制,分频模块输出的时钟信号作为该模块的时钟信号clks,每当时钟的上升沿来时,就开始计数,即从0计数到59,之后返0,再开始计数到59,如此反复,每当计数到59后,都会产生一个进位信号clk1,这个进位信号作为分模块的时钟信号。当需要设置秒的时间时,可以添加一个设置信号sets,之后30作为设定值开
17、始计数。主要代码实现如下 :if sets='1' then -调制时间使能信号 qs<=30; end if;elsif(clks'event and clks='1') then if(qs=59) then qs<=0; clk1<='1' -输出分模块时钟信号 elsif qs<59 then qs<=qs+1; clk1<='0'-秒计数 end if;详细代码描述见附录。图4管脚说明如下:其中clks:时钟信号Sets:校时设置信号Clks1:进位信号Qts:输出的秒时钟 图
18、4 秒计数结构其仿真波形如下:进位信号 图5 秒模块计数仿真 2.2.3 分模块分模块也是采用60进制,其基本的计数原理和秒模块是一样的,其产生的进位信号clk2作为小时模块的时钟信号,主要功能代码和秒模块一样,其中设置了一个闹铃控制信号alarmmn,当alarmmn=1时,内定的时间就会作为闹铃时间。代码描述见附录分模块。图6管脚分布如下:clkmn:时钟信号Setmn:校时设置信号alarmmn:闹铃校时设置信号Clks2:进位信号mnx、mny:输出信号,作为闹铃的对照信号Qtmn1、Qtmn2、Qtmn3:输出的分时钟 图6 分计数结构 其仿真波形如下: 图7 分模块计数仿真 2.2
19、.4 小时模块小时模块采用的是24进制计数,当计数到23后,输出计数值会回0,产生进位信号clk3作为天模块的时钟信号,其主要的功能代码和分模块一样。代码描述见附录小时模块。图8管脚说明如下:其中clkh:时钟信号Seth:校时设置信号Alarmh:闹铃校时设置信号Clks3:进位信号hx、hy:输出信号,作为闹铃的对照信号Qth1、Qth2、Qth3:输出的小时时钟其仿真波形如下: 图8 小时计数结构 图9 小时模块计数仿真2.2.5 天模块在天模块中,当上一个模块的时钟信号来临时,如果是闰年,并且是1、3、5、7、8、10、12、月,day模块开始则从1计数到31,而如果是2月,则day模
20、块开始计时从1计数到29,如果其他月份时,则计数从1到30,之后并输出一个控制信号clk2控制month模块,此时clk2=1 ,计数到最大值时都会回到1,然后循环计数,此时clk2=0。如果是非闰年,并且是1、3、5、7、8、10、12、月,day模块开始则从1计数到31,而如果是2月,则day模块开始计时从1计数到29,如果其他月份时,则计数从1到30,之后并输出一个控制信号clk2控制month模块,此时clk2=1 ,计数到最大值时都会回到1,然后循环计数,此时clk2=0。详细代码描述见附录天模块。核心代码: elsif (clkd'event and clkd='1
21、') then if ( yearin rem 4 =0) then -当前为闰年 if (monthin=1) or (monthin=3) or (monthin=5) or (monthin=7) or (monthin=8) or ( monthin=10) or (monthin=12) then-当前为大月31天 if(qd=31) then qd<=1;clk2<='1' elsif qd<31 then qd<=qd+1; clk2<='0' end if; elsif (monthin=2) then -当
22、前为小月29天 if(qd=29) then qd<=1;clk2<='1' elsif qd<29 then qd<=qd+1; clk2<='0' end if;elsif (monthin=4) or (monthin=6) or (monthin=9) or (monthin=11) then if(qd=30) then qd<=1;clk2<='1'-当前为中月30天 elsif qd<30 then qd<=qd+1; clk2<='0' end if; e
23、nd if; elsif (monthin=1) or (monthin=3) or (monthin=5) or (monthin=7) or (monthin=8) or (monthin=10) or (monthin=12) then -非闰年大月份31天 if(qd=31) then qd<=1;clk2<='1' elsif qd<31 then qd<=qd+1; clk2<='0' end if; elsif monthin=2 then -非闰年小月28天 if(qd=28) then qd<=1;clk2&
24、lt;='1' elsif qd<28 then qd<=qd+1; clk2<='0' end if; elsif (monthin=4) or (monthin=6) or (monthin=9) or (monthin=11) then-非闰年中月30天 if(qd=30) then qd<=1;clk2<='1' elsif qd<30 then qd<=qd+1; clk2<='0' end if;图10管脚说明如下:clkd:时钟信号Setd:校时设置信号 Yearin:
25、闰年检查信号Monthin:月份检测信号Clks2:进位信号Qtd1、Qtd2、Qtd3、Qtd4:输出的天时钟 图10 天计数结构闰年2月294月30天其仿真波形如下: 图11 天模块计数仿真根据以上图11波形图可以知道闰年二月为29天,4月为30天,由于条件限制,还有其他月份没有显示出来,这里只截取了部分仿真波形,总的来说,天模块是符合设计要求的。2.2.6 月份模块 在月份模块中,采用12进制,计数到12后返回1,并且产生一个进位信号clk4作为年模块的时钟信号,核心代码和秒模块相似,这里省略,详细代码描述见附录月模块。图12管脚说明如下:其中clkm:时钟信号Setm:校时设置信号Al
26、armm:闹铃校时设置信号Clks4:进位信号Qtm1、Qtm2、Qtm3、Qtm4、Qtm5:输出的月份时钟其仿真波形如下: 图12 月计数结构 图13 月模块计数仿真 由以上图13波形图可以知道,初始设置是5月份,当计数到12后返回1,符合月份的规律要求,并且计数到12后,产生一个进位作为年模块的时钟输入。2.2.7年模块 当前模块中的时钟信号来临时, 年的计数就开始从预定的值开始计数,一直计数到2099,核心代码和秒模块相似,这里省略,详细代码代码描述见附录年模块。图14管脚说明如下:clky:时钟信号Sety:校时设置信号Alarmy:闹铃校时设置信号Qty1、Qty2、Qty3、Qt
27、y4、Qty5:输出的年时钟 图14 年计数结构其仿真波形如下: 图15 年模块计数仿真 根据以上图15波形,由于我们只设置了2015到2099年的时间,所以年的计数值最大只能到2099年,如果有需要扩大年份可以自行修改该模块的代码参数。2.2.8 阳历转阴历模块 这个模块能够实现阳历转阴历,程序使用了一个制表的模式,它包含了从2014年到2099年之间的农历信息,在程序中每一个年份使用23位的输入作为表述农历月份大小月、农历闰年的的月份以及其大小月、当年春节对应的阳历日期的数据。其中,高四位表示当年闰年的月份,如果为“0000”,表示没有闰月;第19位到第8位分别对应的是农历1月到12月的大
28、小月,如果对应的位数为0,则表示当月是小月29天,否则为大月30天;第7位表示的是闰月份的大小月;第6到第5位表示的是当年春节对应的月份;最后低五位表示的当年春节对应公历的日期。这个模块只包含了86个年份的信息数据,但也可以根据需要自行扩充更多的年份。在这个制表中,可能会存在有个别的天数差异而导致对应的日期转换错误,在实验中如果发现存在这些信息错误,可以通过修改制表中对应的错误信息来修正。代码描述见附录阴阳历转换模块。核心代码如下:-节前-if (month1<QQ1)or (month1=QQ1 and day1<QQ) then-春节前 Tyear<=year1-1;Ty
29、ear_1<=year1-1;-输出的农历年份 day13:=QQ-day1+(QQ1(3 downto 0)-month1(3 downto 0)*"11111"-当前日期距离春节的总天数 if day13<=mmday12 then-天数小于农历12月份的天数Tmonth<="000001100"-对应的农历月份输出Tday<=mmday12-day13+1;-对应的农历日输出Tmonth_1<="000001100"Tday_1<=mmday12-day13+1;Else-大于12月份天数if
30、 Q(23 downto 20)="1100" then-判断12月是不是农历闰月Tmonth<="000001100"Tday<=mmday12+mmday13-day13+1;Tmonth_1<="000001100"Tday_1<=mmday12+mmday13-day13+1;Else -农历12月不是闰月Tmonth<="000001011"Tday<=mmday12+mmday11-day13+1;Tmonth_1<="000001011"T
31、day_1<=mmday12+mmday11-day13+1;end if;end if;-节后-i:=20;j:="000000000"day12:="000000000"L1:while (i>8) loopi:=i-1;j:=j+1;x:="00000000"&Q(i);day12:=day12+"000011101"+x;-当前农历日期距离春节天数day12if day12>day11 then exit L1;-day11表示当前阳历日期距离春节天数end if;if Q(23
32、downto 20)=j then day12:=day12+mday1;-当前月份是闰月,则加上该闰月天数mday1if day12>day11 then exit L1;end if;end if;end loop L1;图16管脚如下:year1:输入的阳历年份Month1:输入的阳历月份Day1:输入的阳历日期Tyear、tyear_1:输出农历年份Tmonth、tmonth_1::输出的农历月份Tday、Tday_:输出的农历日期Chu1:除夕的信号提醒,作为传统节日提醒 图16 阳历转阴历结构 模块的输入信号其仿真波形如下: 图17 阳历转阴历仿真由以上图17的波形仿真图可以
33、知道,阳历相对应的阴历日期,可以通过手机或者挂历进行对照,发现仿真出来的农历日期和挂历上农历日期是一致的。但是不一定代表对所有的日期都能准确表示,原因在于代码中的个别年份信息记录可能出现错误,如果发现仿真出来的波形存在错误现象,我们可以通过修改代码中个别年份的信息参数即可。总的来说阳历转阴历是可以实现的。在最后输出一个chu1信号,可以作为除夕的传统节假日提醒。 2.2.9 闹铃闰年模块 闹铃模块是通过设置的闹铃时间和当前时间进行对照,进而判断是否有闹铃提醒,即如果当前时间和设置的闹铃时间一致,对应输出就会置1,否则为0;在这个模块中还存在闰年的提醒功能,如果输入的年份run是一个闰年,那么对
34、应出就会置1,否则为0。在这个模块中,我们只取分钟和小时的对照时间,代码描述见附录。核心代码:if ( run rem 4 =0 )and (mn1a/=mn2a or h1a/=h2a) then ring<="10" -是闰年,提醒elsif (run rem 4 =0) and mn1a=mn2a and h1a=h2a ) then ring<="11"-闰年,闹铃提醒elsif (run rem 4 /=0) and mn1a=mn2a and h1a=h2a ) then ring<="01"-闹铃提醒图
35、18管脚说明如下run:输入月份信号,判断是否闰年Mn1a、h1a:输入闹铃预置时间信号Mn2a、h2a:当前时间的信号Ring:输出信号,“10”表示只有闰年,“01”表示闹铃 “11”表示既是闰年,也有闹铃,否则都没有 图18 闹铃结构闰年提醒闹铃提醒其仿真波形如下: 图19 闹铃波形仿真 根据 图19仿真波形可以知道,当年不存在闰年的时候,当闹铃时间到后,ring1(闰年)为0,ring0 (闹铃)为1;当年不存在闰年的时候,当闹铃时间到后,ring1(闰年)为1,ring1 (闹铃)为1;由此可以知道,闰年提醒,闹铃提醒都可以通过此模块来实现。2.2.10 译码转换模块 添加这个模块,
36、是因为以上的程序都是以整型数据类型存在的,而我们需要把程序下载到DE2_70开发板中,并使数据能在开发板上显示,我们需要把输入的型数据转换为其他所需要的数据类型,比如说假设s1=21,则a1=“0001”,a2=“0010”即对应公式为(a1=s1 rem 10,a2=(s1-a1)/10,同理,mn、h1、d1、m1、y1也是按照此类公式进行运算;对于Tday、Tmonth11、Tyear11,由于其是八位的数据类型,在转换时可以先转换成整型数据(即conv_integer(Tday)再调用以上的公式。代码描述见附录译码转换模块。图20管脚说明如下:s1:秒输入(整型)Mn1:分输入h1:小
37、时输入D1:小时输入M1:月份输入Y1:年份输入Tday11:农历天输入Tmonth11:农历月份输入Tyear11:农历年份输入A1,a2:分别是秒的个位,秒的十位B1,b2:分别是分的个位,分的十位C1,c2:分别是小时的个位,小时的十位E1,e2:分别是天的个位,天的十位F1,f2:分别是月份的个位,月份的十位G1,g2,g3,g4:表示年的个位,十位,百位,千位H_1,h_2:分别表示农历天的个位,天的十位 图20 译码结构I1,i2:分别为农历月的个位,月的十位J1,j2,j3,j4:分别表示农历年的个位,十位,百位,千位其波形仿真如下 图21 译码波形仿真 由以上图21的波形仿真可
38、以知道,每一个年月日,时分秒的参数都会拆分成一个单独的数,有两位就被拆成两个数,有四位的就被拆成4个单独的数,因此可以看出,数的转换是正确的。从而才可以使每一个数分别地通过数码管或者LCD单独显示出来。2.2.11 七段数码管和LCD显示模块如图22中,该模块其中输入信号a11到j14分别对应译码转换模块的输出信号,即从秒的个位开始,一直到年的千位;输出也分别对应转换输出的num1到num22,即输出的信号从num1到num6表示时分秒(数码管显示),从num7到num14表示年月日(LCD显示),从num15到num22表示农历(LCD显示),由于实验开发板的七段数码管采用了共阳的显示方法,
39、所以在编码时,输出的数字从0到9分别对应“11000000”、“11111001”、“10100100”、“10110000”、“10011001”、“10010010”、“10000010”“11111000”、“10000000”、“10011000”(其中的最高位表数码管的点显示,表灭),同时LCD显示从09的代码分别表示为“00110000”、“00110001”、“00110010”、“00110011”、“00110100”、“00110101”、“00110110”、“00110111”、“00111000”、“00111001”代码描述见附录。其仿真波形如下: 图22 显示结构
40、 图23 显示模块波形仿真 由以上图23仿真波形可以知道,每一个数都可以转换成特定的数值,即a11(秒为个位1),对应输出num1(秒数码管显示),e11(天个位3),对应输出num7(天个位LCD显示),这些数值都可以用作数码管或者LCD的显示,所以显示模块是可以实现的。2.2.12、传统节假日提醒模块我们知道中国的大部分传统节日一般以农历为对应固定时间,比如春节在一月初一,元宵在一月初十五,端午在五月初五,七夕在七月初七,中原节在七月十五,重阳节在九月九等,但也有部分节日是不固定的,比如清明节,冬至,和除夕。代码描述见该模块附录。图24管脚如下说明:Chu,dong,qing:分别是除夕、
41、冬至、清明提醒输入信号Play:表示输出的对应传统节日的提醒(附录标注对应的提醒) 图24 传统节假日提醒结构其仿真波形如下: 图25 传统节假日提醒波形仿真以上图25仿真波形可以知道,各个传统节假日到来时,play0play10都会相应出现一个高电平,进而可以判断提醒当前的传统节假日是什么节日。所以节假日提醒是可以实现的。2.2.13 24节气提醒模块 在该模块中,运用了判断24节气的运用公式,即日期=Y*D+C-L,其中Y是年数的后两位,D为0.2422,L等于闰年数(当年是闰年并且小于等于二月时L=Y/4-1,否则L=Y/4),C对应的是对于不同年份对应不同气节的因子其中(冬至日C=21
42、.94,小寒C=5.4055,大寒C=20.12,立春C=3.87,雨水C=18.73,惊蛰C=5.63,春风C=20.646,清明C=4.81、谷雨C=20.1,立夏日C=5.52,小满C=21.04,芒种C=5.678,夏至C=21.37,小暑C=7.108,大暑C=22.83,立秋C=7.5,处暑C=23.13,白露C=7.646,秋分C=23.042,寒露C=8.318,霜降C=23.438,立冬C=7.438,小雪C=22.36大雪C=7.18)。当算出的日期与当前时钟日期一致时,就会有相应的气节提醒,代码描述见附录,具体看该程序模块图26管脚说明如下:Year、month、day:
43、分别表示年月日输入信号Qing1、dong1:分别表示当前清明、冬至提醒信号,作为对传统节假日提醒的输入反馈信号Play_1:表示输出节气的提醒 图26 节气提醒结构其仿真波形如下: 冬至夏至立春小寒 图27 节气提醒波形仿真 由以上图27的波形仿真,可以知道,1月8号时(小寒),play_1是00001;2月4号(立春),play_1是00010;6月21(夏至),play_1是10110等;不同的节气,play_1对应不同的数值,具体节气对应数值可以通过附录代码注释。总的来说,该模块的节气提醒是可行的。2.2.14 定时关机模块 该模块中有控制关机信号close_timeset,即1时关机
44、信号有效,并且当当前时间与设定的关机时间一致时,所有的输出不显示,从而达到关机的目的;当控制关机信号为0时,则无论当前时间多少,都不会出现关机现象,代码描述见附录。图28管脚说明如下:close_timeset:控制关机信号Hour_set:设定的关机小时Minute_set:设定的关机分Hour_current:当前的小时信号Minute_current:当前的分钟信号输入的Play_1LED1到ring_play1:受控制的输出信号输出的Play_1LED2到ring_play2:最终输出的 显示信号 图28 关机结构 该模块仿真波形如下: 图29 关机波形仿真 根据以上 图29的仿真波形
45、可以知道,当前时间12:03分到来时,对应是输出,比如数码管num1num6都输出11111111,LED的play_1LED2(传统节假日)、play_2LED2(节气)、ring_play(闰年闹铃)都输出0,LCD_rs1输出0(对1602LCD写命令),LCD_Data输出00000001(清屏命令)。可以看出关机时间到来后所有的显示都灭了。所以该模块的功能是可行的。2.2.15 l602LCD显示驱动模块该模块主要是驱动阳历年月日、农历年月日的显示,使其在实验开发板的1602LCD液晶显示出来。其显示字符格式已经在七段数码管和LCD显示模块中陈述。要使LCD显示,需要先写命令,即使r
46、s=0,然后再输入命令,其中命令X“01”表示清屏,X”38”表示设置功能:8位,两行,5×7/每字符 ;X”0c”表示显示控制:显示开,光标关,光标不闪烁;X”06”表示光标显示地址右移,自动加1 。然后再写数据,即使rs=1,把需要输出的字符通过data写入。最后设置显示字符的地址,即使rs=0,再写入首地址。这些过程都是通过en的高脉冲来驱动显示的,所以需要设定LCD的时钟晶振,为使LCD能显示,必须保证lcdon和lcdblon都处在高电平。 图30管脚说明:Clk_R:液晶LCD的驱动时钟Num7p到num14p:对应天月年Num15p到num22p:对应农历天月年RS:0
47、,写命令;1,写数据 rw:读写信号en:使能信号 LCDon:电源开关信号LCDBlon:背光开关信号Data:8位的数据 图30 LCD驱动结构仿真波形: 图31 LCD驱动显示波形仿真 根据31波形图可以知道,en可以产生合适的脉冲来驱动lcd的工作,lcdon和lcdblon都处在高电平,rw处在低电平,当rs为1时,不断写入data的数据,rs为0时,就写入显示首地址。因此可以看得出,波形的仿真是符合驱动l602LCD的工作条件的。其中看到输入SC和LC分别表示solar calendar(阳历),lunar calendar(阴历),而实现格式为X”53”,X”43”和X”4C”,X”43”。2.2.16、顶层
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应商绩效评价标准工具手册
- 企业市场营销战略策划流程工具框架提纲
- 企业供应商筛选与评估工具
- 消费者权益维护升级承诺书(6篇)
- 酸洗卷板行业深度研究报告
- 水帘式喷柜行业深度研究报告
- 一肌酸柠檬酸盐行业深度研究报告
- 2025年下半年人民日报社校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 中国绿色蔬菜项目投资可行性研究报告
- 2025年下半年云南省曲靖市沾益区民政局考试招聘编外人员7人易考易错模拟试题(共500题)试卷后附参考答案
- 活动公司框架合同范本
- 零碳智慧冷链物流产业园项目建筑工程方案
- 2025年人力资源管理师三级认证考试真题试卷(含答案)
- 2025年品牌营销试题及答案详解
- 2025年深交所董秘资格考试题库及答案
- 海关主动披露培训
- 酒店消防安全应急预案范本
- 校园餐智慧监管报告
- 英语四级高频核心词汇合集1000词
- RFJ 01-2014 人民防空工程设备设施标志和着色标准
- 实施指南(2025)《JB-T 7425-2023 超硬磨具标准》
评论
0/150
提交评论