毕业设计基于单片机技术数字钟电路的设计.docx
- 文档编号:5792065
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:22
- 大小:869.13KB
毕业设计基于单片机技术数字钟电路的设计.docx
《毕业设计基于单片机技术数字钟电路的设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于单片机技术数字钟电路的设计.docx(22页珍藏版)》请在冰豆网上搜索。
毕业设计基于单片机技术数字钟电路的设计
课程综合实践报告
课题名称:
基于单片机技术数字钟电路的设计系部:
电子工程系
2010年6月13
目录
第1节摘要……………………………………………………………………………4
第2节引言……………………………………………………………………………5
第3节设计方案的选择与论证………………………………………………………6
第4节基于单片机的数字钟的电路设计……………………………………………7
4.1设计思想………………………………………………………………………7
4.2电路设计及其工作原理………………………………………………………7
4.2.1控制部分:
AT89C51单片机………………………………………………7
4..2.2数码管显示部分……………………………………………………………9
PROTEL原理图…………………………………………………………11
PCB图……………………………………………………………………12
第5节软件设计………………………………………………………………………13
5.1程序原理概述…………………………………………………………………13
5.2总的设计思想…………………………………………………………………13
第6节结束语…………………………………………………………………………14
附录
1、数字钟控制程序……………………………………………………………………15
2、数字钟模块器件焊接清单…………………………………………………………18
3、USB下载AT89C51单片机的使用说明…………………………………………19
4、照片…………………………………………………………………………………21
5、自绘封装
6、原理图
第1节摘要
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本文介绍了基于单片机的数字钟的设计,详细讨论了它从软件上实现的过程,重点在时钟调整的方式:
查询和中断的比较,然后,对数字钟的稳定性和精确性作了相关的讨论。
在文章的最后,给出了采用中断方式实现的数字钟的源程序。
关键字:
单片机,数字钟,数据缓冲区,中断,定时,消抖
Abstract
Inrecentyears,withcomputersintheinfiltrationandthedevelopmentoflarge-scaleintegratedcircuits. SCMapplicationissteadilydeepening,asithasstrongfunction,smallsize,lowpowerdissipation,lowprices,reliable,easytousefeatures,itisparticularlysuitedtoandcontrolofthesystem,increasinglywidelyusedinautomaticcontrol,intelligentinstruments,gauges,dataacquisition,militaryproductsandhouseholdappliances,andotherareas,isoftenmicrocontrollerasacorecomponenttouse,Inlightofspecifichardwarearchitecture,andapplication-specificsoftwarefeaturesobjectcombinetomakeperfect.
Inthispaper,basedonsingle-chipdigitalclockdesign,discussedindetailfromthesoftwarerealizetheprocess,focusingontheclockadjustintheway:
queriesanddisruptionofcomparison,then,onthedigitalclockmadeofthestabilityandaccuracyrelateddiscussion.Inthelastarticle,givewayusinginterruptedrealizethesourceofthedigitalclock.
Keywords:
MCU,digitalclock,databuffer,interruption,timing,eliminationBuffeting
第2节引言
本系统采用单片机AT89C51控制,以AT89C51为核心,它完成整个系统的信息处理及协调功能,本次设计我们选用ATMEL公司的AT89C51芯片,其功能强大,兼容性好,还支持软件选择的空间和掉电两种节电方式。
本设计的软件,硬件都采用模块化的设计方法,提高了设计的效率。
本次设计通过对一个实现定时、时钟显示等功能的时间系统的设计,其中结合了数据转换显示、数码管显示、动态扫描、单片机定时中断等技术。
系统由AT89C51、LED数码管、按键、三极管、VD5026、VD5027、电阻、晶振等组成。
能实现时钟时、分、秒的显示,也具有时间设置。
文章后附有电路图、程序清单。
第3节设计方案的选择与论证
该课题主要有两种方案:
一种是用数字电路通过硬件实现,另一种是用单片机通过软件编程实现。
在以上两种方案中:
第一种是直接采用的是数字电路,但是在外围电路和控制比较麻烦,需要比较多的器件来控制;第二种是采用软件来实现一些特定功能,硬件电路只需要一些显示部件和控制部件,其他的都是由软件来实现。
第一种一切都由硬件实现,几乎没有软件编程,但电路复杂、芯片多、后续制板及硬件调试麻烦而且成本高;第二种虽电路简单、芯片少、成本低,但编写程序相当复杂。
经过一番利弊的权衡及对今后电子业发展趋势的考量,最后敲定用单片机方案实现。
总的来看,单片机已成为工控领域、尖端武器、日常生活中最广泛使用的计算机,且将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格方向发展,因此敲定用单片机加软编程方案符合今后电子业发展趋势;另外运用此方案既能将自己以前学过的模拟电路、数字电路、单片机、汇编语言、Protel99等知识结合实践进行一次全面的检测,又能为将来实际制作电路积累宝贵的经验。
另外用单片机实现本设计也有两种可选的子方案:
第一种,用软件编程实现设计中的钟控功能;另一种则选用单片机加时钟芯片实现钟控功能。
在本次主要的是时间的设计,因此对时间的精度要求是比较高的,竟量是误差减少到最小值,但是为了更好的练习复习自己在以前所学习的编程能力,所以不采用单片机加时钟芯片的方案,直接用软件编程实现钟控功能。
第4节基于单片机的数字钟电路的设计
4.1设计思想
单片机控制系统是整个控制系统的核心,它完成整个系统的信息处理及协调功能。
本次我们选用ATMEL公司的AT89C51芯片;其功能强大,兼容性好。
AT89C51是与8051兼容的CHMOS微控制器。
与CHMOS工艺的8051一样,支持软件选择的空闲和掉电两种节电方式。
在AT89C51的P0.0—P0.7是数码管的段选;P2.0—P2.5是数码管的位选。
P1.0调时接开关;单片机9脚接开关。
4.2电路设计及其工作原理
4.2.1控制部分:
AT89C51单片机
AT89C51单片机概述:
AT89C51单片机是国Atmel公司生产的采用高性能的静态89C51设计,是一个低电压,高性能CHMOS8位单片机,片内含4kbytes的可反复擦写的只读Flash程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
AT89C51是一个功能强大的单片机,但它只有40个引脚,32个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。
此外,由于器件采用了动态设计,可提供很宽的操作频率范围(频率0HZ~24MHZ)。
即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。
省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。
图4-1AT89C51时钟电路连接
在本设计中AT89C51的时钟电路采用内部时钟方式,此方式是在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器。
在本设计中XTAL1和XTAL2两端跨接12MHz晶体振荡器,其发出的脉冲直接送入内部时钟电路。
本设计采用按键手动复位的按键电平复位 。
图4-289C2051外部复位电路设计
AT89C51在本设计中的I/O口应用:
AT89C51的P0.0~P0.7控制244译码实现数码管段选;AT89C51的P2.0~P2.5控制三极管电路实现数码管位选;AT89C51的P1.0连接按钮,用于输入校时。
4.2.2数码管显示部分
本设计中所涉及数码管皆采用共阳数码管,显示电路为动态扫描式显示。
图4-3数码管及显示电路选择
数码管显示位选:
AT89C51的P2.0~P2.5输出控制数码管位选,在本次设计的电路中,因为是使用的是共阳数码管,因此由AT89C51的P2.0~P2.5的输出控制公共端,使之输出相应的端口为低电平,控制数码管点亮。
74ls138芯片简介:
图4-474LS138芯片
图4-6数码管位选原理
数码管段选AT89C51的P2.0~P2.5控制7448译码实现数码管段选,在本次设计的电路中,由于二级管使用的是共阳数码管,在输出的是要低电平。
在设计的时候,怕在芯片输出的电流信号过大,因此在输出的时候加了限流电阻,为保护数码管,防止烧坏。
图4-7数码管段选原理
图4-12电路图
图4-13PCB图
第5节软件设计
5.1程序原理概述
在程序设计这一环节,本次将其分为时钟中断程序、时钟显示程序、键盘程序、主程序、各程序衔接程序。
在以下几节中将根据实际各个部分的编程及调试顺序,依次介绍各程序的设计思想和流程。
5.2总的设计思想
在本次主要是使用的是数字闹钟,因此主要部分是数字钟的实现,因此要实现这样的功能必须要在硬件的电路上实现数字钟的实现,然后在此基础上逐步实现其他的功能,
数字电子钟的程序大概可以分为三个部分:
时钟主程序、时钟显示程序、时钟中断程序。
时钟主程就是对时钟的各个模块的实现。
时钟显示程序是将秒显示用发光二极管显示,每一秒点亮一次;将分个位、分十位、时个位、时十位数据存储单元的计时数据通过设置段选和位选、由74LS47段选译码,最后显示在相应的数码管上。
时钟中断程序则通过重设计时、1秒计时与时钟程序相结合实现秒个位、秒十位、分个位、分十位、时个位、时十位数据存储单元的数据按计时规则加1进位和清零,以配合时钟显示程序实现数字电子钟。
在实现数字电子钟的基础上,逐一添加调试键盘程序,最后实现设计目标。
键盘程序就是通过软件扫描各按键状态来实现各按钮的功能。
第6节结束语
快到设计的时候,我非常的担心,因为此次课程设计它是一个综合能能力的考核,实际操作的部分我并不担心,可是一想到要在短短的一上午之内画好原理图及PCB,我便紧张,一是因为我画图比较慢,二是因为我没有办法提前画好原理图。
为了更好地完成此次任务,我在周一便紧张的准备着画原理图的之前准备,每个元件在库内的查找名称,量它们的封装大小,紧张的到了周二的晚上,我到老乡那里画原理图,从六点一直画到九点,画了好多,改了好多,原理图工作我只完成了1/3.,和老乡说了一下,借他的电脑回宿舍继续画图,不知不觉之中,已到十一点四十,看着画好的原理图,我高兴的躺了,可是精神高度紧张,躺在床上,脑子还是在想着明天怎么画PCB图。
周三上午,大家都在紧张的画着自己的图,之前做好准备的同学,继续画图与完善,之前没做准备的同学,从别人那复制过来,也在继续继续着自己的工作。
在短短的一个上午的时间里,我独立的完成了自己的工作,我很开心。
有一个用了别人之前准备的同学,笑着对我说,“其实你昨晚没有必要睡得那么晚的,我们不都是画好课吗?
”我没有作答,是的,大家都在规定的时间里完成了自己的任务,但我相信,每个人此刻的心情绝对是不同的,其实,成功不只是结果,而是我们为之付出努力的过程。
通过一周的紧张的学习与生活,我学到了很多,懂得了很多,只要敢想,只要肯动脑筋,有条件的,利用条件,没条件的就创造条件,那我们终究会得到应有的收获。
附录1
数字钟控制程序:
DATA_SEGSEGMENTDATA;定义一个DATA段
STACKSEGMENTIDATA;定义一个堆栈段
BIT_SEGSEGMENTBIT;定义一个位段
bKeyBITP1.0;
IdleConstEQU50
RSEGSTACK
DS10H;16个字节的堆栈
RSEGDATA_SEG;开始DATA_SEG段
buffer:
DS6;6个字节的显示缓冲区
ms50:
DS1;50ms计数
ms250:
DS1;250ms计数
sec:
DS1;秒
min:
DS1;分
hour:
DS1;时
ms50_1:
DS1;存放多少个50ms,用于记录按键时间
SetPos:
DS1;设置位置
SetPos1:
DS1;需要屏蔽的数码管
RSEGBIT_SEG
bIdle:
DBIT1;省电模式
bTwinkle:
DBIT1;当前设置位置闪烁
CSEGAT0;相当于小汇编的ORG
LJMPMAIN
CSEGAT000BH;定时器T0中断处理入口地址
LJMPINT_Timer0
CSEGAT001BH;定时器T1中断处理入口地址
LJMPINT_Timer1
CSEGAT0100H
MAIN:
MOVSP,#STACK-1;堆栈
CLRbIdle
CLRbTwinkle
MOVms50,A;清零ms50
MOVms250,A
MOVhour,#12;设定初值:
12:
59:
50
MOVmin,#59
MOVsec,#50
MOVTH0,#60;定时中断计数器初值
MOVTL0,#176;定时250ns
MOVTMOD,#11H;定时器0,1:
方式一
MOVIE,#8AH;中断初始化,EA=1,ET0=1,ET1=1
SETBTR0;开定时器T0
MOVSetPos,#0FFH;
MAIN1:
ACALLAdjustBuffer;调整显示缓冲区
MAIN2:
ACALLKey;调用键扫描
ACALLDisplay
JNBF0,MAIN2
CLRF0
SJMPMAIN1;需要刷新显示时间
;中断服务程序
INT_Timer0:
MOVTL0,#176+5
MOVTH0,#60
PUSH01H
MOVR1,#ms50
INC@R1;50ms单元加1
CJNE@R1,#5,ExitInt
MOV@R1,#0;恢复初值
INCR1
MOVA,SetPos
CJNEA,#0FFH,INT_Timer0_1
SJMPINT_Timer0_2
INT_Timer0_1:
CPLbTwinkle
SJMPExitInt1
INT_Timer0_2:
INC@R1
CJNE@R1,#4,ExitInt
MOV@R1,#0;恢复初值
INCR1
INC@R1;秒加1
CJNE@R1,#60,ExitInt1
MOV@R1,#0
INCR1
INC@R1;分加1
CJNE@R1,#60,ExitInt1
MOV@R1,#0
INCR1
INC@R1;时加1
CJNE@R1,#24,ExitInt1
MOV@R1,#0
ExitInt1:
SETBF0
ExitInt:
POP01H
RETI
;中断服务程序
INT_Timer1:
MOVTL0,#176+5
MOVTH0,#60
INCms50_1
RETI
HexToBCD:
MOVB,#10
DIVAB
MOV@R0,B
INCR0
MOV@R0,A
INCR0
RET
AdjustBuffer:
MOVR0,#buffer
MOVA,sec
ACALLHexToBCD
MOVA,min
ACALLHexToBCD
MOVA,hour
ACALLHexToBCD
RET
;显示
Display:
JNBbIdle,Display3
RET;省电模式
Display3:
PUSHB
PUSHACC
PUSHDPL
PUSHDPH
PUSH00H
MOVR0,#buffer
MOVB,#0FEH
MOVDPTR,#SEG_TAB
Display1:
MOVA,@R0
MOVCA,@A+DPTR;取段码
MOVP0,A
MOVA,B
JNBbTwinkle,Display4
ORLA,SetPos1
Display4:
MOVP2,A;选种数码管
CALLDelay1ms
MOVA,B
RLA
JNBACC.6,Display2
MOVB,A
INCR0
SJMPDisplay1
Display2:
POP00H
POPDPH
POPDPL
POPACC
POPB
RET
SEG_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;段码
DB080H,90H,88H,83H,0C6H,0A1H,86H,8EH
DB0FFH,0BFH;延时1ms
Delay1ms:
PUSHACC
MOVA,#230
DJNZACC,$
MOVA,#230
DJNZACC,$
POPACC
RET
;设置功能
SetFunTab:
AJMPNoSet;不需要调整
AJMPSetHour;调整小时
AJMPSetMin;调整分钟
AJMPSetSec;调整秒钟
NoSet:
CLRbTwinkle
RET;不在设置状态
SetHour:
INChour
MOVA,hour
CJNEA,#24,SetHour1
MOVhour,#0
SetHour1:
SJMPSetFun1
SetMin:
INCmin
MOVA,min
CJNEA,#60,SetMin1
MOVmin,#0
SetMin1:
SJMPSetFun1
SetSec:
INCsec
MOVA,sec
CJNEA,#60,SetFun1
MOVsec,#0
SetFun1:
SETBF0
RET
;调整闪烁位置
SetPosTab:
AJMPNoSetPos
AJMPSetHourPos
AJMPSetMinPos
AJMPSetSecPos
NoSetPos:
MOVSetPos1,#0
RET
SetHourPos:
MOVSetPos1,#30H
RET
SetMinPos:
MOVSetPos1,#0CH
RET
SetSecPos:
MOVSetPos1,#03H
RET
Key:
ACALLDisplay
JNBbKey,Key4
JNBTR1,Key3
CLRTR1
SETBbKey
MOVA,ms50_1
CJNEA,#10,$+3
JNCKey1
;调整时间
SetFun:
MOVA,SetPos
INCA
RLA
MOVDPTR,#SetFunTab
JMP@A+DPTR
Key1:
CJNEA,#IdleConst,$+3
JNCKey2
;进入设置状态
SetPosFun:
INCSetPos
MOVA,SetPos
CJNEA,#3,SetPosFun1
MOVSetPos,#0FFH;退出设置状态
SetPosFun1:
MOVA,SetPos
INCA
RLA
MOVDPTR,#SetPosTab
JMP@A+DPTR
Key2:
SETBbIdle;进入省电模式
MOVP2,#0FFH
Key3:
RET
Key4:
JNBTR1,Key5
MOVA,ms50_1
CJNEA,#IdleConst,$+3
JNCKey2
RET
Key5:
ACALLDisplay
ACALLDisplay
ACALLDisplay
ACALLDisplay
JNBbKey,Key6
SJMPKey3
Key6:
CLRbIdle
MOVTH1,#60
MOVTL1,#176
SETBTR1
MOVms50_1,#0
RET
END
附录2NO.4数字钟模块器件焊接清单
品名
封装
规格
数量
器件号
功能
焊接注意
电阻
直插(RJ1/4W)
100
6
R1,R4,R7,R10,R14,R17
负载电阻
200
1
R13
限流
1K
1
R20
限流
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 基于 单片机 技术 数字 电路 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)