基于52单片机的电子时钟课程设计
- 格式:doc
- 大小:4.63 MB
- 文档页数:29
XX大学XXX学院单片机课程设计———电子时钟报告姓名:XXX学号:XXXXX班级:XXXXXX1、课程设计的目的该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及外围的按键和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。
2、课程设计具体要求用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。
形成定时时间为50ms。
用片内RAM的7BH单元对50ms 计数,计20次1秒钟到,然后对秒计数器78H单元加1,秒计数器加到60后向分进位,则分计数器79H单元加1而秒计数器78H单元清零;分计数器加到60后又向时进位,则时计数器7AH单元加1而分计数器79H单元清零;时计数器加到24则时计数器清零。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
3、mcs-51单片机系统简介MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52 两个子系列。
对于51子系列,主要有8031、8051、8751 三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KB的ROM,8751芯片带4KB的EPROM。
51子系列单片机的主要特点如下。
对于52子系列,有8032、8052、8752 三种机型。
52子系列与51子系列相比大部分相同,不同之处在于:片内数据存储器增至256B;8032芯片不带ROM,8052芯片带8KB的ROM,8752芯片带8KB的EPROM;有3个16位定时器/计数器;6个中断源。
4、mcs-51单片机内部定时/计数器中断系统简介1.MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。
目录第一章﹑设计背景 (2)第二章﹑设计方案 (4)2.1. 设计内容 (4)第三章﹑电子时钟 (5)3.1.电子时钟简介 (5)3.2.电子时钟的基本特点 (5)3.3.电子时钟的原理 (5)第四章﹑AT89C52简介 (6)第五章﹑系统软件程序设计 (10)5.1.主程序 (10)5.2.数码管显示模块 (10)5.3.定时器/计数器T0中断服务程序 (10)5. 4.按键处理模块 (11)5.5.汇编语言程序 (13)第六章﹑系统硬件电路的设计 (18)第七章﹑课程设计总结 (21)参考文献 (22)附录 (23)摘要设计背景:1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。
数字电子钟一般由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路等组成。
秒信号是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将秒信号送入秒计数器,它是六十进制计数器。
每累计六十秒发出一个“分脉冲”信号,这个信号作为“分计数器”的时钟脉冲。
“分计数器”也是六十进制计数器,它每累计六十分钟,发出一个“时脉冲”信号,此信号将被送到“时计数器”。
“时计数器”采用二十四进制计数器,可以实现一天二十四小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态经七段显示译码器译码,通过六位LED显示器显示出来。
校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。
首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。
单片机课程设计报告一、课程设计内容1)显示时间功能,能正确显示“时”、“分”。
2)显示日期功能,能显示“月”、“日”。
3)闹钟功能,可按设定的时间闹时。
4)具有校准月、日、时、分的功能。
二、元器件介绍本次课程设计我使用的单片机是至强51蓝精灵版,而实验中使用到的关键元器件主要有:STC85C52RC,4*4按键,蜂鸣器,数码管等。
下面是STC85C52RC的简单介绍:AT89C52是本设计最核心的部件,它是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。
AT89C52单片机适用于许多较为复杂的控制应用场合。
下图是AT89C52最常见的一种封装。
如上图所示,AT89C52共有40个管脚,其各个功能如下:·VCC ——运行时加+5V·VSS ——接地·XTAL1 ——振荡器反相放大器及内部时钟发生器的输入端·XTAL2 ——振荡器反相放大器的输出端·RST ——复位输入,高电平有效,在晶振工作时,在RST引脚上作用2个机器周期以上的高电平,将使单片机复位。
·EA/VPP ——片外程序存储器访问允许信号。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地),如果EA端为高电平(接Vcc端),CPU则执行内部程序中的指令。
·LAE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址允许锁存)输出脉冲用于锁存地址的低8位位数字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
单片机设计任务书参考程序:;-------------------------------------------------------------------;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时;显示格式:00-00-00(设置小时十位为0时,不显示);通过3只按键来调整时间;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁; 增加键ADD_KEY:P1.1;按一次使选中位加1; 减少键DEC_KEY:P1.2;按一次使选中位减1;如果长按ADD_KEY或DEC_KEY,可进行调时、调分快进快减,并停止闪烁;如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能;P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;P2.1为蜂鸣器发声报时;编程人:郑振凡编写日期:2009年12月2日修改日期(最终):2009年12月6日;-------------------------------------------------------------------;-----------;程序入口;-----------ORG 0000H ;程序入口地址LJMP STARTORG 000BH ;定时器0中断入口地址LJMP TIMET0ORG 1000H;----------------------------------;显P.程序;功能:可以在8个数码闪烁移位进行屏保;----------------------------------START:MOV R6, #2 ;闪烁次数MOV A, #01H ;位选TT:MOV P3, AMOV P0, #0CH ;段码"P."LCALL DELAYMOV P3, #00HDJNZ R6, TTLCALL DELAYLCALL DELAY1RR AJB P1.0, TT ;键是否按下,没按下则转移LCALL DELAY ;延时去抖JNB P1.0, KAI ;再次判断键是否按下KAI:SETB P1.0CLR A ;状态恢复MOV P0, #0FFHLCALL DELAY1SETB 48H ;用于调时闪烁标志SETB 47H ;用于产生脉冲用于调时快进的脉冲MOV R1, #0 ;调整选择键功能标志:0计时、1调时、2调分、3调秒;-------------------------------;清16位寄存器及初始化;50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控制调时闪烁;-------------------------------MOV R0, #50H ;初始化MOV R6, #10HCLEARJCQ:MOV @R0, #00H ;清寄存器INC R0DJNZ R6, CLEARJCQMOV IP, #02HSETB EASETB ET0MOV TMOD, #01H ;设定定时器0工作方式1MOV TH0, #3CHMOV TL0, #0B0H ;赋定时初值,定时50msSETB TR0 ;启动定时器0MOV SP, #70H ;堆栈;--------;主程序;--------MAIN:LCALL DISPLAYLCALL KEY_SCANJZ MAINLCALL SET_KEYJB 46H, MAIN ;如果已进行调时快进,则不再执行下面的调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环;---------------; 显示处理程序;---------------DISPLAY:MOV A, 51HANL A, #0FHMOV 5FH, A ;转换出秒个位,存入5FHMOV A, 51HANL A, #0F0HSWAP AMOV 5EH, A ;转换出秒十位,存入5EHJB 46H, MIN ;如果调时快进,则跳过闪烁处理程序CJNE R1, #3,MIN ;如果R1为3,闪烁秒位待调整JB 48H, MINMOV 5FH, #0AH ;使该位为10,查表得到使该位不显示MOV 5EH, #0AHMIN:MOV A, 52HANL A, #0FHMOV 5DH, A ;转换出分个位,存入5DHMOV A, 52HANL A, #0F0HSWAP AMOV 5CH, A ;转换出分十位,存入5CHJB 46H, HOURCJNE R1, #2,HOUR ;如果R1为2,闪烁分位待调整JB 48H, HOURMOV 5DH, #0AHMOV 5CH, #0AHHOUR:MOV A, 53HANL A, #0FHMOV 5BH, A ;转换出时个位,存入5BHMOV A, 53HANL A, #0F0HSWAP AMOV 5AH, A ;转换出时十位,存入5AHJB 46H, DISPCJNE R1, #1,DISP ;如果R1为1,闪烁时位待调整JB 48H, DISPMOV 5BH, #0AH ;使该位为10,查表得到使该位不显示MOV 5AH, #0AH;-------------------;数码管动态扫描显示;-------------------DISP:MOV DPTR, #TABLEMOV A, 5FHMOVC A, @A+DPTRMOV P0, ASETB P3.7LCALL DELAYCLR P3.7 ;显示秒个位MOV A,5EHMOVC A, @A+DPTRMOV P0, ASETB P3.6LCALL DELAYCLR P3.6 ;显示秒十位MOV A, #0BFHMOV P0, ASETB P3.5LCALL DELAYCLR P3.5 ;显示“-”MOV A, 5DHMOVC A, @A+DPTRMOV P0, ASETB P3.4LCALL DELAYCLR P3.4 ;显示分个位MOV A,5CHMOVC A, @A+DPTRMOV P0, ASETB P3.3LCALL DELAYCLR P3.3 ;显示分十位MOV A, #0BFHMOV P0, ASETB P3.2LCALL DELAYCLR P3.2 ;显示“-”MOV A,5BHMOVC A, @A+DPTRMOV P0, ASETB P3.1LCALL DELAYCLR P3.1 ;显示时个位MOV DPTR, #TABLE1 ;该位使用TABLE1以消除时的十位置0MOV A, 5AHMOVC A, @A+DPTRMOV P0, ASETB P3.0LCALL DELAYCLR P3.0 ;显示时十位RET;-----------------;定时器中断1s程序;-----------------TIMET0:PUSH ACC ;保护现场PUSH PSWMOV TH0,#3CHMOV TL0,#0B0HCPL 47H ;产生脉冲用于调时快进INC 54HMOV A,54HCJNE A,#10,ADD_TIME;产生0.5秒,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 54H,#00HADD_TIME:INC 50HMOV A,50HCJNE A,#10,ZDBACD ;整点报时时蜂鸣器响延迟时间SETB P2.1 ;关蜂鸣器ZDBACD:CJNE A,#20,RETI1 ;产生1秒时钟MOV 50H,#00H ;一秒钟时间到,清零50HMOV A,51HADD A,#01HDA A ;十进制调整MOV 51H,ACJNE A,#60H,RETI1MOV 51H,#00H ;一分钟到MOV A,52HADD A,#01HDA AMOV 52H,ACJNE A,#60H,RETI1CLR P2.1MOV 52H,#00H ;一小时到,开蜂鸣器,清分显示MOV A,53HADD A,#01HDA AMOV 53H,ACJNE A,#24H,RETI1MOV 53H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回;-------------;键盘扫描程序;R4设置为00H是为了在进入长按处理前加长延时,以区分长按与短按键;-------------KEY_SCAN:CLR 46H ;关闭调时快进标志MOV P1, #0FFH ;将P1口设置成输入状态MOV A, P1CPL AANL A, #07H ;1口低3位连接3个按键,只判断该3位JZ EXIT_KEYLCALL DELAY ;延时去抖动MOV A, P1 ;重新判断CPL AANL A,#07HJZ EXIT_KEYMOV R5,AMOV R4,#00H ;用于控制调时快进速度LOOP:LCALL DISPLAY ;进入长按处理MOV A,P1CPL AANL A,#07HJB 47H,LOOP1INC R4 ;调时快进间隔时间基准加1 LOOP1:CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H ;确认长按后,加快调时快进速度SETB 46HLCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5 ;输出键值RETEXIT_KEY:RET;------------;延时子程序;------------DELAY:MOV R7,#200DJNZ R7,$RETDELAY1:MOV R3,#50MOV TMOD,#00HMOV TH1,#63HMOV TL1,#18HSETB TR1LP1:JBC TF1,LP2SJMP LP1LP2:MOV TH1,#63HMOV TL1,#18HDJNZ R3,LP1RET;-----------------;选择键处理子程序;-----------------SET_KEY:CJNE R5,#01H,EXIT ;选择键键值INC R1 ;调整选择功能标志加一CJNE R1,#4,EXITMOV R1,#0MOV 54H,#00H ;调时闪烁清零RET;----------;加1子程序;----------ADD_KEY:CJNE R5,#02H,EXIT ;加1键值CJNE R1,#01H,NEXT1 ;选择键功能标志为1调时,否则跳出MOV A,53HADD A,#01HDA AMOV 53H,ACJNE A,#24H,EXITMOV 53H,#00HNEXT1:CJNE R1,#02H,NEXT2 ;选择键功能标志为2调分,否则跳出MOV A,52HADD A,#01HDA AMOV 52H,ACJNE A,#60H,EXITMOV 52H,#00HNEXT2:CJNE R1,#03H,EXIT ;选择键功能标志为3调秒,否则跳出MOV A,51HADD A,#01HDA AMOV 51H,ACJNE A,#60H,EXITMOV 51H,#00H ;如加1键按下直接清零秒RET;----------;减1子程序;----------DEC_KEY:CJNE R5,#04H,EXIT ;减1键键值CJNE R1,#01H,NEXT3 ;选择键功能标志为1调时,否则跳出MOV A,53HADD A,#99HDA AMOV 53H,ACJNE A,#99H,EXITMOV 53H,#23HNEXT3:CJNE R1,#02H,NEXT4 ;选择键功能标志为2调分,否则跳出MOV A,52HADD A,#99HDA AMOV 52H,ACJNE A,#99H,EXITMOV 52H,#59HNEXT4:CJNE R1,#03H,EXIT ;选择键功能标志为3调秒,否则跳出MOV A,51HADD A,#99HDA AMOV 51H,ACJNE A,#99H,EXITMOV 51H,#59HRET;-----------;返回子程序;-----------EXIT:RET;-----------------;数码管字形编码表;-----------------TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;"0","1","2","3","4","5","6","7","8"",9","不显示"TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时位的十位数编码;"不显示","1","2","3","4","5","6","7","8","9","不显示";--------;程序结束;--------ENDProteus电路:。
基于某52单片机电子时钟的设计论文设计标题:基于52单片机的电子时钟设计摘要:本论文基于52单片机,设计并实现了一种电子时钟系统。
该系统采用数字时钟显示方式,可显示时、分、秒,并具有时钟校准、闹钟功能。
采用52单片机作为主控芯片,利用相关外围电路和编程技术实现了时钟的显示和控制功能,并通过按键操作实现了时钟校准和闹钟设置。
实验结果表明,该电子时钟系统运行稳定,准确可靠。
关键词:电子时钟;52单片机;数码显示;时钟校准;闹钟1.引言随着现代科技的不断发展,电子时钟在人们的日常生活中得到了广泛应用。
电子时钟作为一种便携、精确度高、功能齐全的时钟,已经取代了传统机械时钟。
本论文旨在基于52单片机设计一种电子时钟系统,实现数字时钟显示、时钟校准和闹钟功能。
2.系统设计2.1硬件设计电子时钟系统的硬件设计主要包括显示模块、控制模块、输入模块和时钟芯片四个部分。
显示模块采用数码管的形式,可实现时、分、秒的显示。
控制模块采用52单片机,通过与其他模块的连接,实现对时钟的控制和数据处理功能。
输入模块采用按键开关,实现手动操作时钟校准和闹钟设置。
时钟芯片用于提供稳定的时钟信号,保证时钟系统的准确性。
2.2软件设计软件设计主要包括时钟显示、时钟校准和闹钟设置三个模块。
时钟显示模块通过编程实现,控制数码管显示当前的时、分、秒。
时钟校准模块通过按键操作实现,用户可根据实际需要对时钟进行校准,以保证时间的准确性。
闹钟设置模块通过编程实现,用户可根据需求设置闹钟的时间,并通过判断当前时间与闹钟时间是否相等来进行响铃操作。
3.实验结果与分析经过硬件和软件的设计,实验得到了一套完整的电子时钟系统。
实验结果表明,该系统运行稳定,准确可靠。
时钟可显示时、分、秒,通过按键操作可实现时钟校准和闹钟设置功能。
在时钟校准模块的测试中,通过与标准时间的比对,验证了时钟系统的准确性。
在闹钟设置模块的测试中,经过设置闹钟时间并等待相应时间,闹钟成功响铃,验证了系统的可靠性。
单片机课程设计 电子时钟一、课程目标知识目标: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周:课程项目与实践。
编号单片机课程设计(2013 级)题目:基于52单片机电子时钟的设计学院:物理与机电工程学院专业:电子信息科学与技术作者姓名:陈✘✘党✘✘杜✘✘指导教师:张✘✘职称:教授完成日期:2016 年7 月 2 日二〇一六年七月基于52单片机电子时钟的设计摘要本次设计的多功能时钟系统采用STC89C52单片机为核心器件,利用其定时器/计数器定时和记数的原理,结合液晶显示电路、时钟芯片DS1302电路、电源电路以及按键电路来设计计时器。
将软硬件有机地结合起来,使得系统能够实现液晶显示,显示有年、月、日、时、分、秒以及星期,还可以设置闹钟和整点报时。
其中软件系统采用单片机汇编语言编写程序,包括显示程序、闹钟程序、中断、延时程序,按键消抖程序等,并在keil中调试运行,硬件系统利用PROTEUS 强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
关键词:STC89C52芯片;时钟芯片DS1302;单片机汇编语言;液晶显示电路1 设计任务及要求分析1.1 设计任务:基于单片机的电子时钟设计1.2 要求:1.2.1 用LCD液晶作为显示设备1.2.2 可以分别设定小时、分钟和秒,复位后时间为 00 00 001.2.3 能实现日期的设置年、月、日1.3 扩展要求:如闹钟功能、显示星期、整点音乐报时等2 系统方案2.1 系统整体方案的论证电路原理设计是基于小系统板包括电源电路、复位电路、按键电路、DS1302时钟电路、液晶显示驱动电路、输出控制电路。
电源部分是用电池来提供的3v-5v,晶体振荡器采用的是12MHz的石英晶体振荡器。
整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。
时钟芯片产生时钟信号,利用单片机的I/O口传给单片机;并通过I/O口实现LCD的显示。
系统设有4个独立式按键可以对时间年、月、日和星期进行调整,还可以设置闹钟。
具体如图2.1所示:图2.1 系统整体框图3硬件设计与实现3.1单片机最小系统STC89C52是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。
52单片机时钟课程设计一、课程目标知识目标:1. 学生能理解并掌握52单片机的基本原理及其在时钟设计中的应用。
2. 学生能描述时钟电路的工作原理,包括时钟晶振、分频器等组成部分。
3. 学生能运用C语言编写程序,实现对时钟的显示、调整和时间计算功能。
技能目标:1. 学生能独立完成52单片机的时钟电路连接和程序编写。
2. 学生通过实验操作,培养动手能力和问题解决能力,能够调试并优化时钟程序。
3. 学生能够运用所学知识,结合实际需求,设计简单的时钟应用项目。
情感态度价值观目标:1. 学生通过学习单片机时钟设计,培养对电子技术和编程的兴趣,激发创新意识。
2. 学生在团队协作中,学会分享、交流和合作,提高沟通能力。
3. 学生认识到科技对社会生活的影响,增强社会责任感和时代使命感。
课程性质:本课程为实践性较强的电子技术课程,结合理论教学和实验操作,旨在培养学生的动手能力、编程能力和创新能力。
学生特点:学生已具备一定的电子技术基础知识,对编程有一定了解,但对单片机应用尚处于起步阶段。
教学要求:教师需结合学生特点,注重理论与实践相结合,关注个体差异,引导学生主动探究,培养其解决问题的能力。
通过课程学习,使学生能够将所学知识应用于实际项目中。
二、教学内容本课程教学内容主要包括以下几部分:1. 52单片机基础知识:介绍52单片机的结构、工作原理、引脚功能等,结合教材相关章节,让学生对单片机有基本的认识。
2. 时钟电路原理:讲解时钟电路的组成,包括时钟晶振、分频器等,分析时钟信号的产生、传输和作用。
3. C语言编程:复习C语言基础知识,重点讲解与52单片机编程相关的内容,如寄存器操作、I/O口编程、中断处理等。
4. 时钟程序设计:详细讲解如何利用52单片机实现时钟功能,包括时钟显示、调整和时间计算等,结合教材实例,让学生动手实践。
5. 实验操作与调试:指导学生进行时钟电路的连接、程序下载和调试,培养学生动手能力和问题解决能力。
摘要单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。
AT89S52就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。
本文详细介绍了基于AT89S52单片机的数字电子钟的设计,本电子钟可以实现日期、时间的显示和调整,带有整点提示和一个闹钟,并且可以显示当前气温。
本设计包括硬件设计和软件设计两部分。
主要硬件有:三端稳压器LM7805、AT89S52单片机、字符型液晶显示模块HY1602A、单总线数字温度计DS18B20和若干按键等。
软件大致思路为:使用12MHz的晶振,单片机内部的定时器0工作在方式1,每计数50000个机器周期(即50ms)产生一次中断,中断20次就是一秒,这样就可以实现精确计时的目的。
用数字温度计DS18B20测量当前气温,在把实时数据显示在LCD1602上的同时,不断扫描按键,如果有按键按下,则对按键做出相应的响应。
关键字:单片机;电子钟;测温; LCD1602;AbstractMCU in the application of electronic products becomes more widely, particularly the 51 series of MCU, because of its ease of use, low prices and other advantages,it’s in a large market share. AT89S52 is a more mature models in the51series, it is fully compatible with the directive MCU 51.This paper describes the MCU based on the AT89S52 the design of digital electronic clock, the electronic clock can be achieved date, time and adjust the show, it also has the exact point timekeeping and a clock,for the better it can display the current temperature.The design includes hardware and software design in two parts. Main hardware: three-terminal regulator LM7805, AT89S52 MCU, character LCD module HY1602A, single-bus digital thermometer DS18B20 and a number of buttons. the general idea for Software: by use of 12 MHz crystal, the MCU's internal timer 0 works in the methods 1, each count 50,000 machine cycle (50 ms) resulted in an interruption, Composition a second by interruptting 20 times, so that you can achieve precise The purpose of time. After DS18B20 digital thermometer measuring the current temperature,it will be displayed the real-time data on the LCD1602 at the same time, and constantly scan button, if a button is depressed, it will be produce the corresponding response with the button.Keywords: MCU; electronic clock; Temperature measure; LCD1602;目录摘要 (i)Abstract ................................................................................................................ i i 1 绪论 (1)1.1 设计要求 (1)1.2 设计思路 (1)1.3 设计重难点 (2)2 硬件设计 (3)2.1 器件选型 (3)2.2 硬件总图 (3)2.3 器件介绍 (4)2.3.1 电源模块 (4)2.3.2 单片机AT89S52 (5)2.3.3 数字式温度传感器DS18B20 (12)2.3.4 LCD1602显示模块 (15)3 软件设计 (19)3.1 软件设计思路 (19)3.1.1 实现功能 (19)3.1.2 显示状态 (19)3.1.3 定义变量 (19)3.1.4 接线方式 (20)3.1.5 编程思路 (20)3.2 主程序流程图 (21)3.3 程序清单及注释 (22)3.3.1 主程序“电子钟.C” (23)3.3.2 延时子程序“DELAY.C” (39)3.3.3 扫描按键子程序“KEY_SCAN.C” (40)3.3.4 温度测量子程序“DS18B20.C” (41)3.3.5 液晶显示子程序“LCD1602.C” (43)4 精度分析 (49)4.1 误差来源 (49)4.1.1 硬件误差 (49)4.1.2 软件误差 (49)4.1.3 消除误差的办法 (49)5 总结与展望 (52)致谢 (53)参考文献 (54)附录:硬件电路设计图 (55)1 绪论“一寸光阴一寸金,寸金难买寸光阴”!时间对于我们每一个人都是非常宝贵的,所以钟表作为人们掌握时间的工具就显得十分重要!钟表的出现已经有几百年历史,尤其是摆钟和后来的怀表,可以称作钟表中的经典,不仅大方实用,而且制作精美。
基于STC89C52单片机时钟的设计与实现1. 本文概述本文主要介绍了基于STC89C52单片机和DS1302时钟芯片的电子时钟设计与实现。
该电子时钟系统具有年月日等基本时间显示功能,并集成了秒表计时处理、闹钟定时、蜂鸣器和温度显示等附加功能。
系统采用LCD1602作为液晶显示器件,通过单片机对时钟和温度等数据进行处理后传输至LCD进行显示。
用户可以通过按键对时间进行调节,同时,单片机还通过扩展外围接口实现了温度采集等功能。
本文的目标是提供一个功能丰富、易于操作的电子时钟系统,为学习和应用单片机技术提供一个实用的案例。
2. 系统设计要求在设计基于STC89C52单片机的时钟系统时,我们需要考虑以下几个关键的设计要求:时钟系统必须具备基本的时间显示功能,能够以小时、分钟和秒为单位准确显示当前时间。
系统还应支持设置闹钟功能,允许用户设定特定的时间点进行提醒。
系统需要保证长时间稳定运行,具备良好的抗干扰能力,确保在各种环境下都能准确计时。
还应具备一定的容错能力,即使在操作失误或外部干扰的情况下,也能保证系统的正常运行。
用户界面应简洁直观,便于用户快速理解和操作。
时钟的显示部分应清晰可见,即使在光线较暗的环境下也能保持良好的可视性。
同时,设置和调整时间的操作应简单易懂,方便用户进行日常使用。
在设计时钟系统时,应考虑到未来可能的功能扩展,如温度显示、日期显示等。
系统的设计应具有一定的灵活性和扩展性,以便在未来可以轻松添加新的功能模块。
鉴于时钟系统可能需要长时间运行,能耗是一个重要的考虑因素。
设计时应选择低功耗的元件,并优化电源管理策略,以延长电池寿命或减少能源消耗。
在满足上述所有要求的同时,还需要控制成本,确保产品的市场竞争力。
这可能涉及到对单片机的编程优化、选择性价比高的外围元件等措施。
通过满足上述设计要求,我们可以确保开发出一个功能完善、稳定可靠、用户友好、易于扩展、节能环保且成本效益高的STC89C52单片机时钟系统。
目录前言 (1)1. 设计任务和要求 (2)1.1 设计要求 (2)1.2 设计思路 (2)2. 总体设计方案 (2)2.1 方案论证 (3)2.1.1 核心控制模块 (3)2.1.2 显示模块 (3)2.1.3 计时模块 (3)2.1.4 按键模块 (3)2.2 系统框图和原理分析 (4)3. 硬件设计 (4)3.1 单片机最小系统 (4)3.2 按键控制电路 (5)3.3 时钟显示电路 (6)3.4 电源模块 (7)4. 软件设计 (8)4.1 键盘扫描程序流程图 (8)4.2 数码管显示程序流程图 (9)4.3 中断服务程序流程图 (10)5. 关键代码分析 (12)5.1 闹钟程序 (12)5.2 显示程序 (12)5.3 中断服务函数 (13)6. 软件调试 (13)7. 设计总结 (14)参考文献 (15)附录一:电路图和PCB图......................................................................................... 错误!未定义书签。
附录二:源程序 .. (16)附录三:部分实物运行图 (26)前言时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
电子时钟作为单片机基础学习的一个重要的典型,是很多初学的学习单片机的很好的例子,是对单片机的定时器的一个重要的应用。
可以说,学习单片机的两个重点就是中断和定时器,学会了数字时钟的编程就是对单片机学习的一个很好的综合应用。
1. 设计任务和要求1.1 设计要求应用知识:I/O口应用、数码显示、定时/计数器、中断、按键。
基本要求:该时钟系统具有时钟功能,能准确显示时、分、秒。
系统还应具有校正功能,如准点报时,能够修改当前的时间。
扩展部分:具备设定闹钟和定时闹钟响功能。
1.2 设计思路通过软件程序的编程,硬件电路的调试,实现了简单时钟系统的设定,使得该系统具有正常走时,能够正确的显示时、分、秒;能够进行调时,修改当前的时间,并且能够设定闹钟,使闹钟能够定时响。
首先是时间的调试:若要进行正常的时间调试,需要有进入时间的调时试状态按键以及调试是加或者是减的按键,即每个状态要3个按键,共有时、分、秒三个状态,,可通过同一个按键来控制定时器的走与停,以及通过按键的次数来控制所进入的调试状态是时、分还是秒。
当调试进入某一状态时,需要分别通过两个按键来控制时间的加与减,而此时的加与减的按键相当于是局部变量,可以在三个状态中分别使用。
这样一共就只需要3个按键,大大节省了硬件并且简化了软件的编程。
其次是闹钟设定:基于时间调试的设置思路,同样将进入闹钟状态以及闹钟设定的按键分开,考虑到此时闹钟设置时,数码管的显示问题以及定时器的走时问题,故将进入闹钟的设定状态和时设定、分设定的按键分开, key4为进入闹钟状态按键,key4键切换时分秒和闹铃时间的显示。
2.总体设计方案2.1 方案论证2.1.1 核心控制模块方案1:采用FPGA作为核心控制模块。
由于FPGA具有强大的资源,使用方便灵活,易于进行功能扩展,特别是结合了EDA,可以达到很高的效率。
此方案逻辑虽然简单一点,但是一块FPGA的价格很高,对于做数字钟来说有一点浪费,而且FPGA比较难掌握,本设计中不作过多研究,不采用此方案。
方案2:采用AT89C51作为核心控制模块。
此方案中AT89C51单片机的入门学习相对交容易,易于理解,外围电路比较简单,成本比较低,此系统控制灵活能很好地满足本课题的基本要求和扩展要求。
因此选用该方案。
2.1.2 显示模块方案1:采用LCD1602液晶显示屏。
液晶极其省电,但是使用有温度范围限制,且因是反光式的,在外界光线很明亮的情况下很容易看不清楚。
液晶是分子偏转引起的暗影效果,显示不是很清晰。
方案2:采用LED数码管显示。
数码管在低电压小电流的驱动下就能够发光,发光响应时间短,高频性好,单色性好,亮度高,显示相对而言比较清晰。
而且体积小,重量轻,抗冲击性能好,寿命长,成本低。
因此选用该方案。
2.1.3 计时模块方案1:采用实时时钟芯片。
现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等。
这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需要程序干预。
因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。
方案2:使用单片机内部的可编程定时器。
利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,但程序设计较为复杂。
因此选用该方案。
2.1.4 按键模块方案1:采用矩阵按键,矩阵按键需要通过扫描控制和译码,设计时需要有数值移位寄存器对已有数值进行存储和调用。
软件程序设计比较繁琐,硬件连接复杂。
方案2:采用独立按键。
单片机仿真板上有专用独立按键,连接方便,使用简单。
且易于软件编程,适合本系统的设计。
因此选用该方案。
2.2 系统框图和原理分析本电子钟的所有的软件、参数均存放咋AT98C52的Flash ROM和内部RAM中减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
由于AT98C52芯片内部的Flash ROM有8KB,RAM有256个字节,故软件下载编译时有足够的存储空间。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
3. 硬件设计3.1 单片机最小系统单片机最小化模块由时钟电路、复位电路和AT89S52单片机构成。
时钟电路由振荡电路和分频电路组成。
其中振荡电路由高增益反相器以及并联外接的石英晶体和电容构成产生振荡脉冲。
而分频电路则用于把振荡脉冲分频,已得到所需的时钟信号。
振荡电路由单片机芯片的XTAL1端输入,XTAL2端输出。
通过这两个引脚并接一个石英晶体振荡器和两个电容(电容一般取22pF)。
而AT89S52中自带有分频电路所以不需要外接电路对脉冲信号进行分频。
复位是单片机的硬件初始化操作,经复位操作后,单片机系统才能开始正常工作。
复位电路用于产生复位信号,通过RET引脚送入单片机,进行复位操作。
图2 单片机最小系统3.2 按键控制电路输入模块由六个按键构成,一个电源开关键,一个复位键,。
键盘通过程序控制来完成电子钟的启、停及时间调整。
电源开关键控制电源的闭合和断开。
复位键控制单片机系统的复位操作。
(1) key1用于设置时钟和闹钟时间。
时钟:key1按下第1次,时间停止,可调节秒;key1按下第2次,可调节分;key1按下第3次,可调节时;key1按下第4次,退出时间设置,时间以设置时间为起始。
闹钟:当key4按下后,key1按下第1次,可调节秒;key1按下第2次,可调节分;key1按下第3次,可调节时;(2) A. key2用于调节时间的加; B. key2还可用于查看设置的闹钟。
key2按下第1次,从时钟界面切换到闹钟界面,查看第1组闹钟;key2按下第2次,查看第2组闹钟;key2按下第3次,查看第3组闹钟;key2按下第4次,退出查看闹钟界面,时间回到时钟界面。
(3) key3用于调节时间的减。
(4) key4用于时钟界面和闹钟界面的切换。
key4按下,进入闹钟设置界面,当key4再次按下时回到时钟界面。
图3按键3.3 时钟显示电路时钟显示电路为2个四位一体的LED所组成的八位数码管显示器。
数码管都为共阳极接法,由74LS2573芯片进行驱动和阻值都为510Ω的八个电阻进行限流,提高显示亮度,数码管显示电路采用动态显示方式。
图4数码管显示电路3.4 电源模块直流稳压电源一般由电源变压器、整流滤波电路及稳压电路组成。
直流稳压电源设计的主要内容是根据性能指标,选择合适的电源变压器、集成稳压器、整流二极管及滤波电容。
本设计中所需要的电源有PC机的USB口直接供电。
图5电源电路4. 软件设计4.1 键盘扫描程序流程图时钟开始计时后,如果有按键按下,则进行按键消抖,否则结束程序。
再一次进行判断,如果没有按键按下就结束本次循环,如果确实有按键按下,保存按键的值,然后判断按键是否松开,如果按键松开,结束本次程序循环。
如果按键没有松开,系统调用显示程序,进行按键操作。
图6键盘扫描程序流程图4.2 数码管显示程序流程图程序开始运行进入中断时采取保护现场,由程序选择寄存器组存放相关数据,通过现数码管动态显示时间,如果数码管显示到达最高位,则回到选择数据,否则恢复现场。
结束循环。
图7数码管显示流程图4.3 中断服务程序流程图进入中断服务函数首先保护现场,选择相关的寄存器存放数据。
把计数器重装初值进行计数,打开中断。
计数器是否计数到20,如果到20则秒加一,如果秒到60,把秒清零,分加一。
否则退出循环,如果分到达60分,就把分清零,时加一。
否则退出循5. 关键代码分析5.1 闹钟程序/****************闹钟判断函数*****************************/void alarm_judgement(void){if(flag==1) //判断是否设置有闹钟{if(((miao==xx1)&&(fen==yy1)&&(shi==zz1))||((miao==xx2)&&(fen==yy2)&&(shi= =zz2))||((miao==xx3)&&(fen==yy3)&&(shi==zz3))){ //判断时间是否到达设置闹钟的时间,如果是就打开蜂鸣器、继电器。