电子钟课程设计说明书(有完整源码)
数字电子钟--设计加详细说明(全)
中国………..电子技术课程设计总结报告题目:数字电子钟学生姓名:系别:专业年级:指导教师:年月日一、设计任务与要求1、用单片机设计一个数字电子钟,采用LED数码管来显示时间。
2、显示格式为:XX:XX:XX,即:时:分:秒。
3、时间采用24小时制显示,4、设置一个按键用于时间显示方式的切换,能进行时间的调整,可暂停时间的变动。
..二、方案设计与论证图1 系统整体框图1、单片机芯片选择方案方案一:AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器。
主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。
方案二:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)。
主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定时/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设置睡眠和唤醒功能。
从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案一。
2、数码管显示选择方案方案一:静态显示。
静态显示,即当显示器显示某一字符时,相应的发光二极管恒定导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小电流能获得较高的亮度,且字符不闪烁。
但因当所需显示的位数较多时,静态显示所需的I/O口数较大,造成资源的浪费。
课程设计之电子钟(完整版)
数字电子技术课程设计一、设计目的数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,我们此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.二、方案设计与论证数字钟以成为人们常生活中数字电子钟一般由振荡器,分频器,显示器,定时器等部分组成。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确,性能稳定,携带方便等特点,它还用于计时,自动报时及自动控制等各个领域。
尽管目前市场上以有现成数字钟集成电路芯片,价格便宜这些都是数字电路中最基本的,应用最广的电路。
数字电子钟的基本逻辑功能框图如下:它是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
他的计时装置的周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。
因此,一个基本数字钟主要由六部分组成。
(1)设计指标1)由晶振电路产生1HZ标准秒信号;2)分、秒为00~59六十进制计数器;3)时为00~23二十四进制计数器;4)具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;5)整点具有报时功能,当时间到达整点前鸣叫五次低音(500HZ),整点时再鸣叫一次高音(1000HZ)。
(2)设计要求1)画出电路原理图(或仿真电路图);2)元器件及参数选择;3)电路仿真与调试。
4)制作要求自行装配和调试,并能发现问题和解决问题。
5)编写设计报告写出设计与制作的全过程,附上有关资料和图纸,有心得体会。
四、实验器材试验箱1台导线若干74LS00 5片74LS04 1片74LS08 1片74LS20 2片74LS32 1片74LS161 6片万用表镊子各一个。
电子钟课程设计说明书(有完整源码)
安徽工程大学本科课程设计说明书专业:计算机科学与技术题目:电子时钟课程设计学生姓名: (hch)指导教师:老师年月日前言本课程设计为电子时钟设计,在设计过程中,关键的难题就是接口的设计和AT89C51芯片内部的时钟电路以及它的中断系统。
在当今时代,人们不时地就关注周围发生的一切。
而一个好的电子时钟,被安置在各种器件上。
所以,电子时钟应用面极广。
《单片微型计算机及接口技术》是一门应用性较强的计算机专业课程,是设计与开发各种计算机应用系统的基础。
从硬件的角度看,微型计算机、单片机、嵌入式系统的开发和应用,很大程度上都是接口电路的开发与应用。
因此,本课程设计的成功的关键也在接口设计上。
本设计的大致结构为:第一章,主要介绍设计的总思想和原理;第二章,对系统功能模块的设计;第三章,对硬件系统的设计;第四章,画出了时钟的操作流程图;第五章,部分功能模块的详细代码设计;第六章,演示最后的设计结果。
目录前言 (2)目录 (3)课程设计任务书 (4)第一章概述 (6)1.1基本设计思想 (6)1.2设计原理 (6)第二章系统功能模块设计 (7)2.1 系统的主要功能模块 (7)2.2 系统的组成框图 (7)2.3接口设计 (7)第三章硬件系统的设计 (10)3.1 器件简介 (10)3.2 软件简介 (12)第四章时钟的操作流程 (14)第五章代码设计 (15)第六章程序调试及结果 (19)课程设计小结 (22)参考文献 (23)课程设计图纸 (24)附录:(完整代码) (24)课程设计任务书安徽工程大学本科课程设计任务书2009 届计算机与信息学院计算机科学技术与工程092 专业Ⅰ课程设计题目:电子钟设计Ⅱ原始资料本程序设计中有几个要点:A、设计一个1s时钟,作为时间的基准。
可通过定时器来实现,由于定时限制,我们可以设定定时时钟为50ms中断一次,然后用一个计数器计数20次,即50ms*20=1000ms=1s。
数字电子钟设计说明书样本
1前言《当代电子技术》是一门实用性较强课程。
通过对这门课程学习我掌握了数字逻辑门电路、组合逻辑器件、组合逻辑电路分析与设计、时序逻辑器件、时序逻辑电路分析与设计等有关知识。
Proteus是一种实用数字电路仿真软件。
虽然我并没有系统去学习过这种软件。
但通过每次实验课摸索性使用, 我掌握了Proteus基本操作。
上述知识以及先修课程所学知识为本次《当代电子技术》课程设计奠定了基本。
就在课程设计前几天学院教师给咱们买好了数字电路惯用元器件, 这为设计物理实现提供了条件。
这次我课程设计题目为: 数字电子钟设计。
我所设计数字电子钟功能有: 能显示星期、时、分、秒;能校时;能整点报时总体来讲, 这次设计实现涉及两个过程:设计及Proteus仿真;实物焊接。
设计及Proteus仿真可以说是整个设计最最核心过程, 能否完毕好这个过程直接关系到设计成败。
在设计与Proteus仿真这个过程设是对所学理论知识运用而Proteus仿真是对设计对的与否检查以及完毕对设计优化。
实物焊接是设计物理实现。
需要阐明是因事先不懂得实验室所具备芯片型号在完毕设计与仿真后才懂得自己所用有些芯片实验室没有(实验室有74ls48、74ls90、74LS161和555定期器而我在设计时用是74ls248、74ls390、74LS163和晶振)因而日后我又用实验室具备芯片重新进行了设计并仿真这样使得我做了两份设计虽然两种设计最后所实现功能时相似但因使用芯片不同导致其内部连接也不同。
这里因篇幅限制在正文某些我将仅对后一种设计进行阐述。
在本次课程设计中我顺利完毕了两种办法设计与仿真, 但在实物焊接过程却浮现了一点问题。
详细内容将在正文某些阐述。
数字钟从原理上讲是一种典型数字电路, 其中涉及了组合逻辑电路和时序电路。
本次设计与制作数字电子钟目是让学生在理解数字钟原理前提下, 运用刚刚学过数电知识设计并制作数字钟, 并且通过数字钟制作进一步理解各种在制作中用到中小规模集成电路作用及其用法。
电子钟单片机课程设计报告(含源码)
一、总设计思路电子时钟是我们日常生活中最常见的一种钟表,由于它结构简单、功耗低、时间精度比较准、等优点,使得广泛应用,在未来肯定有很大的市场。
这次课程设计我的目的就是尝试着做一个电子时钟。
1、系统功能显示时间、声音提示、调整时间、设置闹钟的功能。
2、功能硬件实现方案时间显示:时间的显示我选用的是六位七段数码管,由于数码管控制简单,而且显示效果好,所以选用它。
由于静态显示方式比较占资源,而且电路比较复杂,所以我们选择了动态显示方式,电路简单,效果挺好。
时间调整和闹钟设置:是通过外部两个按键触发单片机中断进而控制时间的调整。
其中一个按键是模式选择按键通过触发外部中断0来选择功能,功能主要是选择要调时、调分、调秒、闹钟调时、闹钟调分、闹钟调秒六种模式。
第二个按键通过触发外部中断1来在相应的模式下对时间的大小做调整。
声音提示:通过利用蜂鸣器来作为发生装置,有整点提示功能和闹铃功能。
时间发生:利用单片机自带定时器0做定时,通过软件控制来产生时、分、秒。
3、功能软件实现方案由于单片机C语言已经全面普及,它的程序容易理解、简单易写、可移植性好,所以我们选择用单片机C语言来写。
4、开发环境操作系统:window 7旗舰版64位程序编辑编译软件:KEIL μVision V4.60.6.10仿真软件;Proteus V ersion 7.85.、总设计原理框图STC89C52RC6位七段数码管显示时、分、秒蜂鸣器发声装置时钟复位电路按键调时模块一、硬件设计定时和程序执行及控制模块:我们选择的是宏晶科技生产的STC89C52RC芯片,它在很多硬件资源上比8051提升了不少,所以在后期我们可以做更多扩展和维护。
时间显示模块::采用六个七段带小数点的共阴极数码管。
声音提示模块:采用简单蜂鸣器做声音提示。
调时模块:通过两个简单按键来触发中断调时。
时钟复位模块:采用11.0592MHz的晶振,提供单片机工作频率。
二、设计原理图三、芯片解说STC89C52:是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。
电子时钟(LCD显示)课程设计说明书
目录1. 设计要求 (1)2. 时钟总体设计思路 (1)3. 系统硬件设计 (1)3.1单片机控制系统 (3)3.2 键盘控制系统设计 (3)3.3 显示电路 (4)3.4 硬件原理及说明 (4)3.5 主要性能参数 (5)4. 软件设计 (5)4.1 软件功能 (5)4.2软件设计 (6)4.3 汇编源程序 (5)5. Proteus仿真 (11)6. 课程设计总结 (12)参考文献 (13)1. 设计要求以AT89C51单片机为核心的时钟,在LED 显示器上显示当前的时间: 使用字符型LCD 显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
K1—设置小时。
K2—设置分钟。
K3—设置秒数。
程序执行后工作指示灯LED 闪动,表示程序开始执行,LED 显示“00:00:00”,然后开始计时。
单片机是一种集成电路芯片,采集超大规模集成电路技术把具有数据处理能力(如算数运算、逻辑运算、数据传送、中断处理)的微型处理器,随机存取数据存储器(RAM )、只读程序存储器(ROM )、输入/输出电路(I/O ),可能还包括定时/计数器、串行通信口(SCI )、显示驱动电路(LCD 或LED 驱动电路)、脉宽调制电路(PWM )、模拟多路转化器及A/D 转化器等电路集成到一片芯片上,构成一个最小而又完善的计算机系统。
这些电路能在软件的控制下准确、迅速、高效的完成程序设计者事先规定的任务。
2. 时钟的总体设计思路按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。
图一 系统总原理图3. 系统硬件设计3.1 单片机控制系统本次设计时钟电路,采用了ATC89C51单片机芯片控制电路,这种单片机芯片比较简单,并且省去了很多复杂的线路,更容易表达和理解,通过按钮来调节电微型控制器 时钟电路数据显示 按键调时子钟的时、分、秒。
基于单片机的多功能电子钟课程设计说明书
课程设计说明书题目:基于单片机的多功能电子钟课程:单片机原理及应用B课程设计目录摘要 (II)1 设计目的 (1)2 设计要求 (2)3 设计容 (3)3.1电子时钟的工作原理 (3)3.2 系统硬件电路设计及元件 (4)3.2.1 AT89C51芯片 (4)3.2.2 DS1302芯片 (8)3.2.3 LCD1602液晶显示 (12)3.3系统软件电路设计 (15)3.3.1 系统流程图及源代码设计 (15)总结与致 (18)参考文献 (19)附录一 (20)摘要单片机, 是集 CPU ,RAM ,ROM , 定时器,计数器和多种接口于一体的微控制器。
自20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的重视和关注。
它体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。
本系统为基于DS1302的多功能电子钟,以AT89C51单片机作为主控芯,采用实时时钟芯片DS1302,使用1602液晶作为显示输出。
该系统走时精确,具有闹钟设置,时间模式切换,秒表以及可同时显示时间、日期等多种功能。
本文将详细介绍AT89C51单片机和DS1302 时钟芯片的基本原理,从软件和硬件电路的实现两大方面进行分析。
关键词:AT89C51;单片机;液晶屏;时钟芯片;蜂鸣器基于51单片机设计一个能够支持年、月、日、星期、时、分、秒的电子时钟。
并且支持闹钟功能,及整点报时功能。
在设计过程中,学习利用DXP软件进行硬件电路设计或者利用仿真软件进行仿真,进行单片机的软件编程。
学习芯片的选择及方案选择,熟悉单片机的I/O口原理;掌握LCD显示的原理;掌握定时计数器的使用;要求设计出程序流程图和程序。
1.设计能支持年、月、日、星期、时、分、秒的时钟,时钟有时间调整功能及闹钟功能;2.时钟具有装卸电池时掉电保护功能,保护时间大于5分钟;3.时钟功耗小于0.5MA/5V。
数电课程设计数字电子钟说明书
数字电子技术电路课程设计题目:数字钟课程设计学院:XXXXX专业:XXXXX班级:XXXX姓名:XXXX学号:XXXXX指导老师:XXXXX一、设计目的数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。
此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。
二、设计要求1.显示时,分,秒,用24小时制2.能够进行校时,可以对数字钟进行调时间3.能够正点报时(用555产生断续音频信号);三、设计方案比较方案一、采用中小规模集成电路实现采用集成逻辑电路设计具有能实现,时、分、秒计时功能和定点报时功能,计时模块采用时钟信号触发,不需要程序控制。
方案二:EDA技术实现采用EDA作为主控制器外围电路进行电压,时钟控制、键盘和LED控制。
但此方案逻辑电路复杂,外围设备多,灵活性较低,不利于扩展方案三、单片机编程实现此方案采用单片机编程来设计和控制。
综上,根据自身的知识和方案比较,采用方案一,因为方案一简便灵活,扩展性好,同时符合此次数子电子知识设计的要求。
四、设计过程和说明1.数字电子钟计时和显示功能的实现(1)采用两片十进制计数器74LS160N扩展连接,设计60进制的计数器,显示0到59,在59时采用置数的方法,将两片74LS160N同时置数至0,以循环显示0到59。
(图)(2)24进制亦采用两片十进制计数器74LS160N扩展连接,设计24进制的计数器,显示0到23,在23时采用置数的方法,将两片74LS160N同时置数至0,以循环显示0到23(图)(3)利用秒钟的置数信号(为低电平),取反后作为分钟各位的使能端(EP和ET)的控制信号,以实现分秒之间的进位功能。
同理可以实现分时之间的进位功能(4)显示功能采用Multisim里面的DCD_HEX显示管进行时分秒的显示。
电子钟的课程设计
资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载电子钟的课程设计地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容1 电路总设计1.1数字钟的组成原理图数字钟的原理框图如图1.1所示,它是由振荡器、分频器、计秒电路、计分电路、计时电路、译码显示电路等组成。
工作时555定时器组成的电路产生稳定的脉冲信号,经过3次分频,得到“秒”脉冲信号,并送至计秒电路;当计秒电路满60时,输出秒进位信号,送计分电路;当计分电路满60时,输出分进位信号,送计时电路;当计时电路满24时,“时”、“分”、“秒”计数器同时自动清零。
图1.1 数字钟的原理框图2单元电路设计2.1振荡器振荡器是数字钟的心脏,它的作用是产生时间标准信号。
数字钟的精度就主要取决于时间标准的频率和稳定度。
振荡器可由晶振组成,也可以由555定时器组成。
图2.1是由555定时器构成的1kHz的自激振荡器,计时是1Hz的脉冲才是1s计一次数,所以需要分频才能得到1Hz的脉冲。
图2.1 振荡器2.2分频器分频器将7490接成10进制计数器,这样每过一级频率会变为原来的1/10。
如图2.2所示,经过3级分频后能得到1HZ的秒信号。
图2.2 分频器2.3计数器(1)秒计数器:秒信号发生器的精度和稳定度决定了时信号发生器和分信号发生器的精度。
“秒”计数器为60进制计数器。
60进制可通过十进制和六进制串联而成,从而完成数码显示。
可将两片7490接成60进制计数器,分(秒)个位片为10进制,十位片为6进制,如图2.3所示。
(2)分计数器“分”计数器也是60进制计数器。
同“秒”计数器一样是由7490计数器设计构成。
图2.3 秒、分计数器(3)时计数器先将两片7490接成30进制计数器,分(秒)个位片为10进制,十位片为2进制。
EDA电子钟多功能数字时钟课程设计(含代码)[优秀]
多功能数字时钟设计说明:1.系统顶层框图:各模块电路功能如下:1.秒计数器、分计数器、时计数器组成最基本的数字钟,其计数输出送7段译码电路由数码管显示.2.基准频率分频器可分频出标准的1HZ频率信号,用于秒计数的时钟信号;分频出4HZ频率信号,用于校时、校分的快速递增信号;分频出64HZ频率信号,用于对按动“校时”,“校分”按键的消除抖动.2.多功能数字钟结构框图:一、系统功能概述已完成功能1.完成时/分/秒的依次显示并正确计数,利用六位数码管显示;2.时/分/秒各段个位满10正确进位,秒/分能做到满60向前进位,有系统时间清零功能;3.定时器:实现整点报时,通过扬声器发出高低报时声音;4.时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;5.闹钟:实现分/时闹钟设置,在时钟到达设定时间时通过扬声器响铃.有静音模式.待改进功能:1. 系统没有万年历功能,正在思考设计方法.2. 应添加秒表功能.二、系统组成以及系统各部分的设计1.时计数模块时计数模块就是一个2位10进制计数器,记数到23清零.VHDL的RTL描述如下:----cnt_h.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_h isport(en,clk,clr:in std_logic;dout:out std_logic_vector(7 downto 0);c:out std_logic);end cnt_h;architecture rtl of cnt_h issignal t:std_logic_vector(7 downto 0);beginprocess(en,clk,clr)variable t:std_logic_vector(7 downto 0);beginif en='1' then --异步使能if clk 'event and clk='1' thent:=t+1;if t(3 downto 0)=X"A" then --个位等于10则十位加1t(7 downto 4):=t(7 downto 4)+1;t(3 downto 0):=X"0"; --个位清零end if;if t>X"23" then --大于23清零t:=X"00";end if;end if;if clr='1' then --异步清零t:=X"00";end if;end if;dout<=t;end process;end rtl;时计数器模块仿真波形如下从仿真波形可知,当计数到23时,下一个时钟上升沿到来时就清零了,符合设计要求.时计数模块框图如下2.分及秒计数模块分及秒计数模块也是一个2位10进制计数器,记数到59清零.VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end cnt_s;architecture rtl of cnt_s isbeginprocess(en,clk,clr)beginif en='1' thenif clr='1' then --异步清零dout<=X"00";elsif clk 'event and clk='1' thenif dout(3 downto 0)<9 thendout(3 downto 0)<=dout(3 downto 0)+1;c<='0';elsif dout(7 downto 4)<5 thendout(3 downto 0)<=X"0";dout(7 downto 4)<=dout(7 downto 4)+1;elsedout<=X"00";c<='1';end if;end if;else dout<="ZZZZZZZZ";end if;end process;end rtl;分和秒计数器模块仿真波形如下从仿真波形可知,当计数到59时,下一个时钟上升沿到来时就清零了,并且产生进位信号,符合设计要求.分和秒计数模块框图如下3.按键消抖动模块按键消抖动有很多方案,这里选择的是计数消抖,即只当有效电平到来后开始计数,当计数值大于一定值后再输出该有效电平,否则不输出,从而达到消抖目的. VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;entity haoin isport(din,clk:in std_logic;dout:out std_logic); end haoin;architecture rtl of haoin isbeginprocess(din)variable t: integer range 0 to 63:=0;beginif din='1' thenif clk 'event and clk='1'thent:=t+1;if t>10 thendout<='1';t:=t-1;else dout<='0';end if;end if;else dout<='0';t:=0;end if;end process;end rtl;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ring isport(clk: in std_logic;clk500: in std_logic;clk1k:in std_logic;beep:out std_logic);end ring;architecture rtl of ring isbeginprocess(clk)variable t: std_logic;variable n: integer range 0 to 15:=0;beginif clk 'event and clk='1' thent:=not t;n:=n+1;end if;if t='1' and n<11 thenbeep<=clk500;elsif n=11 thenbeep<=clk1k;else beep<='Z';end if;end process;end rtl;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity clock isport(SA: in std_logic;SB: in std_logic;SC: in std_logic;SD: in std_logic;clk1: in std_logic;dout: buffer std_logic_vector(23 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0);beep: out std_logic--led:out std_logic_vector(3 downto 0));end entity clock;architecture rtl of clock isco米ponent cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end co米ponent;co米ponent cnt_h isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0));end co米ponent;--co米ponent seg米ain is--port(clk,reset_n:in std_logic;--datain:in std_logic_vector(15 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0));--end co米ponent;--co米ponent ring is--port( en: in std_logic;-- clk: in std_logic;--clk500: in std_logic;--clk1k:in std_logic;--beep:out std_logic);--end co米ponent;co米ponent haoin isport(din,clk:in std_logic;dout:out std_logic);end co米ponent;co米ponent naoling isport (h,米:in std_logic_vector(7 downto 0);clk4hzh,clk4hz米:in std_logic;sys_en,sys_rst:in std_logic;h_o,米_o: out std_logic_vector(7 downto 0);beep:out std_logic);end co米ponent;signal reg_h:std_logic_vector(7 downto 0);signal reg_米:std_logic_vector(7 downto 0);signal reg_s:std_logic_vector(7 downto 0);signal reg_米_s:std_logic_vector(7 downto 0):=X"59"; signal reg_米_米:std_logic_vector(7 downto 0):=X"59";signal reg_米_h:std_logic_vector(7 downto 0):=X"59";signal clk_h:std_logic;signal clk_米:std_logic;signal clk_s:std_logic;signal c_s :std_logic;signal c_米:std_logic;signal c_h :std_logic;signal sys_clk1:std_logic;signal sys_clk4:std_logic;signal sys_clk64:std_logic;signal sys_clk500:std_logic;signal sys_clk1k:std_logic;signal clki:integer:=750000;signal sys_rst:std_logic:='0';signal sys_en:std_logic:='1';signal clk_ring,米h:std_logic;signal SAc,SBc,SCc,SDc:std_logic;signal en_r:std_logic;signal NL_reg_h,NL_reg_米:std_logic_vector(7 downto 0);signal NL_ring:std_logic;signal sys_clk4_NL_h,sys_clk4_NL_米:std_logic;beginh:cnt_h port 米ap(en=>sys_en,clk=>clk_h,clr=>sys_rst,dout=>reg_h);米:cnt_s port 米ap(en=>sys_en,clk=>clk_米,clr=>sys_rst,dout=>reg_米,c=>c_米);s:cnt_s port 米ap(en=>sys_en,clk=>sys_clk1,clr=>SCc,dout=>reg_s,c=>c_s);--sled:seg米ain port 米ap(clk=>clk1,reset_n=>SCc,seg_data=>seg_data,seg_co 米=>seg_co米,datain=>dout(15 downto 0));--ring0:ring port 米ap(en=>en_r,clk=>clk_ring,clk500=>sys_clk500,clk1k=>sys_clk1k,beep=>beep); haoin1:haoin port 米ap( SA,sys_clk64,SAc);haoin2:haoin port 米ap( SB,sys_clk64,SBc);haoin3:haoin port 米ap( SC,sys_clk64,SCc);haoin4:haoin port 米ap( SD,sys_clk64,SDc);NL:naoling port 米ap(beep=>NL_ring,h=>reg_h,米=>reg_米,clk4hzh=>sys_clk4_NL_h,clk4hz米=>sys_clk4_NL_米,sys_en=>sys_en,sys_rst=>sys_rst,h_o=>NL_reg_h,米_o=>NL_reg_米);beep<=clk_ring and 米h;--led<=reg_s(3 downto 0);p_sys_clk:process(clk1)variable t1,t4,t64,t500,t1k:integer range 0 to 50000000;beginif clk1 'event and clk1='1' thent1:=t1+1;t4:=t4+1;t64:=t64+1;t500:=t500+1;t1k:=t1k+1;if t1=clki/2 thent1:=0;sys_clk1<=not sys_clk1;end if;if t4=clki/8 thent4:=0;sys_clk4<=not sys_clk4;end if;if t64=clki/128 thent64:=0;sys_clk64<=not sys_clk64;end if;if t500=clki/1000 thent500:=0;sys_clk500<=not sys_clk500;end if;if t1k=clki/2000 thent1k:=0;sys_clk1k<=not sys_clk1k;end if;end if;end process p_sys_clk;p_c:process(SAc,SBc,SCc,SDc)beginif SAc='1' and SDc='0' thenclk_h<=sys_clk4;elseclk_h<=c_米;end if;if SAc='1' and SDc='1' thensys_clk4_NL_h<=sys_clk4;elsesys_clk4_NL_h<='0';end if;if SBc='1' and SDc='0'thenclk_米<=sys_clk4;elseclk_米<=c_s;end if;if SBc='1' and SDc='1'thensys_clk4_NL_米<=sys_clk4;elsesys_clk4_NL_米<='0';end if;if SDc='0' thendout(7 downto 0)<=reg_s;dout(15 downto 8)<=reg_米;dout(23 downto 16)<=reg_h;elsedout(7 downto 0)<="ZZZZZZZZ";dout(15 downto 8)<=NL_reg_米;dout(23 downto 16)<=NL_reg_h;end if;end process p_c;P_ring:process(reg_米,reg_s,sys_clk1k)variable clk_ring_t:std_logic;variable t:std_logic_vector(3 downto 0);beginif reg_米=X"59" and (reg_s=X"50" or reg_s=X"52" or reg_s=X"54" or reg_s=X"56" or reg_s=X"58") thenclk_ring_t:=sys_clk500;elsif reg_米=X"00" and reg_s=X"00" thenclk_ring_t:=sys_clk1k;else clk_ring_t:='Z';end if;if NL_ring='1' thenclk_ring_t:=sys_clk1k;end if;if sys_clk1k 'event and sys_clk1k='1' thent:=t+1;end if;if t>1 then 米h<='1';end if;clk_ring<=clk_ring_t;end process p_ring;end rtl;。
自动电子钟课程设计
sec1<=0;
min1<=0;
hour1<=0;
end
else //turn为低电平
if(xuanze) //xuanze为高电平,开始计时(功能2)
begin
sec1[3:0]<=sec1[3:0]+1;//对秒计数
if(sec1[3:0]>9)
begin
sec1[3:0]<=0;
sec1[7:4]<=sec1[7:4]+1;
jshefm模块为功能模块。在给1hz的时钟信号下,当tu
rn为高电平时,实现清零功能。当turn为低电平时,开始选择计时或校正功能。其中,当xuanze为高电平时,实现计时功能,xuanze为低电平时,实现校正功能。当turn1为高电平时为分校正,当turn1为低电平时对小时校正。校正频率均为1hz。当分为0时,秒小于3时,sound输出高电平,实现整点报时功能。
hour1[7:4]=hour1[7:4]+1;
hour1[3:0]=0;
end
else if((hour1[7:4]==2)&&(hour1[3:0]>3))
begin hour1[3:0]=0;
hour1[7:4]=0;
end
end
end
end
always//整点报时,输出3秒高电平(功能4)
begin
begin
hour1<=0;
end
end
end
end
end
end
end
else //xuanze为低电平,开始校正(功能3)
begin
if(turn1) //turn1为高电平,校正分钟
电子时钟课程设计说明书
课程设计说明书课程设计名称C语言课程设计课程设计题目电子时钟学院名称信息工程学院专业名称计算机科学与技术班级090451 学号09045131 姓名杨望评分__________________指导教师黄华、蔡虹目录1.设计课题 (3)2.设计目的 (3)3.设计内容 (3)4.总体设计 (3)(1)系统结构图 (4)(2)数据结构………………………………….....5.5.详细设计 (5)(1)电子时钟执行主流程 (5)(2)欢迎界面 (6)(3)电子时钟显示 (7)(4)时钟按键控制模块 (8)(5)时钟动画处理模块 (8)(6)数字时钟处理模块 (9)(7)汉字处理模块 (9)6.调试分析 (9)7.课程设计总结和心得体会 (10)8.参考文献 (12)附录:(源代码) (12)一.设计课题:电子时钟课程设计二.设计目的:本程序中涉及时间结构体,数组、绘图等方面的知识,通过本程序的训练,使我们有一个更深刻的了解,掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。
提高运用c语言解决实际问题的能力。
三.设计内容(1) 欢迎界面,以一个笑脸开始(2)主界面,包括数字时钟和电子时钟和按键提示。
(3)设计者介绍和功能提示。
四.总体设计电子时钟是针对人们判断时间的落后和不准确性,通过利用计算机来实行对时间的系统计算,增加了准确性。
在软件的总体设计中采用自上而下,逐步细化,模块化设计,结构化编码方式进行。
(1)系统结构图(2)数据结构a.time结构图struct time{ unsigned char ti-min;unsigned char ti-hour;unsigned char ti-sec;}b.全局变量下面对程序用到的全局变量及数组进行说明。
●double h,m,s;此三个全局变量分别用来保存小时、分钟、秒数。
●double x,x1,x2,y,y1,y2;保存数字时钟中小时、分、秒在屏幕中显示的坐标值。
多功能电子钟设计说明书
多功能电子钟设计说明
书
一.作品硬件原理图
三、程序流程图
Go_dianzhen();
dz_ms=0;
TR1 =1;
}
//TR1=1;
}
五.作品实物图
六.作品演示效果图
七.作品创新性描述
1我们将作品分成两大部分,即单片机基础系统与单片机应用系统,并将其制作成两块板,这样我们可以用这个单片机基础系统来做其他方面的开发。
2.我们采用的是液晶显示,这样比数码管看起来效果会更好。
3.我们通过程序将几大部分功能的器件整合在一起,可以同时运行。
4.采用串口来与计算机通信,因此我们程序可以通过串口下载在线烧写程序,另外还可以与计算机进行其他方面的通信,如将单片机中的容显示在计算机上。
单片机设计电子时钟说明书
郑州华信学院课程设计说明书题目:电子时钟姓名:院(系):机电工程学院专业班级:09电气工程及其自动化(一)班学号:指导教师:成绩:时间:年月日至年月日目录0 . 引言 (3)0.1 单片机简介 (3)0.2 电子时钟 (3)0.2.1 电子时钟简介 (3)0.3 单片机识的相关知识 (4)0.3.1 单片机简介 (4)1.设计目的、意义及系统主要功能 (6)1.1设计目的 (6)1.2功能描述 (6)1.2.1 总功能 (6)1.2.2 各键功能 (6)2.电子时钟硬件设计及描述 (7)2.1 AT89C51单片机介绍 (7)2.2 实时时钟DS1302的引脚介绍 (9)2.3.2 液晶显示器lm016l (10)2.3控制系统的硬件设计 (11)2.3.1 单片机型号的选择 (11)2.3.2 键盘电路设计 (11)2.3.3 整个电路原理图 (12)3.软件设计思路及描述 (13)3.1电路图 (13)3.2程序流程图 (14)4.软件、硬件调试过程 (14)4.1 软件介绍 (14)4.1.1 keil软件 (15)4.1.2 Proteus软件 (15)5.源程序代码 (16)6.参考文献 (30)7.附录 (30)7.1 编程时注意的问题 (30)7.1.1 按制字与寄存器 (30)7.1.2 进制转换问题 (31)8 总结 (31)0 . 引言0.1单片机简介单片计算机即单片微型计算机。
由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本设计主要设计了一个基于AT89C51单片机的电子时钟。
并在液晶显示屏上显示相应的时间。
并通过一个控制键用来实现时间的调节。
应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。
数字电子钟课程设计说明书
目录一.摘要二.设计目的和意义课程设计方案1.设计内容2.设计任务3.设计要求4.设计目的三.电路工作原理1.结构框图及说明2.系统原理图及工作说明3.单元工作原理四.软件仿真设计1.仿真设计2.仿真过程3.分析仿真4.仿真结果五.总结1.缺点2.改进3.结论六.致谢参考文献一:摘要:数字电路具有精度高、稳定性好、抗干扰能力强、程序软件控制等一系列优点。
随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的优势也更加突出。
为了充分发挥数字电路在信号处理上的强大功能,我们可以先将模拟信号按比例转换成数字信号,然后送到数字电路进行处理,最后再将处理结果根据需要转换为相应的模拟信号输出。
本次课程设计的主题是数字电子钟。
干电路系统由秒信号发生器、“时、分、秒”计数器、显示器、整点报时电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,这里用protues软件来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
关键词:数字电子钟;设计;时分秒;十进制。
二.设计目的和意义(1)让学生掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安装、测试方法;(2)进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力;(3)初步掌握使用protues(电子设计自动化)工具设计数字逻辑电路的方法,包括设计输入、编译、软件仿真、下载和硬件仿真等全过程;(4)经过查资料、选方案、设计电路、撰写设计报告、使学生得到一次较全面的工程实践训练,通过理论联系实际,提高和培养创新能力(5)电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,数字电子钟是用数字集成电路做成的现代计时器,与传统的机械钟相比,它具有走时准确(用高稳定度石英晶体振荡器作时钟源)、显示直观(用液晶或荧光七段数码管显示器)。
单片机电子时钟课程设计说明书
单片机电子时钟设计说明书目录一.设计的要求 (2)二.单片机系统原理图及工作原理描述 (2)三.设计过程中碰到的问题及解决方法 (4)四.总结 (6)五.程序模块框图………………………………………………六.程序清单……………………………………………………一.5设计要求实时时钟工作原理:采用单片机内部定时器精密定时,四位数码管显示年、月、日、时、分、秒等,用键盘可以进行时间预置、时间显示内容设置、时间运行方式设置等。
要求:1.用键盘切换的方式,分别显示年月日或者时分秒;2.用键盘预置年、月、日、时、分、秒等;3.可以倒计时,倒计时单位为分;4.每一秒4个小数点闪烁一次;5.定时闹钟功能,蜂鸣器鸣叫提示。
6.时钟误差每日不大于1秒。
二.单片机系统原理图及工作原理描述为满足不同功能的设计要求,一块电路板上设计出多个常用的功能电路,供使用者选用。
印制线路板包含:(1)单片机最小系统;(2)四位LED数码管显示器;(3)4×4共16个键的矩阵键盘(4)RS-232电平转换电路;(5)DC12V稳压电源输入接口;(6)USB电源转换接口(DC5V);(7)ISP编程接口。
(8)8位串行A/D转换接口;(9)8位串行D/A转换接口;(10)四相步进电机驱动接口;(11)EEPROM串行存储电路;1.单片机最小系统AT89S51是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。
AT89S51具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽工程大学本科课程设计说明书专业:计算机科学与技术题目:电子时钟课程设计学生姓名: (hch)指导教师:老师年月日前言本课程设计为电子时钟设计,在设计过程中,关键的难题就是接口的设计和AT89C51芯片内部的时钟电路以及它的中断系统。
在当今时代,人们不时地就关注周围发生的一切。
而一个好的电子时钟,被安置在各种器件上。
所以,电子时钟应用面极广。
《单片微型计算机及接口技术》是一门应用性较强的计算机专业课程,是设计与开发各种计算机应用系统的基础。
从硬件的角度看,微型计算机、单片机、嵌入式系统的开发和应用,很大程度上都是接口电路的开发与应用。
因此,本课程设计的成功的关键也在接口设计上。
本设计的大致结构为:第一章,主要介绍设计的总思想和原理;第二章,对系统功能模块的设计;第三章,对硬件系统的设计;第四章,画出了时钟的操作流程图;第五章,部分功能模块的详细代码设计;第六章,演示最后的设计结果。
目录前言 (2)目录 (3)课程设计任务书 (4)第一章概述 (6)1.1基本设计思想 (6)1.2设计原理 (6)第二章系统功能模块设计 (7)2.1 系统的主要功能模块 (7)2.2 系统的组成框图 (7)2.3接口设计 (7)第三章硬件系统的设计 (10)3.1 器件简介 (10)3.2 软件简介 (12)第四章时钟的操作流程 (14)第五章代码设计 (15)第六章程序调试及结果 (19)课程设计小结 (22)参考文献 (23)课程设计图纸 (24)附录:(完整代码) (24)课程设计任务书安徽工程大学本科课程设计任务书2009 届计算机与信息学院计算机科学技术与工程092 专业Ⅰ课程设计题目:电子钟设计Ⅱ原始资料本程序设计中有几个要点:A、设计一个1s时钟,作为时间的基准。
可通过定时器来实现,由于定时限制,我们可以设定定时时钟为50ms中断一次,然后用一个计数器计数20次,即50ms*20=1000ms=1s。
B、分与时都可采用软件计数器来实现。
60秒为1分,60分为1小时。
C、由于实际应用中要求显示为十进制数,而在程序中处理的数据都为十六进制,因此在程序中要对显示缓冲区的数据进行十进制调整。
Ⅲ课程设计任务内容1.课程设计的目的意义:通过课程设计培养同学们的系统设计能力,使同学们达到以下能力训练:⑴、调查研究、分析问题的能力;⑵、使用设计手册、技术规范的能力;⑶、查阅中外文献的能力;⑷、制定设计方案的能力;⑸、计算机应用的能力;⑹、设计计算和绘图的能力;⑺、技术经济指标的分析能力;⑻、语言文字表达的能力。
2.本课题研究的主要内容:设计一个电子钟,利用四个数码管,在其上显示分、秒;用4个小键盘分别进行分+1、分-1、秒+1、秒-1改变时间值。
基本要求:⑴、设计实验电路(要求利用实验仪的硬件资源)⑵、分析实验原理⑶、列出实验接线表⑷、采用汇编语言编写实验程序⑸、通过实验验证功能的实现⑹、编写课程设计说明书指导教师(签字)完成日期年月日接受任务书学生(签字)第一章概述1.1基本设计思想用定时器T0和定时器T1,都采用工作方式1,对12MHZ的系统时钟进行定时计数,初值设为 TH0 = (65536-1000)/256; TL0 =(65536-1000)%256; TH1 = 0xdc; TL1 = 0; 形成定时时间为50ms。
用片内RAM的7BH单元对50ms计数,计20次产生秒计数器7BH单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为“小时十位、小时个位、分十位、分个位、秒十位、秒个位”。
在处理过程中加上了按键判断程序,能对按键处理。
比如相应的“时+”“时-”“分+”“分-”“秒+”“秒-”六个按钮,对应控制显示的数据。
增加功能:加一个“设置时间”开关K1(1)当开关K1按下时,调用控制位TR1,使TR1=0,中断计数器。
使得时钟显示当前的时间,此时可以通过六个加减按钮改变时间值;(2)当开关K1断开,TR1=1,把当前的显示时间送回寄存器,并且恢复中断,计数时钟继续自动跳转。
1.2设计原理一般电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。
主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。
而该电子时钟由AT89C51,74LS245,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
电路中六个按钮控制对应的数码管显示。
按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;每按一次对应数字加1。
第二章 系统功能模块设计2.1 系统的主要功能模块由系统的基本功能,可以设定系统主要由:按钮模块,T0中断模块,T1中断模块构成。
● 按钮模块:用户的进行时钟的加减变化来设置时间● T0中断模块:动态扫描数码管显示● T1中断模块:控制时钟运行2.2 系统的组成框图2.3接口设计(1)开关及按钮控制电路,如图2-1,六个按钮分别接P1.0~ P1.6口,设置开关接P2.7口。
图2-1AT89C51 单片机 开关及按钮控制电路 74LS245 芯片 六位七段LED晶振(2)晶振电路与AT89C51的接口如图2-2图2-2(3)74LS245芯片的A0~A7接P2.0~P2.7口,如图;B0~B7接数码管的A~G、DP,如图2-3和图2-5图2-3(4)数码管的段选端口123456分别接P3.0~P3.6,如图2-4和图2-5图2-4 图2-5第三章硬件系统的设计3.1 器件简介本课程设计所需元件清单:AT89C51 单片机一个74LS245 芯片一个7SEG-MPX6-CC(六位七段数码管)一个CRYSTAL(晶振)一个CAP(无极性电容)两个CAP-ELEC(电解电容)BUTTON(按钮)六个SWITH(开关)一个RES(电阻)一个(1)AT89C51简介芯片功能介绍及设计:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
AT89C51芯片图如下:(2)74LS245芯片简介74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。
74LS245芯片及其功能说明3.2 软件简介本课程设计采用Keil uVision编程和以及调试源代码、Proteus软件进行硬件仿真4.2.1 在Keil uVision中编程和调试代码4.2.2 注意事项在Proteus ISIS中进行放置元件、设置电路参数、连接各元件,经几次修改布线错误, 画出电子时钟总电路,并进行检查。
然后加载用keil编译生成的XX.HEX(XX为文件名)进行功能测试,仿真。
在仿真时注意用适合仿真功能的元器件。
要注意本设计用的是7段共阴极LED数码管的驱动芯片。
在放置六位数码管LED时要选择7SEG-MPX6-CC(共阳极)而不是7SEG-MPX6-CA(共阴极)。
Keil软件是一款程序编辑软件,是目前最流行开发MCS-51系列单片机的软件,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统,本实验中需要将Proteus和keil联调,在keil 上输入程序,编译并运行正确,然后将其下载到Proteus中,配合其电路图进行仿真。
4.2.2仿真步骤(1)在Proteus上连接实验所需的电路,首先把所需要的元器件都找到,如下图4-1,点击P;会弹出图4-2的搜索器件框,在关键字搜索栏里对照元器件名,全部添加到如图4-1的器件列表中。
图4-1图4-2(2)根据第二章的接口设计,将电路连接好。
最后完成的效果图如下:第四章时钟的操作流程根据时钟的特性,以及设计的原理,可以确定用户操作的流程如下图:时钟流程图第五章代码设计代码的设计主要为以下几个部分:(1)延时程序:***************************************************************** //-------延时----------void Delay(uchar x){uchar i;w hile(x--) for(i=0; i<120;i++);}*****************************************************************(2)T0、T1中断控制部分***************************************************************** //----------T0中断-动态扫描数码管显示-----------void T0_int() interrupt 1 //interrupt 1 这里的1表示中断源编号{TH0 = (65536-1000)/256;T L0 = (65536-1000)%256;P3 =Scan_bit; //选通相应数码管i f(K1 == 0) {TR1 =0; //当“设置时间”K1按下时,关闭中断}else {TR1 =1; //恢复中断}P0 =~DSY_buffer[DSY_idx]; //段码送P0(进行共阴共阳转换)S can_bit = _crol_(Scan_bit,1); //准备下次将选通的数码管D SY_idx = (DSY_idx + 1)%8; //索引在0~7内循环}//T1中断控制时钟运行void T1_int() interrupt 3{T H1 = (65536-50000)/256; //定时50毫秒T L1 = (65536-50000)%256;i f( ++s100 > 20) //50ms*20=1s 延时{s100 = 0; increase_second();}}*****************************************************************(3)时、分、秒函数处理:***************************************************************** //-------小时处理函数--------void increase_hour(){if(++h > 23) h=0;D SY_buffer[0] = DSY_code[h / 10]; //对数字进行整除,取小时的十位上的数D SY_buffer[1] = DSY_code[h % 10]; //对数字进行求余,取小时的十位上的数}//-------分钟处理函数--------void increase_minute(){if(++m >59){m=0; increase_hour();}DSY_buffer[2] = DSY_code[m / 10];DSY_buffer[3] = DSY_code[m % 10];}//-------秒处理函数--------void increase_second(){if(++s >59){s=0; i ncrease_minute();}DSY_buffer[4] = DSY_code[s / 10];DSY_buffer[5] = DSY_code[s % 10];}*****************************************************************(4)逻辑总控制部分,包括按钮以及开关的触发使得数码管显示相应的改变*****************************************************************//-----------主程序-------------void main(){P0 = P3 =0xFF; //P1,P3口全置1T MOD = 0x11; //设置T0,T1工作在模式1T H0 = (65536-1000)/256;T L0 = (65536-1000)%256;T H1 = 0xdc; // 设定初始值T L1 = 0;T CON = 0x01;E A = 1; //cpu开放中断E T0 = 1; //允许T0中断E T1 = 1; //允许T1中断h =0; m=s=s100=0; //设启动后初值显示为120000//-----将(时-分-秒)段码放入显示缓冲-------D SY_buffer[0] = DSY_code[h / 10];D SY_buffer[1] = DSY_code[h % 10];D SY_buffer[2] = DSY_code[m / 10];D SY_buffer[3] = DSY_code[m % 10];D SY_buffer[4] = DSY_code[s/ 10];D SY_buffer[5] = DSY_code[s % 10];S can_bit = 0xfe; //扫描位设初始值D SY_idx = 0;T R0 = TR1 = 1; //启动两个定时器k ey_state = 0xff;w hile(1){if(P1 ^ key_state){Delay(10);if(P1 ^ key_state){key_state = P1; EA = 0;switch(key_state) //P1端口的值为高电平,当按钮按下时,对于的pi.n端口值变为低电平{case 0xfe: increase_hour(); //时+ 如:0xfe,转为二进制(1111 1110)即代表P1.1口接地,就是“时+”按钮按下break;case 0xfd: //时-if(h--<1){ h=23; }DSY_buffer[0] = DSY_code[h / 10];DSY_buffer[1] = DSY_code[h % 10];break;case 0xfb: //分+m = (m+1)%60;DSY_buffer[2] = DSY_code[m / 10];DSY_buffer[3] = DSY_code[m % 10];break;case 0xf7: //分-if(m--<1){m=59; h=(h-1)%24; //在“时值”为正数时,当按(分-)从00变为59时,对应使“时值”减1}DSY_buffer[2] = DSY_code[m / 10];DSY_buffer[3] = DSY_code[m % 10];DSY_buffer[0] = DSY_code[h / 10];DSY_buffer[1] = DSY_code[h % 10];break;case 0xef: //秒+s = (s+1)%60;DSY_buffer[4] = DSY_code[s / 10];DSY_buffer[5] = DSY_code[s % 10];break;case 0xdf: //秒-if(s--<1){s=59; m = (m-1)%60; //在“分值”为正数时,当按(秒-)从00变为59时,对应使“分值”减1}DSY_buffer[4] = DSY_code[s / 10];DSY_buffer[5] = DSY_code[s % 10];DSY_buffer[2] = DSY_code[m / 10];DSY_buffer[3] = DSY_code[m % 10];break;}EA = 1;}}}}*****************************************************************第六章程序调试及结果1. 通过第四章的中,用Proteus软件将电路图画好;第五章把代码设计好后;在Keil uVision 软件调试,测试语法逻辑等没有错误后。