第一篇:基于小规模芯片的电子时钟课程设计
摘 要
电力电子技术是一门新兴的应用于电力领域的电子技术,就是使用电力电子器件(如晶闸管,GTO,IGBT等)对电能进行变换和控制的技术。电力电子技术所变换的“电力”功率可大到数百MW甚至GW,也可以小到数W甚至1W以下,和以信息处理为主的信息电子技术不同电力电子技术主要用于电力变换。电子电力技术对于生活与工业生产起到了重要的作用。无论是小到玩具的控制,大到航天器件的控制。都离不开电力电子技术。
电力电子技术分为电力电子器件制造技术和变流技术(整流,逆变,斩波,变频,变相等)两个分支。现已成为现代电气工程与自动化专业不可缺少的一门专业基础课,在培养该专业人才中占有重要地位。
关键字:电子电力技术,芯片,变流技术。
目 录
摘要.............................................Ⅰ
1、绪论......................................1
2、相关芯片知识.................................2 2.1 相关芯片简介.....................................2 2.2电力电子技术的应用.......................................5
3、课程设计的内容及设计方案.............................6 3.1设计任务及要求................................6 3.2方案的讨论................................6 3.3外部电路设计........................................7
4、调试...................................10 4.1系统调试.................................12 附录...................................10 心得体会.............................................12 参考文献..........................................13
1、绪论
电力电子技术是建立在电子学、电工原理和自动控制三大学科上的新兴学科。因它本身是大功率的电技术,又大多是为应用强电的工业服务的,故常将它归属于电工类。电力电子技术的内容主要包括电力电子器件、电力电子电路和电力电子装置及其系统。电力电子器件以半导体为基本材料,最常用的材料为单晶硅;它的理论基础为半导体物理学;它的工艺技术为半导体器件工艺。近代新型电力电子器件中大量应用了微电子学的技术。电力电子电路吸收了电子学的理论基础,根据器件的特点和电能转换的要求,又开发出许多电能转换电路。这些电路中还包括各种控制、触发、保护、显示、信息处理、继电接触等二次回路及外围电路。利用这些电路,根据应用对象的不同,组成了各种用途的整机,称为电力电子装置。这些装置常与负载、配套设备等组成一个系统。电子学、电工学、自动控制、信号检测处理等技术常在这些装置及其系统中大量应用。
对于这一次的电子时钟的设计,利用电力电子元器件来构造,是对我们的电力电子技术水平的提升和考验。
2、相关芯片知识。2.1相关芯片的简介。(1)CD4060芯片介绍
图1
图2 由图1与图2可知CD4060芯片可以用来做分频器来使用,其主要作用就是为 给时钟提供一个比较精准的秒数来提供计数单位。
引脚介绍:
VDD: VSS: 芯片接地端。
芯片电源端,接5v电压源。
Q4-Q14:作为分频端,由图2可已看出,一2^Qn次方对输入频率尽心分频。可以得到1HZ的频率输出。
RESET: 清零开关,当RESET脚导入由地电位到高电位变化时,芯片数据清零。
图3为RC自振荡发生电路接线图。
图3
(2)、74LS161芯片介绍
图4、74LS161 图4为74161芯片的图片。总共有16支管脚,其中每支管脚的作用如下所示: VCC: 芯片电源端,接5V电源。
Q0-Q3: 芯片输出端,输出4位符合8421编码的二进制数。P0-P3: 预置数端口,可为芯片实现预置数功能。R: 复位端口,当该引脚来一高电位芯片复位。CP: 计数脉冲的输入端。CEP:平行输入使能端。TC: 使用时接高电位。CEP: 使用时接高电位。GND: 接地端。
图5 74161动能表
由图5可以看出,只有当R、PE、CET、CEP四个端口同时达到高电平是该芯片能够实现技术功能。当R引脚由高变为低电平时,芯片实现复位功能。
(3)、74LS47芯片简介
图6 图7 如上图6与图7可以知道74LS47的作用,主要用来实现对7端数码管的编译工作。
图8 图8为74LS47的功能表,输出与8421BCD吗对应的数码管编码。
(4)、与门、非门、与非门的简介。
与门的逻辑关系非常简单,同理非门和与非门的逻辑关系一样也很简单,这里就不多作介绍。
2.2、电力电子技术的应用。
一般工业: 交直流电机、电化学工业、冶金工业
交通运输: 电气化铁道、电动汽车、航空、航海
电力系统: 高压直流输电、柔性交流输电、无功补偿
电子装置电源: 为信息电子装置提供动力
家用电器: “节能灯”、变频空调
其他: UPS、航天飞行器、新能源、发电装置
3、课程设计的内容及方案。
3.1、设计任务及要求。
电子技术课程设计应达到如下基本要求:
(1)综合运用电子技术课程中所学到的理论知识去独立完成一个设计课题。(2)通过查阅手册和文献资料,培养学生独立分析和解决实际问题的能力。(3)进一步熟悉常用电子器件的类型和特性,并掌握合理选用的原则。(4)学会电子电路的安装与调试技能。(5)进一步熟悉电子仪器的正确使用方法。(6)学会撰写课程设计总结报告。
(7)培养严肃认真的工作作风和严谨的科学态度。
电子课程设计的任务:
用中小规模集成芯片设计多功能数字钟,1、准确计时,以数字形式显示时(00~23)、分(00~59)、秒(00~59)的时间。
2、具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位
3.2、方案的讨论。
方案
1、利用74LS390实现十进制的计数器,实现对秒和分的各位进行计数。再利用74161构成二十四进制计数对时进行计数。
方案
2、利用74LS1611来实现所有计数功能。
选择方案二来实现的原因有开始用芯片少,易于实现。比较经济。
3.3、外部电路设计。
(1)、秒晶振实现
图9
产生1HZ的脉冲用于实现秒计数的是通过使用CD4060芯片的自起振作用来实现的,芯片的默认频率为32768HZ通过13分频后可以得到1HZ的振动频率。图9是芯片的自起振动的电信电路接法,具体的芯片使用见上面所描述。
(2)、计数器的实现
图10
计数部分是由两片74LS161组成的。第一片适用于构成十进制计数器,满十进一,通过一个与非门进行反馈到MR管教,进行芯片复位处理。主要用于计数秒的各位。
第二块芯片有第一款芯片的进位信号作为输入脉冲信号,达到两块芯片级联来实现六十进制的计数器的构造。作为秒的十位输出。再通过7400进行反馈来清零芯片内部数据。
(3)、时计数与显示芯片的实现
图11
对于“时”的显示调节比较复杂。对于时的复位有两种肯能,一种是个位数满十复位,十位满二复位。并且当个位满四,且十位满二时进行复位。于是采用两路型号的与门来实现对芯片的复位,即实现在个位满十的时候复位,又能满足总数为二十四的时候进行复位,既可以实现数字时钟的功能。
显示芯片是使用的74LS47译码器。它的功能在前面的章节已经介绍过啦。它能够实现对数码管的编码工作,实现显示数字的作用。
同时对于调节按钮的设计也比较方便的。
(4)、调节按钮
图12
在电子时钟显示系统中要实现对时分秒的调节功能,于是。利用对信号脉冲的调节来实现对显示的调节。其中SW1为调节开关,按下后,时钟不进行计数,本质是在于将产生秒脉冲的信号接地处理。
秒调节按钮,同样是接到秒脉冲之上,对他进行脉冲的调节来实现对计数的加法运算。
分调节与时调节,同上所示。
(5)、显示模块
图13
显示模块是由8只数码管来尽心是实现的,通过译码器来对输入的信号进行编码后输送到数码管中进行显示。
4、系统调试
图14
图14为系统的调试运行图。在模拟运行时,由CD4060产生脉冲信号。输入到74LS161中进行处理,然后送到下一级计数器中处理,如此循环实现控制。
通过调节四个按钮也可以实现对他的控制调节。
附 录
电路原理图
心 得 体 会
这次课程设计让我体会到,再大的一个系统其实也可以分解为一小块一小块的分解模块来实现,就比如说我们的电子时钟,可以分解为自激振动模块,计数模块,复位模块,显示模块。每一个模块有时可以由最简单的基础元件组成的。这样一来,所有的复杂的,多元的,都可以将其分解为我们最熟悉的模块来解决。
这种基本方法就是我这次课程设计最大的心得体会。同时,对于各电路中的逻辑关系也要十分的明白,像CD4060芯片中复位的信号时一个低电平进行复位,与其他的有区别。还有构建二十四进制的时钟“时”显示的时候,他的逻辑关系就更要搞明白,否则就容易出错误。
参 考 文 献
[1] 张克农,宁改姊,数字电子计数基础.高等教育出版社,2010.[1]Brand Holdsworth,Clive Wood,数字逻辑设计.人民邮电出版社,2006.
第二篇:数电电子时钟课程设计
专业课程设计报告
题目:数字电子钟课程设计
系
别
电气工程系
专业班级
电气班
学生姓名
指导教师
提交日期
2011年X月X日
一、设计目的3
二、设计要求和设计指标
三、设计内容
3.1方案设计与选择
3.2原理设计和功能描述
3.2.1数字计时器的设计思想
3.2.2数字电子钟总体框架图
3.3单元电路的设计
3.3.1数字电子钟原理效果图
3.3.2晶体振荡器电路
3.3.3分频器电路
3.3.4时间计数器电路
3.3.5数码管
3.3.6扬声器
3.4元器件清单
3.4.1数字电子钟仿真
四、本设计改进建议
五、感想
六、主要参考文献
附录
一、设计目的数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
二、设计要求和设计指标
1、设计一个能显示时、分、秒的数字钟,显示时间从00:00:00到23:59:592、设计的电路包括产生时基信号,时、分、秒的计时电路,显示电路。
3、扩展功能:能实现校时、教分、教秒;整点报时。
三、设计内容
3.1方案设计与选择
数字电子技术的复杂性和灵活性决定了数字电子钟的设计方案有多种,如下是我总结的部分方案。
方案一:
脉冲信号源的选择。用555定时器制作的多谐振荡器,信号发生器,脉冲芯片等方式都可以作为脉冲信号源,在此我选择的是多谐振荡器,主要考虑的是它的易于制作和很好的稳定性。
方案二:
时分秒计数器的选择。时分秒计数器的选择同样有多种,74160N和74161N都是不错的选择,74LS160和
74LS161,74LS190和74LS191等等也都可以,考虑到其简单易用和作为课本上重点内容在此我们选择的是74160N。
方案三:
译码显示器的选择。DCD_HEX或7448加上SEVEN_SEG_COM_K等也是多种方案,这里我选择的是DCD_HEX。
3.2原理设计和功能描述
3.2.1数字计时器的设计思想
要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。
3.2.2数字电子钟总体框架图
图2-2
3.3单元电路的设计
3.3.1数字电子钟原理效果图
图2-3-1
3.3.2晶体振荡器电路
晶体振荡器是电子钟的核心,晶体振荡器设计的质量直接影响了整个电的好坏。这里我用555定时器制作了一个多谐振荡器。
其中R1=57.72
kΩ,R1=115.4
kΩ,C=100nF,Cf=10nF,f=1/0.7(Rw+2R)C=1/[0.7(57.72+2*115.4)*103*100*10-9]≈50Hz。
其产生的频率为50Hz,然后经过整形、分频获得1Hz的秒脉冲。如图:
图2-3-2
3.3.3分频器电路
分频器是由两个74160N组成的50进制计数器。则输出端的频率则是将原来的50Hz分成1Hz的频率输出,实现分频效果。
图2-3-3
3.3.4时间计数器电路
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器,其原理图如下:
图2-3-4
3.3.5数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管DCD_HEX,其已内含译码器功能,所以不用再另加译码器。
图2-3-5
3.3.6扬声器
该扬声器的额定频率为200Hz,额定电压为3V,额定电流为0.05A。
图2-3-6
3.4元器件清单
元件名称
数量(个)
DCD_HEX
74160N
555_VIRTUAL
4049BT_5V
74LS00D
57.72kΩ电阻
115.4kΩ电阻
5V直流电源
BUZZER
100nF电容
10nF电容
导线
若干
表2-4
3.4.1数字电子钟仿真
下图为仿真结果,仿真开始时,多谐振荡器产生50Hz的正弦脉冲信号,然后经过分频器后其输出的频率变为1Hz。计数器接收到脉冲信号后开始计数,计数结果显示在数码管上。当分秒计数器达到59分59秒,然后再来一个脉冲信号时扬声器开始发声,也就是整点报时。下面为其中的一张仿真图。
图3-1
四、本设计改进建议
1、应选用石英晶体振荡器,为了简化电路分频选用CD4040。
2、本设计校时电路是将各个位上的使能端引出接一个单刀双掷开关,一端(1端)接低位的进位信号,另一端(2端)接校时电路。校正某位上的时间时,可以将相应位的开关接到2端,通过拨动校时电路就能实现校时功能。
3、没有校时电路。
五、感想
(1)
布局设计:要先根据主体电路图和扩展电路图想象各个元件的分布位置,哪块电路板该放哪些元件,如何最大限度利用电路板的空间,怎么样才能使走线明朗、简洁。
(2)
布线工艺:一开始看到电线像蜘蛛网一样,密密麻麻的,非常难看懂和检查,后来看了预先设计的线路,而且用各种颜色的导线区分,显得明朗清晰。
(3)
课题核心及使用价值:该课题用一个生活中的实力展示了振荡电路、计数电路、译码电路的作用与衔接过程,揭示了电子钟内部电路图及其各部分的作用。我们通过此课题,结合上学期学习的模拟电子、数字电子技术的理论课知识,可以系统地学习电子设计与测试的流程、方法、原理,为我们以后设计更加专业、复杂的集成电路打下雄厚的基础。
六、主要参考文献
[1]
清华大学电子学教研组编,童诗白、华成英主编:《
模拟电子技术基础
》
[
M
]
.(第四版).北京:高等教育出版社,2006.5(2009重印)
[2]华中工学院电子学教研室编,康华光主编:《电子
基础——数字部分》
[M]
.(第四版).北京:高等教育出版社,1988年
[3]
清华大学电子学教研组编,阎
石主编:《
数学电子技术基础
》
[M]
.(第五版).北京:高等教育出版社,2006.5(2008年重印)
[4]辽宁工程技术大学电工与电子技术实验中心组编,马玉芳、朴忠学、张国军主编:《
电子技术实验指导书
》,2010.3
[5]朱清慧、张凤蕊、翟天蒿、王志奎编著:《
Proteus教程——电子线路设计、制版与仿真
》
[M]
.北京:清华大学教育出版社,2008.9
[6]熊幸明主编:《电子电工技能训练》
[M].北京:电子工业出版社,2005年
华nan理工大学guang州学院
附录
第三篇:电子时钟 电子技术基础 课程设计
课程设计报告
课 程 名 称 电子技术基础 院 部 名 称
机电工程学院
专
业
自动化
班 级 10自动化 指 导 教 师 赵国树
金陵科技学院教务处制
目录
一、课程设计应达到的目的............................................二、课程设计题目及要求..............................................三、课程设计任务及工作量的要求....................................1.设计要求.......................................................2.总体参考方案.................................................3.单元电路设计....................................................(1).秒脉冲发生器.............................................(2).秒、分、时计数器...........................................(3).秒、分、时译码显示模块....................................(4).校时电路................................................4.附图说明各部分功能的实现....................................(1).开始状态................................................(2).时、分、秒分别校时........................................(3).3满60秒向分钟进位状态...................................(4).满60分向小时进位状态....................................(5).23:59:59向00:00:00进位状态................................5.整体电路图....................................................6.实验室调试....................................................(1).元件清单.................................................(2).调试过程...............................................(3).调试结果(照片).........................................(4).调试心得体会..............................................参考文献.......................................................致谢........................................................一、课程设计应达到的目的
1、掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安装、测试方法;
2、进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力;
3、提高电路布局﹑布线及检查和排除故障的能力;
4、培养书写综合实验报告的能力。
二、课程设计题目及要求
数字电子时钟设计
1、准确计时,以数字形式显示时、分、秒的时间。
2、小时计时采用24进制的计时方式,分、秒采用60进制的计时方式。
3、具有快速校准时、分的功能。
三、课程设计任务及工作量的要求
1、设计要求
(1)、准确计时,以数字形式显示时、分、秒的时间。
(2)、小时计时采用24进制的计时方式,分、秒采用60进制的计时方式。(3)、具有快速校准时、分的功能。
2、总体参考方案 框图
T0.7(R12R2)C0.7(6k24.7k)100uF1.078s
3.单元电路设计(1).秒脉冲发生器
采用555施密特触发器
相关计算如下
仿真图
(2).秒、分、时计数器
秒脉冲信号经过6级计数器,分别得到“秒”个位、十位、“分”个位、十位以及“时”个位、十位的计时。“秒”“分”计数器为六十进制,小时为二十四进制。
由秒脉冲获得的1Hz的频率首先送到计数器,这里采用的是十进制计数器74LS192,达到10次脉冲向前进位并且同步清零,一次来实现“秒”各位的十进制,然后产生一个进位信号,向“秒”的十位送达一个脉冲,“秒”的十位数字将要显示六时,将Q1,Q2经过与门与MR相连,一次达到“秒”的六十清零的目的,同样,分钟的个位的计数要通过秒十位的Q1,Q2经过与门,与“分”个位的家计数器相连,时,“12翻1”小时计数器是按照“01——02——03——„„——22——23——00——01——02——„„”规律计数的,这与日常生活中的计时规律相同。在此实验中,它是由两片cc40192和一片cc4011构造成的同步二十四计数器,利用异步清零端实现起从23——00的翻转,其中“24”为过渡状态不显示。其中,“时”十位是3进制,“时”个位是十进制。
74LS192功能及引脚图
、可预置的十进制加/减计数器
仿真图
(3).秒、分、时译码显示模块
本系统用七段发光二极管来显示译码器输出的数字,显示器有两种:共阳极显示器或共阴极显示器。74LS48译码器对应的显示器是共阴极显示器。
(4).校时电路
当数字钟走时出现误差时,需要校正时间。校时电路实现对“时”“分”
“秒”的校准。在电路中设有正常计时和校对位置。本实验实现“时”“分”的校对。对校时的要求是,在小时校正时不影响分和秒的正常计数;在分校正时不影响秒和小时的正常计数。需要注意的时,校时电路是由与门构成的组合逻辑电路如下图示:
方法:“秒”校时采用等待校时法。正常工作时,将开关S1拨向VDD位置,不影响与门G1传送秒计数信号。进行校对时,将S1拨向接地位置,封闭与门G1,暂停秒计时。标准时间一到,立即将S1拨回VDD位置,开放与门G1。“分”和“时”校时采用加速校时法。正常工作时,S2和S3接地,封闭与门G3或G5,不影响或门G2或G4传送秒、分进位计数脉冲。进行校对时,将S2、S3拨向VDD位置,秒脉冲通过G3、G2或G5、G4直接引入“分”、“时”计数器,让“分”、“时”计数器以秒节奏快速计数。待标准时、分一到,立即将S2、S3拨回接地位置,封锁秒脉冲信号,开放或门G2、G4对秒、分进位计数脉冲的传送
仿真图
4、附图说明各部分功能的实现
(1).开始状态
(2).时、分、秒分别校时
.(3)..满60秒向分钟进位状态
(4)、满60分向小时进位状态
(5)、23:59:59向00:00:00进位状态
5.整体电路图
6、实验室调试(1)元件清单
(2)调试过程
于6月7日下午开始进行实物调试,历时四个小时。首先调试的是秒脉冲发生器,以NE555为主要芯片其引脚示意图如下图示
选择合适的电阻电容,根据仿真的数据以及连接方式,对其进行调试,由于脉冲产生的波形不稳定,可以采取将脉冲信号经过非门调试。计数器采用的是十进制计数器74LS192,其引脚示意图以及功能表如下示
74ls192引脚图
74ls192功能表
将192的输出端Q1、Q2、Q3、Q4分别与译码器74LS48的A、B、C、D相连接,其引脚示意图如下图示
译码器与共阴极的七段数码管分别相连接。主要部分已经完成,所需要注意的是,每一个芯片都要接通电源和地。至于控制电路以及逻辑进位和清零,所需要的芯片主要是与门和或门以及非门,三者的引脚示意图分别如下示
(与门74LS08)(或门74LS32)(非门74LS00)
(3)调试结果(照片)由于跳动的太大,在进行校正时,可能不会尽如人意,照片如下图示
(4)调试心得体会
通过这次数字电子钟的课程设计,我们才把学到的东西与实践相结合。从中对我们学的知识有了更进一步的理解,而且更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。设计本身并不是有很重要的意义,而是同学们对待问题时的态度和处理事情的能力。各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。同一个电路可以用那些芯片实现,各个芯片实现同一个功能的区别。
另外,我还渐渐熟悉了pruteus这个仿真软件的各个功能,让我体会到了期中的乐趣,还在电脑制作文档的过程中,使我对办公软件有了更进一步的了解和掌握。
参考文献
1.现代数字电路与逻辑设计 清华大学出版社 北京交通大学出版社.2.模拟电子技术(修订版)清华大学出版社 北京交通大学出版社
3.模拟电子技术教程 电子工业出版社
4.朱定华主编.电子电路测试与实验.北京:清华大学出版社,2004.致谢
首先要感谢赵国树老师的悉心教导,几天来,赵老师的不辞劳苦给我留下了深刻的印象,赵老师严谨的教学态度以及他丰富的学识,让我们学到了很多在《数字电子电路》等方面的知识,同时让我们认识它的趣味性、实用性,让我深深的喜欢上了这门学科。当我们在课程设计上遇到困难时,老师一边又一遍的给我们讲解,在此,向赵国树老师致以最诚挚的谢意。
第四篇:数字电子时钟课程设计2
数字电子时钟课程设计
题目:
数字电子时钟课程设计
目录
一、设计任务及设计要求…………………………………………(3)
二、设计方案论证
…………………………..………….(3)1.总体方案及框图 2.各部分论证
三、单元电路设计…………………………………………………(4)1.振荡器 ………………………………………………………(4)2.秒、分、时计数器…………………………………………(5)
3.显示译码/驱动器和LED七段数码显示管……………….(6)
4.分频器……………………………………………………(7)5.报时电路…………………………………………………(9)
四、总体电路设计及原理………………………………………(13)
五、元器件明细表………………………………………………(10)
六、心得体会……………………………………………………(11)
七、参考文献……………………………………………………(11)
一、设计任务及设计要求 1.设计任务
数字电子钟的逻辑电路 2.设计要求
(1)由晶振电路产生1HZ的校准秒信号。
(2)设计一个有“时”、“分”、“秒”(23小时59分59秒)显示切且具有校时、校分、校秒的功。
(3)整点报时功能。要求整点差10秒开始每隔1秒鸣叫一次,共五次,每次持续时间为一秒,前五次为500赫兹的声音,最后依次为1000赫兹的声音。(4)用中小规模集成电路组成电子钟,并在实验箱上进行组装和调试。(5)划出框图和逻辑电路图,写出设计,实验总结报告。
二、设计方案论证
数字钟原理框图如图1所示,电路一般包括以下几个部分:振荡器、分频器、译码显示电路、时分秒计数器、校时电路、报时电路。
图一
对于各个部分而言
数字钟计时的标准信号应该是频率相当稳定的1HZ秒脉冲,所以要设置标准时间源。
数字钟计时周期是24小时,因此必须设置24小时计数器,他应由模为60的秒计数器和分计数器及模为24的时计数器组成,秒、分、时由七段数码管显示。
为使数字钟走时与标准时间一致,校时电路是必不可少的。设计中采用开关控制校时直接用秒脉冲先后对“时”“分”“秒”计数器进行校时操作。
能进行整点报时。在从59分50秒开始,每隔2秒钟发出一次低音“嘟”的信号,连续五次,最后一次要求最高音“嘀”的信号,此信号结束即达到正点。
三、单元电路设计 1.各独立功能部件的设计(1)、振荡器 振荡器是计时器的核心,其作用是产生一个标准频率的脉冲信号振荡频率的精度和 稳定度决定了数字钟的质量。第一种方 案采用石英晶体振荡器,如图二。使用 振荡频率为32768HZ的石英晶体和反 向器构成一个稳定性极好、精度较高 的时间信号源。改变电容C可以
图 二
石英晶体振荡器
振荡器的频率进行微调,再通过一个反相器,输出32768HZ的方波将此方波的频率进行15次二分频后,在输出端刚好可得到频率为1HZ的脉冲信号。
第二种方案如图三采用集成电路555定时器与RC组成的多谐振荡器。输出的脉冲频率为fS=1/[(R1+2R2)C1ln2]=1KHZ,周期T=1/fS=1ms。若参数选择:R1=R2=10K欧姆,C1=47uF时,可以得到秒脉冲信号。
图三 方波信号发生器
附555定时器的功能表 输
出 输
出
阀值输入(v11)触发输入(v12)复位(RD)输出(VO)发电管T × × 0 0 导通
<2/3VCC <1/3VCC 1 1 截止 >2/3VCC >1/3VCC 1 0 导通 <2/3VCC >1/3VCC 1 不变 不变
(2)秒、分、时计数器
U1到U6 六个74LS161构成数字钟的秒、分、时计数器。
U1、U2共同构成秒计数器,它由两个74LS161构成六--十进制的计数器,如图四。U1作为秒个位十进制计数器,它的复位输入RD、和置位输入LD都接低电平,秒信号脉冲作为计数脉冲输入到CP1端,输出端C控制U2秒十位计数器的计数脉冲输入。Q1、Q2、Q3、Q4作为秒个位的计时值送至秒个位七段显示译码/驱动器。
U2作为秒十位六进制计数器,它的计数脉冲输入受到秒个位U1的控制,其计数器使能端EP、ET与U1的输出端C相连接。当U2计数器计到0011,即清零信号到复位输入端时,Q1、Q2、Q3、Q4输出的都是零。Q1、Q2、Q3、Q4作为秒十位的计时值送至秒十位七段显示译码/驱动器。U3、U4分别构成分个位十进制和分十位六进制计数器,如图四。U3、U4与U1、U2的连接方法相似。当计数器输出为01011001状态,U3(U1)、U4(U2)的LD端同时为“0”,使计数器立即返回到00000000状态。这样就构成了六十进制计数器。
图四 六十进制计数器
U5、U6共同构成时计数器,它由两个74LS161构成六十进制的计数器
如图五。U5作为时十位计数器,它的复位输入RD、和置位输入LD都接低电平,时信号脉冲作为计数脉冲输入到CP1端,输出端C控制U6秒十位计数器的计数脉冲输入。Q1、Q2、Q3、Q4作为秒个位的计时值送至秒个位七段显示译码/驱动器。当计数器输出为00100100状态,U5、U6的LD端同时为“0”,使计数器立即返回到00000000状态。这样就构成了二十四进制计数器。
U12
图五
二十四进制计数器
(3)显示译码/驱动器和LED七段数码显示管
六个74LS248集成电路构成数字钟的七段数码显示管显示译码/驱动器。74LS248七段显示译码器输出高电平有效,将8421BCD码译成七段(a、b、c、d、e、f、g)输出,用以直接驱动LED七段数码显示对应的十进制数。74LS248的显示功能:
显示功能见功能表的上半部分。[DCBA]是二进制码输入,要正确的执行显示功能,有关的功能端必须接合适的逻辑电平,这些功能端的作用随后介绍。对于0~9输入,[DCBA]相当BCD8421码。当超过9以后,译码器仍然有字型输出,具体见图六。当[DCBA]=1111时,数码管熄灭。实验时要在笔划段电极串联电阻,以保护LED数码管。表1 中规模显示译码器74LS248的功能表 十进制
或功能 输
入
输
出
D
C
B
A
a
b
c
d
e
f
g 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 H H H H H H H H H H H H H H H H H ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´
´ L
L L
L L
L L
L L
H L
L L
H H
L H
H L
L
L
H
L
H L
H
H
L L
H
H
H H H H H H H H H H H H H H H H H
H
H
H
H
H
H
L
L
H
H
L
L
L
L
H
H
L
H
H
L
H
H
H
H
H
L
L
H
L
H
H
L
L
H
H
H
L
H
H
L
H
H
H
L
H
H
H
H
H
H
H
H
L
L
L
L
图六 74LS248显示字型与输入的对应关系
如图七,六个LED七段数码显示管利用不同发光段组合的方式显示不同数码,都采用+5V电源作为每段发光二极管的驱动电源。需要发光的段为高电平,不发光的段为低电平。设计中采用共阴极数码管,每段发光二极管的正向降压,随显示光的颜色有所不同,通常约2V~3V,点亮电流在5~10mA。六个LED七段数码显示管分别显示秒个位、十位;分个位、十位;时个位、十位的计数十进制数
图七 显示译码/驱动器和数码显示管(4)分频器
分频器电路是由三个74LS90构成,如图八。74LS90是异步十进制计数器,它由一个一位二进制计数器和一个异步五进制计数器组成。将QA与CP2相连,计数脉冲由CP1端输入,输出由QA~QD引出,即得到十进制计数器。只有在复位输入R0(1)= R0(2)=0和置位输入S9(1)= S9(2)=0时,才能够在计数脉冲(下降沿)作用下实现二—五—十进制加计算。因为要对输入的脉冲进行三次10分频,三片74LS90的复位输入R0(1)、R0(2)和置位输入S9(1)、S9(2)都接低电平。振荡器输出的方波脉冲计数器作为U1的CP1端的输入时钟脉冲,U1的QD端的输出脉冲作为U2的CPA端的输入时钟脉冲,U2的QD端的输出脉冲作为U3的CP1端的输入时钟脉冲,U3的QD端的输出脉冲fO=fS/103¬¬¬¬¬¬¬=1HZ,即为秒信号方波脉冲,成为秒、分、时计数器的计数脉冲和时间校准信号。
将JK触发器的J、K端都接在高电平,Qn+1=JQn+KQn=Qn,每输入一个时钟脉冲后,触发器翻转一次,触发器处于计数状态。经过触发器的二分频,Q端输出为500HZ的脉冲作为低音脉冲。
经过U1、U2计数器的二次十分频,输出的脉冲频率为10HZ,作为秒校时脉冲。
图八
分频器 附74LS90二—五—十进制计数器功能图 复位输入 置位输入 输出
R0(1)R0(2)S9(1)S9(2)QA QB QC QD H H L × L L L L H H × L L L L L × × H H H L L H L × L × 计数 L × × L 计数 × L L × 计数 × L × L 计数
JK触发器的功能表 J K Qn Qn+1 说明 0 0 0 0 输出状态不变 1
0 1 0 0 输出状态与J端状态相同
0 0 0 1 输出状态与K端状态相同
1 1 0 1 每输入一个脉冲输出状态改变一次
0
(五)报时电路
整点报时电路要求在每个整点发出音响,因此需要对每个整点进行时间译码,以其输出驱动音响控制电路。如图九。
若要在每一整点发出五低音、一高音报时,需要对59分50秒到59分59秒进行时间译码。QD4~QA4是分十位输出,QD3~QA3是分个位输出,QD2~QA2是秒十位输出,QD1~QA1秒个位输出。在59分时,A= QC4 QA4 QD3 QA3=1;在50秒时,B= QC2 QA2=1;秒个位为0、2、4、6、8秒时,QA1=0,C= QA1=1;因而F1=ABC= QC4QA4 QD3 QA3 QC2 QA2 QA1仅在59分50秒、52秒、54秒、56秒、58秒时等于1,故可以用F1作低音的控制信号。当计数器每计到59分59秒时,A= QC4 QA4 QD3QA3=1,D= QC2 QA2 QD1 QA1=1,此时F2=AD=1。把F2接至JK触发器控制端J端,CP端加秒脉冲,则再计1秒到达整点时F3=1,故可用F3作一次高音控制信号。
用F1控制5次低音、F3控制高音,经音响放大器放大,每当“分”和“秒”计数器累计到59分50、52、54、56、58秒发出频率为500HZ的五次低音,0分0秒时发出频率为1000HZ的一次高音,每次音响的时间均为一秒钟,实现了整点报时的功能。
图九
整点报时电路
四、原理图(见最后一页)
五、元器件明细表
序号 元器件名称 型号规格 数量(个)备注 U0 集成定时器 5G555定时器 1 构成多谐振荡器 U1~U6 同步加法计数器 74161 6 构成模加法计数器 U7~U9 异步十进制计数器 74LS90 3 构成分频器
U10 七端显示译码器 74LS248 6 分别显示秒、分、时的数字 U11~U12 与非门 多输入与非门 2 U13 J-K触发器
C1、C2 电容C1=C2=104pf R1 R2 电阻R1 =2K、R2=5.1K R、R` 电阻R=1k,R`=47 U14 U20 门器件 非门 1
U15~U19 门器件 与门 6 多输入与门 U21~U23 门器件 与非门 3 多输入与非门 U24 触发器 J-K触发器 1 U25 晶体三级管 U26 喇叭实现闹铃
六、设计体会
在整个课程设计完后,总的感觉是:有收获。以前上课都是上一些最基本的东西,而现在却可以将以前学的东西作出有实际价值的东西。在这个过程中,我的确学得到很多在书本上学不到的东西,如:如何利用现有的元件组装得到设计要求,如何找到错误的原因,如何利用计算机来画图等等。但也遇到了不少的挫折,有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是芯片的管脚接错了,有时更是忘接电源了。在学习中的小问题在课堂上不可能犯,在动手的过程中却很有可能犯。特别是在接电路时,一不小心就会犯错,而且很不容易检查出来。但现在回过头来看,还是挺有成就感的。
七、参考文献
姚福安.电子电路设计与实践.山东科学技术出版社第一版.2002 杨志亮.电路原理图设计技术.西北工业大学出版社第一版.2003 阎石.数字电子技术基础..高等教育出版社第四版.1998 童诗白.模拟电子技术基础.高等教育出版社第三版.2001 康华光.电子技术基础.高等教育出版社.2002 苏止丽.数字电子电路实验.武汉理工大学.2003 陈明义.电子技术课程设计使用教程 中南大学出版社第一版.2002
回答者: 命途多舛0913-一
级
2008-1-5 21:54
数字电子时钟课程设计
题目: 数字电子时钟课程设计
目 录
一、设计任务及设计要求…………………………………………(3)
二、设计方案论证 …………………………..………….(3)
1.总体方案及框图
2.各部分论证
三、单元电路设计…………………………………………………(4)
1.振荡器 ………………………………………………………(4)
2.秒、分、时计数器…………………………………………(5)
3.显示译码/驱动器和LED七段数码显示管……………….(6)
4.分频器……………………………………………………(7)
5.报时电路…………………………………………………(9)
四、总体电路设计及原理………………………………………(13)
五、元器件明细表………………………………………………(10)
六、心得体会……………………………………………………(11)
七、参考文献……………………………………………………(11)
一、设计任务及设计要求
1.设计任务
数字电子钟的逻辑电路
2.设计要求
(1)由晶振电路产生1HZ的校准秒信号。
(2)设计一个有“时”、“分”、“秒”(23小时59分59秒)显示切且具有校时、校分、校秒的功。
(3)整点报时功能。要求整点差10秒开始每隔1秒鸣叫一次,共五次,每次持续时间为一秒,前五次为500赫兹的声音,最后依次为1000赫兹的声音。
(4)用中小规模集成电路组成电子钟,并在实验箱上进行组装和调试。
(5)划出框图和逻辑电路图,写出设计,实验总结报告。
二、设计方案论证
数字钟原理框图如图1所示,电路一般包括以下几个部分:振荡器、分频器、译码显示电路、时分秒计数器、校时电路、报时电路。
图一
对于各个部分而言
数字钟计时的标准信号应该是频率相当稳定的1HZ秒脉冲,所以要设置标准时间源。
数字钟计时周期是24小时,因此必须设置24小时计数器,他应由模为60的秒计数器和分计数器及模为24的时计数器组成,秒、分、时由七段数码管显示。
为使数字钟走时与标准时间一致,校时电路是必不可少的。设计中采用开关控制校时直接用秒脉冲先后对“时”“分”“秒”计数器进行校时操作。 能进行整点报时。在从59分50秒开始,每隔2秒钟发出一次低音“嘟”的信号,连续五次,最后一次要求最高音“嘀”的信号,此信号结束即达到正点。
三、单元电路设计
1.各独立功能部件的设计
(1)、振荡器
振荡器是计时器的核心,其作用是产生一个标准频率的脉冲信号振荡频率的精度和
稳定度决定了数字钟的质量。第一种方
案采用石英晶体振荡器,如图二。使用
振荡频率为32768HZ的石英晶体和反
向器构成一个稳定性极好、精度较高的时间信号源。改变电容C可以
图 二 石英晶体振荡器
振荡器的频率进行微调,再通过一个反相器,输出32768HZ的方波将此方波的频率进行15次二分频后,在输出端刚好可得到频率为1HZ的脉冲信号。
第二种方案如图三采用集成电路555定时器与RC组成的多谐振荡器。输出的脉冲频率为fS=1/[(R1+2R2)C1ln2]=1KHZ,周期T=1/fS=1ms。若参数选择:R1=R2=10K欧姆,C1=47uF时,可以得到秒脉冲信号。
图三 方波信号发生器
附555定时器的功能表
输 出 输 出
阀值输入(v11)触发输入(v12)复位(RD)输出(VO)发电管T × × 0 0 导通
<2/3VCC <1/3VCC 1 1 截止
>2/3VCC >1/3VCC 1 0 导通
<2/3VCC >1/3VCC 1 不变 不变
(2)秒、分、时计数器
U1到U6 六个74LS161构成数字钟的秒、分、时计数器。
U1、U2共同构成秒计数器,它由两个74LS161构成六--十进制的计数器,如图四。U1作为秒个位十进制计数器,它的复位输入RD、和置位输入LD都接低电平,秒信号脉冲作为计数脉冲输入到CP1端,输出端C控制U2秒十位计数器的计数脉冲输入。Q1、Q2、Q3、Q4作为秒个位的计时值送至秒个位七段显示译码/驱动器。
U2作为秒十位六进制计数器,它的计数脉冲输入受到秒个位U1的控制,其计数器使能端EP、ET与U1的输出端C相连接。当U2计数器计到0011,即清零信号到复位输入端时,Q1、Q2、Q3、Q4输出的都是零。Q1、Q2、Q3、Q4作为秒十位的计时值送至秒十位七段显示译码/驱动器。
U3、U4分别构成分个位十进制和分十位六进制计数器,如图四。U3、U4与U1、U2的连接方法相似。当计数器输出为01011001状态,U3(U1)、U4(U2)的LD端同时为“0”,使计数器立即返回到00000000状态。这样就构成了六十进制计数器。
图四 六十进制计数器
U5、U6共同构成时计数器,它由两个74LS161构成六十进制的计数器 如图五。U5作为时十位计数器,它的复位输入RD、和置位输入LD都接低电平,时信号脉冲作为计数脉冲输入到CP1端,输出端C控制U6秒十位计数器的计数脉冲输入。Q1、Q2、Q3、Q4作为秒个位的计时值送至秒个位七段显示译码/驱动器。当计数器输出为00100100状态,U5、U6的LD端同时为“0”,使计数器立即返回到00000000状态。这样就构成了二十四进制计数器。
U12 图五 二十四进制计数器
(3)显示译码/驱动器和LED七段数码显示管
六个74LS248集成电路构成数字钟的七段数码显示管显示译码/驱动器。74LS248七段显示译码器输出高电平有效,将8421BCD码译成七段(a、b、c、d、e、f、g)输出,用以直接驱动LED七段数码显示对应的十进制数。74LS248的显示功能:
显示功能见功能表的上半部分。[DCBA]是二进制码输入,要正确的执行显示功能,有关的功能端必须接合适的逻辑电平,这些功能端的作用随后介绍。对于0~9输入,[DCBA]相当BCD8421码。当超过9以后,译码器仍然有字型输出,具体见图六。当[DCBA]=1111时,数码管熄灭。实验时要在笔划段电极串联电阻,以保护LED数码管。
表1 中规模显示译码器74LS248的功能表
图六 74LS248显示字型与输入的对应关系
如图七,六个LED七段数码显示管利用不同发光段组合的方式显示不同数码,都采用+5V电源作为每段发光二极管的驱动电源。需要发光的段为高电平,不发光的段为低电平。设计中采用共阴极数码管,每段发光二极管的正向降压,随显示光的颜色有所不同,通常约2V~3V,点亮电流在5~10mA。六个LED七段数码显示管分别显示秒个位、十位;分个位、十位;时个位、十位的计数十进制数
图七 显示译码/驱动器和数码显示管
(4)分频器
分频器电路是由三个74LS90构成,如图八。74LS90是异步十进制计数器,它由一个一位二进制计数器和一个异步五进制计数器组成。将QA与CP2相连,计数脉冲由CP1端输入,输出由QA~QD引出,即得到十进制计数器。只有在复位输入R0(1)= R0(2)=0和置位输入S9(1)= S9(2)=0时,才能够在计数脉冲(下降沿)作用下实现二—五—十进制加计算。因为要对输入的脉冲进行三次10分频,三片74LS90的复位输入R0(1)、R0(2)和置位输入S9(1)、S9(2)都接低电平。振荡器输出的方波脉冲计数器作为U1的CP1端的输入时钟脉冲,U1的QD端的输出脉冲作为U2的CPA端的输入时钟脉冲,U2的QD端的输出脉冲作为U3的CP1端的输入时钟脉冲,U3的QD端的输出脉冲fO=fS/103¬¬¬¬¬¬¬=1HZ,即为秒信号方波脉冲,成为秒、分、时计数器的计数脉冲和时间校准信号。
将JK触发器的J、K端都接在高电平,Qn+1=JQn+KQn=Qn,每输入一个时钟脉冲后,触发器翻转一次,触发器处于计数状态。经过触发器的二分频,Q端输出为500HZ的脉冲作为低音脉冲。
经过U1、U2计数器的二次十分频,输出的脉冲频率为10HZ,作为秒校时脉冲。
图八 分频器
附74LS90二—五—十进制计数器功能图
复位输入 置位输入 输出 R0(1)R0(2)S9(1)S9(2)QA QB QC QD H H L × L L L L H H × L L L L L × × H H H L L H L × L × 计数
L × × L 计数
× L L × 计数
× L × L 计数
JK触发器的功能表
J K Qn Qn+1 说明
0 0 0 0 输出状态不变1
0 1 0 0 输出状态与J端状态相同0 0 0 1 输出状态与K端状态相同1 1 0 1 每输入一个脉冲输出状态改变一次0
(五)报时电路
整点报时电路要求在每个整点发出音响,因此需要对每个整点进行时间译码,以其输出驱动音响控制电路。如图九。
若要在每一整点发出五低音、一高音报时,需要对59分50秒到59分59秒进行时间译码。QD4~QA4是分十位输出,QD3~QA3是分个位输出,QD2~QA2是秒十位输出,QD1~QA1秒个位输出。在59分时,A= QC4 QA4 QD3 QA3=1;在50秒时,B= QC2 QA2=1;秒个位为0、2、4、6、8秒时,QA1=0,C= QA1=1;因而F1=ABC= QC4QA4 QD3 QA3 QC2 QA2 QA1仅在59分50秒、52秒、54秒、56秒、58秒时等于1,故可以用F1作低音的控制信号。
当计数器每计到59分59秒时,A= QC4 QA4 QD3QA3=1,D= QC2 QA2 QD1 QA1=1,此时F2=AD=1。把F2接至JK触发器控制端J端,CP端加秒脉冲,则再计1秒到达整点时F3=1,故可用F3作一次高音控制信号。
用F1控制5次低音、F3控制高音,经音响放大器放大,每当“分”和“秒”计数器累计到59分50、52、54、56、58秒发出频率为500HZ的五次低音,0分0秒时发出频率为1000HZ的一次高音,每次音响的时间均为一秒钟,实现了整点报时的功能。
图九 整点报时电路
四、原理图(见最后一页)
五、元器件明细表
序号 元器件名称 型号规格 数量(个)备注
U0 集成定时器 5G555定时器 1 构成多谐振荡器 U1~U6 同步加法计数器 74161 6 构成模加法计数器
U7~U9 异步十进制计数器 74LS90 3 构成分频器
U10 七端显示译码器 74LS248 6 分别显示秒、分、时的数字
U11~U12 与非门 多输入与非门 2 U13 J-K触发器 1
C1、C2 电容 2 C1=C2=104pf R1 R2 电阻 2 R1 =2K、R2=5.1K R、R` 电阻 2 R=1k,R`=47 U14 U20 门器件 非门 1
U15~U19 门器件 与门 6 多输入与门
U21~U23 门器件 与非门 3 多输入与非门
U24 触发器 J-K触发器 1 U25 晶体三级管 1 U26 喇叭 1 实现闹铃
六、设计体会
在整个课程设计完后,总的感觉是:有收获。以前上课都是上一些最基本的东西,而现在却可以将以前学的东西作出有实际价值的东西。在这个过程中,我的确学得到很多在书本上学不到的东西,如:如何利用现有的元件组装得到设计要求,如何找到错误的原因,如何利用计算机来画图等等。但也遇到了不少的挫折,有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是芯片的管脚接错了,有时更是忘接电源了。在学习中的小问题在课堂上不可能犯,在动手的过程中却很有可能犯。特别是在接电路时,一不小心就会犯错,而且很不容易检查出来。但现在回过头来看,还是挺有成就感的。
第五篇:嵌入式电子闹钟时钟课程设计
#include
sbit rs=P2^5;//液晶位定义 sbit lcden=P2^7;sbit s1=P2^0;//时间功能切换按键 sbit s2=P2^1;//按键加 sbit s3=P2^3;//按键减
sbit s4=P2^4;//闹钟功能切换键 sbit rst=P1^5;//ds1302引脚定义 sbit io=P1^6;sbit sclk=P1^7;sbit beep=P3^0;//蜂鸣器
uchar num,count,shi,fen,miao,s1num,s2num, year,month,day,week,flag,flag1,year1,month1, day1,week1,shi1,fen1,miao1,year2,month2, day2,week2,shi2,fen2,miao2,year5,month5, day5,week5,shi5,fen5,miao5,wk,ashi,afen;//参数定义
uchar code table[]=“20--”;//液晶固定显示 uchar code table1[]=“ : : 00:00”;/* uchar time_dat[7]={12,1,6,6,12,59,59};//年周月日时分秒 uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};*/ void write_com(uchar com);//液晶写指令函数 void write_data(uchar date);//液晶写数据函数
void write_ds1302(uchar add,uchar dat);//ds1302芯片写指令函数 void set_rtc();//ds1302时间设置函数 void time_pros();//ds1302进制转换函数 void read_rtc();//ds1302读时间函数 void alarm();//闹钟函数
void delay(uint z)//延时函数 { uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void init()//初始化 { lcden=0;flag=0;flag1=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//液晶固定显示,第一行 for(num=0;num<14;num++){ write_data(table[num]);delay(5);}
write_com(0x80+0x40);//液晶显示第二行 for(num=0;num<20;num++){ write_data(table1[num]);delay(5);} }
void write_com(uchar com)//1602液晶写指令 { rs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}
void write_data(uchar date)//1602液晶写写数据 { rs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}
void write_sfm(uchar add,uchar date)//时分秒 { uchar shi3,ge;shi3=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi3);write_data(0x30+ge);}
void write_nyr(uchar ad,uchar date)//年月日 { uchar shi4,ge2;shi4=date/10;ge2=date%10;write_com(0x80+ad);write_data(0x30+shi4);write_data(0x30+ge2);}
void write_week(uchar wk)//星期按西方星期设置{ write_com(0x80+11);switch(wk){ case 1: write_data('S');delay(5);write_data('U');delay(5);write_data('N');break;
case 2: write_data('M');delay(5);write_data('O');delay(5);write_data('N');break;
case 3: write_data('T');
星期天为第一天 delay(5);write_data('U');delay(5);write_data('E');break;
case 4: write_data('W');delay(5);write_data('E');delay(5);write_data('D');break;
case 5: write_data('T');delay(5);write_data('H');delay(5);write_data('U');break;
case 6: write_data('F');delay(5);write_data('R');delay(5);write_data('T');break;
case 7: write_data('S');delay(5);write_data('A');delay(5);write_data('T');break;
} }
void keyscan()//{ if(s1==0){ delay(5);
按键函数 if(s1==0){ write_com(0x0f);s1num++;//记录按键次数 flag=1;flag1=1;while(!s1);
switch(s1num)//光标闪烁点定位 { case 1:write_com(0x80+0x40+6);//秒 break;
case 2:write_com(0x80+0x40+3);//分 break;
case 3:write_com(0x80+0x40+0);//时 break;
case 4:write_com(0x80+11);//星期 break;case 5:write_com(0x80+8);//日 break;
case 6:write_com(0x80+5);//月 break;
case 7:write_com(0x80+2);//年 break;
case 8:s1num=0;write_com(0x0c);//设置开显示光标不显示 关闭时间设置
set_rtc();flag=0;break;}
} }
if(s1num!=0)//按键加减 { if(s2==0)//加按键函数 { delay(10);if(s2==0){
while(!s2);switch(s1num)//根据功能键相应次数做出调节 { case 1: miao++;//秒加 if(miao==60)miao=0;write_sfm(6,miao);write_com(0x80+0x40+6);break;
case 2: fen++;// if(fen==60)fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);break;
case 3: shi++;// if(shi==24)shi=0;write_sfm(0,shi);write_com(0x80+0x40+0);break;
case 4: week++;// if(week==8)week=1;write_week(week);write_com(0x80+11);break;
case 5: day++;// if(day==32)day=1;write_nyr(8,day);write_com(0x80+8);break;
case 6: month++;//分加 时加 星期加日加 月加
if(month==13)month=1;write_nyr(5,month);write_com(0x80+5);break;
case 7: year++;//年加 if(year==100)year=0;write_nyr(2,year);write_com(0x80+2);break;
}
}
}
if(s3==0)//减按键函数同上 { delay(10);if(s3==0){ while(!s3);switch(s1num)//根据功能键相应次数做出调节 { case 1: miao--;if(miao==-1)miao=59;write_sfm(6,miao);write_com(0x80+0x40+6);break;
case 2: fen--;if(fen==-1)fen=59;write_sfm(3,fen);write_com(0x80+0x40+3);break;
case 3: shi--;if(shi==-1)shi=23;write_sfm(0,shi);write_com(0x80+0x40+0);break;
case 4: week--;if(week==-1)week=7;write_week(week);write_com(0x80+11);break;
case 5: day--;if(day==-1)day=31;write_nyr(8,day);write_com(0x80+8);break;
case 6: month--;if(month==-1)month=12;write_nyr(5,month);write_com(0x80+5);break;
case 7: year--;if(year==-1)year=99;write_nyr(2,year);write_com(0x80+2);break;
}
} }
}
if(s4==0)// { delay(5);
闹钟按键 if(s4==0){ write_com(0x0f);//光标闪烁 s2num++;//记录按键次数 flag=1;while(!s4);switch(s2num)//光标闪烁点定位 { case 1:write_com(0x80+0x40+13);//分 break;
case 2:write_com(0x80+0x40+10);//时 break;
case 3:write_com(0x0c);//关闭闹钟设置 flag=0;s2num=0;break;
}
} }
if(s2num!=0)//闹钟设置 { if(s2==0)//闹钟加 { delay(10);if(s2==0){ while(!s2);switch(s2num)//根据功能键相应次数做出调节 { case 1: afen++;if(afen==60)afen=0;write_sfm(13,afen);write_com(0x80+0x40+13);break;
case 2: ashi++;if(ashi==24)ashi=0;write_sfm(10,ashi);write_com(0x80+0x40+10);break;
} } }
if(s3==0)//闹钟减 { delay(10);if(s3==0){ while(!s3);switch(s2num)//根据功能键相应次数做出调节 { case 1: afen--;if(afen==-1)afen=59;write_sfm(13,afen);write_com(0x80+0x40+13);break;
case 2: ashi--;if(ashi==-1)ashi=23;write_sfm(10,ashi);write_com(0x80+0x40+10);break;
} } }
} }
void wirte_ds1302_byte(uchar dat)//ds1302字节写 { uchar i;for(i=0;i<8;i++){ sclk=0;io=dat&0x01;dat=dat>>1;sclk=1;} }
void write_ds1302(uchar add,uchar dat)//ds1302写函数 { rst=0;_nop_();// 空操作 sclk=0;_nop_();rst=1;_nop_();wirte_ds1302_byte(add);wirte_ds1302_byte(dat);rst=0;io=1;sclk=1;}
uchar read_ds1302(uchar add)//ds1302{ uchar i,value;rst=0;_nop_();// 空操作 sclk=0;_nop_();rst=1;_nop_();wirte_ds1302_byte(add);for(i=0;i<8;i++){ value=value>>1;sclk=0;if(io){ value=value|0x80;} sclk=1;} rst=0;_nop_();// 空操作 sclk=0;_nop_();
读函数 sclk=1;io=1;return value;}
void set_rtc()//ds1302时间设置 { write_ds1302(0x8e,0x00);//关写保护
year1=year/10;//转换为十六进制 year=year%10;year=year+year1*16;write_ds1302(0x8c,year);
week1=week/10;week=week%10;week=week+week1*16;write_ds1302(0x8a,week);
month1=month/10;month=month%10;month=month+month1*16;write_ds1302(0x88,month);
day1=day/10;day=day%10;day=day+day1*16;write_ds1302(0x86,day);
shi1=shi/10;shi=shi%10;shi=shi+shi1*16;write_ds1302(0x84,shi);
fen1=fen/10;fen=fen%10;fen=fen+fen1*16;write_ds1302(0x82,fen);
miao1=miao/10;miao=miao%10;miao=miao+miao1*16;write_ds1302(0x80,miao);
write_ds1302(0x8e,0x80);//开写保护 flag1=0;}
void read_rtc()//从ds1302中读时间 { year2=read_ds1302(0x8d);week2=read_ds1302(0x8b);month2=read_ds1302(0x89);day2=read_ds1302(0x87);shi2=read_ds1302(0x85);fen2=read_ds1302(0x83);miao2=read_ds1302(0x81);}
void time_pros()//进制 {
year5=year2/16;year2=year2%16;year2=year2+year5*10;
month5=month2/16;month2=month2%16;month2=month2+month5*10;
day5=day2/16;day2=day2%16;day2=day2+day5*10;
shi5=shi2/16;shi2=shi2%16;shi2=shi2+shi5*10;
fen5=fen2/16;fen2=fen2%16;fen2=fen2+fen5*10;
miao5=miao2/16;miao2=miao2%16;miao2=miao2+miao5*10;
从ds1302中读出的时间转换为十
}
void display()//显示函数 { write_sfm(6,miao2);write_com(0x80+0x40+6);
write_sfm(3,fen2);write_com(0x80+0x40+3);
write_sfm(0,shi2);write_com(0x80+0x40+0);
write_week(week2);write_com(0x80+11);
write_nyr(8,day2);write_com(0x80+8);
write_nyr(5,month2);write_com(0x80+5);
write_nyr(2,year2);write_com(0x80+2);
if((ashi==shi2)&&(afen==fen2)){ alarm();} }
void alarm()// 闹钟 { beep=0;delay(1000);beep=1;} void main()//主函数 { init();//初始化 while(1){ keyscan();//按键函数
if(flag==0){ keyscan();read_rtc();time_pros();display();}
} }