范文一:简易数字钟设计
郑州科技学院
《数字电子技术》课程设计
题 目 简易数字钟设计
学生姓名 李江宁
专业班级 11级通信2班 学 号 201151050 院 (系) 信息工程学院 指导教师 邓国辉 完成时间 2013年11月27日
目 录
1课程设计的目的 ................................................................................................. 1 2课程设计的任务与要求 ................................................................................. 1
2.1设计指标 ......................................................................................................... 1
2.2设计要求 ......................................................................................................... 1 3设计方案与论证 ................................................................................................. 2 4设计原理及功能说明 ....................................................................................... 2 4.1设计原理 ......................................................................................................... 2 4.2设计功能说明 ............................................................................................... 3 5单元电路的设计(计算与说明) ............................................................ 3 6硬件的制作与调试 ............................................................................................ 5 7总结 ............................................................................................................................ 6 参考文献 ..................................................................................................................... 7 附录1:总体电路原理图 ................................................................................. 8 附录2:元器件清单 ............................................................................................ 9
1 课程设计的目的
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。此次设计与制作数字电子钟的目的是让学生在了解数字钟原理的前提下,运用刚学过的数电知识设计并制作电子钟,而且通过数字钟的制作使用方法进一步了解各种在制作中用到的中小规模集成电路的作用及其使用方法。
由于数字电子钟包括组合逻辑电路和时序电路的原理与使用方法,从而实现理论与实践相结合。
总的来说,此次课程设计,有助于学生对电子线路知识的整合和电子线路设计能力的训练,并为后继课程的学习和毕业设计打下一定的基础。
2 课程设计的任务与要求
2.1 设计指标
1. 显示时、分、秒;
2. 可以24小时制或12小时制;
3. 具有校时功能,分别对小时和分钟单独校时,对分钟校时的时候,最大分钟不向小时进位;
4. 为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。 2.2 设计要求
1.画出电路原理图(或仿真电路图);
2.元器件及参数选择;
3.电路仿真与调试。
1
3 设计方案与论证
针对课程设计要求,我们通过查找资料,网上搜索,理论计算等途径得到两个方案,考虑到可能遭遇没有对应器件等问题,所以我们放弃了选用74LS390作为计数器的第二方案,选择了以74LS90代替的方案,详细介绍见4 设计原理及功能说明。
4 设计原理及功能说明
4.1 设计原理
数字钟实际上是一个对标准频率(1Hz)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1Hz时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。图4-1所示为数字钟的一般构成框图。
小时显示分钟显示秒显示
译码驱动译码驱动译码驱动
计秒电路计时电路计分电路
校时电路校分电路
分频器电路
图4-1 电路框图 晶体振荡器电
2 路
4.2 设计功能说明
1.晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的32768,z的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。
2.分频器电路
152分频器电路将32768Hz高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。 3.时间计数器电路
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。
4.译码驱动电路
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。 5.数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。
5 单元电路的设计(计算与说明)
1.晶体振荡器电路
晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。
图5-1所示电路通过CMOS非门构成的输出为方波的数字式晶体振
3
荡电路,这个电路中,COMS非门与晶U1体、电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波。输出反馈电 阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器。电容C1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能。由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。
晶体XTAL的频率选为32768Hz。该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。
从有关手册中,可查得C1、C2均为30pF。当要求频率准确度和稳定度更高时,还可接入校正电容并采取温度补偿措施。 由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为10MΩ。较高的反馈电阻有利于提高振荡频率的稳定性。
非门电路选74lS04。
图5-1 COMS晶体振荡器
2.分频器电路
通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号
4
输入,需要对振荡器的输出信号进行分频。
通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。例如,将32768Hz的振荡信号分频为1Hz的分频倍数为32768,即实现该分频功能的计数器相当于15极2进制计数器。常用的2进制计数器有74HC393等。
本实验中采用CD4060来构成分频电路。CD4060在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。
CD4060计数为14级2进制计数器,可以将32768Hz的信号分频为2Hz,其,CD4060的时钟输入端两个串接的非门,因此可以直接实现振荡和分频的功能。
6 硬件的制作与调试
1. 元器件的测试
将买好的所有元器件均用万用表测试其参数并辨别好坏,如有坏的元器件及时更换。
2. 元件的布局与连线走线
在网孔板上根据原理图布置好元器件的位置,插入集成电路时要注意芯片的引脚位置,连线时导线要尽量走垂直线,尽量减少交叉点,电源线、喇叭及监控线接端口位置要合理。
3. 焊接
元器件焊接时要依照由低到高的顺序焊接,导线焊接时要预先镀锡,焊接元器件时时间不要太长,以免把元件烫坏,但也不要过短,以免造成虚焊。
4. 调试
5
电路焊接完成后首先检查一下电路是否有漏焊,如有漏焊,排除漏焊,否则用万用表逐级测量电路导通状态,检查电路是否有虚焊,短路以及器件烧坏,如有,则排除故障。若无,则接通电源。然后观察电路是否达到预期效果。如达不到,检查电路连接是否正确。如果不正确,修改电路使之正确。再按上述步骤进行调试,直到达到预期效果。
7 总结
通过这次数字电子钟的课程设计,我们才把学到的东西与实践相结合。从中对我们学的知识有了更进一步的理解,而且更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。设计本身并不是有很重要的意义,而是同学们对待问题时的态度和处理事情的能力。各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。同一个电路可以用那些芯片实现,各个芯片实现同一个功能的区别。
另外,我还渐渐熟悉了proteus这个仿真软件的各个功能,让我体会到了期中的乐趣,还在电脑制作文档的过程中,使我对办公软件有了更进一步的了解和掌握。
6
参考文献
[1] 康华光.电子技术基础(第五版).北京:高等教育出版社,2005. [2] 艾永乐 付子义.数字电子技术基础.北京:中国电力出版社,2008. [3] 艾永乐 付子义.模拟电子技术基础.北京:中国电力出版社,2008. [4] 阎石.数字电子技术基础(第四版). 北京:高等教育出版社,2005. [5] 黄智伟.电子电路计算机仿真设计与分析.北京:电子工业出版社,2006. [6] 吕思忠 施齐云.数字电路实验与课程设计.哈尔滨:哈尔滨工程大学出版社,2001.
7
附录1:总体电路原理图
R2R110k10kD4D2LED-BLUELED-BLUED3R3R4R11D1LED-BLUE240R240R240RLED-BLUE
C7C8C6C5C4C3C910410410410410410410uU1U2U3U4U5U6451145114511451145114511
R5713713713713713713AQAAQAAQAAQAAQAAQA1121121121121121121kBQBBQBBQBBQBBQBBQB211211211211211211CQCCQCCQCCQCCQCCQC610610610610610610DQDDQDDQDDQDDQDDQD999999QEQEQEQEQEQE315315315315315315D5LTQFLTQFLTQFLTQFLTQFLTQF4144144144144144141N4148BIQGBIQGBIQGBIQGBIQGBIQG555555LE/STBLE/STBLE/STBLE/STBLE/STBLE/STBD6R13R151N4148180k180kD8D7C1C2D9D111N41481N414810u10u1N4148D10D121N41482GND31VIVO1N41481N4148U7R14R1678L05470R470RU10:AU10:BU11:AU11:BU12:AU12:B45184518451845184518C15C16193111391191113CLKQ0CLKQ0CLKQ0CLKQ0CLKQ0CLKQ02104122421041210122020EQ1EQ1EQ1EQ1EQ1EQ1513513513Q2Q2Q2Q2Q2Q2151415147671561476MRQ3MRQ3MRQ3MRQ3MRQ3MRQ3
R17R12R710kC10R6C11C12R8180k103180k103180k103180k
C17103R9R10U9:A470R10M51X112DQMR3CLK2463CRYSTALQRSQ1329Q12CTCC13C141Q11401322p22p15Q913Q81410Q7RTC6U9:BQ64Q55Q4913U8711DQQ3RS406011CLK12108QRS4013
8
附录2:元器件清单
标号 名称 参数 数量 作用
240K R1、R2、R3 电阻 3 数码管限流电阻
10K R4、R5 电阻 2 发光二极管限流电阻 R6 1K 电阻 1 充放电电阻
180K R7、R8、R9 电阻 3 与门上拉电阻
180K R10、R11、R12 电阻 3 按键上拉电阻
470K R13、R14 电阻 2 清零延时电阻 R15 470K 电阻 1 晶振缓冲电阻 R16 10K 电阻 1 微分电阻 Rx 10M 电阻 1 晶振启动电阻 C1-C6 104 瓷片电容 6 电源高频滤波电容 C7 25V10uF 电解电容 1 电源低频滤波电容
20P C8、C9 瓷片电容 2 清零延时电容 C10 103 1 瓷片电容 微分电容 C11-C13 103 3 瓷片电容 按键消抖电容
9
Cx 20P 1 瓷片电容 震荡微调电容 C15 20P 1 瓷片电容 震荡稳定电容
25V10uF 2 C16、C17 电解电容 稳压电源电容 D1-D4 4 发光二极红色3mm 秒点
管
D5-D10 1N4148 8 二极管 与门 D11 1N4148 1 二极管 充电限压及防倒流 D12 1N4148 1 二极管 电源防反接 LK… 6 数码管 0.5共阴红 显示 IC1-IC6 4511 6 芯片 显示译码 IC7-IC9 4518 3 芯片 计数器 IC10 4060 1 芯片 震荡分频 IC11 4013 1 芯片 2分频及秒点驱动 P1 78L05 1 稳压IC 稳压电源核心
…… 3 S1、S2、S3 按键 调时按键 Y1 32768 1 晶振 精确稳定频率
1 无 插针 双线 直流电源接入 J …… 11 跳线 跨线 BTY 3.6VNi-Cd 1 电池 维持断电后的走时
10
范文二:简易数字钟设计
简易数字钟设计
一、实验目的
1、学习简易数字钟设计和调试方法。
2、掌握MaxPlusII的仿真和综合技巧。
二、实验要求
设计一个简易数字钟,具有校时功能:
1、以至少6位LED数码管显示时、分、秒,时为24进制。
2、采用最多8个键实现校时功能。
三、实验仪器
, PC机一台
, GW48实验开发系统一台(芯片为EPF10K10LC84-4)
, MAX+PLUSII软件系统一套
四、设计原理
数字钟的原理框图如图4-1所示:
FPGA 计数器 1Hz时钟
LED译码显示 启动控制键
校时模块
校时按键
图4-1 数字钟的原理框图
主要由计数器模块和校时模块构成,其中计数器又由小时、分和秒三个计数器组成。当校时时,能分别对小时、分和秒进行校对并置数。启动时钟工作后,计数器将按照校对后的时钟进行计时,并将时间显示于一组数码管上。计数器模块内部,当秒计满60时,启动分计数器加一,当分计数器计满60时,启动小时计数器加一,当小时计数器计满24时,则将小时、分、和秒全部清零,并继续计数。
五、模块描述
1(脉冲模块
这个模块的功能是将40HZ脉冲转换为1HZ脉冲,即转换后的脉冲周期是时钟周期的40倍。
(1)程序流程图如图5-1-1:
开始
Y
Q=19 ? Q=0, f=not f N
Q=Q+1
图 5-1-1脉冲模块程序流程图
)程序代码: (2
--File:40mfp.vhd
--Module:脉冲模块 --Description:将40Hz脉冲转换为1Hz脉冲
--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP
--Date: 2008-11-27 --Modify date:2008-11-27
LIBRARY IEEE;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fp40m IS
PORT(clk:IN STD_LOGIC; --40Hz
fp:OUT STD_LOGIC);--1Hz
END fp40m;
ARCHITECTURE bev OF fp40m IS SIGNAL f:STD_LOGIC;
SIGNAL Q: INTEGER RANGE 0 TO 19; BEGIN
PROCESS(clk)
BEGIN
IF clk'EVENT AND clk='1' THEN
IF Q=19 THEN
Q<=0;>=0;>
f<=not f;="">=not>
ELSE
Q<=q+1;>=q+1;>
END IF;
END IF;
END PROCESS;
fP<=f;>=f;>
END bev;
(3)仿真波形如图5-1-2:
图5-1-2脉冲模块的仿真波形
2(十进制计数器模块
十进制计数器模块设计一个10进制的计数器,与6进制计数器组成60进制的计
数器,用来计分和秒的值。
(1)程序流程图如5-2-1:
开始
Y Count=9, Count=0, c=1
N
Count=count+1,c=0
图5-2-1 十进制计数器模块流程图
(2)程序代码:
--File:counter10.vhd
--Module:十位计数器 --Description:与六位计数器组成60位计数器
--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2008-11-27 --Modify date:2008-11-27
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY counter10 IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
0); din:IN STD_LOGIC_VECTOR(3 DOWNTO
dout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
c:OUT STD_LOGIC);
END counter10;
ARCHITECTURE bev OF counter10 IS
SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
dout<=count;>=count;>
PROCESS(clk,reset,din)
BEGIN
IF reset='0' THEN
count<=din;>=din;>
c<='0';>='0';>
ELSIF rising_edge(clk) THEN
IF count="1001" THEN
count<="0000";>="0000";>
c<='1';>='1';>
ELSE
count<=count+1;>=count+1;>
c<='0';>='0';>
END IF;
END IF;
END PROCESS;
END bev;
(3)模块仿真波形如图:
3(六进制计数器
六进制计数器模块设计六进制计数器,与十进制计数器组成60进制的计数器,用来计数字钟的分和秒
。
(1)程序流程图如图:
开始
Y Count=0, c=1 Count=5?
N
Count=count+1, c=0
图5-3-1六进制计数器程序流程图
(2)程序代码:
--File:counter6.vhd
--Module:六位计数器
十位计数器组成60位计数器 --Description:与
--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2008-11-27 --Modify date:2008-11-27
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY counter6 IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
din:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
dout:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
c:OUT STD_LOGIC);
END counter6;
ARCHITECTURE bev OF counter6 IS
SIGNAL count:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN
dout<=count;>=count;>
PROCESS(clk,reset,din)
BEGIN
IF reset='0' THEN
count<=din;>=din;>
c<='0';>='0';>
ELSIF rising_edge(clk) THEN
IF count="101" THEN
count<="000";>="000";>
c<='1';>='1';>
ELSE
count<=count+1;>=count+1;>
c<='0';>='0';>
END IF;
END IF;
END PROCESS;
END bev;
(3)模块仿真波形如图:
图5-3-2六进制计数器仿真波形如图
4(24进制计数器
24进制计数器模块设计一个24进制的计数器,用来计数字钟的小时
(1)程序流程图如图:
开始
Y Count=0, c=1 Count=23?
N
Count=count+1, c=0
图5-4-1 24进制计数器程序流程图
(2)程序代码:
--File:counter24.vhd
--Module:24位计数器 --Description:用于表示电子表的小时
--Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2008-11-27 --Modify date:2008-11-27
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY counter24 IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
din:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
dout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END counter24;
ARCHITECTURE bev OF counter24 IS
SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN
dout<=count;>=count;>
PROCESS(clk,reset,din)
BEGIN
IF reset='0' THEN
count<=din;>=din;>
ELSIF rising_edge(clk) THEN
IF count="010111" THEN
count<="000000";>="000000";>
ELSE
count<=count+1;>=count+1;>
END IF;
END IF;
END PROCESS;
END bev;
(3)仿真波形如图:
图5-4-2 24进制计数器仿真波形
5、数字钟
本模块实现的功能是当秒计满60时,分计数器加1,当分计数器计满60时,小时计数器加1,当小时计数器计满24时,将小时、分、和秒全部清零,并继续计数。
(1)程序流程图如下:
开始
Sout[4..6]=5andso
ut[0..3]=9?
Y
Mout=mout+1
N Mout[4..6]=5andm out[0..3]=9?
Y
hout=hout+1
N
hout[0..5]=23?
Y
Sout=0,mout=0,ho ut=0
结束
图5-4-1数字钟程序流程图
(2)程序代码如下:
--File:dclock.vhd
--Module:digital clock
--Description: It is a digital clock. --Simulator:MAX plusII 10.0.9/Window XP --Synthesizer:MAX plusII 10.0.9/Window XP --Date:2008-11-27 --Modify date:2008-11-27
LIBRARY IEEE;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dclock IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
dins:IN STD_LOGIC_VECTOR(6 DOWNTO 0);
dinm:IN STD_LOGIC_VECTOR(6 DOWNTO 0);
dinh:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
sout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
mout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
hout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END dclock;
ARCHITECTURE bev OF dclock IS
COMPONENT fp40m IS
PORT(clk:IN STD_LOGIC;
fp:OUT STD_LOGIC);
END COMPONENT;
COMPONENT counter10 IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
din:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
dout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
c:OUT STD_LOGIC);
END COMPONENT;
COMPONENT counter6 IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
din:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
dout:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
c:OUT STD_LOGIC);
END COMPONENT ;
COMPONENT counter24 IS
PORT(clk:IN STD_LOGIC;
reset:IN STD_LOGIC;
din:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
dout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));
END COMPONENT ;
COMPONENT coder IS
END COMPONENT;
SIGNAL c1,c2,c3,c4,c5:STD_LOGIC;
BEGIN
u1:fp40m PORT MAP(clk=>clk,fp=>c1);
u2:counter10 PORT MAP(clk=>c1,reset=>reset,din=>dins(3 DOWNTO 0),
dout=>sout(3 DOWNTO 0),c=>c2);
u3:counter6 PORT MAP(clk=>c2,reset=>reset,din=>dins(6 DOWNTO 4),
dout=>sout(6 DOWNTO 4),c=>c3);
u4:counter10 PORT MAP(clk=>c3,reset=>reset,din=>dinm(3 DOWNTO 0),
dout=>mout(3 DOWNTO 0),c=>c4);
u5:counter6 PORT MAP(clk=>c4,reset=>reset,din=>dinm(6 DOWNTO 4),
dout=>mout(6 DOWNTO 4),c=>c5);
u6:counter24 PORT MAP(clk=>c5,reset=>reset,din=>dinh(5 DOWNTO 0),
dout=>hout(5 DOWNTO 0));
END bev;
(3)仿真波形如图:
范文三:简易数字钟设计
简易数字钟设计
陈晓炜
厦门大学通信工程系
dearbird@qq.com
摘 要 本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计,最后将设计好的模块组合调试,并最终在EWB下仿真通过。
关键词 数字钟,EWB,74LS160,总线,三态门,子电路
一、 引言
所谓数字钟,是指利用电子电路构成的计时器。相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。在此基础上,还能够实现整点报时,定时报闹等功能。
设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。 二、 任务分析
能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。
三、 总体设计
本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。
方案一、采用异步电路,数据选择器
将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:
切换 显示
闹钟
小时 分钟 秒钟
1Hz脉冲信号
控制
1
该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。
方案二、采用同步电路,总线结构
时钟信号分别加到各个模块,各个模块功能相对独立,框图如下:
显示总线
显示 闹钟
小时 分钟 秒钟
1Hz信号
控制
控制总线
该方案用总线结构,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,本次设计采用此方案。
综上所述,本次设计采用方案二。秒计数和分计数为60进制,时计数为24进制,为了简化设计,秒和分计数采用同一单元。控制模块有两部分,一为实现调整切换,二为实现显示切换。现对本方案中的各个主要功能模块的接口定义如下:
1. 60进制模块(电路图中模块名称为60count,下同。)
实现同步60进制计数,可调整
电源 5v
时钟信号输入 接1Hz的信号源
进位输入 接秒的进位信号,实现秒功能时,接低电平。
进位输出 秒模块接分模块,分模块接时模块
显示输出 接到显示总线,能闪烁
闹钟比较信号输出 接到闹钟,秒模块悬空
整点报时信号输出 接到响铃,实现3短1长响铃
调整使能端 入0有效,有效时,显示信号输出,同时屏蔽进位输入和
进位输出,允许调整信号输入。
显示使能端 入0有效
调整信号输入
2
2. 24进制模块(24count)
实现同步24进制计数,可调整
电源,时钟信号 同上
进位输入 接分的进位信号
进位输出 秒模块接分模块,分模块接时模块
显示输出 同上
闹钟比较信号输出 接到闹钟
调整使能端,显示使同上
能端,调整信号输入
3. 闹钟模块(60clock,24clock)
实现可与时钟比较,并输出闹铃信号,可调整
电源,时钟信号 同上
闹钟比较信号输入 秒模块接分模块,分模块接时模块
显示输出 同上
闹铃输出 接到蜂鸣器
调整使能端,显示使同上
能端,调整信号输入
4. 控制模块(fun,func)
管理总线资源,对各个模块输出控制信号
电源 5v VCC
调整切换信号 接各个需要调整的模块
调整信号 接到各个需要调整的模块
显示切换信号 接到各个需要共享显示总线的模块
控制信号输出 接到各个模块,有且只能有1个为0
至此,本阶段就结束了。在上面的接口定义中,也可以发现,各个模块的独立性是
很强的,这样的结构使得以后的扩展很容易。
四、 详细设计
在上一阶段进行总体设计完成后,现在就可以分开独立的完成各个功能模块了。本阶段
主要问题在于计数器的设计,计数部分需要24进制和60进制计数器,控制部分需要循环计
数器。由于标准集成计数器没有所需进制,需要编程实现。 首先,需要选择使用集成芯片,总体思路是在满足所需功能前提下,能是电路尽可能简
单。有以下方案:
3
1. 采用74160
该芯片管脚及功能表如图所示:74160为异步复位,同步置数,ENP,ENT同
时为一时才可以计时,其中之一为高电平时,则保持。RCO产生进位信号。74160相对于其他芯片来说,功能较少,使用简单,但是也因功能简单导致在实现数字钟的某些特定功能时需要加入比较多的附加电路。如74160没有减计数的功能,须寻求其他方法来解决,设计较复杂。,由于不准备设计减计数,在功能能满足要求的前提下,该芯片使用简单,适合此次设计。
2. 采用74190
芯片管脚图及真值表如图所示:可知,74190上升沿触发,由U/D’控制加减计数,有异步置数段,,,,,没有复位端,,,,输出低电平的进位或借位信号,,,,,,,,在为,或,时输出高电平,,,,,高电平时保持。74190的功能相当强,但也因此使用复杂,不利于电路的简化,且该芯片没有复位端,不利于某些功能的实现。由于本次设计不使用加减计数,该芯片有较多多余功能,不采用。
4
3. 采用74192
管脚图和真值表如图所示:可知,74192上
升沿触发,由,,,,,,,两管脚控制加减计
数,有异步置数端,,,,和异步复位端,,
,,,,’和,,’分别输出高电平表示加进位
和减进位。74192功能可以完成本次设计目标,
但如果不设计减计数的话则有许多多余管脚,使
用复杂,基于简单原则,本设计不采用。
综上所述,本次设计采用74160作为主要芯片。
本次设计还要使用循环计数器,采用74160与74138构成。
74138的管脚图和真值表如图:输出信号中只有一条为低电平,其余为高电平,与74160组合使用后,可产生满足要求的控制信号。
至此,可以根据总体设计中对子模块的定义,对各个模块进行单独设计了。设计过程中
5
可对单个模块进行调试,调试通过后,打包成模块(子电路),方便以后使用。
(详细电路图附在文后)
五、 组装电路并调试
在经过前面几个阶段的设计后,数字钟的各个模块已经设计完毕,根据总体设计时的方案框图,将各个子电路组合起来,加入1Hz的时钟信号,对电路进行总体测试。
经测试,电路可以正常计时,并显示,调整无误。
将时间调整到23:59,闹钟调到00:01分,进行测试,时钟进位正常,有整点报时,报时为3短1长,闹铃正常,响铃持续1分钟,中间可按调整键关闭闹铃。 六、 缺陷及改进
1. 只能进行加调整,要进行减调整几乎不可能在现有电路基础上改进,只能重新设计,
这是一开始就没考虑到的。
2. 分钟和秒使用同一功能模块,简化了设计,但对秒计时来说,该模块有较多不需要
的功能,在实际生产的时候,应该分开设计。
3. 为了方便使用,可以将控制模块输出的控制信号接到LED指示灯上,指明当前所
在的状态。
七、 心得体会
经过长达两个星期的设计与思考,最终在EWB上完成了数字钟的模拟。其间遇到了许多问题,但最后都一一得到解决。现将心得体会总结如下:
1. 设计初期要考虑周到,否则后期改进很困难。应该在初期就多思考几个方案,进行
比较论证,选择最合适的方案动手设计。总体设计在整个设计过程中非常重要,应
该花较多的时间在上面。
2. 方案确定后,才开始设计。设计时,多使用已学的方法,如列真值表,化简逻辑表
达式,要整体考虑,不可看一步,做一步。在整体设计都正确后,再寻求简化的方
法。
3. 在设计某些模块的时候无法把握住整体,这时可以先进行小部分功能的实现,在此
基础上进行改进,虽然可能会多花一些时间,但这比空想要有效的多。
4. 尽可能是电路连线有序,模块之间关系清楚,既利于自己修改,也利于与别人交流。
如果电路乱的连自己都看不懂,那还如何改进和扩展。
5. 很多难点的突破都来自于与同学的交流,交流使自己获得更多信息,开拓了思路,
因此要重视与别人的交流。
6. 应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用了
许多理论课上学的内容,如真值表、卡拉图等。本次设计把理论应用到了实践中,
同时通过设计,也加深了自己对理论知识的理解和掌握。
6
参考资料
[1] EWB5.0 自带帮助文档
[2] 清华大学教研组编,阎石主编:《数字电子技术基础》(第四版),北京, 高等教育
出版社 ,2004年
作者简介 陈晓炜,厦门大学信息科学与技术学院,通信工程系本科三年级,学号03142007。
7
附录一 使用说明
1. 调整时间
按L键切换到调整小时,或调整分钟,按J键调整。 2. 调整闹钟
按L键切换到调整闹钟小时,调整闹钟分钟,按J键调整。
闹铃时候,按J键可以关闭闹铃。
3. 切换显示
按T键切换显示秒,闹钟。
8
附录二 电路图
9
10
11
12
13
14
范文四:简易数字钟设计
信息与电气工程学院
课程设计说明书
(20010 /2011 学年第 2 学期)
课程名称 : 单片机课程设计
题 目 : 简易数字钟设计 专业班级 : 学生姓名 : 学 号: 0 指导教师 :
设计周数 : 2周
设计成绩 :
2011 年 6月日
1、课程设计目的
1. 进一步熟悉和掌握单片机的结构及工作原理。
2. 掌握单片机的接口技术及相关外围芯片的特性及控制方法。
3. 通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。
4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5. 理解键盘输入电路、数码管动态显示电路的工作原理,进一步掌握汇编语言的编程,更熟练的利用Protel99se 设计电路原理图和PCB 图。
6. 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相关工作打下基础。 2、课程设计正文 2.1器件清单
电阻:1K (5个) 330(7个)10K(4个) 按键开关:4个 电容:30pF (2个) 电解电容:22μF (1个) 晶振:6MHZ(1个) CD4511: (1个) 三极管:NPN (4个) 共阴极数码管:(4个)
底座:DIP40(2个)DIP16(1个) 万能电路板:1个 AT89S51(1片) 导线若干
2.2设计任务和要求:
本次课程设计的任务是采用AT89S51作为控制单元,实现数字钟的设计。(1)设计键盘输入电路(2)设计显示电路(3)合理分配地址,编写系统程序(4)利用Protel 设计硬件电路原理图和PCB 图(5)软硬件联机调试
技术要求:用p1口控制4只段码管,用2位数码管进行分针时间显示,用2位数码管进行秒针时间显示。要求(1)可以调整时间,且调整位闪烁提示。(2)设置调节切换键,确
认开始键,加1键和减1键。 2.3设计方案
采用单片机的TO 定时器,使其工作在方式1,产生一个100ms 定时中断,循环10次,到1s 时,秒加1;秒到60时,分加1,秒清零;分到60时,秒清零,分清零。数码管采用动态显示,一个扫描周期共循环四次,依次显示秒的低位、秒的高位、分的低位、分的高位,每次显示延时4ms 。这期间要将不同的数送到P1口,以及将P2口的不同位置1。调节时,调用相应的子程序,来完成功能。 2.3.1主要器件及电路设计 2.3.1.1 AT89S51说明
图2.3-1 AT89S51的引脚
AT89S51的引说明和功能说明如下:
XTAL1 :接外部晶振的一个引脚。在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。它采用外部振荡器时,则此引脚应接地。
XTAL2 :接外部晶振的一个引脚。在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。当采用外部振荡器时,则此引脚接外部振荡信号的输入。
RST :AT89S51的复位信号输入引脚,高电位工作,当要对芯片复位时,只要将此引
脚电位提升到高电位,并持续两个机器周期以上的时间,AT89S51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。
P0口(P0.0~P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低8位)和数据总线复用。外部不扩展而单片应用时,则作一般双向I /O 口用。P0口每一个引脚可以推动8个LSTTL 负载。
P2口(P2.0~P2.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口) ,当访问外部程序存储器时,它是高8位地址。外部不扩展而单片应用时,则作一般双向I /O 口用。每一个引脚可以推动4个LSTL 负载。
P1口(P1.0~P1.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口) ,其输出可以推动4个LSTTL 负载。仅供用户作为输入输出用的端口。
P3口(P3.0~P3.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口) ,它还提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读取或写入控制等功能。
2.3.1.2 CD4511译码器
CD4511输出端接330欧姆的保护电阻, 然后并接数码管,使其显示数据。 真值表如下:
2.3.1.3 显示电路
当P2口低4位某位置1时,与其相连的三极管导通,集电极为低电平,因为是共阴极数码管,所以与该三极管相连的数码管选通,显示P1口输出的数。
2.3.1.4共阴极数码管
共阴数码管是指将所有发光二极管的阴极接到一起形成 公共阴极(COM)的数码管。共阴数码管在应用时应将公共极 COM 接到地线GND 上,当某一字段发光二极管的阳极为高 电平时,相应字段就点亮。当某一字段的阳极为低电平时, 相应字段就不亮。
数码管动态显示接口是单片机中应用最为广泛的一种显 示方式之一,动态驱动是将所有数码管的8个显示笔划 "a, b, c, d, e, f, g, dp"的同名端连在一起,另外为每 个数码管的公共极COM 增加位选通控制电路,位选通由各
自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms ,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 2.3.1.5 设计原理图及PCB 图
2.3.2 程序流程图
主程序:
调秒子程序
调分子程序
调分子程序和调秒子程序的流程图极为相似,原理一样,这里就不详细给出。不同的是,当R5等于55时,调用的不再是DISP1, 而是DISP2。K1按下时,调用调秒子程序,K3或K4按下时,分分别加1或减1。 2.3.3 汇编程序
SPK EQU 29H BUF EQU 30H MIN EQU 34H SEC EQU 35H DEDA EQU 36H ; 按键输入引脚定义
K1 EQU P2.4 K2 EQU P2.5 K3 EQU P2.6 K4 EQU P2.7 ; 程序开始执行地址
ORG 0000H JMP MAIN ORG 000BH JMP TO_INT MAIN: ACALL INIT
ACALL INIT_TIMER MOV A, #00H MOV SEC, A MOV MIN, A ; 无穷循环
LOOP: ACALL CONV ACALL DISP JB 48H, SEC1 JB 49H, MIN1
JB K1, M1 ;K1 JNB K1, $ INC SPK JMP LOOP
SEC1: ACALL SET_SEC JMP LOOP MIN1: ACALL SET_MIN JMP LOOP
M1: JB K2, M2 ;K2 JNB K2, $ SETB TR0 JMP LOOP M2: JB K3, M3 JMP LOOP
按下,根据SPK 的值,调节分或秒 按下,起动定时器
M3: JB K4, M4 JMP LOOP
M4: JMP LOOP ; 使用定时器T0模式1计时 INIT_TIMER:
MOV TMOD, #01H MOV TL0, #0B0H MOV TH0, #3CH SETB EA SETB ET0 RET ; 中断服务程序 TO_INT:
PUSH Acc
MOV TL0, #0B0H MOV TH0, #3CH INC DEDA MOV A, DEDA
CJNE A, #10, TT1 MOV DEDA, #0 INC SEC MOV A, SEC
CJNE A, #60, TT1 INC MIN MOV SEC, #0 MOV A, MIN
CJNE A, #60, TT1 MOV SEC, #0 MOV MIN, #0 TT1: POP Acc RETI ; 存入显示数值 CONV:
MOV A, MIN MOV B, #10 DIV AB MOV BUF, A MOV A, B MOV BUF+1, A MOV A, SEC MOV B, #10 DIV AB
MOV BUF+2, A
MOV BUF+3, A RET ;4ms 延时 DELAY:
MOV R6, #10 D1: MOV R7, #100 DJNZ R7, $ DJNZ R6, D1 RET ; 初始化存储单元 INIT:
MOV DEDA, #0 MOV SEC, #0 MOV MIN, #0 MOV SPK, #0 RET ; 正常显示程序 DISP:
MOV R0, #BUF+3 MOV R2, #4 MOV A, #08H
S1: MOV R3, A PUSH Acc MOV A, @R0 MOV P1, A POP Acc ORL A, #0F0H MOV P2, A ACALL DELAY MOV A, R3 RR A DEC R0 DJNZ R2, S1 RET
; 显示程序1,秒不显示,分显示 DISP1:
MOV R0, #BUF+1 MOV R2, #4 MOV A, #00H ORL A, #0F0H S3: MOV P2, A ACALL DELAY
CJNE R2, #2, S3 ORL A, #02H S4: PUSH Acc MOV A, @R0 MOV P1, A POP Acc MOV P2, A ACALL DELAY MOV A,#0F1H DEC R0 DJNZ R2, S4 SETB F0 RET
; 显示程序2,分不显示,秒显示 DISP2:
MOV R0, #BUF+3 MOV R2, #4 MOV A, #0F8H S5: PUSH Acc MOV A, @R0 MOV P1, A POP Acc MOV P2, A ACALL DELAY MOV A, #0F4H DEC R0 DEC R2
CJNE R2, #2, S5 ANL A, #0F0H S6: MOV P2, A ACALL DELAY DJNZ R2, S6 SETB F0 RET ; 调节秒 SET_SEC:
CLR TR0 MOV R5, #0 L0: JB F0, L01 ACALL DISP INC R5
CJNE R5, #55, L1 L01: ACALL DISP1
INC R5
CJNE R5, #110, L1 MOV R5, #0 CLR F0 JMP L0
L1: JB K1, L2 ; 再按调节按钮,退出秒调节 JNB K1, $ INC SPK CLR F0 RET
L2: JB K2, L3 JNB K2, $ MOV SPK, #0 CLR F0 ACALL CONV ACALL DISP SETB TR0 RET
JNB K3, $ INC SEC MOV R5, #0 MOV A, SEC CJNE A, #60, L11 MOV SEC, #0 L11: ACALL CONV ACALL DISP CLR F0 JMP L0
JNB K4, $ MOV R5, #0 MOV A, SEC CJNE A, #0,L40 ACALL CONV ACALL DISP CLR F0 JMP L0 L40: DEC SEC ACALL CONV ACALL DISP CLR F0 JMP L0
; 按下确认按钮,退出调节,并且正常工作 ; 按下增加按钮,秒数加1 ; 按下减少按钮,秒数减1 L3: JB K3, L4 L4: JB K4, L0
; 调节分 SET_MIN:
CLR TR0 MOV R5, #0 L02: JB F0, L03 ACALL DISP INC R5
CJNE R5, #55, L5 L03: ACALL DISP2 INC R5
CJNE R5, #110, L5 MOV R5, #0 CLR F0 JMP L02
L5: JB K1, L6 JNB K1, $ DEC SPK CLR F0 RET
L6: JB K2, L7 JNB K2, $ MOV SPK, #0 CLR F0 ACALL CONV ACALL DISP SETB TR0 RET
L7: JB K3, L8 JNB K3, $ INC MIN MOV R5, #0 MOV A, MIN CJNE A, #60, L12 MOV MIN, #0 L12: ACALL CONV ACALL DISP CLR F0 JMP L02
L8: JB K4, L02 JNB K4, $ MOV R5, #0 MOV A, MIN CJNE A, #0, L80 ACALL CONV
ACALL DISP CLR F0 JMP L02 L80: DEC MIN ACALL CONV ACALL DISP CLR F0 JMP L02 END
2.4 软件与硬件结合调试
硬件调试:硬件调试是利用DVCC 实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。硬件调试可分为静态调试与动态调试两步进行。
静态调试:是在用户系统未工作时的一种硬件检测。
第一步:目测。检查外部的各种元件或者是电路是否有断点。
第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:加电检测。给板加电,检测所有插座或是器件的电源端是否符合要求的值 第四步:联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。 动态调试:是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的 器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
可以利用仿真器加以调试,对系统单个单元进行调试,当单元电路成功后,在对整个程序调试,最后在用CPU 芯片调试。
3. 总结
通过这两周的课程设计,让我了解了设计电路的程序,也让我了解了数字钟的工作原理和设计理念,加强了我们动手、思考和解决问题的能力。在此次的数字钟设计过程中,我进一步熟悉了单片机芯片的硬件结构和各引脚的功能,以及其他芯片如CD4511、数码管的工作原理和使用方法,巩固和加强了理论知识。
这次课程设计给我的最大感受就是仅仅学理论知识是不够的,必须将理论知识和实践结合起来,在实践中应用理论知识,从而使其得到更深刻的理解和巩固,来提高自己的实际运用能力和独立思考的能力。在设计的过程中遇到了重重困难,不过经过老师的耐心指导和同学的帮助,很多问题都解决了。最困难的就是调试调试程序,刚开始程序总是不能满足要求,不过经过多次更改,最后终于成功了。不过在硬件上,数码管显示不是令人很满意,可能是焊接的原因,多次查找也没能解决,这方面还需要多多练习。
设计是一个团队的任务,我们在一起工作很愉快,互相帮助,互相学习。我感觉我和同学们的关系更近了。团结协作是成功的一项非常重要的保证,而这次课程设计也正好锻炼了这一点,这也是非常宝贵的。
设计中的很多问题都是老师在老师辛勤、耐心的指导下完成的,同时,我们也从老师身上学到了很多知识,在此表示感谢! 4. 参考文献
[1] 权明富, 齐佳音, 舒华英. 客户价值评价指标体系设计[J].南开管理评论,2004,7(3):17-18.
[2]张毅刚. 单片机原理及应用. 高等教育出版社,2003
[3]苏家键等. 单片机原理及应用技术. 北京:高等教育出版社,2004 [4]钟睿.MCS-51 单片机原理及应用开发技术. 北京:中国铁道出版社,2006 [5]蓝清华等. 单片机应用教程. 北京:清华大学出版社,1999 [6]范蟠果. 工控单片机原理及应用. 北京:清华大学出版社,2007
[7]黄智伟. 凌阳单片机课程设计指导. 北京:北京航空航天大学出版社,2007
范文五:简易数字钟设计
简易数字钟设计
摘 要
所谓数字钟,是指利用电子电路构成的计时器。相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。在此基础上,还能够实现整点报时,定时报闹等功能。
设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。
关键词 数字钟,EWB,74LS160,总线,三态门,子电路
一、 引言
本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计,最后将设计好的模块组合调试,并最终在EWB下仿真通过。
二、 任务分析
能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,
能整点报时,定点报时,使用4个数码管,能切换显示。 三、 总体设计
本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。
方案一、采用异步电路,数据选择器
将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:
切换 显示
闹钟
小时 分钟 秒钟
1Hz脉冲信号
控制
该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。
1
方案二、采用同步电路,总线结构
时钟信号分别加到各个模块,各个模块功能相对独立,框图如下:
显示总线
显示 闹钟
小时 分钟 秒钟
1Hz信号
控制
控制总线
该方案用总线结构,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,本次设计采用此方案。
综上所述,本次设计采用方案二。秒计数和分计数为60进制,时计数为24进制,为了简化设计,秒和分计数采用同一单元。控制模块有两部分,一为实现调整切换,二为实现显示切换。现对本方案中的各个主要功能模块的接口定义如下:
1. 60进制模块(电路图中模块名称为60count,下同。)
实现同步60进制计数,可调整
5v 电源
时钟信号输入 接1Hz的信号源
进位输入 接秒的进位信号,实现秒功能时,接低电平。
2
进位输出 秒模块接分模块,分模块接时模块 显示输出 接到显示总线,能闪烁
闹钟比较信号接到闹钟,秒模块悬空
输出
整点报时信号接到响铃,实现3短1长响铃 输出
调整使能端 入0有效,有效时,显示信号输出,同时屏
蔽进位输入和进位输出,允许调整信号输
入。
显示使能端 入0有效
调整信号输入
2. 24进制模块(24count)
实现同步24进制计数,可调整
电源,时钟信号 同上
进位输入 接分的进位信号
进位输出 秒模块接分模块,分模块接时模块 显示输出 同上
闹钟比较信号接到闹钟
3
输出
调整使能端,显同上
示使能端,调整
信号输入
3. 闹钟模块(60clock,24clock)
实现可与时钟比较,并输出闹铃信号,可调整 电源,时钟信号 同上
闹钟比较信号秒模块接分模块,分模块接时模块 输入
显示输出 同上
闹铃输出 接到蜂鸣器
调整使能端,显同上
示使能端,调整
信号输入
4. 控制模块(fun,func)
管理总线资源,对各个模块输出控制信号
5v VCC 电源
调整切换信号 接各个需要调整的模块
4
调整信号 接到各个需要调整的模块
显示切换信号 接到各个需要共享显示总线的模块
控制信号输出 接到各个模块,有且只能有1个为0
至此,本阶段就结束了。在上面的接口定义中,也可以发现,
各个模块的独立性是很强的,这样的结构使得以后的扩展很容易。 四、 详细设计
在上一阶段进行总体设计完成后,现在就可以分开独立的完成各个功能模块了。本阶段主要问题在于计数器的设计,计数部分需要24进制和60进制计数器,控制部分需要循环计数器。由于标准集成计数器没有所需进制,需要编程实现。
首先,需要选择使用集成芯片,总体思路是在满足所需功能前提下,能是电路尽可能简单。有以下方案:
1. 采用74160
该芯片管脚及功能表如图所
5
示:74160为异步复位,同步置数,ENP,ENT同时为一时才可以计时,其中之一为高电平时,则保持。RCO产生进位信号。74160相对于其他芯片来说,功能较少,使用简单,但是也因功能简单导致在实现数字钟的某些特定功能时需要加入比较多的附加电路。如74160没有减计数的功能,须寻求其他方法来解决,设计较复杂。,由于不准备设计减计数,在功能能满足要求的前提下,该芯片使用简单,适合此次设计。
2. 采用74190
芯片管脚图及真值表如图所示:可
知,74190上升沿触发,由U/D’控制
加减计数,有异步置数段,,,,,没
有复位端,,,,输出低电平的进位或
借位信号,,,,,,,,在为,或,
时输出高电平,,,,,高电平时保持。74190的功能相当强,但也因此使用复杂,不利于电路的简化,且该芯片没有复位端,不利于某些功能的实现。由于本次设计不使用加减计数,该芯片有较多多余功能,不采用。
6
3. 采用74192
管脚图和真值表如图所示:可知,
74192上升沿触发,由,,,,,,
,两管脚控制加减计数,有异步置数
端,,,,和异步复位端,,,,,,’和,,’分别输出高
电平表示加进位和减进位。74192功能可以完成本次设计目标,
但如果不设计减计数的话则有许多多余管脚,使用复杂,基于
简单原则,本设计不采用。
综上所述,本次设计采用74160作为主
要芯片。
本次设计还要使用循环计数器,采用
74160与74138构成。
74138的管脚图和真值表如图:输出信号中只有一条为低电平,其余为高电平,与74160组合使用后,可产生满足要求的控制信号。
7
至此,可以根据总体设计中对子模块的定义,对各个模块进行单独设计了。设计过程中可对单个模块进行调试,调试通过后,打包成模块(子电路),方便以后使用。
(详细电路图附在文后)
五、 组装电路并调试
在经过前面几个阶段的设计后,数字钟的各个模块已经设计完毕,根据总体设计时的方案框图,将各个子电路组合起来,加入1Hz的时钟信号,对电路进行总体测试。
经测试,电路可以正常计时,并显示,调整无误。
将时间调整到23:59,闹钟调到00:01分,进行测试,时钟进位正常,有整点报时,报时为3短1长,闹铃正常,响铃持续1分钟,中间可按调整键关闭闹铃。心得体会
经过长达两个星期的设计与思考,最终在EWB上完成了数字钟的模拟。其间遇到了许多问题,但最后都一一得到解决。现将心得体会总结如下:
1. 设计初期要考虑周到,否则后期改进很困难。应该在初期就多思考几个方案,进行比较
论证,选择最合适的方案动手设计。总体设计在整个设计过程中非常重要,应该花较多
8
的时间在上面。
方案确定后,才开始设计。设计时,多使用已学的方法,如列真值表,化简逻辑表达式,
9
附录二 电路图
10
11
12
13
14
15