秒表单片机课程设计修改版.docx
《秒表单片机课程设计修改版.docx》由会员分享,可在线阅读,更多相关《秒表单片机课程设计修改版.docx(26页珍藏版)》请在冰豆网上搜索。
秒表单片机课程设计修改版
单片机技术课程设计说明书
数字式秒表
系、部:
电气与信息工程系
学生姓名:
指导教师:
职称讲师
专业:
班级:
完成时间:
2010年12月10日
学号:
摘要
本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成数字式秒表的硬件电路的。
电子秒表电路主要由AT89S52单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八位数码显示和多次计时,能通过控制电路能控制时间的暂停和开始,能够最少十次计时,查询计时时间。
关键字:
AT89S52数码管最小系统
Abstract
ThedesignofthefinishedproductisbasedontheSCMsystemtoincreasetheminimumdisplaycircuitandcontrolcircuittocompletethedigitalwatchesofthehardwarecircuit.StopwatchcircuitmainlybytheminimumsystemAT89S52microcontrollercircuit,sevensegmentLEDdisplaycircuitandcontrolthedynamiccircuit,itcanachieveeightdigitaldisplayandmultipletime,throughthecontrolcircuittocontrolthesuspensionandthebeginningoftime,toatleasttenSecondtime,thequerytime.
Keywords:
AT89S52digitalminimumsystem
目录
1总体设计方案简介..............................................................1
1.1设计课题任务...............................................................
1.2系统分析..................................................................1
1.3系统方案..................................................................1
1.3.1方案设计..............................................................1
1.3.2方案论证...............................................................2
2系统硬件设计...................................................................3
2.1控制芯片的介绍..............................................................3
2.2单片机最小系统..........................................................4
2.2.1振荡电路――让单片机活起来的心脏.........................................4
2.2.2复位电路――恢复初始状态值...............................................4
2.2.3程序下载接入电路.......................................................4
2.3电源电路设计...............................................................5
2.4显示电路设计...............................................................6
2.5控制电路设计................................................................6
2.6总体电路设计.................................................................7
2.7元件清单...................................................................7
3系统软件设计.................................................................8
3.1程序设计思路...............................................................8
3.2流程图.....................................................................9
3.3源程序.....................................................................11
3.4仿真结果...................................................................18
4课程设计体会..................................................................19
致谢...............................................................................20
附录1.............................................................................21
附录2.............................................................................22
参考文献...........................................................................23
1总体设计方案简介
1.1设计课题任务
设计一个具有特定功能的数字式秒表。
该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数字式秒表应具有开始、暂停、连续、清零和停止功能
1.2系统分析
设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。
设计框图如图一所示;
1.3系统方案
1.3.1方案设计
方案一:
利用分分离门电路和集成块电路设计数显定时器;可分为五个功能模块:
秒脉冲发生器、计数器、译码显示电路、时序控制电路。
秒脉冲发生器:
555振荡器振荡周期T=0.693(R5+2R6)C=0.72,频率f=1.39Hz;计数器和控制电路是系统的主要部分,计数器是用可加(减)的计数方法,它是十进制计数的方式,选用74LS192,计时器完成计时功能;控制电路具有直接控制计数器的启动计数、暂停/连续计数、查询所计数、译码显示电路显示等功能。
设计框图如二所示;
方案二:
利用AT89S52单片机设计数显定时器和定时器。
此方案采用AT98S52单片机系统来实现。
单片机软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。
单片即系统可用数码管显示秒表的值,能用键盘输入暂停,并可实现报捷。
本方案选用了AT98S52芯片(内部含有8KB的EEPROM),不需要外扩展存储器,可使系统整体结构更为简单。
设计框图如图三所示;
1.3.2方案论证
方案一是电子式,时间走的很准时,也能达到报警的功能实现,显示时间是现代式的数码管显示,但要做好是有很大的难度的,线非常之多,元件分散、多,容易把线接错;我采用了方案二以AT98S52芯片为中心控制系统,可实现显示、键盘控制、报警等功能,大大提高了系统的智能化,也使得系统所测结果精度大大提高。
故经过对三种方案的比较本设计及制作采用了。
2硬件设计
2.1控制芯片的介绍
AT89S52(与AT89S51相同)单片机的外型如图四所示。
单片机可分为通用型和专用型,种类繁多。
这里我们主要介绍AT89S52单片机是属于典型代表的MCS-51系列单片机,它是一种能处理8位数据的通用型单片机。
以Atmel公司生产的具有CMOS工艺、低功耗、高性能的AT89S52为例,介绍单片机的工作原理、控制程序的编写及开发应用。
AT89S52是一个高性能CMOS8位单片机,芯片内集成了通用8位中央处理器,片内含8kBytes的可反复擦写1000次的Flash只读程序存储器(ROM),支持ISP(In-systemprogrammable)功能。
AT89S52内部有128bytes的随机存取数据存储器(RAM),5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
兼容标准MCS-51指令系统及80C51引脚结构。
图四
AT89S52有40个引脚,32个外部双向输入/输出(I/O)口。
该芯片还具有PDIP40、TQFP44和PLCC44三种封装形式,以适应不同产品的需求。
外型和封装形式如图四所示。
从外观上看单片机就是一块集成电路,它与在模拟电路和数字电路中学习过的集成电路电路最主要的区别是:
普通集成电路电路的引脚功能基本上固定的,而单片机的一些引脚的功能是可以通过编程进行控制,一些引脚既可作输入又可作输出。
单片机广泛用于工业控制、智能仪器仪表、计算机设备及网络、通信领域、家用电器、医用设备、军用设备等各个方面。
对于单片机这样的集成电路,要设计让它完成一个特定的工作任务,除完成设计相关的硬件电路外,还要设计相应的控制软件,才能使整个电路按照设计要求自动地进行工作。
所以,电子电路学习到单片机这个知识层次时,除要学习相关硬件知识,还学习相关软件设计知识,才能对单片机进行控制和应用。
单片机的开发和应用,是利用硬件和软件的结合来实现的。
由于单片机的功能强大,充分理解各引脚功能,灵活编写控制程序去控制引脚功能,完成各种需要的设计。
2.2单片机最小系统
2.2.1振荡电路――让单片机活起来的心脏
AT89S52是内部具有振荡电路的单片机,只需在18脚和19脚之间接上石英晶体(如图六中所示),给单片机加上工作所需直流电源,振荡器就开始振荡起来。
振荡电路就为单片机工作提供了所需要的时钟脉冲信号,使单片机的内部电路,单片机的内部程序(若有)开始工作起来。
振荡电路不工作,整个单片机电路都不能正常工作。
AT89S52常外接6MHz、12MHz的石英晶体,图中接入的是12MHz的石英晶体,最高可接24MHz石英晶体。
18脚和19脚分别对地接了一个20P的电容,目的是防止单片机自激。
如果从18脚输入外部时钟脉冲,则19脚接地。
2.2.2复位电路――恢复初始状态值
复位电路就是在RST端(9脚)外接的一个电路,目的是当单片机上电开始工作时,内部电路从初始状态开始工作,或者在工作中要想人为的让单片机重新从初始状态开始工作。
在时钟工作的情况下,只要AT89S52的复位引脚高电平保持两个机器周期以上的时间,AT89S52便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且从地址0000H处开始读入程序代码而执行程序。
具体电路如图六所示,由C1和R2构成上电自动复位电路,S17实现手动开关复位。
2.2.3程序下载接入电路
图六中有一个下载线接口J13,J13的1脚接5伏电源,2、3、4脚接单片机的P1口的P1.5、P1.6、P1.7三个引脚,5脚接复位引脚,6脚接地。
在计算机中编写好的程序通过数据下载线连接到单片机实验电路插接口(J13),实现从计算机将程序下载到单片机的程序存储器中,完成单片机的程序写入工作。
图六单片机最小系统
由于AT89S51不仅象89C51支持程序的并行写入,而且支持ISP在线可编程的串行写入,利用下载线将计算机将原程序编译后进行串行写入到AT89S51,速度快、稳定性好,同不时需要VPP烧写高压,只要4~5V供电即可完成写入。
所以,本书主要介绍用串行写入方式将程序到单片机。
2.3电源电路设计
电源电路如图1-10所示。
通过J15电源插座接入大于6~9伏的直流电压,经7805稳压后给整个电路提供5伏直流电压。
R11和D10为电源指示电路,通电后D10亮。
为了有效消除干扰,接入了几只0.01μF的电容器(电路图中没有)。
图七
2.4显示电路设计
实验电路设计了一组数码管显示电路,电路如图八所示。
八只数码管可以单只驱动,也可动态驱动显示八位数码管。
通过插接口J6接数码管七段显示段码输入端,通过插接口J10接每位数码管的驱动信号。
单板机在输出七段显示码到J6的同时,提供哪一位数码显示的控制信号也输到J10的某一脚上,二者共同作用实现数码管的显示。
2.5控制电路设计
控制电路主要由五个独立的按键组成,我们可以用按键来控制计时的开始、暂停、清零和查询。
所有按键的一端接地,另一端与单片机的P2口的几个引脚相连。
具体电路如下图九所示。
图九
2.6总体电路设计
将上面的各个单元电路连在一起组成的实验电路,其如图十所示。
图十
2.7元件清单
元件名
数量
AT89S52
1
八段数码管
2
NPN三极管
8
10K电阻
9
无极性电容(30PF)
2
电解电容
3
排针
1
7805
1
整流二极管
1
发光二极管
1
1K排阻
1
按键
8
12M晶振
1
电源插座
1
下载线
1
3软件设计
3.1程序设计思路
在硬件的基础上,可以通过软件完成数字式秒表的设计。
我先用了矩阵键盘上的任意三个独立按键作为控制键。
用一个键去控制计时的开始;用一个键控制暂停;用一个键作计计时的清零按键。
用按键扫描的方法判断按键是否按下。
用动态显示的方法扫描秒表的计数,显示所计下的数。
用中断方法来进行计时加1,每10ms中断一次进行重新赋值并加1,当10ms单元达到10,就令该单元赋0,并让100ms单元加1,以此类推。
3.2流程图
1、主程序流程图2、加一子程序流程图
3、INT0中断子程序
4、数码显示流程图5、定时器T0子程序
3.3源程序
;****************************************************************************************************
;课题名称:
数字式秒表
;****************************************************************************************************
;30H-37H显示缓冲区30H十毫秒位31H百毫秒位,32H横杠,33H秒位从右到左显示
;****************************************************************************************************
ORG0000H
AJMPSTART
ORG000BH
LJMPT0_INT;定时中断010ms中断一次
ORG0030H
START:
MOVSP,#60H
SETBET0;允许定时中断0
SETBEA
MOVTMOD,#01H
MOVTH0,#0D8H
MOVTL0,#0F0H;10MS12MHZ
AA:
MOV@R0,#00H;显示缓冲区初始化
INCR0
CJNER0,#38H,AA
MOVP2,#00H
MOVP0,#0CH;输出P.
ACALLDL
;AJMPLOOP
;****************************************************************************************************
;下面实现按键功能,P1.0启动,P1.1暂停,P1.2清零
FIRST:
ACALLKEY
S0:
JNBACC.0,S1;启动键
ACALLDIR
LJMPKEY1
S1:
JNBACC.1,S2;暂停键
CLRTR0;暂停定时
ACALLDIR
SETBP3.1;蜂鸣器停止响
AJMPFIRST
S2:
JNBACC.2,FIRST;清零键
MOVR0,#30H
AA1:
MOV@R0,#00H;显示缓冲区清零
INCR0
CJNER0,#38H,AA1
MOV32H,#10111111B;横杠
MOV35H,#10111111B;横杠
ACALLDIR
SETBP3.1;蜂鸣器停止响
AJMPFIRST
;****************************************************************************************************
;键处理子程序
KS:
MOVA,P1
CPLA
ANLA,#07H;屏蔽高五位
RET
KEY:
ACALLKS
JNZAGAIN;有键闭合则转向再次判断
MOVA,20H
AJMPEXTI;无键闭合则转向,暂时保留不写
AGAIN:
MOV20H,A
ACALLDIR;延时八毫秒
ACALLKS
JNZLKP;两次判断有键闭合,则转向按键键值判断
MOVA,20H
AJMPEXTI;第二次判断无键闭合,则转向,暂时保留不写
LKP:
PUSHACC
LK:
ACALLDIR
ACALLKS
JNZLK
POPACC
EXTI:
RET
;****************************************************************************************************
;启动键,启动定时子程序
KEY1:
SETBTR0
LOOP:
ACALLDIR
AJMPFIRST
;****************************************************************************************************
;中断服务程序
T0_INT:
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVA,40H
INC30H
MOVA,30H
CJNEA,#0AH,ADD_END;判断是否到10
CPLP3.1
MOV30H,#00H
INC31H
MOVA,31H
CJNEA,#0AH,ADD_END;判断是否到10
CPLP3.2
MOV31H,#00H
INC33H
MOVA,33H
CJNEA,#0AH,ADD_END;判断是否到10
MOV33H,#00H
INC34H
MOVA,34H
CJNEA,#0AH,ADD_END;判断是否到10
MOV34H,#00H
INC36H
CJNEA,#0AH,ADD_END;判断是否到10
INC37H
CJNEA,#0AH,ADD_END;判断是否到10
ADD_END:
RETI
;****************************************************************************************************;数码管显示程序
DIR:
MOVP2,#11111110B;位控制
MOVDPTR,#TAB
MOVR0,#30H
N1:
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
ACALLDL
N2:
INCR0
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
ACALLDL
N3:
INCR0;横杠线
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVP0,#10111111B
ACALLDL
N4:
INCR0
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
ACALLDL
N5:
INCR0
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
ACALLDL
N6:
INCR0;横杠线
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVP0,#10111111B
ACALLDL
N7:
INCR0
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
ACALLDL
N8:
INCR0
MOVA,P2
RLA
MOVP2,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
ACALLDL
DIR_END:
RET
;****************************************************************************************************
;延时一毫秒函数
DL