LED电子钟设计
- 格式:doc
- 大小:17.32 MB
- 文档页数:25
led电子钟课程设计报告一、课程目标知识目标:1. 让学生掌握电子钟的基本原理,了解LED显示技术;2. 使学生了解数字电路基础知识,理解计数器、时钟信号等概念;3. 引导学生掌握电子元器件的识别与使用,了解电路图的阅读与绘制。
技能目标:1. 培养学生动手搭建简单电子电路的能力,学会使用面包板进行电路连接;2. 培养学生运用所学知识,设计并制作一个具有基本功能的LED电子钟;3. 培养学生通过团队协作,解决实际问题的能力。
情感态度价值观目标:1. 激发学生对电子技术的兴趣,培养其探索精神和创新意识;2. 培养学生养成良好的学习习惯,严谨的科学态度,提高其自我管理和团队协作能力;3. 增强学生的环保意识,使其关注电子产品对环境的影响,倡导绿色环保。
分析课程性质、学生特点和教学要求,本课程以实践性、综合性、创新性为特点,结合学生年龄特点和知识水平,以培养学生的学习兴趣、动手能力和团队协作精神为核心。
课程目标分解为具体学习成果,如:学生能够独立完成电路连接,制作出具有基本功能的LED电子钟;能够在团队合作中发挥个人特长,共同解决实际问题等。
后续教学设计和评估将以此为基础,确保课程目标的实现。
二、教学内容本章节教学内容围绕LED电子钟的设计与制作展开,主要包括以下几部分:1. 电子钟基本原理:讲解时钟信号、计数器、分频器等基本概念,使学生了解电子钟的工作原理。
2. 数字电路基础知识:介绍与门、非门、触发器等基本数字电路的工作原理和应用。
3. 电子元器件识别与使用:学习常见电子元器件(如电阻、电容、二极管、三极管等)的识别及使用方法。
4. 电路图阅读与绘制:培养学生阅读电路图的能力,学会使用电路图绘制工具。
5. LED显示技术:介绍LED显示原理,了解数码管、点阵屏等LED显示器件。
6. 电路设计与搭建:学习面包板的使用,指导学生动手搭建LED电子钟电路。
7. 程序设计与调试:运用编程软件,编写控制程序,实现电子钟的基本功能。
"单片机原理"课程设计说明书题目LED点阵显示电子钟设计系(部)专业(班级)**指导教师起止日期"单片机原理及应用"课程设计任务书15系(部):电信系专业:指导教师:学院课程设计鉴定表目录1. 系统总体方案选择与说明42. 各单元硬件设计说明及计算方法53. 软件设计与说明〔包括流程图〕5 5. 调试结果与必要的调试说明12 6. 使用说明12 7. 课程设计体会12 8. 参考文献131. 系统总体方案选择与说明本方案基于AT89S52单片机设计的,还用到13块74HC573和1块74HC138芯片,8快8*8LED 点阵,原理比拟简单,但所有硬件本钱较高,不适应商业用途。
一个是硬件构造的设计,一个是控制的总体思想。
在本小节中将对这两局部容进展简单的表达1.1硬件构造根据工程的功能和要求,可采用AT89S52单片机作为核心控制器。
LED 点阵电子钟系统组成包括:显示电路模块、显示驱动电路模块、按键电路模块以及电源模块。
框图如图1.1所示。
1.2 控制思想LED 点阵电子钟程序主要功能是屏幕显示时间稳定,准确。
所以按照分块设计的方法可以把程序分为主程序、显示程序、调整程序。
主程序主要是用来初始化系统和控制各个子程序之间执行的顺序。
显示程序用来完成数字在LED 点阵上的显示,时钟的显示是使用8块8×8点阵显示屏。
2. 各单元硬件设计说明及计算方法74HC13874HC138 作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统在 高性能存贮器系统中,用这种译码器可以提高译码系统的效率。
将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。
HC138 按照三位二进制输入码和赋能输入条件,从8 个输出端中译出一个 低电平输出。
两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器,扩展成24 线译码器不需外接门;扩展成32 线译码器,只需要接一个外接倒相器。
16位LED显示电子钟设计摘要随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。
来自英国Labcenter Electronics 公司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。
它包括PROTEUS VSM(Virtual System Modelling)、PROTEUS PCB DESIGN 两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。
单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面, 其调试过程一般分为软件调试、硬件测试、系统调试3个过程。
如果采用单片机系统的虚拟仿真软件??Proteus,则不用制作具体的电路板也能够完成以上工作。
关键词: 数字电子钟 STC89C52 LED 电子钟ABSTRCTWith the rapid development of semiconductor technology, and mobile communication, network technology, multimedia technology in embedded system design application, SCM from the4,8,16bit to 32 bit, its development course has been subject to the vast majority of electronic enthusiasts attention. Single chip computer is becoming more and more powerful, the price drops ceaselessly however advantage undoubtedly become embedded system design is preferred, while MCU application fields expand also makes more people to join the ranks of the development of SCM system based on SCM technology, promote innovation and progress.However, the traditional single chip microcomputer system development in addition to the need to purchase such as emulators, programmer, oscilloscopes and other expensive electronic equipment, the development process is tedious. From the UK Labcenter Electronics Proteus software, a good interpretation of the use of modern EDA tool convenient and quick development of the advantages of SCM system. It includes the PROTEUS VSM Virtual System Modelling , PROTEUS PCB DESIGN two components, in the PC machine can realize the schematic circuit design, circuit analysis and simulation code, debug and simulation, system testing and verification as well as the formation of PCB file full embedded system design and development process.SCM system as a typical embedded system, the system design including the hardware circuit design and software programming of two aspects ofthe design, the debugging process is generally divided into software debugging and hardware testing, system testing process of 3. If the use of single-chip microcomputer system of the virtual simulation software -- Proteus, without making specific circuit board also can be done.Keywords: digital electronic clock STC89C52LED electronic clock摘要 1ABSTRCT 1第一章绪论 11.1 设计背景 11.2 设计简介 11.2.1 电子钟简介11.2.2 电子钟的应用及发展 2第二章方案对比确定 32.1 主控芯片的选择 32.1.1 ATmega8简介 32.1.2 AT89S52简介 32.1.3 STC89C52简介 42.2 时钟芯片的选择 42.2.1 DS12887简介 42.2.2 DS1302简介 52.3 显示系统的选择 62.3.1 LED优势 62.3.2 LED显示屏 62.4 系统总体方案介绍 6第三章硬件电路设计93.1 Proteus 电路图设计9 3.2 原理图设计103.3 PCB图设计 10第四章系统软件设计134.1 概述134.1.1 主程序 134.1.2 调时程序134.1.3 LED显示模组显示数字13 第五章程序设计175.1 程序预览17结论25致谢27参考文献29绪论设计背景随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
简易电子时钟设计报告1. 引言电子时钟是一种用数字形式显示时间的时钟,广泛应用于日常生活中。
本文将介绍一种简易的电子时钟设计方案,包括硬件设计和软件实现。
该电子时钟采用数字LED显示屏,并通过开发板上的微控制器控制时间的显示。
2. 硬件设计2.1 硬件组成该电子时钟的主要硬件组成包括:- 数字LED显示屏:用于显示时钟的小时和分钟数。
该显示屏采用共阳极的数码管,每个数字有7个段可以点亮。
- 微控制器:使用STM32F103C8T6微控制器,具备足够的输入输出和处理能力。
- 调节按钮:用于调节时钟的小时和分钟数。
2.2 电路设计数字LED显示屏的每个段通过一个继电器和一个可控硅管来控制。
继电器通过微控制器的输出口来控制,可控硅管则通过脉宽调制(PWM)来控制。
微控制器通过GPIO口读取调节按钮的状态,根据按钮的操作来调整时钟的小时和分钟数。
同时,微控制器通过定时器中断来实现时钟的运行和显示。
电路设计如下图所示:3. 软件实现3.1 开发环境本设计使用Keil MDK开发环境进行软件的编写和调试。
Keil MDK 是一款常用的嵌入式开发工具,提供了强大的代码编辑、编译和仿真功能。
3.2 时钟控制软件中定义了一个结构体`Time`,包含了小时数和分钟数的变量。
通过定时器中断,每隔一秒钟将时钟的秒数加一,并根据秒数的变化更新时钟的小时和分钟数。
具体实现如下:cstruct Time {int hour;int minute;int second;void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); time.second++;if (time.second >= 60) {time.second = 0;time.minute++;}if (time.minute >= 60) {time.minute = 0;time.hour++;}if (time.hour >= 24) {time.hour = 0;}}3.3 数字显示根据时钟的小时和分钟数,将数字转换成BCD码,然后通过GPIO 口控制数字LED显示屏的每个段点亮或熄灭。
目录摘要……………………………………………………………………………第一章绪论……………………………………………………………………1.1设计的目的和意义………………………………………………………1.2设计工程的发展情况简介………………………………………………第二章电路的设计(原理图)………………………………………………2.1电路设计分析……………………………………………………………2.2主要元器件简介…………………………………………………………2.3电路原理图………………………………………………………………第三章 PCB设计…………………………………………………………………3.1电路的PCB…………………………………………………………………3.2元器件的购买及焊接………………………………………………………第四章程序分析…………………………………………………………………4.1定时器误差分析……………………………………………………………4.2按键消除抖动的设计分析…………………………………………………4.3主要程序分析………………………………………………………………结束语……………………………………………………………………………参考文献…………………………………………………………………………LED电子时钟的设计与制作摘要本次设计中的LED数码管电子时钟电路采用24小时制记时方式。
本次设计采用AT89C51单片机的扩展芯片和6个三极管做驱动,由六块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。
设计采用AT89C51单片机,配备11.0592MHz晶振,复位电路为上电复位。
采用软件译码动态显示,考虑直接用单片机I/O口作为位选时可能驱动功率不够,可采用三极管作驱动共阳极数码管显示。
6位8段LED数码管作正常、调时和节电显示,时间按时分秒排列,时钟误差:24小时误差3~5秒,并且在按键的作用下可以进行调时,调分,复位功能。
简易电子钟LED毕业设计说明书目录绪论.................................................. 错误!未指定书签。
摘要.................................................. 错误!未指定书签。
第1章总体设计方案.................................... 错误!未指定书签。
1。
1数字电子钟的电路概述........................ 错误!未指定书签。
1。
2电路的设计方案.............................. 错误!未指定书签。
1.3总体简易设计电路图........................... 错误!未指定书签。
第2章系统的硬件设计.................................. 错误!未指定书签。
2。
1系统的硬件构成及功能........................ 错误!未指定书签。
2。
2单元电路的分析与设计........................ 错误!未指定书签。
2。
2.1AT89C51单片机及其引脚说明............... 错误!未指定书签。
2。
2。
2晶体振荡器............................. 错误!未指定书签。
2。
2。
3LED数码管.............................. 错误!未指定书签。
2。
2.474LS373的功能及引脚说明................. 错误!未指定书签。
第3章系统的软件设计.................................. 错误!未指定书签。
3.1软件编程要点................................. 错误!未指定书签。
3。
2项目程序流程图.............................. 错误!未指定书签。
电子时钟led显示课程设计一、课程目标知识目标:1. 让学生了解电子时钟的基本原理,掌握LED显示技术的应用。
2. 使学生理解电子时钟的数字显示方法,学会读取和编写简单的时钟程序。
3. 让学生掌握电子时钟设计中涉及的数学知识,如时间的计算和转换。
技能目标:1. 培养学生动手操作能力,能够正确连接电子时钟的电路,并完成LED显示。
2. 培养学生编程思维,学会使用编程软件编写简单的时钟程序。
3. 提高学生团队协作能力,通过小组合作完成电子时钟的设计和制作。
情感态度价值观目标:1. 培养学生积极探索科学知识的精神,增强对电子技术的兴趣。
2. 培养学生认真细致、勤奋刻苦的学习态度,养成良好的学习习惯。
3. 培养学生环保意识,了解电子产品对环境的影响,学会回收和利用废旧材料。
课程性质:本课程为实践性较强的课程,结合理论知识与实践操作,培养学生的动手能力和创新能力。
学生特点:六年级学生具备一定的数学基础和逻辑思维能力,对新鲜事物充满好奇,具备一定的合作意识。
教学要求:结合学生特点,注重理论知识与实践操作的相结合,激发学生的兴趣和积极性,提高学生的动手能力和创新能力。
通过课程学习,使学生能够独立完成电子时钟的设计和制作,达到预期的学习成果。
二、教学内容1. 电子时钟原理:介绍电子时钟的基本工作原理,包括时钟芯片、振荡器、计数器等组成部分,以及它们如何协同工作。
- 教材章节:第三章《电子时钟的基础知识》2. LED显示技术:讲解LED的发光原理,LED显示器的结构和显示方法,以及如何与电子时钟结合使用。
- 教材章节:第四章《LED显示技术与应用》3. 数字显示方法:学习电子时钟中数字显示的常见方式,如动态扫描、静态显示等,并实践编写简单的显示程序。
- 教材章节:第五章《数字显示与编程》4. 电路连接与编程:指导学生进行电子时钟的电路连接,学习编程软件的使用,编写和调试时钟程序。
- 教材章节:第六章《电子时钟的设计与制作》5. 实践操作:组织学生进行小组合作,动手设计和制作一个简易的电子时钟,实现时、分、秒的显示功能。
《单片机原理及应用》课程设计说明书题目LED数码管显示电子钟设计系(部)专业(班级)姓名学号指导教师起止日期课程设计任务书系(部):专业:目录目录 (3)一、摘要 (4)二、设计内容 (4)2.1、任务要求 (4)2.2、设计程序方案 (4)2.3 设计电路仿真图 (6)三、心得体会 (9)四、参考文献 (9)一、摘要单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
二、设计内容2.1、任务要求本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求。
led电子钟课程设计一、课程目标知识目标:1. 学生能理解LED电子钟的基本原理,掌握电子时钟的基本组成部分及其功能。
2. 学生能描述数字电路基础知识,了解计数器、时钟振荡器等电路的工作原理。
3. 学生能运用所学知识,分析并解释LED电子时钟显示时间的原理。
技能目标:1. 学生能够正确使用万用表、焊接工具等实验器材,进行电子元件的测量和焊接。
2. 学生能够设计简单的LED电子钟电路图,并进行电路搭建。
3. 学生能够通过编程或使用现成的电路模块,实现LED电子钟的基本功能。
情感态度价值观目标:1. 培养学生对于电子科学的兴趣,激发学生的创新意识和探索精神。
2. 培养学生团队协作能力,学会在合作中共同解决问题,培养集体荣誉感。
3. 强化学生的环保意识,教育学生在设计和制作过程中注意资源的节约和环境的保护。
分析课程性质、学生特点和教学要求,本课程旨在通过实践操作,使学生将理论知识与实际应用相结合,提高学生的实践能力和创新能力。
课程目标具体明确,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 电子时钟基础知识:介绍电子时钟的基本原理、组成部分及其功能,对应教材中数字电路基础章节。
- 电子元件:电阻、电容、二极管、三极管等;- 数字电路:门电路、触发器、计数器等;- 时钟振荡器:晶振、时钟脉冲信号等。
2. LED电子钟电路设计:学习设计LED电子钟电路图,并进行电路搭建,对应教材中电子时钟设计与应用章节。
- 电路图绘制:学习如何使用电路设计软件绘制电路图;- 电路搭建:学习如何选用合适的电子元件,搭建电子钟电路;- 程序编写:学习编程实现LED电子钟的基本功能。
3. 实践操作与调试:动手实践,对LED电子钟进行组装、焊接、调试,对应教材中实践操作与调试章节。
- 电路组装:按照电路图进行电子元件的安装;- 焊接技术:学习焊接技巧,完成电路的焊接;- 调试过程:学习调试方法,确保LED电子钟正常运行。
LED点阵电子钟设计说明书
一、实现功能
电子钟平时显示当前时间中的时和分,中间为闪烁秒点,在秒值为30时滚动显示公历年、月、日(中间由间隔符“-”间隔)、星期。
二、主要特点
1、采用独特的7行30列LED自制点阵显示屏作为显示单元。
2、时间、日期、星期信息交替显示,所需信息一目了然。
3、采用专业时钟芯片DS1302和备用电池,时钟掉电依然走时,首次通电时可自动初始化时钟芯片。
三、原理图
四、硬件组成
1、电子钟显示部分共由210个黄绿的发光二极管在万能板上焊接成7*30点阵,每个字符采用5*7点阵,点阵模块中多余一列作为显示位的间隔。
2、电子钟主控部分有AT89S52进行控制,LED模块行由单片机的P2.0-P2.6加S8550三极管驱动后控制,列由4片74HC595加限流电阻后驱动,74HC595的数据口有MCU的P3.0口驱动,时钟信号有P3.1口驱动,锁存信号有P3.2口驱动。
3、日期数据有DS1302提供,DS1302的RST、I/O、SCLK管脚分别对应与AT89S52的P3.7、P3.6、P3.5管脚。
4、时间调整及闹钟设定有接在P1.0-P1.2上的三个按键S1、S2、S3完成。
5、蜂鸣器由AT89S52的P2.7口加三极管后驱动。
6、电源采用5V电源供电,设计上接口为排针。
五、时间调整方法
1、按键功能定义:S1:菜单键S2:年、月、星期、小时+1 S3:日、分钟+1 (按键被成功按下后蜂鸣器鸣响一次)。
2、S1在调整结束后启动时钟,及单独长按时具有秒清零的功能。
附图。
信息与电气工程学院单片机应用系统(三级)项目设计说明书(2012/2013学年第二学期)题目:智能电子钟(LCD显示)专业班级:学生姓名:指导教师:吴开兴马小进马永强刘会军设计周数:2013.06.17—2013.06.29设计成绩:2013年6月28日目录1、设计目的 (2)2、系统方案设计 (3)2.1 设计任务及要求 (3)2.1.1 设计任务 (3)2.1.2 设计要求 (3)2.2 方案设计 (3)2.2.1 设计原理 (3)2.3 器件连接 (4)2.3.1 LCD1602引脚对应开发板连接图: (4)2.3.2 DS1302引脚对应开发板连接图: (5)2.4 原理图及仿真 (5)2.4.1 原理图 (5)2.4.2 仿真图: (6)3、实验结果 (6)3.1整体实现展示: (6)3.1.1 开发板上实现电子钟功能,LCD屏为亮状态: (7)3.1.2 开发板上实现电子钟功能,LCD屏为灭状态: (7)3.2 电子钟功能实现,LCD屏正常走时展示: (8)3.2.1 屏亮 (8)3.2.2 屏灭 (8)3.3 调节功能实现展示: (9)3.3.1 自动开关屏实现展示: (9)3.3.2 时钟调节功能实现展示: (10)3.3.3 自动判别闰年功能展示: (11)4、设计总计 (12)4.1 调试过程中遇到的问题 (12)4.2 心得体会 (12)5、参考文献 (12)附录:源程序 (13)项目分工表:1、设计目的单片机项目设计是以课题或设计方式开展的一门课程,具有较强的综合性、实践性,是工科、工程类院校或职业类院校电类专业在校生的必修课,是将单片机原理与应用课程的理论知识转变为应用技术的重要教学环节。
这一环节不但能加深对单片机原理的理解,而且还能培养学生的实践动手能力,开发学生的分析、解决问题的能力。
单片机项目设计环节的训练能够让学生知道单片机工程项目的制作过程,使学生尽早了解单片机系统的开发流程。
掌握单片机系统的开发应用,巩固和加深已学过的知识,提高动手能力及解决实际问题的能力,同时培养团队合作精神。
将自己学到的知识更好地运用于实际当中。
2、系统方案设计2.1 设计任务及要求2.1.1 设计任务(1)根据技术要求和现有开发环境,制作智能电子钟(LCD);(2)设计系统实现方案;(3)设计并绘制电路原理图;(4)画出功能模块的程序流程图;(5)使用汇编语言(或C语言)编写实现程序(6)结合硬件调试、修改并完善程序;(7)编写课程设计报告。
2.1.2 设计要求(1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3)自定任意时刻自动开/关屏。
(4) 计时精度:误差≤1秒/月(具有微调设置)。
(5) 键盘采用动态扫描方式查询。
所有的查询、设置功能均由功能键K1、K2完成。
(6)选作内容:编写上位机程序,通过串口发送指令来调整时钟。
2.2 方案设计2.2.1 设计原理此设计原理框图如图2-1所示,此电路包括以下四个部分:单片机,键盘,DS1302时钟采集模块及LCD1602液晶显示屏。
经过编译程序仿真后,89C51的4K空间不够用,就选用更大空间的89C52单片机了。
本设计用的元器件如列表2-1所示图2-1 2.3 器件连接2.3.1 LCD1602引脚对应开发板连接图:2.3.2 DS1302引脚对应开发板连接图:2.4 原理图及仿真2.4.1 原理图2.4.2 仿真图:3、实验结果3.1整体实现展示:3.1.1 开发板上实现电子钟功能,LCD屏为亮状态:3.1.2 开发板上实现电子钟功能,LCD屏为灭状态:3.2 电子钟功能实现,LCD屏正常走时展示:3.2.1 屏亮3.2.2 屏灭3.3 调节功能实现展示:3.3.1 自动开关屏实现展示:附:自动开关屏程序代码:void keyscan()int h=0;{if(key4 == 0)delay(5);if(key4 == 0){switch(h){case 0: bla = 0;delay(5000);h++; break;case 1: bla=1; delay(5000);h=0;break;}}3.3.2 时钟调节功能实现展示:在该电子钟的设计中修改定时或调整时间时采用了闪烁,在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。
其次,时,分,秒显示用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。
最后,用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。
对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。
3.3.3 自动判别闰年功能展示:附:自动判别闰年功能程序代码:void deal_3day(){if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12) day=32;else if(mon==4||mon==6||mon==9||mon==11)day=31;else if(mon==2&&(year%4==0&&year%100!=0||year%400==0)) day=30;elseday=29;}4、设计总计4.1 调试过程中遇到的问题(1)自动开关屏调节按键时,按下开关,屏幕闪烁过快,得不到理想效果。
解决办法:在程序中加入延时程序,消除抖动(2)调节时间时,原本设计的是逆序(按照秒、分、时、星期、天、月、年的次序)调节,调节误差过大,而且时钟走时不稳定。
解决办法:将调节功能改为正序(按照年、月、日、星期、时、分、秒的次序)调节,实现了误差最小化,得到了理想的调节效果。
4.2 心得体会通过本次智能电子时钟的课程设计,我学习将理论和实践相结合,初步掌握综合运用所学知识分析和设计一般数字系统的基本方法,增强动手解决实际问题的能力。
通过这次设计,我学会了了初步设计电路的整体思想。
学会了怎样查找资料,设计电路。
熟悉了绘制电路原理图和电路的调试整个过程,是所学的知识应用到实践,进一步所学的知识。
整个设计过程让我收获很多,前所学过的理论知识又再次重现在我们的脑海中,经过了自己的亲手实践使我们更好的理解和掌握了那些知识。
同时,经过这短短几天的课程设计也使我提高了自己与其他同学交流沟通的能力。
这次课程设计也使我明白了“实践是检验真理的唯一标准”,要想更好的掌握以前学过的知识除了定期的“温故知新”外,还需要进行一些实验和实践。
使我们的理论和实践能力同步提高,这次课程设计也使我深刻的认识到了团队合作的重要性。
5、参考文献[1] 张毅刚.单片机原理及应用[J].高等教育出版社,2009.2[2].孙育才,王荣兴,孙华芳,新型AT89S52系列单片机及其应用. 北京:清华大学出版社,2005.1.1[3].朱清慧,张凤蕊,王志奎,Proteus教程—电子线路设计、制版与仿真,北京:清华大学出版社,2008.9.1[4].侯玉宝,陈忠平,李成群等,基于Proteus 的51系列单片机设计与仿真,北京:电子工业出版社,2008.9.1[5].彭小军.用单片机实现电子时钟[J].新余高专学报,2004,9(2):54-57.[6].徐宏亮,艾学忠等.实现多功能电子时钟设计[J].吉林化工学院学报,2001,5(1):26-29.[7].朱路,朱清慧,连续补充充电实时时钟芯片DS1302及其应用,河南:南阳理工出版社,2006[8].杨将军,李华军,刘东骏,单片机程序设计及应用,北京:电子工业出版社,2006.3 附录:源程序#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define yh 0x80 //第一行的初始位置#define er 0x80+0x40 //第二行初始位置#define true(x) x = 1#define fals(x) x = 0uchar h=0;sbit bla = P2^7;sbit wr = P2^5;sbit rs = P2^4;sbit en = P2^6;sbit SCLK = P3^6;sbit IO = P3^4;sbit RST = P3^5;sbit ACC0 = ACC^0;sbit ACC7 = ACC^7;sbit key1 = P3^0;sbit key2 = P3^1;sbit key3 = P3^2;sbit key4 = P3^3;uchar code tab1[]={"20 - - "};uchar code tab2[]={" : : "};uchar a,sec,hour,min,day,mon,year,week,flag,temp,key1n=0;void delay(uchar xms) //延时函数{uchar y;while(xms--)for(y = 0;y < 110;y ++);}/******************液晶写入************************/void write_1602com(uchar com) //给液晶1602写入命令函数{fals(rs); //置为写入命令P0 = com; //送入数据delay(1);true(en); //拉高使能端delay(1);fals(en); //完成高脉冲}void write_1602dat(uchar dat) //向液晶1602中写入数据{true(rs); //置为写入数据P0 = dat; //送入数据delay(1);true(en);delay(1);fals(en);}/********************ds1302****************************/void writeds1302_1byte(uchar dat) //向ds1302中写入1个字节数据{ACC = dat;true(RST);}uchar readds1302_1byte() //读出ds1302的一个数据{true(RST);for(a = 8;a > 0;a --){ACC7 = IO;true(SCLK);fals(SCLK);ACC = ACC >> 1;}return(ACC);}void write_ds1302(uchar add,uchar dat) //向ds1302中写入数据{fals(RST);fals(SCLK);true(RST);writeds1302_1byte(add); //给ds1302输入寻址指令writeds1302_1byte(dat); //ds1302寻到上面地址后写入相应数据true(SCLK);fals(RST);}uchar BCD_Decimal(uchar bcd) //将相应的BCD码转换为10进制(各个位上不会出现大于9的数){uchar Decimal;Decimal = bcd >> 4 ;return(Decimal = Decimal*10 + (bcd &= 0x0F));}void write_1602sfm(uchar add,uchar dat) //写时分秒{uchar gw,sw;gw = dat % 10;sw = dat / 10;write_1602com(er + add);write_1602dat(0x30 + sw );write_1602dat(0x30 + gw );}void write_1602nyr(uchar add,uchar dat){uchar gw,sw;gw = dat % 10;sw = dat / 10;write_1602com(yh + add); //给液晶1602写入一个地址write_1602dat(0x30 + sw );write_1602dat(0x30 + gw ); //给那个地址上写入一个2位数}void write_1602week(uchar week) //写星期函数{write_1602com(yh + 0x0d); //要写星期的地址switch(week){case 1: write_1602dat('M');write_1602dat('O');write_1602dat('N');break;case 2: write_1602dat('T');write_1602dat('U');write_1602dat('E');break;case 3: write_1602dat('W');write_1602dat('E');write_1602dat('D');break;case 4: write_1602dat('T');write_1602dat('H');write_1602dat('U');break;case 5: write_1602dat('F');write_1602dat('R');write_1602dat('I');break;case 6: write_1602dat('S');write_1602dat('T');write_1602dat('A');break;case 7: write_1602dat('S');write_1602dat('U');write_1602dat('N');break;}}void deal_3day(){if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12) day=32;else if(mon==4||mon==6||mon==9||mon==11)day=31;else if(mon==2&&(year%4==0&&year%100!=0||year%400==0)) day=30;elseday=29;}void keyscan(){if(key4 == 0)delay(5);if(key4 == 0){switch(h){case 0: bla = 0;delay(5000);h++; break;case 1: bla=1; delay(5000);h=0;break;}}if(key1 == 0) //key1为功能键{delay(5);if(key1 == 0){while( !key1);delay(10);while( !key1); //松手检测key1n ++;switch(key1n){case 1: fals(TR0); //关闭定时器write_1602com(er+0x0b); //写入光标位置write_1602com(0x0f ); //设置光标为闪烁write_ds1302(0x8e,0x00);write_1602com(yh + 0x05); //年write_ds1302(0x8e,0x80);break;case 2: write_1602com(yh + 0x08); //月break;case 3: write_1602com(yh + 0x0b); //日break;case 4: write_1602com(yh + 0x0f); //星期break;case 5: write_1602com(er + 5); //时break;case 6: write_1602com(er+8); //分break;case 7: write_1602com(er+0x0b); //写入光标位置break;case 8: write_1602com(0x0c ); //设置光标不闪烁true(TR0); //打开定时器temp = (sec)/10*16 + (sec)%10;write_ds1302(0x8e,0x00);write_ds1302(0x80,0x00|temp); //秒write_ds1302(0x8e,0x80);key1n=0;break;}}}if(key1n != 0) //当key1按下以下。