当前位置:文档之家› 基于VHDL万年历的设计

基于VHDL万年历的设计

数字万年历与数字钟的设计

一、设计要求

数字万年历要求可以任意设定年份月份和日期;当当日时钟走过24时(即0点)后,日期能够自动改变。同样,当每月的最后一天走完后,月份也能够自动显示为下一个月。年份的变化也是如此。

时钟计时按照一天24小时计。时钟也可以按照由人工设定当前时间,或者修改当前时间,修改完成后,计时即有当前时间开始。

显示方式:日期为2001-11-08,时钟为hh-mm-ss;日期和时钟轮流显示。

二、设计原理

本设计先用VHDL语言写出需要的各个小模块,并将这些模块进行编译并打包成图形文件,最后将这些图形文件在顶层文件里进行连线,实现具体要求与功能。

实验源程序:

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.std_logic_unsigned.ALL;

ENTITY onesecond IS

PORT (

RESET: IN STD_LOGIC;

GCLKP1: IN STD_LOGIC;

clkout: out std_logic

);

END onesecond ;

ARCHITECTURE Frequency_arch OF onesecond IS

SIGNAL Period1S: STD_LOGIC;

BEGIN

PROCESS( RESET, GCLKP1)

VARIABLE Count1 : STD_LOGIC_VECTOR(25 DOWNTO 0); BEGIN

