单片机课程设计-电子时钟
单片机课程设--电子钟设计
单片机MCS-51数钟课程设计系别:专业:班级:姓名及学号:日期:目录单片机MCS-51数钟 (1)课程设计 (1)一、课程设计的目的 (3)二、课程设计任务 (3)三、硬件结构概述 (4)(一)复位电路 (4)(二)晶振电路 (4)(三)按键电路 (4)(四)显示部分 (5)四、软件结构概述 (5)(一)代码说明 (5)(二)按键处理思路 (10)(三)秒表设计思路 (11)五、调试过程 (12)(一)系统仿真 (12)(二)仿真过程中出现的问题及解决方案 (12)六、心得体会 (13)七、参考文献 (14)一、课程设计的目的(1)巩固、加深和扩大单片机应用的知识面, 提高综合及灵活运用所学知识解决工业控制的能力;二、(2)培养针对课题需要, 选择和查阅有关手册、图表及文献资料的自学能力, 提高组成系统、编程、调试的动手能力;三、(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程, 软硬件设计的方法、内容及步骤。
四、课程设计任务(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。
也可以在其它MCS—51单片机硬件板上完成, 或自行设计硬件并制做完成。
(2)程序的首地址应使目标机可以直接运行, 即从0000H开始。
在主程序的开始部分必须设置一个合适的栈底。
程序放置的地址须连续且靠前, 不要在中间留下大量的空闲地址, 以使目标机可以使用较少的硬件资源。
(3)6位LED数码管从左到右分别显示时、分、秒(各占用2位), 采用24小时标准计时制。
开始计时时为000000, 到235959后又变成000000。
(4)在键盘上选定3个键分别作为小时、分、秒的调校键。
每按一次键, 对应的显示值便加1。
分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。
在调校时均不向上一单位进位 (例如分加到59后变为00, 但小时不发生改变)。
(5) 软件设计必须使用MCS-51片内定时器, 采用定时中断结构, 不得使用软件延时法。
单片机课程设计电子时钟
单片机课程设计电子时钟一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握单片机在电子时钟设计中的应用。
2. 使学生掌握电子时钟的组成和工作原理,包括时、分、秒的显示与计时功能。
3. 帮助学生了解电子时钟设计中涉及的硬件知识,如晶振、计数器、显示器件等。
技能目标:1. 培养学生运用单片机编程实现电子时钟功能的能力,提高学生的动手实践能力。
2. 培养学生分析问题、解决问题的能力,能够针对电子时钟设计过程中遇到的问题进行调试和优化。
3. 培养学生团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养学生主动学习的积极性。
2. 培养学生严谨的科学态度,注重实验数据的真实性,养成良好的实验习惯。
3. 增强学生的创新意识,鼓励学生在课程设计中发挥想象力和创造力,提高学生的创新能力。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的单片机基础知识和编程技能,对电子制作有较高的兴趣。
教学要求:结合课本内容,注重理论与实践相结合,通过课程设计提高学生的综合应用能力。
将课程目标分解为具体的学习成果,以便在教学设计和评估过程中有针对性地指导学生。
二、教学内容1. 理论知识:- 单片机原理与编程:复习课本第三章内容,重点掌握单片机的内部结构、工作原理、指令系统及编程方法。
- 电子时钟原理:学习课本第四章关于时钟电路的设计,了解时、分、秒的计数原理及显示技术。
2. 实践操作:- 硬件设计:根据课本第五章内容,选用51单片机及相关元器件,设计电子时钟的硬件电路,包括晶振、计数器、显示器件等。
- 软件编程:运用C语言或汇编语言,编写电子时钟的程序代码,实现时、分、秒的显示与计时功能。
3. 教学大纲:- 第一周:复习单片机基础知识,讲解电子时钟原理,分配课程设计任务。
- 第二周:进行硬件电路设计,学习并选用合适的元器件,绘制原理图。
单片机课程设计--电子时钟
单片机课程设计一、设计内容该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及外围的按键和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。
二、电子时钟设计思想:用定时/计数器T0,工作于定时,采用方式1,对12MHZ 的系统时钟进行定时计数,初值设为XXYY(自己计算)。
形成定时时间为50ms。
用片内RAM的7BH单元对50ms计数,计20次1秒钟到,然后对秒计数器78H单元加1,秒计数器加到60后向分进位,则分计数器79H单元加1而秒计数器78H单元清零;分计数器加到60后又向时进位,则时计数器7AH单元加1而分计数器79H单元清零;时计数器加到24则时计数器清零。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
三、电子时钟硬件图四、软件程序:;采用8位LED软件译码动态显示程序;使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳;LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。
;片内RAM的70H到77H单元为LED数码管的显示缓冲区;78H,79H,7AH分别为秒、分、小时计数单元;7BH为50ms计数器,7CH为调时按键计数器ORG 0000HLJMP STARTORG 000BH ;定时器/计数器T0中断程序入口LJMP INTT0;主程序START:MOV R0,#70HMOV R7,#0CHINIT: MOV @R0,#00H ;存储单元清零INC R0DJNZ R7,INITMOV 72H,#10 ;时、分、秒之间的短横显示MOV 75H,#10MOV TMOD,#01HMOV TL0,#0B0H ;50ms定时初值MOV TH0,#03CHSETB EASETB ET0SETB TR0START1: LCALL SCANLCALL KEYSCANSJMP START1;延时1MS子程序DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET;延时20MS子程序DL20MS: ACALL SCANACALL SCANACALL SCANRET;数码管显示程序SCAN: MOV A,78H ;秒计数值由二进制转十进制后MOV B,#0AH ; 送入显示缓冲区相应位置DIV ABMOV 71H,AMOV 70H,BMOV A,79H ;分计数值由二进制转十进制后MOV B,#0AH ; 送入显示缓冲区相应位置DIV ABMOV 74H,AMOV 73H,BMOV A,7AH ;时计数值由二进制转十进制后MOV B,#0AH ; 送入显示缓冲区相应位置DIV ABMOV 77H,AMOV 76H,BMOV R1,#70H ;循环扫描显示MOV R5,#80H ;显示秒个位的位码(LED共阳)MOV R3,#08HSCAN1: MOV A,R5MOV P2,A ;位码从P2口送出MOV A,@R1MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,A ;字段码从P0口送出MOV A,R5LCALL DL1MS ;延时1msINC R1MOV A,R5RR AMOV R5,ADJNZ R3,SCAN1MOV P2,#00HMOV P0,#0FFHRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;“0~9”,“-”的共阳极字段码;定时器/计数器T0中断服务程序INTT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0MOV 7AH,#00OUTT0:SETB ET0pop pswpop accRETI;按键处理程序KEYSCAN: CLR EAJNB P1.0,KEYSCAN0JNB P1.1,KEYSCAN1JNB P1.2,KEYSCAN2 KEYOUT: SETB EARETKEYSCAN0: LCALL DL20MS JB P1.0,KEYOUTWAIT0: JNB P1.0,WAIT0INC 7CHMOV A,7CHCLR TR0CLR ET0CJNE A,#03H,KEYOUTMOV 7CH,#00SETB TR0 ;K0按3次后又恢复走时SETB ET0SJMP KEYOUTKEYSCAN1: LCALL DL20MSJB P1.1,KEYOUTWAIT1: JNB P1.1,WAIT1MOV A,7CHCJNE A,#02H,KSCAN11INC 79H ;分计数器加1MOV A,79HCJNE A,#3CH,KEYOUTMOV 79H,#00SJMP KEYOUTKSCAN11: INC 7AH ;时计数器加1MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00SJMP KEYOUTKEYSCAN2: LCALL DL20MSJB P1.2,KEYOUTWAIT2: JNB P1.2,WAIT2MOV A,7CHCJNE A,#02H,KSCAN21DEC 79HMOV A,79HCJNE A,#0FFH,KEYOUTMOV 79H,#3BH ;把59给分计数器SJMP KEYOUTKSCAN21: DEC 7AHMOV A,7AHCJNE A,#0FFH,KEYOUTMOV 7AH,#17H ;把23给时计数器SJMP KEYOUTEND五、要求:1、在PROTEUS中设计硬件,在KEIL51中编写软件,在PROTEUS中运行程序仿真实现。
单片机课程设计报告单片机的电子钟设计
单片机课程设计报告---单片机的电子钟设计单片机课程设计报告---单片机的电子钟设计一、设计简介本课程设计是以单片机为核心,设计一个具有显示时间和闹钟功能的电子钟。
电子钟是人们日常生活中必备的计时工具,其精度和稳定性直接影响到人们的时间安排和生活质量。
因此,本设计的目的是通过学习和实践,掌握单片机的应用和电子钟的设计方法,提高我们的实践能力和理论知识水平。
二、硬件设计1.单片机选择本设计选用AT89C51单片机作为主控制器。
AT89C51是一种低功耗、高性能的8位单片机,具有丰富的I/O口和片内资源,适合用于各种嵌入式系统开发。
2.显示模块显示模块采用LED数码管,用于显示时间、日期和闹钟状态。
为了方便调试和编程,我们选用4位一体式数码管。
3.按键模块按键模块包括功能键和调整键,用于设置时间、日期和闹钟。
我们选用4个独立式按键,分别实现上调、下调、设置和闹钟功能。
4.蜂鸣器模块蜂鸣器模块用于发出闹钟声音。
我们选用一款常见的无源蜂鸣器,通过单片机的一个IO口控制其频率,实现声音提示功能。
三、软件设计1.时钟芯片驱动本设计选用DS1302时钟芯片,用于提供实时时间和日期的信息。
DS1302与单片机通过I2C协议进行通信,需要编写相应的驱动程序。
驱动程序包括时钟芯片的初始化、数据读写和中断处理等。
2.显示驱动显示驱动程序负责控制数码管的显示。
驱动程序包括延时函数、位选函数和段选函数等。
通过调用这些函数,我们可以实现时间、日期和闹钟状态的动态显示。
3.按键驱动按键驱动程序负责识别用户的按键操作。
驱动程序通过检测独立式按键的状态变化,识别出不同的按键操作,并执行相应的功能。
例如,当用户按下上调键时,驱动程序将调用时钟芯片的读秒函数,并将时间的小时数加1。
4.蜂鸣器驱动蜂鸣器驱动程序负责控制蜂鸣器的声音频率。
驱动程序通过设置单片机的定时器寄存器,产生一定频率的方波信号,驱动蜂鸣器发声。
为了实现不同的声音效果,我们可以通过改变方波信号的频率和持续时间来实现。
单片机课程设计电子时钟
单片机课程设计 电子时钟一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解电子时钟的工作流程;2. 使学生了解并掌握电子时钟各模块的功能,如时钟芯片、显示模块等;3. 帮助学生掌握C语言编程在单片机开发中的应用。
技能目标:1. 培养学生运用单片机进行电子时钟设计与制作的能力;2. 培养学生分析问题、解决问题的能力,能够针对电子时钟的故障进行排查和修复;3. 提高学生的团队协作能力和沟通能力,能够与他人共同完成课程项目。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新精神和实践能力;2. 培养学生严谨、踏实的科学态度,注重实验操作的规范性和安全性;3. 引导学生关注科技发展,认识到单片机技术在实际应用中的重要性。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成电子时钟的硬件设计和程序编写;2. 学生能够通过调试,使电子时钟正常运行,并进行功能展示;3. 学生能够撰写课程报告,总结电子时钟设计与制作过程中的经验教训;4. 学生能够在课程项目中积极与他人合作,共同解决问题,提高团队协作能力。
二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理和编程语言,对应教材第1章内容;- 单片机硬件结构- 单片机工作原理- C语言编程基础2. 电子时钟原理及设计:讲解电子时钟的各模块功能及连接方式,对应教材第2章内容;- 时钟芯片原理及应用- 显示模块原理及应用- 硬件电路设计与连接3. 单片机编程实践:教授单片机编程技巧,以实现电子时钟功能,对应教材第3章内容;- 编程环境搭建- 程序结构设计- 代码编写与调试4. 电子时钟制作与调试:指导学生完成电子时钟的组装、编程和调试,对应教材第4章内容;- 硬件电路搭建- 软件编程与下载- 系统调试与优化5. 课程项目与实践:组织学生进行课程项目,提高实际操作能力,对应教材第5章内容;- 项目任务分配- 团队合作与沟通- 成果展示与评价教学内容安排与进度:1. 第1周:单片机基础知识学习;2. 第2周:电子时钟原理及设计;3. 第3周:单片机编程实践;4. 第4周:电子时钟制作与调试;5. 第5周:课程项目与实践。
单片机课程设计电子时钟
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子时钟院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录 A (13)附录 B (21)附录 C (22)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容,要求实现在MCS51单片机上对数字电子钟的基本功能设计,对当前时间正确显示,并可根据需要对时间进行更改,以完成时间的校对和闹钟的设置。
时钟时间以时、分、秒在6位数码管上显示,小时以24小时计时模式,分秒均为60进位。
用6MHz晶振产生振荡脉冲,定时器进行秒计时。
调整设置时间的过程运用可编程键盘上的按键进行控制,共设有5个按键,首先按键A进入校时模式或E进入闹钟模式,再分别按键B对小时或C分钟进行更改,每按键一次数码管计数显示加一,更改结束后按键D退出设置,时钟正常显示。
闹钟时间到时,蜂鸣器鸣响10秒后时钟正常显示。
1.2 设计思路采用C语言程序设计结合硬件电路设计方法,利用Lab6000实验箱来实现数字电子钟的设计。
1)提出方案根据设计要求,可将本次设计分为3个模块进行:1)时钟显示模块:主要用于时间的正确显示。
2)校时模块:此模块用于时钟的校对,以完成用户更改时间的需求。
3)闹钟模块:用于实现闹钟的时间设置和定点闹铃的功能。
2)方案论证时钟显示模块中,利用可编程定时器中断进行秒计时,将时间显示在6位数码管上。
校时模块主要利用键盘上5个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。
闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。
单片机课程设计电子钟
单片机课程设计电子钟一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解其内部结构及工作流程;2. 使学生掌握电子时钟的基本原理,包括时、分、秒的计算与显示;3. 引导学生了解并运用编程语言(如C语言)实现对单片机的控制。
技能目标:1. 培养学生运用所学知识,独立设计并制作一个简单的电子时钟;2. 提高学生动手实践能力,学会使用编程软件、调试程序;3. 培养学生团队协作能力,共同完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新意识;2. 培养学生面对问题主动思考、积极探究的良好习惯;3. 培养学生具备耐心、细心的品质,提高其克服困难的自信心。
课程性质:本课程属于实践性较强的课程,要求学生将理论知识与实际操作相结合,完成电子钟的设计与制作。
学生特点:学生具备一定的单片机基础知识,对编程有一定了解,但对于综合运用知识进行实践尚需引导。
教学要求:注重理论与实践相结合,引导学生通过自主探究、动手实践掌握知识,关注学生的个体差异,提供有针对性的指导。
在教学过程中,注重培养学生团队协作、创新精神和解决问题的能力。
通过课程目标的实现,使学生在知识、技能和情感态度价值观方面得到全面提升。
二、教学内容1. 单片机基础理论:- 单片机的内部结构及工作原理;- 单片机的指令系统及编程方法。
2. 电子时钟原理:- 电子时钟的基本构成,包括时钟芯片、显示模块等;- 时、分、秒的计算与显示方法。
3. 编程语言应用:- C语言基础,包括数据类型、运算符、控制结构等;- 单片机编程技巧,如中断处理、定时器应用等。
4. 实践操作:- 电子时钟的设计与制作,包括硬件电路搭建、程序编写及调试;- 熟悉编程软件(如Keil)的使用,完成程序下载与调试。
教学大纲安排:1. 第一周:单片机基础理论,电子时钟原理学习;2. 第二周:C语言基础知识学习,编程技巧讲解;3. 第三周:实践操作,分组进行电子时钟设计与制作;4. 第四周:课程总结与展示,学生汇报作品,教师点评。
单片机电子时钟课程设计报告
单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
单片机课程设计电子钟
单片机课程设计 电子钟一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握单片机编程的基础知识。
2. 学生能掌握电子时钟的工作原理,理解时、分、秒的显示方式及其换算关系。
3. 学生能描述单片机在电子时钟中的应用,了解中断、定时器等概念。
技能目标:1. 学生能运用所学知识,设计并实现一个简单的电子时钟程序,具备初步的编程能力。
2. 学生能够通过实验操作,学会使用编程软件和烧录工具,完成程序的编写和下载。
3. 学生能够分析并解决电子时钟程序运行过程中出现的问题,提高问题解决能力。
情感态度价值观目标:1. 学生通过单片机课程的学习,培养对电子工程的兴趣,激发创新意识。
2. 学生在团队协作中学会沟通、分享和合作,培养良好的团队精神。
3. 学生在学习过程中,培养耐心、细致、严谨的科学态度,树立正确的价值观。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握单片机编程和电子时钟的设计。
学生特点:学生为初中生,具备一定的物理知识和数学基础,对电子技术和编程有浓厚兴趣。
教学要求:教师需注重理论与实践相结合,引导学生通过动手实践,提高编程能力和问题解决能力。
在教学过程中,关注学生的个体差异,给予个性化指导。
同时,强调团队合作,培养学生的沟通与协作能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。
二、教学内容1. 单片机基本原理:介绍51单片机的内部结构、工作原理,重点讲解CPU、内存、I/O口等基础知识。
相关教材章节:第一章 单片机概述2. 单片机编程基础:讲解单片机编程语言(C语言),包括数据类型、运算符、控制语句等。
相关教材章节:第二章 单片机编程语言3. 电子时钟原理:介绍电子时钟的组成、工作原理,重点讲解时、分、秒的显示方式及换算关系。
相关教材章节:第三章 电子时钟原理4. 中断和定时器:讲解中断的概念、原理和应用,以及定时器的工作原理和编程方法。
相关教材章节:第四章 中断与定时器5. 电子时钟程序设计:结合以上知识,设计并实现一个简单的电子时钟程序,包括显示、计时等功能。
单片机电子时钟课程设计
单片机电子时钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握电子时钟的工作原理;2. 使学生掌握单片机编程技术,能独立完成电子时钟的程序编写;3. 帮助学生了解电子时钟的设计过程,掌握相关电子元器件的使用。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高编程和调试技巧;2. 培养学生动手实践能力,能独立完成电子时钟的组装和调试;3. 提高学生的团队协作和沟通能力,能在小组项目中发挥积极作用。
情感态度价值观目标:1. 激发学生对电子技术和单片机编程的兴趣,培养创新意识;2. 培养学生严谨、细致的学习态度,养成良好的学习习惯;3. 增强学生的自信心和责任感,使其在项目实践中勇于面对挑战。
课程性质:本课程为实践性较强的课程,旨在通过项目实践,让学生掌握单片机编程和应用,培养实际操作能力。
学生特点:学生具备一定的单片机基础知识和编程技能,对电子技术有一定了解。
教学要求:注重理论与实践相结合,强调动手实践,鼓励学生创新和团队协作。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 单片机基础:回顾单片机的基本原理、结构、工作方式,重点掌握时钟电路、I/O 口编程、中断系统等基础知识。
教材章节:《单片机原理与应用》第1-3章2. 电子时钟原理:学习电子时钟的基本构成、工作原理,分析时钟芯片DS1302的功能和应用。
教材章节:《单片机原理与应用》第6章3. 程序设计:学习C语言编程,编写电子时钟程序,掌握定时器、中断处理、数据存储等编程方法。
教材章节:《单片机C语言程序设计》第4-6章4. 硬件设计:学习电子时钟硬件电路设计,包括单片机、时钟芯片、显示模块、按键模块等。
教材章节:《电子电路设计》第2-3章5. 调试与优化:学习电子时钟系统的调试方法,分析常见问题,进行程序和硬件优化。
教材章节:《单片机原理与应用》第8章6. 项目实践:分组进行电子时钟项目实践,从硬件组装、编程调试到产品展示,全面锻炼学生的动手能力。
单片机电子时钟课程设计报告
单片机电子时钟课程设计报告一、引言。
随着科技的不断发展,电子产品已经渗透到我们生活的方方面面。
其中,电子时钟作为一种常见的电子产品,被广泛应用于各个领域。
本课程设计旨在通过单片机技术,设计并实现一个功能强大、稳定可靠的电子时钟,以满足人们对精准时间的需求。
二、设计方案。
1. 硬件设计。
本课程设计选用了51单片机作为核心处理器,配合数码管显示模块、时钟芯片等外围器件,构成了电子时钟的硬件平台。
通过对硬件电路的设计和布线,实现了对时间的精准显示和控制。
2. 软件设计。
在软件设计方面,本课程设计采用了C语言作为编程语言,利用单片机的定时器、中断等功能模块,编写了精确的时钟控制程序。
通过对时钟的分、秒、小时的精准控制,实现了电子时钟的正常运行和显示。
三、功能实现。
1. 时间显示。
经过精心设计的软件程序,实现了对时间的精准显示。
时钟的显示界面清晰明了,数字显示稳定可靠,能够满足人们对时间的基本需求。
2. 时间调整。
通过设置按键,可以对时钟进行时间的调整。
用户可以根据实际需求,随时对时钟的时间进行调整,保证时钟的准确性。
3. 闹铃功能。
本课程设计还实现了闹铃功能,用户可以通过设置闹铃时间,让时钟在设定的时间点发出提示音,提醒用户重要事件的发生。
四、实验结果。
经过实际测试,本课程设计的电子时钟能够稳定可靠地运行,显示精准,功能完善。
时钟的硬件和软件设计均达到了预期的要求,符合设计的初衷和要求。
五、总结与展望。
本课程设计通过对单片机电子时钟的硬件和软件设计,成功实现了一个功能强大、稳定可靠的电子时钟。
但是,仍有一些功能可以进一步完善和优化,比如增加温湿度显示功能、实现无线时间校准等。
未来,我们将继续努力,不断完善电子时钟的功能,为人们的生活带来更多的便利。
六、参考文献。
[1] 《单片机原理与接口技术》,XXX,XXX出版社,2008。
[2] 《C语言程序设计》,XXX,XXX出版社,2010。
七、致谢。
感谢所有为本课程设计提供帮助和支持的老师和同学们,在他们的帮助下,本课程设计得以顺利完成。
单片机电子时钟课程设计报告
单片机电子时钟课程设计报告一、引言。
电子时钟是现代社会中常见的时间显示设备,其精准的时间显示功能在各个领域都有着重要的应用价值。
本课程设计旨在通过单片机技术,设计并实现一个简单的电子时钟,以帮助学生深入理解单片机的工作原理和应用技术。
二、课程设计内容。
1. 电子时钟的基本原理。
电子时钟是通过内部的振荡器产生稳定的脉冲信号,再经过分频和计数等操作,最终显示出精确的时间。
学生需要了解时钟电路的基本组成和工作原理,包括振荡器、分频器、计数器等模块的功能和相互配合关系。
2. 单片机的应用技术。
本课程设计中,我们选用了常见的单片机作为控制核心,学生需要学习单片机的基本结构、工作原理以及编程技术,掌握单片机与外围元器件的连接和通信方法,以及如何利用单片机实现电子时钟的各项功能。
3. 电子时钟的功能设计。
在课程设计中,学生需要设计电子时钟的基本功能,包括时间的显示、设置和调整功能,以及闹钟、定时器等附加功能。
通过设计和实现这些功能,学生能够更好地理解单片机的应用和程序设计技术。
4. 硬件电路的搭建与调试。
除了软件设计,学生还需要学会如何搭建电子时钟的硬件电路,并进行相应的调试工作。
这将帮助他们更深入地理解电子时钟的工作原理,以及单片机与外围电路的配合方式。
5. 系统整体性能测试与优化。
最后,学生需要对设计的电子时钟系统进行整体性能测试,并对系统进行优化,提高其稳定性和可靠性。
这一步骤将帮助他们更全面地掌握电子时钟设计的整体流程和技术要点。
三、课程设计实施。
在课程设计实施过程中,学生将分为若干小组,每个小组负责一个电子时钟系统的设计与实现。
在指导老师的指导下,他们将逐步完成电子时钟的功能设计、硬件搭建、软件编程、系统调试和性能优化等工作。
通过实际动手操作,学生将更好地理解课程内容,并培养实际动手能力和团队合作意识。
四、课程设计总结。
通过本课程设计,学生将全面掌握单片机技术在电子时钟设计中的应用,深入理解电子时钟的工作原理和设计方法,提高动手能力和实际应用能力。
51单片机电子时钟课程设计报告
第一部分设计任务和要求1.1单片机课程设计内容 (2)1.2单片机课程设计要求 (2)1.3系统运行流程 (2)第二部分设计方案2.1总体设计方案说明 (2)2.2系统方框图 (3)2.3系统流程图 (3)第三部分主要器材及基本简介3.1主要器材 (4)3.2主要器材简介 (4)第四部分系统硬件设计4.1最小系统 (6)4.2LCD显示电路 (6)4.3键盘输入电路 (7)4.4蜂鸣器和LED灯电路 (7)第五部分仿真电路图与仿真结果 (8)第六部分课程设计总结 (8)第七部分参考文献 (9)附录A 实物图附录B 系统源程序第一部分设计任务和要求1.1单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。
1.2单片机课程设计要求1.能实现年、月、日、星期、时、分、秒的显示;2.能实现调时功能;3.能实现12/24小时制切换;4.能实现8 : 00—22 : 00整点报时功能。
1.3系统运行流程程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。
若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。
若没到则循环执行。
计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。
调时闪烁中断服务程序用于被调单元的闪烁显示。
调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。
实现了对时间的设置和修改、LCD显示数值等主要功能。
相关的调整是靠对功能键的判断来实现的。
第二部分设计方案2.1总体设计方案说明1.程序设计及调试根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。
2.硬件焊接及调试根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。
3.后期处理对设计过程进行总结,完成设计报告。
单片机数字电子钟课程设计
单片机数字电子钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基础知识,掌握数字电子时钟的原理和工作流程。
2. 学生能描述单片机编程的基本步骤,特别是与计时相关的指令和程序设计方法。
3. 学生能够解释数字电子钟各部分功能,如时钟电路、显示电路等,并了解它们之间的协作关系。
技能目标:1. 学生能够运用所学的单片机知识,设计并实现一个简单的数字电子钟程序。
2. 学生通过动手实践,提高焊接和电路排错的能力,能够组装和调试电子钟电路。
3. 学生能够利用仿真软件对电子钟程序进行测试和优化,培养问题解决和程序调试技巧。
情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识和探索精神。
2. 通过团队协作完成项目,增强学生的合作意识和沟通能力。
3. 学生在课程学习过程中,能够体验到知识与实践相结合的成就感,培养科学、严谨的学习态度。
分析课程性质、学生特点和教学要求:本课程设计针对高中年级学生,假设他们已具备基础物理知识和一定的编程能力。
课程性质为实践性强的综合设计课,旨在通过单片机数字电子钟的制作,巩固学生的电子技术知识与技能。
课程目标设定时考虑了学生的年龄特点和认知水平,注重理论与实践的结合,鼓励学生动手操作和探究学习,旨在提高学生的综合技术应用能力。
通过具体的学习成果分解,本课程旨在让学生不仅学习到知识,而且能够将知识应用到实际问题的解决中,充分体现课程的实用性和创新性。
二、教学内容1. 单片机基础知识回顾:重点复习单片机的内部结构、工作原理及编程基础,关联教材第二章内容。
2. 数字电子时钟原理:讲解时钟电路、计数器、振荡器等组成部分,对应教材第四章第二节。
- 时钟电路的构成与工作原理- 计数器的作用及其编程方法- 振荡器的种类及其在电子时钟中的应用3. 单片机编程设计:结合教材第三章,介绍编写电子时钟程序所需的指令和编程技巧。
- 基本计时指令的使用- 程序流程图的绘制- 中断处理在电子时钟中的应用4. 电路设计与制作:依据教材第五章,指导学生进行电子时钟的电路设计和组装。
课程设计单片机电子时钟
课程设计单片机电子时钟一、背景概述随着现代科技的不断发展,电子产品已经成为我们日常生活中不可或缺的一部分。
而作为电子产品中的基础单元,单片机的应用也越来越广泛。
单片机作为一种微型控制系统,可以完成各种控制任务,并且搭载各种传感器和执行器实现信息的采集和处理,从而达到实时监测和控制的目的。
电子时钟是一种常见而实用的电子产品,其实现原理基于控制单元和计时器等硬件元件,而单片机则可以很好地实现电子时钟的功能,且可以通过单片机的程序设计实现更多的功能扩展,提高电子时钟的可玩性和实用性。
二、课程设计目标本课程设计旨在通过单片机电子时钟的设计,来提高学生的控制理论知识和实际应用能力,同时锻炼学生的编程能力和实验操作技能。
具体目标如下:1. 熟练掌握单片机的基本原理和应用方法;2. 掌握时钟电路的基本功能和实现方法;3. 了解数字时钟和模拟时钟的实现原理;4. 学习电子时钟的显示原理和方法;5. 掌握基于单片机的程序设计方法;6. 能够实现基本的电子时钟功能;7. 能够进行电子时钟的调试和调整;8. 能够进行电子时钟的功能扩展和优化。
三、课程设计内容本课程设计内容主要包括以下几个部分:1. 单片机的基础知识:讲解单片机的内部结构、特点、工作原理和各种传感器和执行器的应用方法。
2. 电子时钟的基础原理:介绍电子时钟的基本构成和原理,包括时钟电路、计时器、时分秒计数器等。
3. 数字时钟和模拟时钟设计:通过实际电路设计和实验操作,学习数字时钟和模拟时钟的设计方法和原理。
4. 电子时钟的显示方法:介绍LED数码管和LCD 液晶显示屏的原理和应用方法,并通过实验操作掌握其使用技巧。
5. 单片机程序设计方法:采用C语言编程,学习单片机的程序设计方法,包括功能模块的封装和函数调用等。
6. 电子时钟程序设计:根据电子时钟的基本功能,分析其实现方法和程序设计要点,编写相应的程序,并通过实验调试进行优化。
7. 电子时钟的扩展和优化:通过添加各种功能模块,如闹钟、温度、湿度等传感器,实现电子时钟的功能扩展和智能化,同时进行程序的优化和改进。
单片机电子钟课程设计
单片机电子钟课程设计一、课程目标知识目标:1. 学生能够理解单片机的基本原理和编程方法。
2. 学生能够掌握电子时钟的构成和工作原理。
3. 学生能够运用所学知识,设计并实现一个具有基本功能的单片机电子钟。
技能目标:1. 学生能够运用编程软件进行单片机程序编写和调试。
2. 学生能够使用电子元件搭建电路,并进行基本的电路测试和故障排除。
3. 学生能够通过团队协作,完成电子钟的设计、制作和优化。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识和探索精神。
2. 培养学生良好的团队合作精神和沟通能力。
3. 培养学生严谨的科学态度,注重实践操作,提高问题解决能力。
课程性质:本课程为实践性较强的课程,结合理论教学和动手操作,培养学生实际动手能力和创新思维。
学生特点:学生为初中生,具备一定的物理和数学基础,对电子技术有一定的好奇心和求知欲。
教学要求:教师需结合学生特点,采用启发式教学,引导学生主动探究,注重理论与实践相结合,提高学生的实际操作能力。
同时,关注学生的个体差异,给予个性化指导,确保课程目标的达成。
通过课程学习,使学生能够将所学知识应用于实际项目中,培养其综合素质。
二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理和编程语言(C语言),对应教材第二章内容。
2. 电子时钟原理:讲解电子时钟的基本构成、计时原理和显示技术,对应教材第四章内容。
3. 硬件电路设计:学习并设计单片机电子钟的电路图,选择合适的电子元件,对应教材第三章内容。
4. 程序设计与调试:编写单片机程序,实现电子钟的基本功能,如时、分、秒显示,闹钟等,对应教材第五章内容。
5. 电路搭建与测试:根据设计电路图,搭建实体电路,进行功能测试和故障排查,对应教材第六章内容。
6. 项目制作与优化:以小组形式完成电子钟的制作,对产品进行优化和改进,提高性能和稳定性。
教学进度安排:第一周:单片机基础知识学习,熟悉编程环境。
第二周:电子时钟原理学习,设计电路图。
单片机课程设计电子钟(电子时钟)
LED数码管显示器显示当前时间;四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1;
3、设计方案:
(1)、基于单片机并行口的设计
见图4-4所示
4.1.5显示子程序流程框图
见图4-5所示
4.1.6加一子程序流程框图
见图4-6所示
4.2电子钟总体程序清单
ORG0000H
AJMPMAIN
ORG000BH
LJMPINTT0
ORG0030H
MAIN: MOVSP,#60H;确立堆栈区
MOVPSW,#00H;
MOVR0,#20H;RAM区首地址
1.2总体方案介绍
1.2.1计时方案
利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
1.2.2键盘/显示方案
此电子钟严格按照要求设计,最终达到预期的效果,能够正确显示“P”点以及时分秒的计时,算是一次比较成功的设计了。
关键词:电子钟,单片机,汇编
第1章电子钟功能及总体方案的介绍
1.1电子钟功能介绍
1.1.1基本功能要求
可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。
(1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按B、C、D键均无效,按A键有效,进入运行状态;
TIME: SETBEA
单片机课程设计--电子时钟设计
电子时钟设计课程设计:单片机原理与应用课程设计专业:班级:设计内容:设计一个简易时钟,设计内容包括:(1)使用8051单片机片内定时器设计一个简易时钟。
(2)使用8位LED对测量结果进行显示(3)能通过键盘对对时钟设计内容与设计要求进行实时调整。
(4)具有闹钟功能●注:带●者为选做设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)进行软硬件调试;主要设计条件1、教材2、单片机开发板、PROTEUS软件3、参考书:1)单片机原理及运用电子工业出版社2)单片机应用技术新教程电子工业出版社目录设计内容: 0设计要求: (1)一、系统总体方案选择与说明 (1)1.系统总体方案选择 (1)2. 说明 (1)二、系统结构框图与工作原理 (3)1. 系统结构框图 (3)2.工作原理 (4)三、各单元硬件设计说明及计算方法 (5)1.定时器\计数器 (5)2 .中断系统: (6)3 .键盘 (6)4 .LED数码管显示器: (7)5 .LED数码显示器有两种连接方法 (7)图(1)LED引脚排列 (8)四、软件设计与说明(包括流程图) (8)1.主程序 (8)2.数码管显示模块 (9)3.定时器/计数器T0中断服务程序 (10)4.按键处理模块 (11)五、程序清单 (13)1.中断子程序 (13)2.延时程序 (13)3.主程序和定时器中断子程序 (13)4.LED显示子程序 (14)5.按键控制子程序 (15)6.数字电子时钟系统PROTUES仿真 (19)六、参考文献 (20)致谢 (21)一、系统总体方案选择与说明1.系统总体方案选择该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计的一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等,用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为50000。
51电子钟课程设计
51电子钟课程设计一、课程目标知识目标:1. 让学生理解51单片机的原理及其在电子钟设计中的应用。
2. 使学生掌握电子钟的基本组成部分,包括时钟芯片、显示模块、按键等。
3. 帮助学生掌握定时器、中断等单片机技术的使用。
技能目标:1. 培养学生运用51单片机进行电子钟设计的能力,学会编写程序、调试电路。
2. 提高学生动手实践能力,能独立完成电子钟的组装和调试。
3. 培养学生分析问题和解决问题的能力,能够对电子钟进行故障排查和优化。
情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识。
2. 培养学生团队合作精神,学会在团队中发挥自己的优势,共同完成任务。
3. 培养学生严谨的学习态度,养成良好的学习习惯。
分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握51单片机及其周边器件的基础上,运用所学知识完成一个具有实际应用价值的电子钟项目。
通过课程学习,使学生将理论知识与实际操作相结合,提高综合运用知识的能力,培养创新精神和实践能力。
同时,注重培养学生的情感态度价值观,使他们在学习过程中形成良好的学习习惯和团队协作精神。
二、教学内容1. 理论知识学习:- 51单片机基本原理及结构- 定时器、中断等技术的应用- 时钟芯片的原理与使用- 显示模块的工作原理及其与单片机的连接方法- 按键输入原理及电路设计2. 实践操作环节:- 电子钟电路图的绘制- 51单片机程序的编写与调试- 电子钟的组装与调试- 故障分析与优化3. 教学内容安排与进度:- 第一周:51单片机基本原理及结构学习,熟悉开发环境- 第二周:定时器、中断技术学习,时钟芯片原理介绍- 第三周:显示模块及按键输入学习,设计初步电路图- 第四周:编写程序,进行电子钟的组装与调试- 第五周:对电子钟进行故障分析与优化,撰写实验报告教材章节关联:本教学内容与教材中以下章节相关:- 第四章:51单片机原理与结构- 第五章:定时器与中断技术- 第六章:显示与键盘接口技术- 第七章:单片机应用实例三、教学方法为了提高教学效果,激发学生的学习兴趣和主动性,本课程将采用以下多样化的教学方法:1. 讲授法:教师通过生动的语言、丰富的案例,为学生讲解51单片机的基础知识、电子钟的设计原理等理论内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计题目:多功能电子时钟系别:电气与电子工程系专业:姓名:学号:指导教师:年月日1 概述 (3)1.1设计任务 (3)1.2设计要求 (3)1.3扩展功能 (3)2 系统总体方案及硬件设计 (3)2.1系统总体方案 (3)2.2硬件各部分设计 (4)3 软件设计 (5)3.1软件设计流程 (6)3.2子程序模块 (6)4 Proteus软件仿真 (7)参考文献附:源程序代码1.1 设计目的设计一多功能智能电子时钟。
1.2 设计要求(1)主电路系统由秒信号发生器、“时、分、秒”计数器、驱动器及显示器、校时电路;(2)秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加来实现,译码显示电路将“时”、“分”、“秒”计数器的输出状态在六位LED七段显示器显示出来;(3)可以来对“时”、“分”、“秒”显示数字进行校对调整的;(4)可以设置三个定时闹钟;(5)编写程序,用Proteus软件进行仿真。
1.3 扩展功能(1)增加跑表功能;(2)可以设置数码管定时开启与关闭;(3)可以设置闹钟的开启与关闭。
2 系统总体方案及硬件设计2.1系统总体方案2.1.1 单片机芯片的选择本设计选用STC89C52单片机,它是一种带8K字节闪烁可编程可擦除只读存储器的低电压,足够本设计之用,高性能CMOS8位微处理器该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
功能强大、使用方便的STC89C52单片机适用于许多较为复杂的应用场合。
2.1.2 总体设计及系统原理定时闹钟的整体设计较简单,包括单片机、自动复位电路、键盘电路、显示电路、驱动与指示电路、闹钟报警电路。
在确定系统的大体形式之后,画出本系统的总体结构布局,电路原理如图2-1所示显示电路用的是七段数码管,数码管段选通过锁存器74HC573接单片机的P2口,数码管由74LS138译码器控制位选,并且每位均接有一个或门,以增强驱动能力;本设计还有模式指示LED灯,由P1口控制,以此来识别不同的设置模式;系统的输入控制按键有P3口来实现,可以设置各个时间参数及闹钟使能。
2.2. 硬件各部分设计2.2.1 单片机单片机最小系统选用STC89C52,包含上电自动复位电路和手动复位电路,可对单片机进行复位操作。
2.2.2 显示部分本设计显示用的是四位七段显示共阴数码管,用来显示时间及跑表参数,LED数码管显示器成本低,配置灵活,与单片机接口简单,在单片机应用系统中广泛应用。
7段LED由7个发光二极管按“日”字型排列,所有发光二极管的阳极连在一起称共阳极接法,阳极连在一起称为共阴极接法。
本文选用共阴极LED,所有发光二极管的阴极连在一起与或门74LS34相连,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。
因此要显示某字形就应使此字形的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字显示码来控制LED的显示,此数据称为字符的段码或称为字型码。
LED显示器与单片机的接口一般有静态显示与动态显示接口两种方式,本设计采用动态显示方式。
在这种显示电路中,一个字位一个字位地轮流点亮各个LED,每一字位停留1ms左右,由于人的视觉暂留,好像6只LED是同时点亮的,并不察觉有闪烁现象。
这种动态LED显示接口由于所有数码管共用一个段码出口,分时轮流通电,从而大大简化课硬件线路,降低了成本。
2.2.3 驱动部分为是数码管有足够的亮度,本设计中增加了数码管驱动电路,用74HC573和或门74LS34来驱动,其中锁存器利用其驱动能力,并未用其锁存数据的功能。
2.2.4 模式指示电路为了区别该时钟的不同运行状态,在设计中加入了指示电路:LED1:闹钟1时间设定指示;LED2:闹钟2时间设定指示;LED3:闹钟3时间设定指示;LED4:数码管熄灭时间设定,第二功能:指示闹钟的开启与关闭;组合指示:LED全部亮,表示设定数码管开显示时间。
2.2.5 按键部分按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。
按下操作键K1-K6动作如下:操作键K1:模式调整;操作键K2:时间位设置;操作键K3:时间值增加键;操作键K4:跑表开始与停止;操作键K5:闹钟开启与关闭键;操作键K6:时间秒位清零键,用于细调时间。
2.2.6 电铃电路此电路由电源、一个蜂鸣器、一个三极管和一个电阻组成,当定时时间到,由STC89C52单片机的P1.5口向三极管基极输入低电平,三极管导通蜂鸣器报警,这时三极管充当开关的作用。
3 软件设计3.1软件设计流程3.2 子程序模块主要控制子程序说明如下:✓delay:延时子程序;✓Timer0Interrupt: 定时器T0计时中断程序,每隔0.2ms中断一次;✓disp1:跑表显示子程序;✓disp:时间显示子程序;其中显示分六路,第一个和第二个数码管显示的是时,第三个和第四个数码管显示分,第五个和第六个数码管显示的是秒。
流程图如下:4 Proteus软件仿真本设计已在Proteus中仿真,程序运行正常,图4-1是仿真截图:图 4-1参考文献1、《单片机原理及应用》张毅刚主编高教出版社2、《单片机原理及C51编程》宋彩利等编西安交通大学出版社3、《单片机原理及应用技术》黄惟公等编西安电子科技大学出版社附源程序代码1#include <reg52.h>2#define uint unsigned int3#define uchar unsigned char4sbit led1=P1^2;5sbit led2=P1^1;6sbit led3=P1^0;7sbit led4=P1^4;89sbit lk138=P1^3;10sbit beep=P1^5;1112sbit key1=P3^0; //模式设定13sbit key2=P3^1; //时间位14sbit key3=P3^2; //时间调整15sbit key4=P3^4; //跑表16sbit key5=P3^5; //开关闹钟17sbit key6=P3^6; //秒位清零键1819uint temp,temp1;20uchar p1,p2,p3;21uchar moshi,shi,fen,miao; //正常显示设22定2324uchar shi1,fen1,miao1;25uchar shi2,fen2,miao2; //闹钟设定26uchar shi3,fen3,miao3;2728uchar shi4,fen4,miao4;29uchar shi5,fen5,miao5; //开关显示设定3031uchar smoshi;32uchar code 33table[]={0xde,0x82,0x57,0x97,0x8b,0x9d,0xd 34d,0x86,35360xdf,0x9f,0xcf,0xd9,0x5c,0xd3,0x5d,0x4d,0x 37cb,0x20};38void key_s1(void); //模式选择键39void key_s2(void); //操作位调整键40void key_s3(void);41void key_s3_n1(void);42void key_s3_n2(void);43void key_s3_n3(void);44 void key_s3_n4(void);45void key_s3_n5(void);46void ms(void);47void delay(uint ms);48void disp1(uchar hp,uchar mp,uchar sp);49void disp(uchar h,uchar m,uchar s);5051void initTimer0()52{53TMOD=0x12; //定时器0,方式2;定时器541,方式155TH0=0x38;56TL0=0x38;57TH1=0x0D8;58TL1=0x0F0; //定时10ms59EA=1;60ET0=1;61ET1=1;62TR0=1;63TR1=0; //先关闭定时器164temp=0;65temp1=0;66p3=0;67shi1=12;68}69void main()70{71initTimer0();72while(1)73{ key_s1();74ms();75if(miao>0x3b)76{ miao=0;77fen++;78if(fen>0x3b)79{80fen=0;81shi++;82if(shi>0x17)83{ shi=0;84}85}86}8788if(p3>0x63)89{90p3=0;91p2++;92if(p2>0x3b)93{94p2=0;95p1++;96if(p1>0x09)97{ p1=0;98}99}100}101if(key6==0)102{miao=0;103}104if(key4==0)105{ TR1=~TR1;106}107if(key5==0)108{109temp1=~temp1;110}111if(temp1==0)112{113led4=0;114beep=1;115}116if(((shi==shi1)&(fen==fen1)&(miao==miao1)& 117temp1)||((shi==shi2)&(fen==fen2)&(miao==mi 118ao2)&temp1)||((shi==shi3)&(fen==fen3)&(mia 119o==miao3)&temp1))120{121beep=0;122}123if(((shi==shi1)&(fen==fen1)&(miao==miao1+1 1240))||((shi==shi2)&(fen==fen2)&(miao==miao2 125+10))||((shi==shi3)&(fen==fen3)&(miao==mia 126o3+10)))127{128beep=1;129}130131if((shi==shi4)&(fen==fen4)&(miao==miao4)) 132 {133lk138=0; led3=0;134}135136if((shi==shi5)&(fen==fen5)&(miao==miao5)) 137{138lk138=1; led3=1;139}140}141}142void disp(uchar h,uchar m,uchar s)143{144P0=0xf0;145P2=table[s%10];146delay(1);147P2=0x00;148149P0=0xf1;150P2=table[s/10];151delay(1);152P2=0x00;153154P0=0xf2;155P2=table[m%10];156delay(1);157P2=0x00;158P0=0xf2;159P2=0x20;160delay(1);161P2=0x00;162163P0=0xf3;164P2=table[m/10];165delay(1);166P2=0x00;167168P0=0xf4;169P2=table[h%10];170delay(1);171P2=0x00;172P0=0xf4;173P2=0x20;174delay(1);175P2=0x00;176177178P0=0xf5;179P2=table[h/10];180delay(1);181P2=0x00;182}183void disp1(uchar hp,uchar mp,uchar sp) 184185{186P0=0xf0;187P2=table[sp%10];188delay(1);189P2=0x00;190191P0=0xf1;192P2=table[sp/10];193delay(1);194P2=0x00;195196P0=0xf2;197P2=table[mp%10];198delay(1);199P2=0x00;200P0=0xf2;201P2=0x20;202delay(1);203P2=0x00;204205P0=0xf3;206P2=table[mp/10];207delay(1);208P2=0x00;209210P0=0xf4;211P2=table[hp%10];212delay(1);213P2=0x00;214P0=0xf4;215P2=0x20;216delay(1);217P2=0x00;218219220P0=0xf5;221P2=0x4f;222delay(1);223P2=0x00;224}225226227void key_s1(void)228{229P3=0xff;230if(P3==0xfe)231{232delay(5);233if(P3==0xfe)234{ delay(100);235if(P3==0xff)236moshi++;237}238if(moshi>6) moshi=0;239}240}241void ms(void)242{ switch(moshi)243{244case 0:disp(shi,fen,miao); led4=1; 245key_s2(); key_s3(); break;246case 1:disp(shi1,fen1,miao1); 247led1=0;led2=1;led3=1;led4=1;248key_s2(); key_s3_n1(); 249break;250case 2:disp(shi2,fen2,miao2); 251led1=1;led2=0;led3=1;led4=1;252key_s2(); key_s3_n2(); 253break;254case 3:disp(shi3,fen3,miao3); 255led1=1;led2=1;led3=0;led4=1;256key_s2(); key_s3_n3(); 257break;258case 4:disp(shi4,fen4,miao4); 259led1=1;led2=1;led3=1;led4=0;260key_s2(); key_s3_n4(); 261break;262case 5:disp(shi5,fen5,miao5); 263led1=0;led2=0;led3=0;led4=0;264key_s2(); key_s3_n5(); 265break;266case 6:disp1(p1,p2,p3); 267led1=1;led2=1;led3=1;led4=1;268if(key5==0) p1=p2=p3=0; 269break;270default: break;271}272273}274275void key_s2(void)276{277P3=0xff;278if(P3==0xfd)279{ delay(5);280if(P3==0xfd)281{ delay(100);282if(P3==0xff)283smoshi++;284}285if(smoshi>2) smoshi=0;286}287}288void key_s3(void)289{290P3=0xff;291if(P3==0xfb)292{293switch(smoshi)294{295case 0:miao++; if(miao>59) 296miao=0; break;297case 1:fen++; if(fen>59) 298fen=0; break;299case 2:shi++; if(shi>23) 300shi=0; break;301default: break;302}303}304}305306void key_s3_n1(void)307{308 P3=0xff;309if(P3==0xfb)310{311switch(smoshi)312{313case 0:miao1++; if(miao1>49) 314miao1=0; break;315case 1:fen1++; if(fen1>59) 316fen1=0; break;317case 2:shi1++; if(shi1>23) 318shi1=0; break;319default: break;320}321}322}323324void key_s3_n2(void)325{326P3=0xff;327if(P3==0xfb)328{329switch(smoshi)330{331case 0:miao2++; if(miao2>49) 332miao2=0; break;333case 1:fen2++; if(fen2>59) 334fen2=0; break;335case 2:shi2++; if(shi2>23) 336shi2=0; break;337default: break;338}339}340}341void key_s3_n3(void)342{343P3=0xff;344if(P3==0xfb)345{346switch(smoshi)347{348case 0:miao3++; if(miao3>49) 349miao3=0; break;350case 1:fen3++; if(fen3>59) 351fen3=0; break;352case 2:shi3++; if(shi3>23) 353shi3=0; break;354default: break;355}356}357}358void key_s3_n4(void)359{360P3=0xff;361if(P3==0xfb)362{363switch(smoshi)364{365case 0:miao4++; if(miao4>59) 366miao4=0; break;367case 1:fen4++; if(fen4>59) 368fen4=0; break;369case 2:shi4++; if(shi4>23) 370shi4=0; break;371default: break;372}373}374}375void key_s3_n5(void)376{377P3=0xff;378if(P3==0xfb)379{380switch(smoshi)381{382case 0:miao5++; if(miao5>59) 383miao5=0; break;384case 1:fen5++; if(fen5>59) 385fen5=0; break;386case 2:shi5++; if(shi5>23) 387shi5=0; break;388default: break;389}390}391}392void delay(uint ms)393{394uint x,y;395for (x=0;x<60;x++)396 for (y=0;y<ms;y++);397}398399void Timer0Interrupt(void) interrupt 1400{ temp++;401if(temp==0x1388) //设置定时器工402作循环500次403{404temp=0;405miao++;406407}408}409void Timer1Interrupt(void) interrupt 3 410{411TH1 = 0x0D8;412TL1 = 0x0F0;413p3++;414}415416417418419420421422423424425426427。