范文一:数字时钟课程设计
辽宁工程技术大学电子技术课程设计
综述
近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、 信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉和掌握常用中、大 规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方 法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验 技能外,还必须培养大学生工程设计和组织实验能力。本次课程设计的目的在于培养学生 对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计 能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障 、分析和处理实验结果 及撰写实验报告的能力。综合实验的设计目的是培养学生初步掌握小型数字系统的设计能 力, 包括选择设计方案, 进行电路设计、 安装、调试等环节, 运用所学知识进行工程设计、 提高实验技能的实践。数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时 间功能;具有整点报时功能。数字电子钟由于采用了石英技术,走时精度高、稳定性好, 不需要经常调校,使用携带方便。因此,在定时控制、自动报时及时间程序控制等方面都 得到广泛的应用。本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知 识,并且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步 的认识和了解。
金石炜 数字式电子钟设计
1、方案设计与分析
1.1设计方案
1、时钟功能 具有显示时、分、秒的功能
2、具有整点报时功能,在整点时使用蜂鸣器进行报时
1.2设计要点
数字钟一般是由振荡器、分频器、计数器、译码器、显示器等几部分组成。这些都是 数字电路中应用最广泛的基本电路,本设计直接采用由 CB555定时器设计的多谐振荡器产 生振动周期为 1s 的脉冲。 并将信号送入计数器进行计算, 并把累加的结果以 “时” 、 “分” 、 “秒”的数字显示出来。“秒”的显示由两级计数器和译码器组成的六十进制计数电路实 现;“分”的显示电路“秒”相同,“时”的显示由两级计数器和译码器组成的二十四进 制电路来实现。所有计时结果由六位数码管显示。本设计也可以采用单片机进行控制,虽 然以单片机核心的数字式时钟制作方便,但是单片机的成本比逻辑芯片高,所以不太适合 本设计。
1.3振荡器的选择
振荡器的作用是产生时间标准信号。 是数字电子钟的核心之一, 可以采用 555定时器、 门电路或者是石英晶体振荡器产生。
1.3.1石英晶体振荡器
石英晶体振荡器是由石英晶体、微调电容与集成反相器等元件构成,结构比较复杂, 原理图如图 1-1:
图
1- 1
辽宁工程技术大学电子技术课程设计
1.3.2由 555定时器组成的多谢振荡电路
为了制作方便,振荡电路可选用结构较为简单的 555定时器构成的多谐振荡器, 555定时器能够极方便的构成施密特触发器、单稳态触发器和多谐振荡器。由于使用灵活、方 便,所以在施密特触发器的基础上改接成多谐振荡器。原理图如图 1-2:
图 1- 2
金石炜 数字式电子钟设计
2、数字钟的设计与基本原理
数字电子钟需要显示“时”、“分”、“秒”,它的周期为 24小时,“时”采用二十 四进制, “分” 采用六十进制, “秒” 采用六十进制。 另外系统具有整点报时功能, 当 “分” 变为 59时,通过与非门控制蜂鸣器,进行整点报时。由 555定时器构成的多谐振荡电路, 为 “秒” 计时器的个位提供周期为 1s 的方波脉冲, “秒” 计时器通过串联进位方式与 “分” 位、 “时”位进行连接,计时器芯片为 74LS160, 再通过译码芯片 7448,与 BS201进行连接, 对数据进行显示,利用 7448芯片可以简化电路结构,使电路故障发生率降低,布线也更加 容易,系统原理图如图 2-1:
← ←
2.1由 555定时器构成的多谐振荡器
它是数字电子钟的核心部分,它的精度和稳定度决定于数字钟的质量。 555定时器引 脚图如图 2-2,多谐振荡器电路如图 2-3所示。多谐振荡器为计数器提供计数脉冲和为计数 器提供校时脉冲。本电路产生振荡信号的周期为 1s 。
图 2- 3
2.3译码显示电路
金石炜 数字式电子钟设计
辽宁工程技术大学电子技术课程设计
3、课程设计体会
我们学习了数字电子电路和模拟电子电路,对电子技术有了一些初步了解,但那都是 一些理论的东西。通过这次数字电子钟的课程设计,我们才把学到的知识与实践相结合。 从而对我们学的知识有了更进一步的理解,使我们进一步加深了对所学知识的记忆。 在此次的数字钟设计过程中,我更进一步地熟悉了芯片的结构及掌握了各芯片的工作 原理和其具体的使用方法。也锻炼了自己独立思考问题的能力和通过查看相关资料来解决 问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计 的一般步骤,和设计中应注意的问题,同时我们也掌握了做设计的基本流程,为我们以后 进行更复杂的设计奠定了坚实的基础。设计本身并不是有很重要的意义,而是同学们对待 问题时的态度和处理事情的能力。 至于设计的成绩无须看的太过于重要, 而是设计的过程, 设计的思想和设计电路中的每一个环节,电路中各个部分的功能是如何实现的。各个芯片 能够完成什么样的功能, 使用芯片时应该注意那些要点。 同一个电路可以用那些芯片实现, 各个芯片实现同一个功能的区别。 另外, 我们设计要从市场需求出发, 既要有强大的功能, 又要在价格方面比同等档次的便宜。
同时对普通计数器如何构成 n 进制计数器有了更深的了解和掌握, 对自我的实际操作能 力也有了很高的提升。
在这次设计过程中,我也对 word 、 protel 等软件有了更进一步的了解,这使我在以后的 工作中更加得心应手。
金石炜 数字式电子钟设计
参考文献
[1]阎石 . 数字电子技术 [M ].第五版 . 北京 :高教出版社 , 2006年 .
[2]黄志伟 . 全国大学生电子设计竞赛训练教程 [M ]. 北京 :电子工业出版社 , 2008年 . [3]胡玉建 . Protel 99SE原理图与 PCB 及仿真 [M ].北京 :机械工业出版社 , 2006年 . [4]李景华 . 可编程逻辑器件及 EDA 技术 [M ].沈阳:东北大学出版社 , 2001年 . [5]陈晓文 . 电子线路课程设计 [M ].北京 :电子工业出版社 ,2004年 .
范文二:数字时钟课程设计
许昌 数字时钟设计
湖南省娄底职业技术学院机电工程系
毕业设计(论文)
系 部:机电工程系 指导老师:禹 劲 草
专 业:电气自动化 班 级:09电气大一班
姓 名:许 昌 组 长:许 昌
同组人:雷涛 马丁 马源 文斌
数字时钟
日期:2011年12月15日
娄底职业技术学院教务处印制
- 2 -
娄底职业技术学院毕业设计
摘要
加入世贸组织以后,中国会面临激烈的竞争。这种竞争将是一场科技实力、管理水平和人才素质的较量,风险和机遇共存,同时电子产品的研发日新月异,不仅是在通信技术方面数字化取代于模拟信号,就连我们的日常生活也进于让数字化取缔。 说明数字时代已经到来,而且渗透于我们生活的方方面面。
就拿我们生活的实例来说明一下“数字”给我们带来的便捷。下面我们就以数字钟为例简单介绍一下。数字钟我们听到这几个字,第一反应就是我们所说的数字,不错数字钟就是以数字显示取代模拟表盘的钟表,在显示上它用数字反应出此时的时间,相比模拟钟能给人一种一目了然的感觉,不仅如此它还能同时显示时、分、秒。而且能对时、分、秒准确校时,这是普通钟所不及的。与此同时数字钟还能准确定时,在你所规定的时间里准确无误的想你发出报时声音,提醒你在此时所需要去做的事。与旧式钟表相比它更适用于现代人的生活。
在毕业之际恰好遇上学校的毕业课题电子时钟设计毕业论文。因而在所学专业的基础上做了以下毕业设计。希望给大家带来方便的同时,使自己对所学专业有进一步的了解~
- 3 -
许昌 数字时钟设计
目录
前言..........................................4 1. 方案设计与分析............................5 1.1设计方案....................................5 1.2设计要点....................................5 1.3振荡器的选择.................................5
1.3.1石英晶体振荡器..............................5
1.3.2由555定时器组成的多谢振荡电路.................6 2.数字钟的设计与基本原理.......................7 2.1由555定时器构成的多谐振荡器....................7 2.2 时、分、秒计数器..............................8 2.3译码显示电路..................................9 2.4整点报时电路..................................10 2.5数字式电子钟原理图.............................11 2.课程设计体会..................................12 3.致谢..........................................13 4.参考文献......................................14 5.附录.........................................15
- 4 -
娄底职业技术学院毕业设计
前言
近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计和组织实验能力。本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障 、分析和处理实验结果及撰写实验报告的能力。综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能。数字电子钟由于采用了石英技术,走时精度高、稳定性好,不需要经常调校,使用携带方便。因此,在定时控制、自动报时及时间程序控制等方面都得到广泛的应用。本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知识,并且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识和了解。
- 5 -
许昌 数字时钟设计
1、方案设计与分析
1.1设计方案
1、时钟功能 具有显示时、分、秒的功能
2、具有整点报时功能,在整点时使用蜂鸣器进行报时
1.2设计要点
数字钟一般是由振荡器、分频器、计数器、译码器、显示器等几部分组成。这些都是数字电路中应用最广泛的基本电路,本设计直接采用由CB555定时器设计的多谐振荡器产生振动周期为1s的脉冲。并将信号送入计数器进行计算,并把累加的结果以“时”、“分”、“秒”的数字显示出来。“秒”的显示由两级计数器和译码器组成的六十进制计数电路实现;“分”的显示电路“秒”相同,“时”的显示由两级计数器和译码器组成的二十四进制电路来实现。所有计时结果由六位数码管显示。本设计也可以采用单片机进行控制,虽然以单片机核心的数字式时钟制作方便,但是单片机的成本比逻辑芯片高,所以不太适合本设计。
1.3振荡器的选择
振荡器的作用是产生时间标准信号。是数字电子钟的核心之一,可以采用555定时器、门电路或者是石英晶体振荡器产生。
1.3.1石英晶体振荡器
石英晶体振荡器是由石英晶体、微调电容与集成反相器等元件构成,结构比较复杂,原理图如图1-1:
图1- 1
- 6 -
娄底职业技术学院毕业设计
1.3.2由555定时器组成的多谐振荡电路
为了制作方便,振荡电路可选用结构较为简单的555定时器构成的多谐振荡器,555定时器能够极方便的构成施密特触发器、单稳态触发器和多谐振荡器。由于使用灵活、方便,所以在施密特触发器的基础上改接成多谐振荡器。原理图如图1-2:
图1- 2
- 7 -
许昌 数字时钟设计
2、数字钟的设计与基本原理
数字电子钟需要显示“时”、“分”、“秒”,它的周期为24小时,“时”采用二十四进制,“分”采用六十进制,“秒”采用六十进制。另外系统具有整点报时功能,当“分”变为59时,通过与非门控制蜂鸣器,进行整点报时。由555定时器构成的多谐振荡电路,为“秒”计时器的个位提供周期为1s的方波脉冲,“秒”计时器通过串联进位方式与“分”位、“时”位进行连接,计时器芯片为74LS160,再通过译码芯片7448,与BS201进行连接,对数据进行显示,利用7448芯片可以简化电路结构,使电路故障发生率降低,布线也更加容易,系统原理图如图2-1:
数数数数数数
码码码码码码
管管 管管管管
? ? ? ? ? ?
7448 7448 7448 7448 7448 7448
? ? ? ? ? ?
秒计时器 时计时器 ? ? 分计时器
? ?
整点报时电路 多谐振荡器
图2- 1
2.1由555定时器构成的多谐振荡器
它是数字电子钟的核心部分,它的精度和稳定度决定于数字钟的质量。555定时器引脚图如图2-2,多谐振荡器电路如图2-3所示。多谐振荡器为计数器提供计数脉冲和为计数器提供校时脉冲。本电路产生振荡信号的周期为1s。
图2- 3
- 8 -
娄底职业技术学院毕业设计
+5V
R343RQ47K
27TRIGDISU1
56GNDVCCCVoltTHRR2182K
555
C10.01uFC2R1
47K10uF GND
图2- 3
2.2 时、分、秒计数器
秒信号经秒计数器、分计数器、时计数器之后。分别得到显示电路,以便实现用数字显示时、分、秒的要求。“秒”和“分”计数器应为六十进制,而“时”计数器应为二十四进制。要实现这一要求,可选用的中规模集成计数器较多,这里推荐74LS160或74LS161。
六十进制计数器,它由两块中规模集成十进制计数器74LS160,一块组成十进制,另一块组成六进制。组合起来就构成六十进制计数器,如图2-4所示六十进制计数器。
U1U211CLRCLR915915LOADRCOLOADRCOU1A1010ENTENT714714ENPQAENPQA21312213CLKQBCLKQB312312AQCAQC411411BQDBQDU1A5574F04CC661DD3SN74160SN741602
GND74F00
图2- 4
二十四进制计数器。它由两块中规模集成十进制计数器74LS160构成。当高位出现0010状态,低位为0100状态,即计到第24个来自“分”计数器的进位信号时,产生反馈清零信号,如图2-5所示为二十四进制计数器。
- 9 -
许昌 数字时钟设计
U5U611CLRCLR915915LOADRCOLOADRCOU2A1010ENTENT714714ENPQAENPQA21312213CLKQBCLKQB312312AQCAQC411411BQDBQD5574F04CC66DDSN74160SN74160U2A13274F00
图2- 5
2.3译码显示电路
选用器件时应当注意译码器和显示器件相互配合。一是驱动功率要足够大,二是逻辑电平要匹配。秒计数器、分计数器、和时计数器的计数分别输送给各自的显示译码器7448,在数送给各自的数码管,显示出时、分、秒的计时。输入A3 、A2 、 A1和 A0接收四位二进制码,输出a,g为高电平有效,可直接驱动共阴极显示器,三个辅助控制端,以增强器件的功能,扩大器件应用。电路如图2-6所示为计数、译码显示电路。
GND
VCC
R1R2R3R4R5R6R7R1R2R3R4R5R6R71K1K1K1K1K1K1K1K1K1K1K1K1K1K
BS201ABS201A11DPYDPYaa2a2abb33ccfbfbgg44dd55eeececdd66ff77[LEDgn][LEDgn]gg
DPY_7-SEGDPY_7-SEG
BI/RBOBI/RBO
44RBIRBIX1X2131355SN7448N(16)SN7448N(16)1212AALTLT331111BB1010CCAIAI77DDBIBI19191515EECICI221414FFDIDI66GG
图2- 6
- 10 -
娄底职业技术学院毕业设计
2.4整点报时电路
整点报时功能是通过四路与非门将“分”位的个位与十位连接在一起,当个位变为9并且十位变为5时,输出低电平信号,再通过非门变为高电平信号,非门连接在NPN型三极管的基极,当基极为高电平时三极管导通,蜂鸣器工作。在其他时刻蜂鸣器不工作。整点报时电路图如图2-7:
VCC
U1A74F04
R1R21K5112
U1AQ1SN74LS20NPN
LS11264SPEAKER5
GND
图2- 7
- 11 -
许昌 数字时钟设计
2.5数字式电子钟原理图
见附录(附录A)
- 12 -
娄底职业技术学院毕业设计
3、课程设计体会
我们学习了数字电子电路和模拟电子电路,对电子技术有了一些初步了解,但那都是一些理论的东西。通过这次数字电子钟的课程设计,我们才把学到的知识与实践相结合。从而对我们学的知识有了更进一步的理解,使我们进一步加深了对所学知识的记忆。
在此次的数字钟设计过程中,我更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题,同时我们也掌握了做设计的基本流程,为我们以后进行更复杂的设计奠定了坚实的基础。设计本身并不是有很重要的意义,而是同学们对待问题时的态度和处理事情的能力。至于设计的成绩无须看的太过于重要,而是设计的过程,设计的思想和设计电路中的每一个环节,电路中各个部分的功能是如何实现的。各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。同一个电路可以用那些芯片实现,各个芯片实现同一个功能的区别。另外,我们设计要从市场需求出发,既要有强大的功能,又要在价格方面比同等档次的便宜。
同时对普通计数器如何构成n进制计数器有了更深的了解和掌握,对自我的实际操作能力也有了很高的提升。
在这次设计过程中,我也对word、protel等软件有了更进一步的了解,这使我在以后的工作中更加得心应手。
- 13 -
许昌 数字时钟设计
致谢
毕业设计完成了,在这个过程中我学到了很多东西。首先我要感谢我的指导老师禹劲草老师,他在我完成论文的过程中,给予了我很大的帮助。在论文开始的初期,我对于论文的结构以及文献选取等方面都有很多问题,整体构思不是很明确,段落层次也不是很清晰,老师详细给我分析论文的写作过程,从论文的题目,论文的内容,论文的脉络,都给我详细的指导。在我论文的进展过程中,老师也及时给我解决疑惑,并且监督我论文的进展过程,非常感谢~但是惭愧的是,论文也时有偏差出现,经过了曲折的过程,老师也耐心的给我激励,非常感谢!
我想,毕业论文的过程不仅仅是一个完成一篇论文的过程,而是一个端正态度的过程,是总结大学三年的一个过程,是在踏入社会前的历练过程。这个过程将使我受益匪浅~
- 14 -
娄底职业技术学院毕业设计
参考文献
[1]阎石.数字电子技术 [M].第五版.北京:高教出版社,2006年.
[2]黄志伟.全国大学生电子设计竞赛训练教程[M]. 北京:电子工业出版社,2008年. [3]胡玉建.Protel 99SE 原理图与PCB及仿真[M].北京:机械工业出版社,2006年. [4]李景华.可编程逻辑器件及EDA技术[M].沈阳:东北大学出版社,2001年. [5]陈晓文.电子线路课程设计[M].北京:电子工业出版社,2004年.
- 15 -
许昌 数字时钟设计
附录A
数字时钟原理图
GND
VCCR1R2R3R4R5R6R7R1R2R3R4R5R6R71K1K1K1K1K1K1K1K1K1K1K1K1K1KBS201ABS201A11DPYDPYaa22aabb33ccfbfbgg44dd55eeecec66ddff77[LEDgn][LEDgn]ggDPY_7-SEGDPY_7-SEGVCCBI/RBOBI/RBO44RBIX1RBIX2131355U1ASN7448N(16)SN7448N(16)1212AALTLT3374F041111BB1010CCAIAI77R1R2DDBIBI19191K511515+5VEECICI22141412FFDIDI66GG
R3U1U247KU1A11CLRCLRQ1SN74LS20915915LOADRCOLOADRCONPNU1A1010ENTENTU1714714ENPQAENPQA21312213CLKQBCLKQB312312AQCAQCGNDVCC43R2411411RQBQDBQD18LS12KU1A5574F041CC6612DD2736TRIGDISSN74160SN7416024SPEAKER556555GND74F00CVoltTHRC10.01uFC2R147K10uFGNDGND
GND
R1R2R3R4R5R6R7R1R2R3R4R5R6R7R1R2R3R4R5R6R7R1R2R3R4R5R6R71K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1K1KBS201ABS201ABS201ABS201A1111DPYDPYDPYDPYaaaa2222aaaabbbb3333ccccfbfbfbfbgggg4444dddd5555eeeeecececec6666ddddffff7777[LEDgn][LEDgn][LEDgn][LEDgn]ggggDPY_7-SEGDPY_7-SEGDPY_7-SEGDPY_7-SEGBI/RBOBI/RBOBI/RBOBI/RBO4444RBIX3X4X5X6RBIRBIRBI131313135555SN7448N(16)SN7448N(16)SN7448N(16)SN7448N(16)12121212AAAALTLTLTLT333311111111BBBB10101010CCCCAIAIAIAI7777DDDDBIBIBIBI1919191915151515EEEECICICICI222214141414FFFFDIDIDIDI6666GGGGVCCU3U4U5U6111CLRCLRCLR1915915915CLRLOADRCOLOADRCOLOADRCO915101010LOADRCOENTENTENTU1AU2A10714714714ENTENPQAENPQAENPQA714213213213ENPQACLKQBCLKQBCLKQB1212213312312312CLKQBAQCAQCAQC312411411411AQCBQDBQDBQD411555BQDCCC574F0474F04666CDDD6DSN74160SN74160SN74160SN74160U1AU2A113322GND74F0074F00
- 16 -
娄底职业技术学院毕业设计
17
许昌 数字时钟设计
18
范文三:数字时钟课程设计
信息工程学院
单片机课程设计报告
题 目: 数字时钟的设计
专 业: 电子信息工程
班 级: 091班
学 号:
姓 名:
指导教师: 章华幸
设计日期: 2011.12.19~2011.12.20
二0一一 年 十二 月 二十 日
电子技术课程设计报告
摘 要 本文讨论的是基于51单片机的电子时钟的设计,利用51单片机的内部定时中断产生时钟信号送到液晶LCD1602显示。电子时钟的功能可以由按键进行切换,按键可以定时,启动,时钟加减调节等。课程设计是一种复杂的学习实践的过程。在这个过程当中,首先要查阅课题相关的资料,然后提出各种方案并论证各方案的可行性,最后要选取最优方案着手进行,在整个过程中按照先总体设计到局部分析再到总体的顺序,其详细过程会在本次设计中体现。本次选取了数字时钟设计,以小见大,设计中大致地体现上述设计理念。
关键词 定时器 数字时钟 AT89S52 液晶LCD1602
一、 引言
所数字时钟已成为人们日常生活中必不可少的必需品、广泛用于个人家庭及办公室等公共场所、给人们的生活、学习、工作、娱乐带来有极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术、使数字时钟具有走时准确、性能稳定、携带方便等优点、它还用于计时、自动报时及自动控制等各个领域。
设计过程采用系统设计的方法、先分析任务、得到系统要求、然后进行总体设计、划分子系统、然后进行详细设计、决定各个功能子系统中的内部电路、最后进行测试。因此、设计且制作电子时钟体现了我们学生的实践能力。
二、 任务分析
采用AT89S51为核心控制芯片、采用LCD1602作为液晶屏显示、能够实现以下功能: (1)上电以后自动进入计时状态
(2)时间显示,包括小时、分钟、秒
(3)能够通过按键完成时间设定、时间调整、时间复位等功能。
三、 总体设计
本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。该系统由51单片机最小系统、独立键盘、显示电路构成。总体方案框图如下所示:
1
电子技术课程设计报告
按键电路
主显
控示复位电路 芯电
片 路
晶振电路
1、主控芯片选择:
方案一:采用51系列单片机外围电路
51单片机是一款非常适合单片机初学者的单片机。它是一种低功耗、高性能CMOS8位微控制器、具有8K 在系统可编程Flash 存储器。片上Flash允许程序存储器在系统可编程、亦适于常规编程器。在单芯片上、拥有灵巧的8 位CPU 和在系统可编程Flash、使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。
方案二:采用AVR单片机
AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。
方案三:采用msp430系列单片机
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。
方案比较:由于我们只需要完成简单的时钟实验,51单片机完全满足我们的需要,而且51单片机价格实惠,性价比高,编程容易,故选择51单片机作为主控芯片。
2、显示模块选择:
方案一:采用数码管显示的电路能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。发光响应时间极短(<0(1µs),高频特性好,单色性好,亮度高。体积小,重量轻,抗冲击性能好。 寿命长,使用寿命在10万小时以上,甚至可达100万小时。成本低。="">0(1µs),高频特性好,单色性好,亮度高。体积小,重量轻,抗冲击性能好。>
方案二:采用1602液晶
选择1602液晶显示屏。液晶显示(LCD)具有功耗低、体积小。内部含有国标简体中文
2
电子技术课程设计报告
字库的点阵图形液晶显示模块。利用该模块灵活的接口方式和简单方便的操作指令,可构成全中文人机交互图形界面。在硬件方面无需驱动模块,
方案比较:由于需要手动焊接电路,链接数码管的话,电路比较复杂,需要外接驱动芯片,而液晶只需简单的连线就可以了,故选择LCD1602.
3、时钟模块
方案一、采用单片机内部定时器
51系列单片机有两个16位可编程的定时/计数器:定时/计数器T0和定时/计数器T1,每个定时/计数器即可以对系统时钟计数实现,也可以对外部信号计数实现,每个定时器都有多种工作方式,每个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出课通过查询或中断方式处理。
方案二、采用时钟芯片DS1302
DS1302是DALLAs公司推出的涓流充电时钟芯片,内含有一个实时时钟日历和31个字节静态RAM,通过简单的串行接口与单片机进行通信,实时日历电路提供秒、分、时、日、日期、月、年信息DS1302与单片机之间能简单的采用同步串行方式进行通信,仅用的RES复位、I/O数据线、SCLK串行时钟3个口线
方案比较,由于上述两种方案均比较简单,但是出于成本和程序设计原因我们选择单片机内部自带的定时器作为时钟源的产生。
四、 详细设计
在上一阶段进行总体设计完成后,现在就可以分开独立的完成各个功能模块了。首先,需要选择使用集成芯片,总体思路是在满足所需功能前提下,能是电路尽可能简单。有以下方案:
1. 基于AT89S51的最小系统
。采用AT89S51单片机使用Atmel 公司高密度非易失性存储器技术制造、与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程、亦适于常规编程器。在单芯片上、拥有灵巧的8 位CPU 和在系统可编程Flash、使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。
AT89S51是低电压高性能的8位CMOS微控制器,8K字节可在线编程(ISP)的flash存储区。AT89S52采用Atmel高密度非易失性存储技术,兼容80C51指令集和管脚。片上flash支持ISP和传统的flash编程器进行重新编程。通用的8位CPU外加在线编程,Atemel借此提供了一个灵活、高效的嵌入式应用解决方案。
AT89S52有以下优点:8K flash,256B RAM,32个I/O接口,看门狗,三个十六位定时器/计数器,六个中断矢量、两级优先权,一个全双工的串行口,片上的振荡器和时钟电路(不懂,好像没有这些东西)。另外,AT89S52设计了静态逻辑(不懂),可以将时钟频率降低到0Hz.用软件可以设置两种省电模式:1.低电压空闲模式(The idle model),cpu不在工作,但是RAM、定时器/计数器、串行口、中断系统一直工作;2.电源睡眠模式(The power-down model)只保存RAM中的内容,但是停止振荡器,其他片上功能失效直到中断唤醒或硬件重启。
3
电子技术课程设计报告
51单片机的最小系统由复位电路、晶振电路等组成。P 0口为开漏输出,作为输出时需加上上拉电阻,阻值一般为10K
复位电路:
51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。51单片机高电平复位。以当前使用较多的AT89系列单片机来说,在复位脚加高电平2个机器周期(即24个振荡周期)可使单片机复位。复位后,主要特征是各IO口呈现高电平,程序计数器从零开始执行程序。 复位方式有两种。
a. 手动复位:按钮按下,复位脚得到VCC的高电平,单片机复位,按钮松开后,单片机开始工作。
b. 上电复位:上电后,电容电压不能突变,VCC通过复位电容(10μF电解)给单片机复位脚施加高电平5V,同时,通过10KΩ电阻向电容器反向充电,使复位脚电压逐渐降低。经一定时间后(约10毫秒)复位脚变为0V,单片机开始工作。
4
电子技术课程设计报告
晶振电路:
51单片机内部具有一个高增益的反相放大器,由于构成振荡器,通常在引脚XTAL1和XTAL2跨接石英晶体振荡器和两个补偿电容构成自激振荡器如图2所示,51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。51单片机最小系统起振电容C2、C3一般采用22-33PF,并且电容离晶振越近越好。
2 显示模块
选择1602液晶显示屏。液晶显示(LCD)具有功耗低、体积小。内部含有国标简体中文字库的点阵图形液晶显示模块。利用该模块灵活的接口方式和简单方便的操作指令,可构成全中文人机交互图形界面。在硬件方面无需驱动模块,因而选择液晶、而不选择数码显示。 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表所示: 并行接口
编号 符号 引脚说明 编号 符号 引脚说明
电源地 数据 1 VSS 9 D2
电源正极 数据 2 VDD 10 D3
液晶显示偏压 数据 3 VL 11 D4
数据/命令选择 数据 4 RS 12 D5
读/写选择 数据 5 R/W 13 D6
5
电子技术课程设计报告
使能信号 数据 6 E 14 D7
数据 背光源正极 7 D0 15 BLA
数据 背光源负极 8 D1 16 BLK
1602液晶模块内部的控制器共有11条控制指令
序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
清显示 1 0 0 0 0 0 0 0 0 0 1
光标返回 2 0 0 0 0 0 0 0 0 1 *
置输入模式 3 0 0 0 0 0 0 0 1 I/D S
显示开/关控制 4 0 0 0 0 0 0 1 D C B
光标或字符移位 5 0 0 0 0 0 1 S/C R/L * *
置功能 6 0 0 0 0 1 DL N F * *
置字符发生存贮器地址 字符发生存贮器地址 7 0 0 0 1
置数据存贮器地址 显示数据存贮器地址 8 0 0 1
读忙标志或地址 计数器地址 9 0 1 BF
写数到CGRAM或DDRAM) 要写的数据内容 10 1 0
从CGRAM或DDRAM读数 读出的数据内容 11 1 1
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:
6
电子技术课程设计报告
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域
1602LCD内部显示地址
3 电源模块
采用7805电源芯片、能够输出稳定的5V电压供单片机工作。三端稳压集成电路LM7805来组成稳压电源电路所需的外围元器件少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠方便,而且价格便宜
7
电子技术课程设计报告
4(按键模块
独立按键使用起来简单方便,在编写程序时必须对其进行消抖,原因如下:当按键未按下时输出高电平,当按键按下时输出低电平。通常按键为机械式开关,由于机械触点的弹性作用,一个按键在闭合时不会马上稳定的接通,断开时也不会马上断开,因而在闭合和断开的瞬间都会伴随着一串的抖动。
本次设计中焊接了3个独立按键、分别同P1.0,P1.1,P1.2相连。P1.0口控制光标的显示及移动、P1.1、P1.2口分别代表“+”、“—”。
五、 流程图
编写程序时必须绘制流程图,这样编写程序才会有思路,才能够有条不紊的进行下去,对于错误的分析也会有很大的帮助。
8
电子技术课程设计报告
开始
启动定时否 器 定时时间
到否
液晶显示是 时间
时间调整
定时器清零重
新计数
是 按键按
下
否
六、 组装电路并调试
在经过前面几个阶段的设计后,数字钟的各个模块已经设计完毕,根据总体设计时的方案框图,将各个子电路组合起来,接通5V电源,对电路进行总体测试。
经测试,电路可以正常计时,并显示,调整无误。第一次按下第一个按键时钟停止光标闪烁在秒处,按第二个第三个按键进行秒加减设置,第二次按下第一个按键上光标跳到分处,按第二个第三个按键进行分加减设置,第三次按下第一个按键上光标跳到时处,按第二个第三个按键进行小时加减设置,第四次按下第一个按键,时钟恢复正常显示。
总之该设计方案合理正确,功能齐全,能够预置时间能够对时间进行加减设置。 七、 缺陷及改进
1(时间显示可能不是非常的精确,因为单片机在正常运行时考晶振带动,而用晶振进行
的定时可能会有非常微小的误差,如果要进行精确时间的测量的话可以使用DS1302等一
系列时钟芯片。
9
电子技术课程设计报告
2(刚开始的时候液晶上面可能由于对比度调节不正确导致未出现任何现象可能会花很长时间在排除其他错误,若制作PCB的话可以考虑数码管。
3(液晶调试LCD显示屏是一个反复优化的过程。期间可能会出现闪屏,显示过快而出现乱码,字符出现的位置不正确等等问题,都需要一步一步调试并解决。
4.键盘扫描程序的调试是相对容易的过程。期间注意各个按键所其的作用,以及在编程中注意去抖动。
5(定时器设计的时候可能会由于某些寄存器未定义导致不能正确的进行定时,
6.在程序整合过程中,主要函数同调用子函数之间的关系,以及注意时序的问题。 误差分析:该电子时钟在运行中存在一定的误差。由于采用的计时方案是软件计时,在当电子时钟运行时间1s时,又得要去执行中断程序,这个过程需要一定的时间,于是就会产生误差。
八、 心得体会
经过长达两天的设计与思考,最终在电路板上完成了单片机时钟的设计与调试。其间遇
到了许多问题,但最后都一一得到解决。现将心得体会总结如下:
1( 焊接电路时必须对每个节点焊的很好,否则很容易出现虚焊,导致出现排查错误
时不容易发现错误而耽误完成整个设计的时间。
2( 编程时必须非常的仔细,每个步骤都必须进行测试,每出现编一步,观察下实验
现象是否正确。
3( 设计初期要考虑周到,否则后期改进很困难。应该在初期就多思考几个方案,进
行比较论证,选择最合适的方案动手设计。总体设计在整个设计过程中非常重要,
应该花较多的时间在上面。
4( 方案确定后,才开始设计。设计时,多使用已学的方法,如列真值表,化简逻辑
表达式,要整体考虑,不可看一步,做一步。在整体设计都正确后,再寻求简化
的方法。
5( 在设计某些模块的时候无法把握住整体,这时可以先进行小部分功能的实现,在
此基础上进行改进,虽然可能会多花一些时间,但这比空想要有效的多。 6( 尽可能是电路连线有序,模块之间关系清楚,既利于自己修改,也利于与别人交
流。如果电路乱的连自己都看不懂,那还如何改进和扩展。
7( 很多难点的突破都来自于与同学的交流,交流使自己获得更多信息,开拓了思路,
因此要重视与别人的交流。
8( 应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用
了许多理论课上学的内容,如真值表、卡拉图等。本次设计把理论应用到了实践
中,同时通过设计,也加深了自己对理论知识的理解和掌握。 八、参考资料
[1] 郭天翔主编:《新概念51单片机C语言教程-入门、提高、开发、拓展》,北京,电子
工业出版社,2009年
[2] 清华大学教研组编,阎石主编:《数字电子技术基础》(第四版),北京, 高等教育出
版社 ,2004年
[3] 谢维成、杨加国主编:《单片机原理与应用及C51程序设计》(第二版),北京,清华
大学出版社,2009年
[4] 马忠梅.单片机C程序设计[M],北京:被恶警航空航天大学出版社,2007年
10
电子技术课程设计报告
[5] 谭浩强.C程序设计[M],北京:清华大学出版社,2002年
[6] 李广弟.单片机基础[M],北京:北京航空航天大学出版社,2007年
附录一 运行程序 #include #include #define uchar unsigned char; sbit key1 = P1^0; sbit key2 = P1^1; sbit key3 = P1^2; typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ; unsigned char tab1[]="xuelisheng091 20"; unsigned char tab2[]=""; sbit rs = P2^0; // sbit rw = P2^1; sbit ep = P2^2; char miao=58,fen=59,shi=23,num,i; uchar j,k1=0; void delay(BYTE ms) { // 延时子程序 BYTE i; while(ms--) { for(i = 0; i< 250;="" i++)=""> { _nop_(); _nop_(); _nop_(); _nop_(); } } } 11 电子技术课程设计报告 BOOL lcd_bz() { // 测试LCD忙碌状态 BOOL result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); ep = 0; return result; } void lcd_wcmd(BYTE cmd) { // 写入指令数据到LCD while(lcd_bz()); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } void lcd_pos(BYTE pos) { //设定显示位置 lcd_wcmd(pos | 0x80); } void lcd_wdat(BYTE dat) {//写入字符显示数据到LCD 12 电子技术课程设计报告 while(lcd_bz()); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } void lcd_init() { //LCD初始化设定 lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); for(j=0;j<12;j++)>12;j++)> { lcd_wdat(tab1[j]); delay(2); } } void init() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } void write_sfm(unsigned char add,unsigned char date) 13 电子技术课程设计报告 { lcd_wcmd(0x80+0x40+add); lcd_wdat(0x30+date/10); lcd_wdat(0x30+date%10); } void keyscan() { if(key1==0) { delay(5); if(key1==0) { delay(5); while(!key1); k1++; if(k1==1) { TR0=0; lcd_wcmd(0x40+0x80+10); lcd_wcmd(0x0f); } if(k1==2) { lcd_wcmd(0x40+0x80+7); lcd_wcmd(0x0f); } if(k1==3) { lcd_wcmd(0x40+0x80+4); lcd_wcmd(0x0f); } if(k1==4) { TR0=1; k1=0; lcd_wcmd(0x0c); } } } if(k1!=0) { delay(1); if(key3==0) { 14 电子技术课程设计报告 delay(5); if(key3==0) { delay(5); while(!key3); if(k1==1) { miao--; if(miao==-1) { miao=59; } write_sfm(10,miao); lcd_wcmd(0x40+0x80+10); } if(k1==2) { fen--; if(fen==-1) { fen=59; } write_sfm(7,fen); lcd_wcmd(0x40+0x80+7); } if(k1==3) { shi--; if(shi==-1) { shi=23; } write_sfm(4,shi); lcd_wcmd(0x40+0x80+4); } } } if(key2==0) { delay(5); if(key2==0) { delay(5); while(!key2); 15 电子技术课程设计报告 if(k1==1) { miao++; if(miao==60) { miao=0; } write_sfm(10,miao); lcd_wcmd(0x40+0x80+10); } if(k1==2) { fen++; if(fen==60) { fen=0; } write_sfm(7,fen); lcd_wcmd(0x40+0x80+7); } if(k1==3) { shi++; if(shi==24) { shi=0; } write_sfm(4,shi); lcd_wcmd(0x40+0x80+4); } } } } } void main() { init(); lcd_init(); // 初始化LCD delay(10); while(1) { keyscan(); } } 16 电子技术课程设计报告 void timer()interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num==20) { num=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { shi++; fen=0; if(shi==24) { shi=0; } write_sfm(4,shi); lcd_wdat(':'); } write_sfm(7,fen); lcd_wdat(':'); } write_sfm(10,miao); } } 附录一 使用说明 第一次按下电路板上第一个按键时钟停止光标闪烁在秒处,进行时间预置与调整模式状态, 按第二个第三个按键进行秒加减设置,第二次按下第一个按键上光标跳到分处,按第二个第 三个按键进行分加减设置,第三次按下第一个按键上光标跳到时处,按第二个第三个按键进 行小时加减设置,第四次按下第一个按键,时钟恢复正常显示。 17 电子技术课程设计报告 附录三 电路图 R1S1VCC RP1AT89S51S2D01391P10P00VSSD12382P11P01VDDD23373P12P02VLS3D3RS4364LCD1602P13P03RSD4R/W5355P14P04R/WD5EN6346P15P05END6D07337P16P06D0D7D1C18328P17P07D1X1D29D2RSD3132110INT1P20D3R/WD4122211INT0P21D4Y1END52312P22D5D6152413T1P23D6D7C2142514T0P24D7X22615P25BLA3127VCC16VCCEA/VPP26BLKVCC28P27X119X1X218X2 910RESETRXDC311+TXDS41730RDALE/P1629WRPSEN R2 18 ** 学 院 程 设 计 题 目 数字时钟 系 (部) 信息工程系 班 级 姓 名 学 号 指导教师 2010 年 1 月 4 日至 1 月 8 日 共 一 周 2010年 1 月 8 日 《电子技术》 课程设计任务书 课程设计成绩评定表 目录 1引言 . .......................................................................................................................................... 1 2数字电子钟基本原理 . .............................................................................................................. 2 2.1石英晶体振荡器 . ........................................................................................................... 2 2.2 分频器 . .......................................................................................................................... 3 2.3 计数器 . .......................................................................................................................... 3 2.4 译码与显示电路 . .......................................................................................................... 5 2.5 校时电路 . ...................................................................................................................... 6 2.6调试要点 . ....................................................................................................................... 7 2.7 元器件的选择 . .............................................................................................................. 7 3设计总结 . .................................................................................................................................. 9 4心得体会 . ................................................................................................................................ 10 1引言 随着科学技术的不断发展, 人们对时间计量的精度要求越来越高。高精度的计时工具大多数都使用了石英晶体振荡器, 由于电子钟、石晶表、石英钟都采用了石英技术, 因此走时精确度高, 稳定性好, 使用方便, 不需要经常调校. 数字式电子钟用集成电路计时时, 译码代替机械式传动, 用LED 显示器代替指针显示进而显示时间, 减小了计时误差. 这种表具有时、分、秒、显示时间的功能, 还可以进行时、分、秒的校对。片选的灵活性好[6]。 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 因此,我们此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟. 而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法. 且由于数字钟包括组合逻辑电路和时叙电路. 通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。 2数字电子钟基本原理 数字电子钟的逻辑图如下,它由石英晶体振荡器、分频器、计数器、译码器、显示器和校时电路组成,石英晶体振荡器产生的信号经过分频器作为秒脉冲,秒脉冲送入计数器计数,计数结果通过时、分、秒译码器显示时间。 时分秒 译码器译码器译码器 时计数器分计数器秒计数器 校时电路 晶体振荡器 图2 数字电子时钟逻辑框图 分频器2.1石英晶体振荡器 石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整。它还具有压电效应,在晶体某一方向加一电场,则在此垂直方向产生机械震动,有了机械振动,就会在相应的垂直面上产生电场,从而使机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限制时,才达到最后稳定,这种压电谐振的频率即为晶体振荡器的固有频率。 用反相器与石英晶体构成的振荡电路如下图所示。利用两个非门G1、G2自我反馈,使它们工作在线性状态,然后利用石英晶体JU 来控制振荡频率,同时用电容C1来作为两个非门之间的耦合,两个非门输入和输出之间并接的电阻R1、R2作为负反馈元件,由于反馈电阻很小,可以近似认为非们的输出输入压降相等。电容C2是为了防止寄生振荡。 0.01 11 ΩΩ 图2-1 石英晶体振荡器 2.2 分频器 由于石英晶体振荡器产生的频率很高,要得到秒脉冲,需要用分频器。例如,振荡器输出4MH2信号,通过D 触发器进行4分频变成1MH2,然后送到10分频计数器,进过6次10分频而获得1Hz 的方波信号作为秒脉冲信号。 2.3 计数器 秒脉冲信号经过6级计数器,分别得到秒个位、十位、分个位、十位以及时个位、十位的计时。秒、分计数器为60进制,小时为24进制。 2.3.1 60进制计数: “秒”计数器电路与“分”计数器电路都是60进制,它由一级10进制计数器和一级6进制计数器连接构成,如图所示,采用两片中规模集成电路74LS90串接起来构成的“秒”、“分”计数器。 1& 221 21 0(1)0(2)21 1 图2-3-1 60进制计数器 IC1是十进制计数器,QD1作为十进制的进位信号,74LS90计数器是十进制异步计数器,用反馈归零方法实现十进制计数,IC2和与非门组成六进制计数。74LS90是在CP 信号的下降沿翻转计数,QA2和QC2相与0101的下降沿,作为“分”(“时”)计数器的输入信号。QB2和QC20110高电平1分别送到计数器的清零R0(1),R0(2),74LS90内部的R0(1)和R0(2)与非后清零而使计数器归零,完成六进制计数。由此可见IC1和IC2串联实现了六十进制计数。 2.3.2 24进制计数: 小时计数电路是由IC5和IC6组成的24进制计数器如图 秒 图2-3-2 24进制计数器 当“时”个位IC5计数输入端CP5来到第十个触发信号时,IC5计数器复零,进位端QD5向IC6“时”十位计数器输出端信号,当第24个“时”脉冲到达时,IC5计数器的状态为“0010”,此时“时”个位计数器的QC5和“时”十位计数器的QB6输出为“1”。把它们分别送到IC5和IC6计数器的清零端R0(1)和R0(2),通过7490内部的R0(1)和R0(2)与非后清零,计数器复零,完成24进制计数。 2.4 译码与显示电路 译码是把给定的代码进行翻译, 将时、分、秒计数器输出的四位二进制代码翻译为相应的十进制数, 并通过LED 显示器显示, 通常LED 显示器与译码器是配套使用的。我们选用的七段译码驱动器(74LS47) 和数码管(LED) 是共阳接法。LED 显示器的3、8 管脚接一起, 限流电阻为200Ω 和+ 5V 联接。实际使用时a 、b 、c 、d 、e 、f 、g 各段都应该接一个限流电阻, 在图中略画出来。译码显示电路如图所示。 图2-4 译码与显示电路 2.5 校时电路 当电子钟接通电源或者计时发现误差时, 均需要校正时间。校时电路分别实现对时、分的校准。由于每个机械开关具有抖动现象, 因此用RS 触发器作为去抖电路。采用RS 基本触发器及单刀双掷开关, 闸刀常闭于2 点, 每搬动一次产生一个计数脉冲, 实现校时功能。电路如图所示 21 图2-5 校时电路 2.6调试要点 在实验箱上组装电子钟,注意,器件管脚的连接一定要准确,“悬空端”、“清零端”、“置1端”要正确处理,调试步骤和方法如下: (1)用示波器检测石英晶体振荡器的输出信号波形和频率,晶振输出频率应为4MHz 。 (2)将频率为4MHz 的信号送入分频器,并用示波器检查各级分频器的输出频率是否符合设计要求。 (3)将一秒信号分别送入“时”、“分”、“秒”计数器,检查各级计数器的工作情况。 (4)观察校时电路的功能是否满足校时要求。 (5)当分频器和计数器调试正常后,观察电子钟是否准确正常地工作。 2.7 元器件的选择 (1) 七段显示器(共阴极) 6片 (2) 74LS48 6片 (3) 74LS90 12片 (4) 4MHz石英晶体 1片 (5) 74LS10,74LS00 10片 (6) 74LS04 1片 (7) 74LS74 1片 (8) 电阻、电容、导线等 3设计总结 通过整个电路设计与制作的整个过程,掌握了对电子钟的设计, 组装与调试方法。 熟悉了CMOS 系列中、小规模集成电路的使用。 通过理论与实践的结合,进一步深入的体会到一种学习的方法,特别是对与电子设计方面。首先要明确总体的设计方案与方法;其次是对各个部分进行设计与改进;最后将各个部分整合在一起进行比较、观察。 在数字钟实验设计当中遇到的首要问题有三个:一是电路的总体设计问题;二是电路的焊接问题;三是电路的调试问题。基于所学数字电路知识的局限性,在选择元器件方面有所困难,开始无从下手应该确定使用何种元件。通过查找资料等过程首先确定了元件,从而确定了总电路图。由于初次进行焊接工作,所以在电路焊接的时候造成了许多虚焊,导致电路无法正常运行。加重了电路调试的作业量。 总的来说,电子钟的课程设计有利于培养我们对电子设计的兴趣,是一次很好的理论与实际的结合,希望能有更多机会进行这些课程设计。 4心得体会 通过这次课程设计,加强了我们动手、思考和解决问题的能力。在设计过程中,经常会遇到这样那样的情况,就是心里想老是这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。 做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。 平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计, 虽然短暂但是让我得到多方面的提高:1、提高了我们的逻辑思维能力,使我们在逻辑电路的分析与设计上有了很大的进步。加深了我们对组合逻辑电路与时序逻辑电路的认识,进一步增进了对一些常见逻辑器件的了解。另外,我们还更加充分的认识到,数字电路这门课程在科学发展中的至关重要性2,查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。3,相互讨论共同研究也是很重要的,经常出现一些问题,比如电路设计中的分频器的设计,开始并不理解分频器的原理,但是和其他的专业同学讨论后,理解了分频器的基本原理后,很快的设计了电路原理图。 目录 1. 引言 .................................... 2 1.1设计任务与要求 . ......................................................................................... 2 1.2数字钟得实用价值和理论意义 . ................................................................. 2 1.3设计所用器件简介 . ..................................................................................... 2 1.3.1 单片机简介 . ........................................................................................ 2 1.3.2 1602LCD的基本参数及引脚功能 . .................................................... 3 2. 设计内容 .................................. 6 3.程序设计及硬件电路 ........................... 7 3.1原理图(protues ) . ................................................................................... 7 3.2原理图(protel ) . ..................................................................................... 7 4. 仿真结果 .................................. 8 5. 收获、体会和建议 . ........................... 10 6. 参考文献 ................................. 11 7. 附:源程序 ............................... 11 1. 引言 近年来随着计算机在社会领域的渗透和大规模集成电路的发展, 单片机的应用正在不 断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等 特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器, 仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来 使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 单片机模块中最常见的是数字钟, 数字钟是一种用数字电路技术实现时、 分、 秒计时 的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使 用寿命,因此得到了广泛的使用。数字钟是采用数字电路实现对时 , 分 , 秒数字显示的计时 装置 , 广泛用于个人家庭 , 车站 , 码头办公室等公共场所 , 成为人们日常生活中不可少的必 需品 , 由于数字集成电路的发展和石英晶体振荡器的广泛应用 , 使得数字钟的精度 , 远远超 过老式钟表 , 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原 先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动 起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些, 都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 1.1设计任务与要求 1. 利用 AT89C51定时器设计一个电子时钟; 2. 显示格式位 “ XX XX XX” , 从左向右分别 是:时、分、秒 ;3. 显示部分用 1602LCD 显示屏 ;4. 具有四个调整键 K0,K1,K2,K3;5. 按下相 应的键可以调整时,分,秒 ;6. 调整到哪一位哪一位闪烁 ;7. 在 1602上方显示“年,月, 日,星期”。 1.2数字钟得实用价值和理论意义 数字钟是采用数字电路实现对时 , 分 , 秒数字显示的计时装置 , 广泛用于个人家庭 , 车站 , 码头办公室等公共场所 , 成为人们日常生活中不可少的必需品 , 由于数字集成电路的发展 和石英晶体振荡器的广泛应用 , 使得数字钟的精度 , 远远超过老式钟表 , 钟表的数字化给 人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动 报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通 断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。 因此,研究数字钟及扩大其应用,有着非常现实的意义。 1.3设计所用器件简介 1.3.1 单片机简介 MCS51是指由美国 INTEL 公司(对了,就是大名鼎鼎的 INTEL )生产的一系列单片机的总称, 这一 系列单片机包括了好些品种,如 8031, 8051, 8751, 8032, 8052, 8752等,其中 8051是最早最典型的 产品, 该系列其它单片机都是在 8051的基础上进行功能的增、 减、 改变而来的, 所以人们习惯于用 8051来称呼 MCS51系列单片机, 而 8031是前些年在我国最流行的单片机, 所以很多场合会看到 8031的名称。 INTEL 公司将 MCS51的核心技术授权给了很多其它公司, 所以有很多公司在做以 8051为核心的单片机, 当然,功能或多或少有些改变,以满足不同的需求,其中 89C51就是这几年在我国非常流行的单片机, 它是由美国 ATMEL 公司开发生产的。以后我们将用 89C51、 89S51来完成一系列的实验。 MCS-51系列单片机 MCS-51系列单片机分为两大系列,即 51子系列与 52子系列。 51子系列:基本型,根据片内 ROM 的配置,对应的芯片为 8031、 8051、 8751、 8951 52子系列:增强型,根据片内 ROM 的配置,对应的芯片为 8032、 8052、 8752、 8952 这两大系列单片机的主要硬件特性如下表: 上表中可以看到, 8031、 8031、 8032、 80C32片内是没有 ROM 的,对应着上表看,我们可以发现, 51系列的单片机的 RAM 大小为 128B , 52系列的 RAM 大小为 256B , 51系列的计数器为两个 16位的, 52系列的计数器为三个 16位计数器。 51系列的中断源为 5个, 52系列的中断源为 6个。 1.3.2 1602LCD的基本参数及引脚功能 1602LCD 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否 带背光在应用中并无差别,两者尺寸差别如下图 10-54所示: 图 10-54 1602LCD尺寸图 1602LCD 主要技术参数: 显示容量 :16×2个字符 芯片工作电压 :4.5— 5.5V 2. 设计内容 3.程序设计及硬件电路 程序流程图 3.1原理图(protues ) 3.2原理图(protel ) 单片机课程设计说明书 4. 仿真结果 上电后按下 K0开始运行: 按下 K3 按下 K1 闪烁 按下 K2 单片机课程设计说明书 根据按下 K0的次数可以改变闪烁的位置进行分,时,年,月,日,星期的调 整 调整分 调整时 调整年 调整月 单片机课程设计说明书 调整日 调整星期 5. 收获、体会和建议 单片机数字钟可以说是一个较小的系统,开始时我们觉得通过 C 语言较容易实现,确 实,只实现一个能够正常走时并且能够校时的数字钟是比较容易的。但我们想错了,毕竟 是第一次从总体角度来考虑地完成一个小系统,好多的实际性的问题我们没有考虑,所以 造成我们最终设计的数字钟精度不高,并且存在好多问题,当然问题多了对我们来说是好 事,这样我们在解决更多问题时学会更多解决问题的方法,对我们也算是长长经验吧。 通过这次对数字钟的设计, 让我了解了设计电路的程序, 也让我了解了关于数字钟的 原理与设计理念,要设计一个完整的电路总要经过多次的失败才能成功的,在设计中,遇 到了许多匪夷所思的问题, 一个人就是想破脑子也做不出来, 这时候, 就需要去询问老师、 和同学探讨,共同解决出现的问题,也许就是因为老师的一句提醒、同学的探讨中就会豁 然开朗。 。 从这次设计中我也觉得自己还对单片机的功能了解只是个皮毛,单片机强大的功能还 等着我们去开发。 通过这次设计, 不仅使我学到了知识, 让我对电路设计有了大概的了解; 其次,还体会到了团队精神。总而言之,这次设计是成功的。 6. 参考文献 1 杨文龙 . 单片机原理及应用 . 西安:西安电子科技大学出版社, 1993 2 李朝青 . 单片机原理及接口技术 . 北京:北京航空航天大学出版社, 2003 3 胡汉才 . 单片机原理及系统设计 . 北京:清华大学出版社, 2003 4 杨忠煌,黄博俊,李文昌 . 单芯片 8051实务与应用 . 北京:中国水利水电出版社, 2001 7. 附:源程序 #include #define uchar unsigned char #define uint unsigned int uchar code table1[]={ uchar code table2[]={ uchar code table[]={'0','1','2','3','4','5','6','7','8','9'}; uchar num,count,miao,fen,xiao,week,day,month,year,shi,ge,flag,num1; sbit LCD_RW=P3^7; sbit LCD_RS=P3^5; sbit LCD_E=P3^4; sbit k1=P1^0;//选择 sbit k2=P1^1;//增加 sbit k3=P1^2;//减少 sbit k4=P1^3;//开始 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } ////////////////////////////////////////////////////////////////////////////////////// ///lcd显示 void init(void);//初始化函数 void write_com(uchar command);//写指令函数 void write_date(uchar dat);//写数据函数 void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符 ,X (0-16),y(1-2) //void LCD_check_busy(void);//检查忙函数。我没用到此函数,因为通过率极低。 void delay_n40us(uint n);//延时函数 //******************************** //*******初始化函数 *************** void init(void) { write_com(0x38);//设置 8位格式, 2行, 5x7 write_com(0x0c);//整体显示,关光标,不闪烁 write_com(0x06);//设定输入方式,增量不移位 write_com(0x01);//清除屏幕显示 delay_n40us(100);//实践证明,用 for 循环 200次就能可靠完成清屏指令。 } //******************************** //********写指令函数 ************ void write_com(uchar dat) { P2=dat; LCD_RS=0;//指令 LCD_RW=0;//写入 LCD_E=1;//允许 LCD_E=0; delay_n40us(1);//实践证明,我的 LCD1602上,用 for 循环 1次就能完成普通写指令。 } //******************************* //********写数据函数 ************* void write_date(uchar dat) { P2=dat; LCD_RS=1;//数据 LCD_RW=0;//写入 LCD_E=1;//允许 LCD_E=0; delay_n40us(1); } //******************************** //********延时函数 *************** void delay_n40us(uint n) { uint i; uchar j; for(i=n;i>0;i--) for(j=0;j<2;j++); 在这个延时循环函数中我只做了="">2;j++);> } //实践证明我的 LCD1602上普通的指令只需 1次循环就 能可靠完成。 //////////////////////////////////////////////////////////////////////// void main() { init(); write_com(0x80); ///////初始化 for(num=0;num<15;num++)>15;num++)> { write_date(table1[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<15;num++)>15;num++)> { write_date(table2[num]); delay(5); } while(1) { if(count==20)//////////计时的数 { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; xiao++; if(xiao==24) { xiao=0; week++; if(week==8)week=0; switch(week) { case 1:write_com(0x80+0x0c);write_date('M');delay(5); write_date('O');delay(5); write_date('N');break; case 2:write_com(0x80+0x0c);write_date('T');delay(5); write_date('U');delay(5); write_date('E');break; case 3:write_com(0x80+0x0c);write_date('W');delay(5); write_date('E');delay(5); write_date('D');break; case 4:write_com(0x80+0x0c);write_date('T');delay(5); write_date('H');delay(5); write_date('U');break; case 5:write_com(0x80+0x0c);write_date('F');delay(5); write_date('R');delay(5); write_date('I');break; case 6:write_com(0x80+0x0c);write_date('S');delay(5); write_date('T');delay(5); write_date('A');break; case 7:write_com(0x80+0x0c);write_date('S');delay(5); write_date('U');delay(5); write_date('N');break; } day++; if((month%2==0&&day==31)||(month%2==1&&day==32&&month!=2)||(((year%4==0&&year%100!= 0)||year%400==0)&&month==2&&day==30)||((!(year%4==0&&year%100!=0)||year%400==0)&&month==2 &&day==29)) {////////////////////判断每月有多少天 day=0; month++; if(month==13) { month=1; year++; shi=year/10; ge=year%10; write_com(0x80+0x04); write_date(table[ge]); write_com(0x80+0x03); write_date(table[shi]); } shi=month/10; ge=month%10; write_com(0x80+0x07); write_date(table[ge]); write_com(0x80+0x06); write_date(table[shi]); } shi=day/10; ge=day%10; write_com(0x80+0x0a); write_date(table[ge]); write_com(0x80+0x09); write_date(table[shi]); } shi=xiao/10; ge=xiao%10; write_com(0x80+0x45); write_date(table[ge]); write_com(0x80+0x44); write_date(table[shi]); } shi=fen/10; ge=fen%10; write_com(0x80+0x48); write_date(table[ge]); write_com(0x80+0x47); write_date(table[shi]); } shi=miao/10; ge=miao%10; write_com(0x80+0x4b); write_date(table[ge]); write_com(0x80+0x4a); write_date(table[shi]); }//////////////////////////////////////////显示目前的年月日和具体时间 if(k1==0) ////////////////按键 K1按下 { delay(10); if(k1==0) { num1=0; if(flag==8)flag=1; switch(flag) { case 1: write_com(0x80+0x4b);write_com(0x0f);break; case 2: write_com(0x80+0x48);write_com(0x0f);break; case 3: write_com(0x80+0x45);write_com(0x0f);break; case 4: write_com(0x80+0x0a);write_com(0x0f);break; case 5: write_com(0x80+0x07);write_com(0x0f);break; case 6: write_com(0x80+0x04);write_com(0x0f);break; case 7: write_com(0x80+0x0c);write_com(0x0f);break; }////////////////////////时间停止运行 确定调整时间的位置 } while(!k1);///////////消抖 } if(k2==0)//////////////////K2键按下 { delay(10); if(k2==0) { num1++; if(num1==60)num1=0;///////////////////60为周期 switch(flag) { case 1:miao=num1; shi=miao/10; ge=miao%10; write_com(0x80+0x4b);////////////////地址 write_date(table[ge]);///////////////数据 write_com(0x80+0x4a); write_date(table[shi]); break; case 2:fen=num1; shi=fen/10; ge=fen%10; write_com(0x80+0x48); write_date(table[ge]); write_com(0x80+0x47); write_date(table[shi]); break; case 3:xiao=num1; shi=xiao/10; ge=xiao%10; write_com(0x80+0x45); write_date(table[ge]); write_com(0x80+0x44); write_date(table[shi]);break; case 4:day=num1; shi=day/10; ge=day%10; write_com(0x80+0x0a); write_date(table[ge]); write_com(0x80+0x09); write_date(table[shi]);break; case 5:month=num1; shi=month/10; ge=month%10; write_com(0x80+0x06); write_date(table[shi]);break; case 6:year=num1; shi=year/10; ge=year%10; write_com(0x80+0x04); write_date(table[ge]); write_com(0x80+0x03); write_date(table[shi]);break; case 7:week=num1; switch(week) { case 1:write_com(0x80+0x0c);write_date('M');delay(5); write_date('O');delay(5); write_date('N');break; case 2:write_com(0x80+0x0c);write_date('T');delay(5); write_date('U');delay(5); write_date('E');break; case 3:write_com(0x80+0x0c);write_date('W');delay(5); write_date('E');delay(5); write_date('D');break; case 4:write_com(0x80+0x0c);write_date('T');delay(5); write_date('H');delay(5); write_date('U');break; case 5:write_com(0x80+0x0c);write_date('F');delay(5); write_date('R');delay(5); write_date('I');break; case 6:write_com(0x80+0x0c);write_date('S');delay(5); write_date('T');delay(5); write_date('A');break; case 7:write_com(0x80+0x0c);write_date('S');delay(5); write_date('U');delay(5); write_date('N');break; } break; }/////////////////////////////////////////是时间加 } while(!k2); } if(k3==0)//////////////////////////K3按下 { delay(10); if(k3==0) { if(num1==0)num1=60; num1--; switch(flag) { case 1:miao=num1; shi=miao/10; ge=miao%10; write_com(0x80+0x4b); write_date(table[ge]); write_com(0x80+0x4a); write_date(table[shi]); break; ge=fen%10; write_com(0x80+0x48); write_date(table[ge]); write_com(0x80+0x47); write_date(table[shi]); break; case 3:xiao=num1; shi=xiao/10; ge=xiao%10; write_com(0x80+0x45); write_date(table[ge]); write_com(0x80+0x44); write_date(table[shi]);break; case 4:day=num1; shi=day/10; ge=day%10; write_com(0x80+0x0a); write_date(table[ge]); write_com(0x80+0x09); write_date(table[shi]);break; case 5:month=num1; shi=month/10; ge=month%10; write_com(0x80+0x07); write_date(table[ge]); write_com(0x80+0x06); write_date(table[shi]);break; case 6:year=num1; shi=year/10; ge=year%10; write_com(0x80+0x04); write_date(table[ge]); write_com(0x80+0x03); write_date(table[shi]);break; case 7:week=num1; switch(week) { case 1:write_com(0x80+0x0c);write_date('M');delay(5); write_date('O');delay(5); write_date('N');break; case 2:write_com(0x80+0x0c);write_date('T');delay(5); write_date('U');delay(5); write_date('E');break; case 3:write_com(0x80+0x0c);write_date('W');delay(5); write_date('E');delay(5); write_date('D');break; case 4:write_com(0x80+0x0c);write_date('T');delay(5); write_date('H');delay(5); write_date('U');break; case 5:write_com(0x80+0x0c);write_date('F');delay(5); write_date('R');delay(5); write_date('I');break; case 6:write_com(0x80+0x0c);write_date('S');delay(5); write_date('T');delay(5); write_date('A');break; case 7:write_com(0x80+0x0c);write_date('S');delay(5); write_date('U');delay(5); write_date('N');break; } break; }/////////////////////////////是时间减 } while(!k3); } if(k4==0)//////////////////////////////K4按下 { delay(10); if(k4==0) { TMOD=0x01;//////////设置定时器 0模式 1及 16位计数器 TH0=(65536-50000)/256; TL0=(65536-50000)%256;/////////////定时初始化 50MS EA=1;////////////开总中断 TR0=1;///////////启动 T0计数 ET0=1;///////////开定时器 0中段 write_com(0x0c); flag=0;//////////////初始化 } while(!k4); } } while(1); } void t0_time() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256;////////////定时器初始化 count++; } ///////////////////////////定时中段范文四:数字时钟课程设计
范文五:数字时钟课程设计