IF( GCLKP1'EVENT AND GCLKP1='1' ) THEN

IF( Count1>"10111110101111000010000000" ) THEN

Count1 := "00000000000000000000000000";

ELSE

Count1 := Count1 + 1;

END IF;

Period1S <= Count1(25); -- 1MHz

END IF;

clkout <= Period1S;

end process;

END Frequency_arch;

60进制

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt60 is

port(

clk: in std_logic;

ld: in std_logic;

da,db:in std_logic_vector(3 downto 0);

outb:out std_logic_vector(3 downto 0);

c0: out std_logic

);

end cnt60;

architecture one of cnt60 is

signal ma,mb:std_logic_vector(3 downto 0);

begin

c0<='1' WHEN( ma=5 and mb=9 ) else '0' ; process(clk,ld)

begin

if clk'event and clk='1' then

if ld='1' then

ma<=da;

mb<=db;

elsif ma=5 and mb=9 then

mb<="0000";

ma<="0000";

elsif mb=9 then

mb<="0000";

ma<=ma+1;

else mb<=mb+1;

end if;

end if;

end process;

outa<=ma;

outb<=mb;

end one;

24进制程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt24 is

port(clk: in std_logic;

ld: in std_logic;

da,db:in std_logic_vector(3 downto 0);

outb:out std_logic_vector(3 downto 0);

c0: out std_logic

);

end cnt24;

architecture one of cnt24 is

signal ma,mb:std_logic_vector(3 downto 0); begin

c0<='1' WHEN( ma=2 and mb=3 ) else '0' ; process(clk,ld)

begin

if clk'event and clk='1' then

if ld='1' then ma<=da;mb<=db;

elsif ma=2 and mb=3 then

mb<="0000";

ma<="0000";

elsif mb=9

then

mb<="0000";

ma<=ma+1;

else

mb<=mb+1;

end if;

end if;

end process;

outa<=ma;

outb<=mb;

end one;

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity day is

port(

clk:in std_logic;

ld: in std_logic;

maxday: in std_logic_vector(1 downto 0);

da:in std_logic_vector(3 downto 0);

db:in std_logic_vector(3 downto 0);

outa:out std_logic_vector(3 downto 0);

outb:out std_logic_vector(3 downto 0);

c0: out std_logic

);

end day;

architecture one of day is

signal ma: std_logic_vector(3 downto 0);

signal mb: std_logic_vector(3 downto 0);

begin

process(clk,ld)

begin

if clk'event and clk='1' then

if ld='1' then ma<=da;mb<=db;

case maxday is

when "00"=> --28

if (ma=2 and mb=8)then

ma<="0000";mb<="0001";c0<='1';

else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';

else mb<=mb+1;c0<='0';

end if;

end if;

when "01"=> -- 29

if (ma=2 and mb=9)then

ma<="0000";mb<="0001";c0<='1';

else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';

else mb<=mb+1;c0<='0';

end if;

end if;

when "10"=> -- 30

if (ma=3 and mb=0)then

ma<="0000";mb<="0001";c0<='1';

else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';

else mb<=mb+1;c0<='0';

end if;

end if;

when others => --31

if (ma=3 and mb=1)then

ma<="0000";mb<="0001";c0<='1';

else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';

else mb<=mb+1;c0<='0';

end if;

end if;

end case;

end if;

end if;

end process;

outa<=ma;

outb<=mb;

end one;

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity yue is

port(

clk,ld:in std_logic;

da: in std_logic_vector(3 downto 0);

db: in std_logic_vector(3 downto 0);

runnian:in std_logic;

outa: out std_logic_vector(3 downto 0);

outb: out std_logic_vector(3 downto 0);

c0:out std_logic;

maxday:out std_logic_vector(1 downto 0) );

end yue;

architecture one of yue is

signal mb:std_logic_vector(3 downto 0);

signal ma:std_logic_vector(3 downto 0);

begin

process(clk,ld)

begin

if (clk'event and clk='1') then

if ld='1' then

ma<=da;mb<=db;

if(ma=1 and mb=2)then

ma<="0000";

mb<="0001";

elsif mb=9 then

mb<="0000";

ma<=ma+1;

else

mb<=mb+1;

end if;

end if;

end if;

end process;

outa<=ma;

outb<=mb;

c0<='1' WHEN( ma=1 and mb=2 ) else '0' ;

maxday <="00" when ma=0 and mb=2 and runnian='0' else "01" when ma=0 and mb=2 and runnian='1' else

"10" when (ma=0 and mb=4)or(ma=0 and mb=6)or(ma=0 and mb=9)or(ma=1 and mb=1) else

"11";

end one;

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity nian is

port(

ld1,ld2,clk:in std_logic;

dy1,dy2:in std_logic_vector(3 downto 0);

y1,y2,y3,y4:out std_logic_vector(3 downto 0);

run,cout:out std_logic);

end nian;

architecture one of nian is

signal q1,q2,q3,q4:std_logic_vector(3 downto 0); signal sum,sum1,sum2:std_logic_vector(1 downto 0); begin

process(clk,ld1,ld2)

begin

if clk'event and clk='1' then

if ld1='1' then

q1<=dy1;

q2<=dy2;

elsif ld2='1' then

q3<=dy1;

q4<=dy2;

else

q1<=q1+1;

if q1=9 then

q1<=(others=>'0');

q2<=q2+1;

end if;

if q1=9 and q2=9 then

q1<=(others=>'0');

q2<=(others=>'0');

q3<=q3+1;

end if;

if q1=9 and q2=9 and q3=9 then

q1<=(others=>'0');

q2<=(others=>'0');

q3<=(others=>'0');

q4<=q4+1;

end if;

if q2=9 and q1=9 and q3=9 and q4=9 then

q4<="0000";

q3<="0000";

q2<="0000";

q1<="0000";

cout<='1';

else cout<='0';

end if;

end if;

end if;

end process ;

with conv_integer(q4) select

sum1<="10" when 1|3|5|7|9,

"00" when others;

with conv_integer(q2) select

sum2<="10" when 1|3|5|7|9,

"00" when others;

process(q1,q2,q3,q4,sum1,sum2)

begin

if(q1="0000"and q2="0000")then

sum<=sum1+q3(1 downto 0);

else

sum<=sum2+q1(1 downto 0);

end if;

end process ;

run<= '1' when sum="00" else '0';

y1<=q1;

y2<=q2;

y3<=q3;

y4<=q4;

end one;

置数选择程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity yima1 is

port(

x:in std_logic_vector(2 downto 0);

y0,y1,y2,y3,y4,y5,y6,y7:out std_logic);

end yima1;

architecture a of yima1 is

signal da:std_logic_vector(7 downto 0);

begin

with x select

da<="00000001"when"000",

"00000010"when"001",

"00000100"when"010",

"00001000"when"011",

"00010000"when"100",

"00100000"when"101",

"01000000"when"110",

"10000000"when"111",

"00000000"when others;

y0<=da(0);

y1<=da(1);

y2<=da(2);

y3<=da(3);

y4<=da(4);

y5<=da(5);

y6<=da(6);

y7<=da(7);

end a;

显示

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity display is

port(

clk:in std_logic;

c4:in std_logic;

ya,yb,yc,yd,ma,mb,da,db,ha,hb,fa,fb,oa,ob:in std_logic_vector(3 downto 0);

d0,d1,d2,d3,d4,d5,d6,d7:out std_logic_vector(0 to 6)

);

end display;

architecture one of display is

signal w:std_logic;

signal s0,s1,s2,s3,s4,s5,s6,s7:std_logic_vector(3 downto 0);

begin

process(clk,c4)

begin

if clk'event and clk='1' then

case c4 is

when '1' => w<='0';--display hour fen minute

when '0' => w<='1';--display year month day

when others=> null;

end case;

end if;

end process;

process

(clk,w,ya,yb,yc,yd,ma,mb,da,db,ha,hb,fa,fb,oa,ob) begin

if clk'event and clk='1' then

case w is

when '0' =>

s0<=hb;s1<=ha;s2<="1111";s3<=fa;s4<=fb;s5<="1111";s

6<=oa;s7<=ob;

when others =>

s0<=ya;s1<=yb;s2<=yc;s3<=yd;s4<=ma;s5<=mb;s6<=da;s7 <=db;

end case;

end if;

end process;

with s0 select

d0<= "0110000" when "0001",

"1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"1111110" when others; with s1 select

d1<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"1111110" when others; with s2 select

d2<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"0000001" when "1111",

"1111110" when others; with s3 select

d3<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"1111110" when others; with s4 select

d4<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"1111110" when others; with s5 select

d5<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"0000001" when "1111",

"1111110" when others; with s6 select

d6<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"1111110" when others; with s7 select

d7<= "0110000" when "0001", "1101101" when "0010",

"1111001" when "0011",

"0110011" when "0100",

"1011011" when "0101",

"1011111" when "0110",

"1110000" when "0111",

"1111111" when "1000",

"1111011" when "1001",

"1111110" when others; end one;

单片机万年历电子钟设计报告含电路图和源程序

万年历设计报告 学院:武夷学院 班级:09电信1班 组员:林巧文 一、设计要求与方案论证2 1.1 设计要求:2 1.1.1根本要求2 1.1.2发挥局部2 1.2 系统根本方案选择和论证2 1.2.1单片机芯片的选择方案和论证:2 1.2.2 显示模块选择方案和论证:2 1.2.3时钟芯片的选择方案和论证:3 1.3 电路设计最终方案决定3 二、理论分析与计算3 2.1,秒数的产生由定时器T0产生:3 三.系统的硬件设计与实现4 3.1 电路设计框图:4 3.2 系统硬件概述:4 3.3 主要单元电路的设计5 3.3.1单片机主控制模块的设计5 3.3.2显示模块的设计5 3.3.3闹钟模块的设计7 3.3.4电源稳压模块7 四、系统的软件设计7 4.1程序流程框图7 4.2闹钟模块流程图:7 4.3按键调整模块流程图:7 五、测试方案与测试结果分析7 5.1 测试仪器 (7) 5.2软件测试平台 Keil C518 5.3 模块测试8 5.3.1显示模块测试8 5.4测试结果分析与结论8 5.4.1测试结果分析8 5.4.2 测试结论 (8) 六、作品总结9 参考文献9 附录一:系统电路图9 附录三:系统C程序10

一、设计要求与方案论证 1.1 设计要求: 根本要求 〔1〕准确显示:时、分、秒〔24小时制〕 〔2〕显示星期 〔3〕显示公历 〔4〕时间、日期、星期可调节 〔5〕断电记忆功能 发挥局部 〔1〕闹钟功能 〔2〕显示阴历 〔3〕显示24节气 〔4〕其他 1.2 系统根本方案选择和论证 单片机芯片的选择方案和论证: 方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进展调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的屡次拔插会对芯片造成一定的损坏。 方案二: 采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进展调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片屡次拔插,所以不会对芯片造成损坏。 所以选择采用AT89S52作为主控制系统. 显示模块选择方案和论证: 方案一:

万年历实训报告

万年历实训报告 目录 第一部分:实训目的 (2) 第二部分:实训意义 (2) 第三部分:实训内容 (3) (一)硬件实训内容 (3) (二)软件实训内容 (3) 1.秒、分的VHDL语言及CNT60模块 (3) 2.时的VHDL语言及CNT24模块 (4) 3.天的VHDL语言及tian模块 (6) 4.月的VHDL语言及yue模块 (7) 5.年的VHDL语言及nian模块 (9) 6.调试的VHDL语言及tiaoshi模块 (10) 7.显示的VHDL语言及xianshi模块 (11) 8.万年历的原理图 (12) 第四部分:实训中疑难解答 (14) 第五部分:实训心得 (15)

一.实训目的 (一)硬件实训目的: 1. 熟悉EDA实验箱的基本工作原理。 2. 熟悉并掌握EDA实验箱各个模式的功能。 3. 提高学生的动手能力。 (二)软件实训目的: 1.熟悉并掌握Quartus II 6.0软件的使用。 2.熟练的使用原理图输入设计方法,VHDL语言编写程序,进一步了解和掌握各个程序语言,提高编程的熟练程度。 3.掌握年、月、日、时、分、秒程序的原理,进而理解万年历的设计原理。 4.拓宽学生知识面,增强工程意识,培养学生的分析和解决实际问题的能力。 5.提高学生的动手能历。 二.实训意义 该数字时钟实现了调时、年、月、日、时、分、秒的显示功能,无需接译码器,可直接接八段共阴极数码管,总体结构如下图所示: 第一部分第二部分第三部分 D8(l5)D7(l2) D6 D5 (l4) D4(l1) D3 D2(l3)D1 8个LED数码管为了显示清楚只用了6个数码管,分为3个部分。采用的是EDA试验箱上的模式7。 软件Quartus II 6.0方面: 在显示程序中,k3控制分屏。当k3=‘1’时,3部分数码管显示年、月、日;

基于EDA的万年历设计

《EDA技术及其应用》 实验报告万年历设计 班级 姓名 学号

摘要 21世纪是信息爆炸的时代,生活的节奏越来越快,大家的时间观念越来越强,但是老式的钟表以及日历等时间显示工具已经不太合适。如钟表易坏,需经常维修,日历每天都需要翻页等。对此,数字万年历的设计就用了用武之地。 基于DEA的万年历设计,采用软件开发模块,开发成本底,而且功能设计上有很大的灵活度,需要在软件上进行简单的修该就能实现不同的功能要求,能够满足不同的环境要求。同时,该设计在精度上远远超过钟表,并且不需要维修,也不用没天的翻页,极其的方便。且能够添加各种不同的功能要求。例如:在其上加闹钟,同时显示阴阳历等。。综上所述本设计具有设计方便、功能多样、电路简洁成本低廉等优点,符合社会发展的趋势,前景广阔。 基于EDA的万年历设计,主要完成的任务是使用VHDL语言,在QuartusII 上完成电路的设计,程序的开发,基本功能是能够显示、修改年、月、日、时、分、秒。电路的设计模块分为几个模块:控制、时间显示调整、时、分、年、月、日各模块。各个模块完成不同的任务,合在一起就构成了万年历。软件模块直接在QuartusII上进行,使用VHDL语言,根据各个模块的不同功能和它们之间的控制关系进行编写。 关键字:万年历;EDA;仿真;VHDL;QuartusII Abstract The 21st century is the era of information explosion, the pace of life is more and more quick, everyone's concept of time is more and more strong.But the old clock and calendar time display tools are not very suitable. To this, the design of digital calendar is very useful.Based on DEA perpetual calendar design, the software development cost low and the function design is of great nimbleness. At the same time, the design is more correct than clocks and watches, and don't need to be maintained.And you can add all sorts of different functional requirements. The perpetual calendar based on EDA design, the main task is to use VHDL language to complete circuit design, program development in the QuartusII.Basic function is to display, modify, year, month, day, points, The design of the circuit module can be divided into several modules: control, time display adjustment,, points, year, month, day each module. Each module complete different tasks, and they form a perpetual calendar. Write the program according to the different function of each module and the relationship between them.

毕业论文--数字电路课程设计报告--基于1602液晶屏的数字万年历Verilog版

毕业论文--数字电路课程设计报告--基于1602液晶屏 的数字万年历Verilog版 基于1602液晶屏的数字万年历(Verilog版) 课程名称:数字电路课程设计 专业:集成电路设计与集成系统 基于1602液晶屏的数字万年历(Verilog版) 一.设计要求 1.基本功能 设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟的时间,秒针的计数频率为1Hz,可由系统脉冲分频得到。 在整点进行提示,可通过LED闪烁实现,闪烁频率及花型可自己设计。 能够调整小时和分钟的时间,调整的形式为通过按键进行累加。 具有闹钟功能,闹钟时间可以任意设定(设定的形式同样为通过按键累加),并且在设定的时间能够进行提示,提示同样可以由LED闪烁实现。 2.扩展功能 设计模式选择计数器,通过计数器来控制各个功能之间转换。 调整当前时间以及闹钟时间,在按键累加的功能不变的基础上,增加一个功能,即当按住累加键超过3秒,时间能够以4Hz的频率累加。 用LCD液晶屏来显示当前时间及功能模式。

二.设计分析及系统方案设计 1.要求分析: 基于FPGA实际并发处理的特点,对于实现数字万历年系统,相比于任何嵌入式处理器而言,其特点和优势将得以更加全面体现。 数字万年历中所有模块都将基于基准时钟源进行处理,结合FPGA本身的特点,在时钟源下可进行精确计数,可轻易而产生十分精确的万年历时间。 基础部分:万年历可包括以下时间处理模块:基于秒时钟计数器进行判断处理。 ①秒,分,时。 ②星期,上/下午。 ③日,月,年。 ④闹钟 功能部分: ①时间设定:使用四个按键进行控制,分别是:设置复位按键,设置移位键,功能“加”键,功能“减”键。 ②整点报时部分:使用7个绿色LED作为提示灯。 ③闹钟提示部分:使用16个红色LED作为闹钟报时提示。 显示部分:使用LCD1602液晶显示屏作为万年历的主显示屏,闹钟显示部分使用6个7段数码管。 2.方案设计 基于FPGA的特点以及本万年历系统自身功能特点的实现方式。系统采用模块化方案进行设计。各个模块及其相关实现功能描述,同时具体的代码中模块设

电子万年历的电路原理与设计

湖南信息科学职业学院毕业论文(设计) 电子万年历电路原理与设计 学生姓名:刘文明 学号:08120126 年级专业:二00八级计算机控制技术专业 指导老师:凌双明 湖南·长沙 提交日期:2011年5月 目录

摘要 (3) 1前言 (3) 2设计要求与方案论证 (3) 2.1设计要求 (4) 2.2系统基本方案选择和论证 (4) 2.2.1 显示模块选择方案和论证 (4) 2.2.2单片机串口通信的选择方案和论证 (4) 3 系统的硬件设计与实现 (5) 3.1 电路设计框图 (5) 3.1.1万年历显示设计框图 (5) 3.1.2液晶显示设计框图 (5) 3.1.3单片机之间、电脑单片机联机设计图 (5) 3.2 系统硬件概述 (6) 3.3主要单元电路的设计 (6) 3.3.1万年历单片机主控制模块的设计 (7) 3.3.2光控开关模块的设计 (7) 3.3.3万年历显示模块的设计 (7) 3.3.4温度感应模块的设计 (8) 3.3.5串口通信模块的设计 (9) 4结束语 (9) 参考文献 (10) 附录 (10) 附录1系统使用说明书 (11) 附录2万年历实物图 (12)

电子万年历的电路原理与设计 作者:刘文明 指导老师:凌双明 (湖南信息科学职业学院电子信息系2008级计算机控制技术专业,长沙410128) 摘要:随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活当中。日历是人们不可或缺的日常用品。但一般日历都为纸制用品,使用不便,寿命不长。电子万年历采用智能电子控制和显示技术,改善了纸制日历的缺陷。万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 关键词:单片机89C52,串口通信,控制模块,显示模块,发声模块, 12864LCD 液晶 1.前言 万年历可以显示年、月、日、时、分、秒、星期等,具有日期和时间校准、闰年补偿、温度显示、闹钟、光控开关,秒表等多种功能,万年历串口通信具有电脑一键校准时间,利用电脑联机,设置心情语悟,增加名片等功能。在设计的同时对单片机、VB的理论基础和外围扩展知识进行了比较全面准备。本设计由万年历控制模块,显示模块,发声模块,串口通信模块五个部分组成。控制模块由单片机89C52,按键模块,光控开关模块,温度感应模块等组成,其中89C52单片机作为核心,功耗小,电压可选用3~5V电压供电。显示模块由15个7段共阳数码管模块、12864LCD液晶模块组成。发声模块由蜂鸣器和三极管组成。串口通信模块由单片机89C52、按键组成。利用单片机可以大大减小硬件的复杂程度。

单片机课程设计—万年历[1]

郑州轻工业学院 软件学院 单片机与接口技术课程设计总结报告 设计题目:电子万年历 学生: 系别: 专业: 班级: 学号: 指导教师: 2021年12月16日

设计题目: 电子万年历 设计任务与要求: 1、显示年月日时分秒及星期信息 2、具有可调整日期和时间功能 3、增加闰年计算功能 方案比拟: 方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用 AT89C52单片机为控制中心,显示模块采用普通的共阴LED数码管,键输入采用中断实现 功能调整,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通 过按键盘开关实现对时间、日期的调整。 方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源 电路、复位电路、晶振电路等模块。主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对 时间、日期的操作。 两个方案工作原理大致相同,只有显示模块和时钟电路不同。LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功 能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说 要昂贵些,但是基于本设计显示的东西较多,假设采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块。DS1302是一款高性能的实时时 钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广 泛的应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整, 并具有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。单片机有 定时器的功能,但时间误差较大,且需要编写时钟程序,因此采用DS1302作为时钟电路。 比照以上方案,结合设计技术指标与要求我们选择了方案二进行设计。

基于VHDL的万年历设计

摘要 (1) Abstract (2) 绪论 (3) 第1章基本概念简介 (4) 1。1 EDA技术和FPGA/CPLD简介 (4) 1。2 VHDL的简介 (4) 1。3 Quartus II的简介 (5) 第2章系统设计 (6) 2.1 设计思想 (6) 2。2 设计原理图 (7) 2.3 设计流程图 (8) 第3章模块分析 (9) 3.1 计数器模块分析 (9) 3.1。1 秒和分计数器模块 (9) 3.1。2 时计数器模块 (10) 3。1。3 日计数器模块 (12) 3.1。4 月计数器模块 (16) 3.1.5 年计数器模块 (19) 3.2 校时模块 (22) 3。3 显示及显示方式切换模块 (25) 3。4 顶层原理图 (26) 第4章引脚设定与验证 (29) 4。1 引脚设定 (29) 4。2 下载验证 (31) 总结 (33) 参考文献 (34) 致谢...................................... (错误!未定义书签。)

随着EDA(电子设计自动化)技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动化控制及计算机应用领域的重要性日益突出。EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description language)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合(布局布线)、逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。EDA的关键技术之一是用形式化方法来描述数字系统的硬件电路、即用所谓的硬件描述语言来描述硬件电路。 本设计是基于VHDL语言的万年历。在设计中,首先介绍了万年历的设计思路,且在Quartus II开发环境中编译和仿真所设计各个模块的程序,并逐一调试程序使各模块达到设计目的。其次,利用各元器件生成顶层文件,进行系统仿真。最后,对顶层原理图进行引脚设定,并下载到试验箱验证,证明系统的可行性. 关键字:VHDL 万年历 Quartus II

电子万年历设计论文

第1章引言 随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。 而电子万年历作为电子类小设计不仅是市场上的宠儿,也是单片机实验中一个很常用的题目。因为它有很好的开放性和可发挥性,因此对设计者的要求也比较高,不仅考察了对单片机的掌握能力,更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用。 集温度、时间、日历、星期于一体,采用液晶显示,设计电路更加简单直观,省去了用数码管显示的电路复杂性。通过按键可以调整更改时间和日历,并且还可以设置闹钟,这样就组成了一个多功能的万年历。

第2章方案论证 2.1 方案设计与论证 2.1.1 控制部分的方案选择 用可编程逻辑器件设计,使用FPGA构造数字电子系统,设计者可以不用考虑芯片部的具体结构,也不用顾虑与外部的电路连接。设计者只需依据电路所要完成的具体逻辑功能,然后设法用软件描述出来即可。至于数据在芯片部的处理过程,设计者不用考虑,但设计者可以通过仿真软件观察和验证数据的处理结果。这种设计方法,极降低了设计难度,提高了工作效率,但设计成本较高。 用单片机来作为主控制部分,实现时间、温度同步显示的万年历,为了使用的方便性,还可以通过设置按键来更改时间和闹钟。这正是利用了51单片机的多管脚功能性,4个8位并行I/O口,定时计数端口,中断端口,这使得操作起来更加方便,通过软件可以随时的调整和更改,使得更加精确。 通过认真的分析与讨论,最终决定采用单片机来作为主控制部分,这样制作也方便,价格也相对较低。 2.1.2 显示部分的方案选择 可以通过数码管来显示时钟的日历、时间、温度,使用数码管的优点是直观清楚,适合用在光线较暗的地方,但是数码管的功耗大,显示单一,并且在电路制作上布线复杂,难度较高。 显示电路还可以采用液晶1602来实现。液晶显示器具有微功耗、体积小、显示容丰富、超薄轻巧等诸多优点,在本题的制作中,用液晶来实现数字信息的显示是比较合适的一种选择。 2.2 系统整体方案的设计与论证 通过初步的选择,我们最终决定采用单片机AT89C52作为时钟的主控制部分,LCD1602作为显示部分,时钟信号采用芯片DS1302,DS18b20温度传感器用作温度采集,通过设置4个按键来实现时间的调整,闹钟的开关。这五个主要部分基本上就实现了集日历、时间、星期、温度、闹钟于一体的多功能万年历。精确度高,显示直观,轻巧的优越性具有很高的使用价值。

数字日历

目录 引言 (1) 1 设计思路 (1) 1.1设计要求 (2) 1.2 数字日历的总原理图 (2) 2 各个模块设计 (3) 2.1计算年月日的模块 (3) 2.2 时间时24进制转换 (6) 2.4 校时模块 (7) 2.5显示选择模块 (7) 3 调试过程 (8) 3.1 具体调试过程 (8) 3.2实验仿真 (8) 4 实验心得 (9) 谢辞 (10) 参考文献 (11)

引言 目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。 通过EDA课程的学习,可知运用Verilog HDL语言设计一个数字日历包括计时器模块(jsq60、jsq24)、年月日模块(nyr2009)、控制模块(conr)校时选择模块(mux_4)、显示选择模块(mux_16)和闹钟定时模块(LED1)、闹钟灯模块(nzd);然后将各个模块连接起来画成原理图再下载到实训仪上,调节开关及按钮来实现数字日历的功能。FPGA (Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 1 设计思路 1.1设计要求 ①用EDA实训仪的I/O设备和PLD芯片实现数字日历的设计。 ②数字日历能够显示年、月、日、时、分和秒。 ③用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日(如20080101),然后在另一时间段内显示时、分、秒(如00123625),两个时间段能自动倒换。 ④数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时,依此类推 1.2 数字日历的总原理图

基于VerilogHDL的万年历

基于Verilog HDL 的万年历 设计与总结报告 题目名称:基于Verilog HDL 的万年历研究设计报告人:__________ __ ____________ __ 院系/年级/ 专业:___ _____ 指导教师:_ ___________________ 制作日期:_ __ _

基于Verilog HDL 的万年历 摘要 基于Verilog HDL的万年历设计,主要完成的任务是使用Verilog 语言,在Quartus2 上完成电路设计,程序开发模拟,基于功能是能够显示/ 修改年月日时分秒。电路设计模块:分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。各个模块完成不同的任务,合在一起就构成了万年历电路设计。软件模拟直接在Quartus2 上进行。 随着科学技术的发展,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已不合时宜。对此,数字钟表的设计有了用武之地。基于Verilog 的万年历设计,采用软件开发模拟,开发成本低,而且在功能设计上有了很大的灵活度。同时,该设计的精度远远超过钟表,并且不需要维修。综上所述,本设计具有设计方便、功能多样、电路简洁、成本低廉等优点。符合社会发展趋势,前景广阔。

关键词:万年历,Verilog HDL ,Quartus2

Based on the design of the calendar Verilog HDL circuit Abstract The calendar based on FPGA design, the main task is to use eVrilog language, in the Quartus2 complete circuit design module is divided into several modules: point frequency, control and time display adjustment, arc, date, display, when control, decoder. Each module complete different tasks, together they form a calendar system circuit design. Software simulation on directly in Quartus2. With the development of technology and science, the concept of time is more and more heavey, but old-fashioned clock and calendar etc time display tools are not very good. Key words : Calendar, Verilog HDL ,Quartus2

电子万年历的设计与制作

一、设计目的及意义 (1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,培养动手能力和解决实际问题的经验让学生接触专用时钟芯片DS1302,并会用DS1302芯片开发时钟模块,应用到其他系统中去。熟悉WAVE 软件调试程序和仿真。 (2)、通过实验提高对单片机的认识; (3)通过实验提高焊接、布局、电路检查能力; (4)、通过实验提高软件调试能力; (5)进一步熟悉和掌握单片机的结构及工作原理. (6)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。 (7)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 (8) 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。 二、设计内容要求 电子万年历能显示阳历年、月、日、星期、[小]时、分、秒和阴历月、日,在显示阴历时间时能标明是否为闰年。 三、方案选择与实验基本原理。 按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键盘接口模块共4个模块组成,电路系统构成框图如图L1所示.主控芯片使用51系列AT89c52单片机,时钟芯片使用美国DALLAs公司推出的一种高性能、低功耗、带RAM的实时时钟DSl302.采用DSl 302作为主要计时芯片,可以做到计时准确。更重要的是,DSl302可以在很小电流的后备电源(2.5-5.5v电源,在2.5v时耗电小于300 nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。显示模块采用普通的共阳LED数码管,键输入采用查询法实现调整功能。 图1 电子万年历电路系统构成框图 系统硬件电路的设计 图2为电子万年历电路设计原理图,系统由主控制器AT89C52、时钟芯片DSl302、串口显示电路及键扫描电路组成。

基于vhdl的万年历设计

实验报告 基于VHDL 的万年历设计 学号:1328403035 姓名:吉光宇班级:13电信 一:实验目的、 设计具有如下功能的万年历: (1)能进行正常的年、月、日和时、分、秒的日期和时间计时功能,按键KEY1用来进行模式切换,当KEY1=1时,显示年、月、日;当KEY1=0时,显示时、分、秒。 (2)能利用实验系统上的按键实现年、月、日和时、分、秒的校对功能。 (3)用层次化设计方法设计该电路,编写各个功能模块的程序。(4)仿真报时功能,通过观察有关波形确认电路设计是否正确。(5)完成电路设计后,用实验系统下载验证设计的正确性。 二:实验原理、 1.按照模块化的设计思想,要实现万年历的基础功能,必定要包含年、月、日和时、分、秒的功能模块,其中秒和分可以用六十进制计数器来实现,时用二十四进制计数器实现,月用十二进制计数器来实现,年的低两位和高两位都是一百进制计数器,比较特殊的是天的计数器,因为它有四种情况,大月三十一天,小月三十天,平年二月二十八天,闰年二月有二十九天,所以年和月的模块对天的计数都有影响,需要从年和月的输出端引出控制信号来控制天的计数。同时每个计数器都有显示输出端和进位输出端,同时低级别(如秒)的进位输出要给较

高级别(如分)的时钟输入端,以此类推,采用串行工作方式进行连接。从而完成了基础的计时和显示的功能。再按照由基础功能到增强功能的设计思路,要实现校时功能,要在之前电路的基础之上增加一个校时控制模块,增加两个按键来实现控制,按键1来选择校对哪一个模块,按键2选择校对到何值——检测到按键2的一个上升沿,对应的计数器加1。除此之外还需要有显示模式的切换的功能,需要增加一个模式切换的控制模块,通过增加一个按键3来实现控制,是显示年月日还是时分秒。 三.实验说明 万年历的设计思路与多功能时钟的设计思路相似。多功能时钟的各功能模块及相互之间的连接如下图1所示 图1多功能时钟系统原理框图

单片机万年历课程设计

单片机万年历课程设计 电子万年历课程设计 课程名称:嵌入式系统开发实训专业:计算机科学与技术 日月如梭,斗转星移!从远古的铜壶井水、日咎计时,至16世纪因伽利略等时性定律而问世的摆钟,至现今100万年才存有1秒误差原子钟。科学不断的在进步,技术时刻在更新!多功能电子万年历更是适应环境现代化个性生活的一个崭新市场需求。 该系统以at89s51片机作为系统控制处理器,采用美国dallas公司推出的具有涓细电流充电能的低功耗实时时钟电路ds1302。它可以对年、月、日、周日、时、分、秒进行计时。同时通过ds18b20温度采集芯片对温度进行测试,并将其通过数码管显示。 关键字:at89s51单片机、数码管动态显示、ds1302、ds18b20 一、任务设计-------------------------------------------3二、方案论证-------------------------------------------4三、总体方案-------------------------------------------6四、系统硬件设计---------------------------------------7五、系统软件设计流程----------------------------------12六、程序----------------------------------------------15七、多功能数字时钟使用说明----------------------------19八、测量及其结果分析----------------------------------20九、设计心得体会--------------------------------------21十、参考资料------------------------------------------22 电子万年历设计 1、设计任务:设计并制作一个电子万年历。 2、设计要求: 设计能够积极支持年、月、日、星期、时、分后、秒的时钟,时钟存有时间调整功能;时钟附带存有一个温度计功能,温度检测精度低于2度,表明精度为1度;时钟具备装运电池时高速缓存维护功能,维护时间大于5分钟;时钟功耗大于0.5ma/5v。 3.发挥部分: 提升温度检测精度,在0℃-40℃表明0.1℃;将每个公历对应的农历表明出; 闹铃设置,整点报时功能; 记事本、备忘录功能。 4.技术创新部分: 非易失定时闹铃重要日期提醒整点报时 1.表明部分:

电子万年历系统课程设计

计算机学院信息管理与信息系统专业《管理信息系统课程设计》报告(2010/2011学年第一学期) 学生姓名: 学生班级: 学生学号: 指导教师: 2011年1月15 日

目录 第一章课程设计目的和要求 (1) 1.1课程设计主要目的 (1) 1.2本课程设计主要目标 (1) 1.3课程设计要求 (1) 第二章课程设计任务背景与内容 (2) 2.1任务背景介绍 (2) 2.2任务内容 (2) 第三章详细设计说明 (3) 3.1总体模块图 (3) 3.11程序设计组成框图 (3) 3.12程序流程图 (4) 第四章程序运行及调试 (8) 4.1 调试与测试 (8) 4.2 分析及结论 (9) 4.3 程序运行调试图 (10) 第五章课程设计心得与体会 (13) 附录1 参考文献 (14) 附录2 程序 (15)

电子万年历系统 第一章课程设计目的和要求 1.1课程设计的目的 C++语言程序设计的主要目的是要求我们遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C++语言程序及编写设计报告。根据自己学习到的内容,在设计的过程中充分的将老师所教和课本固有充分发挥出来。使得理论和实践联系起来,同时也培养综合运用C++程序设计的素质。培养用C++编写程序的能力,和养成良好的编写程序的习惯。 通过本次实践学习,可以使自身对所学知识进一步消化,理解并掌握,锻炼和提高综合运用所学知识解决实际问题的能力,熟悉编译工具的使用方法和环境。 1.2课程设计的目标 本课程设计的目标: 1.巩固和加深学生对C++语言课程的基本知识的理解和掌握; 2.掌握C++语言编程和程序调试的基本技能; 3.掌握利用C++语言进行软件设计的方法; 4.提高书写程序设计说明文档的能力; 5.提高运用C++语言解决实际问题的能力。 1.3课程设计要求基本要求: 1.分析课程设计题目的要求; 2.对系统功能模块进行分析,写出详细设计说明文档; 3.编写程序代码,调试程序使其能正确运行; 4.设计完成的软件要便于操作和使用; 5.设计完成后提交课程设计报告。

EDA课程设计-万年历电子钟的设计

EDA课程设计-万年历电子钟的设计

————————————————————————————————作者:————————————————————————————————日期:

课程设计(论文)任务书 信息工程学院学院通信工程专业2009.2 班 一、课程设计(论文)题目电子钟设计 二、课程设计(论文)工作自2012年1月 3日起至 2012 年 1月 6 日止。 三、课程设计(论文) 地点: 华东交通大学4-410,图书馆 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)掌握EDA技术及CPLD/FPGA的开发流程; (2)掌握自顶向下的设计思想; (3)掌握实用电子钟的设计原理; (4)掌握系统设计的分析方法; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)用HDL设计一个多功能数字钟,包含以下主要功能:精确计时,时间可以24小时制或12小时制显示; (2)日历:显示年月日星期; (3)能把设计文件进行仿真并下载到实验箱实现功能验证。 2)创新要求: 在基本要求达到后,可进行创新设计,如增加报时等、秒表功能模块。 3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写论文 (2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等 (3)论文装订按学校的统一要求完成 4)答辩与评分标准: (1)完成系统分析:20分; (2)完成设计过程:20分; (3)完成仿真:10分; (4)完成下载:10分 (5)回答问题:10分。 5)参考文献: (1)潘松,黄继业编著 .《EDA技术实用教程》,2005 ,科学出版社 (2)徐志军,徐光辉编著.《CPLD/FPGA的开发与应用》,电子工业出版社,2001.1(3)https://www.doczj.com/doc/5719338565.html,/html/85/t-113885.html

相关主题
文本预览
相关文档 最新文档