秒表单片机课程设计修改版.docx
《秒表单片机课程设计修改版.docx》由会员分享,可在线阅读,更多相关《秒表单片机课程设计修改版.docx(14页珍藏版)》请在冰豆网上搜索。
秒表单片机课程设计修改版
本文由tung214贡献
doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
单片机技术课程设计说明书
数字式秒表
系、部:
学生姓名:
指导教师:
专班业:
级:
电气与信息工程系
职称讲师
完成时间:
学号:
2010年12月10日
第I页
摘要
本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成数字式秒表的硬件电路的。
电子秒表电路主要由AT89S52单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八位数码显示和多次计时,能通过控制电路能控制时间的暂停和开始,能够最少十次计时,查询计时时间。
关键字:
关键字:
AT89S52数码管最小系统
AbstractThedesignofthefinishedproductisbasedontheSCMsystemtoincreasetheminimumdisplaycircuitandcontrolcircuittocompletethedigitalwatchesofthehardwarecircuit.StopwatchcircuitmainlybytheminimumsystemAT89S52microcontrollercircuit,sevensegmentLEDdisplaycircuitandcontrolthedynamiccircuit,itcanachieveeightdigitaldisplayandmultipletime,throughthecontrolcircuittocontrolthesuspensionandthebeginningoftime,toatleasttenSecondtime,thequerytime.Keywords:
KeywordsAT89S52digitalminimumsystem
目
录
……11总体设计方案简介……………………1设计课题任务……1.1设计课题任务…………………………1.2系统分析………………1…………1.3系统方案………………11.3.11.3.1方案设计……………………1
1.3.2…………21.3.2方案论证………………2系统硬件设计……………………32系统硬件设计……………………3控制芯片的介绍………………32.1控制芯片的介绍………………32.2单片机最小系统..4………………..4……4……4……
振荡电路――――让单片机活起来的心脏2.2.1振荡电路――让单片机活起来的心脏
复位电路――――恢复初始状态值……..42.2.2复位电路――恢复初始状态值…………..42.2.3程序下载接入电路………………4
…………52.3电源电路设计………………5………………62.4显示电路设计………………6控制电路设计…………2.5控制电路设计………………6总体电路设计………………72.6总体电路设计………………7…………72.7元件清单………………7系统软件设计……3系统软件设计………………8程序设计思路……3.1程序设计思路………………8流程图……3.2流程图………………9源程序…………113.3源程序………………11仿真结果…………183.4仿真结果………………18……194课程设计体会………………19…………致谢…………20………………21附录1………………21………………22附录2………………22参考文献……参考文献……23文献……
第III页
1总体设计方案简介
1.1设计课题任务
设计一个具有特定功能的数字式秒表。
该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数字式秒表应具有开始、暂停、连续、清零和停止功能
1.2系统分析
设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。
设计框图如图一所示;
1.31.3系统方案
1.3.1方案设计1.3.1方案一:
利用分分离门电路和集成块电路设计数显定时器;可分为五个功能模块:
秒脉冲发生器、计数器、译码显示电路、时序控制电路。
秒脉冲发生器:
555振荡器振荡周期T=0.693(R5+2R6)C=0.72,频率f=1.39Hz;计数器和控制电路是系统的主要部分,计数器是用可加(减)的计数方法,它是十进制计数的方式,选用74LS192,计时器完成计时功能;控制电路具有直接控制计数器的启动计数、暂停/连续计数、查询所计数、译码显示电路显示等功能。
设计框图如二所示;
方案二:
利用AT89S52单片机设计数显定时器和定时器。
此方案采用AT98S52单
第1页
湖南工学院《单片机应用技术》课程设计报告
片机系统来实现。
单片机软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。
单片即系统可用数码管显示秒表的值,能用键盘输入暂停,并可实现报捷。
本方案选用了AT98S52芯片(内部含有8KB的EEPROM),不需要外扩展存储器,可使系统整体结构更为简单。
设计框图如图三所示;
1.31.3.2方案论证方案一是电子式,时间走的很准时,也能达到报警的功能实现,显示时间是现代式的数码管显示,但要做好是有很大的难度的,线非常之多,元件分散、多,容易把线接错;我采用了方案二以AT98S52芯片为中心控制系统,可实现显示、键盘控制、报警等功能,大大提高了系统的智能化,也使得系统所测结果精度大大提高。
故经过对三种方案的比较本设计及制作采用了。
第2页
湖南工学院《单片机应用技术》课程设计报告
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引脚图
AT89S52有40个引脚,32个外部双向输入/输出(I/O)口。
该芯片还具有PDIP40、TQFP44和PLCC44三种封装形式,以适应不同产品的需求。
外型和封装形式如图四所示。
从外观上看单片机就是一块集成电路,它与在模拟电路和数字电路中学习过的集成电路电路最主要的区别是:
普通集成电路电路的引脚功能基本上固定的,而单片机的一些引脚的功能是可以通过编程进行控制,一些引脚既可作输入又可作输出。
单片机广泛用于工业控制、智能仪器仪表、计算机设备及网络、通信领域、家用电器、医用设备、军用设备等各个方面。
对于单片机这样的集成电路,要设计让它完成一
第3页
湖南工学院《单片机应用技术》课程设计报告
个特定的工作任务,除完成设计相关的硬件电路外,还要设计相应的控制软件,才能使整个电路按照设计要求自动地进行工作。
所以,电子电路学习到单片机这个知识层次时,除要学习相关硬件知识,还学习相关软件设计知识,才能对单片机进行控制和应用。
单片机的开发和应用,是利用硬件和软件的结合来实现的。
由于单片机的功能强大,充分理解各引脚功能,灵活编写控制程序去控制引脚功能,完成各种需要的设计。
2.2单片机最小系统
振荡电路――――让单片机活起来的心脏2.2.1振荡电路――让单片机活起来的心脏AT89S52是内部具有振荡电路的单片机,只需在18脚和19脚之间接上石英晶体(如图六中所示),给单片机加上工作所需直流电源,振荡器就开始振荡起来。
振荡电路就为单片机工作提供了所需要的时钟脉冲信号,使单片机的内部电路,单片机的内部程序(若有)开始工作起来。
振荡电路不工作,整个单片机电路都不能正常工作。
AT89S52常外接6MHz、MHz的石英晶体,12图中接入的是12MHz的石英晶体,最高可接24MHz石英晶体。
18脚和19脚分别对地接了一个20P的电容,目的是防止单片机自激。
如果从18脚输入外部时钟脉冲,则19脚接地。
复位电路――恢复初始状态值2.2.2复位电路――恢复初始状态值复位电路就是在RST端脚)(9外接的一个电路,目的是当单片机上电开始工作时,内部电路从初始状态开始工作,或者在工作中要想人为的让单片机重新从初始状态开始工作。
在时钟工作的情况下,只要AT89S52的复位引脚高电平保持两个机器周期以上的时间,AT89S52便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且从地址0000H处开始读入程序代码而执行程序。
具体电路如图六所示,C1和R2构成上电自动复位电路,实现手动开关复位。
由S172.2.3程序下载接入电路图六中有一个下载线接口J13,J13的1脚接5伏电源,2、3、4脚接单片机的P1口的P1.5、P1.6、P1.7三个引脚,5脚接复位引脚,6脚接地。
在计算机中编写好的程序通过数据下载线连接到单片机实验电路插接口(J13),实现从计算机将程序下载到单片机的程序存储器中,完成单片机的程序写入工作。
第4页
湖南工学院《单片机应用技术》课程设计报告
VCCJ13
下下下数数
VCC
123456CON6
P1.5P1.6P1.7
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ReSet
1234567891011121314151617
P10/TP11/TP12P13P14P15P16P17RESETRXDTXDINT0INT1T0T1WRRDX1X2GND
U1AT89S51
P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27VCCEA/VPALE/PPSEN
393837363534333221222324252627284031
D00D01D02D03D04D05D06D07P20P21P22P23P24P25P26P27
复数复复
S17
C14.7uReSet
P30P31P32P33P34P35P36P37
晶晶
R2
10K
X11911.0592MHzC620pX21820C720p
VCC
30ALE29
图六
单片机最小系统
由于AT89S51不仅象89C51支持程序的并行写入,而且支持ISP在线可编程的串行写入,利用下载线将计算机将原程序编译后进行串行写入到AT89S51,速度快、稳定性好,同不时需要VPP烧写高压,只要4~5V供电即可完成写入。
所以,本书主要介绍用串行写入方式将程序到单片机。
电源电路设计2.3电源电路设计
电源电路如图1-10所示。
通过J15电源插座接入大于6~9伏的直流电压,经7805稳压后给整个电路提供5伏直流电压。
R11和D10为电源指示电路,通电后D10亮。
为了有效消除干扰,接入了几只0.01μF的电容器(电路图中没有)。
J1521
电数电数
D91Vin
U4
7805GNDVout3R111KC9100uF
VCCC10104
C8220uF
2
D10LED
图七
第5页
湖南工学院《单片机应用技术》课程设计报告
2.4显示电路设计
实验电路设计了一组数码管显示电路,电路如图八所示。
八只数码管可以单只驱动,也可动态驱动显示八位数码管。
通过插接口J6接数码管七段显示段码输入端,通过插接口J10接每位数码管的驱动信号。
单板机在输出七段显示码到J6的同时,提供哪一位数码显示的控制信号也输到J10的某一脚上,二者共同作用实现数码管的显示。
12345678911R1排102排
共共数数数
VCC
J61234567853g6cmo3hQ8R101K
数数数数数数数
10
11
7
2
5
3
7
b
d
g
h
b
2
d
a
c
e
a
c
e8
f
10cmo2f
4
1
4
cmo0
cmo1
cmo2
cmo3
cmo0
12
12
9
8
6
Q1
Q2
Q3
Q4
Q5
Q6
9
cmo1
1
Q7
R31K
R41K
R51K
R61K
R71K
R81K
R91K
8
7
6
5
4
3
2
数数数数数数数数数
图八
2.5控制电路设计
控制电路主要由五个独立的按键组成,我们可以用按键来控制计时的开始、暂停、清零和查询。
所有按键的一端接地,另一端与单片机的P2口的几个引脚相连。
具体电路如下图九所示。
图九
第6页
1
J10
湖南工学院《单片机应用技术》课程设计报告
2.6总体电路设计2.6总体电路设计
将上面的各个单元电路连在一起组成的实验电路,其如图十所示。
图十
2.72.7元件清单
元件名AT89S52八段数码管NPN三极管10K电阻无极性电容(30PF)电解电容排针7805整流二极管发光二极管1K排阻按键12M晶振电源插座下载线
第7页
数量128923111118111
湖南工学院《单片机应用技术》课程设计报告
3软件设计
程序设计思路3.1程序设计思路
在硬件的基础上,可以通过软件完成数字式秒表的设计。
我先用了矩阵键盘上的任意三个独立按键作为控制键。
用一个键去控制计时的开始;用一个键控制暂停;用一个键作计计时的清零按键。
用按键扫描的方法判断按键是否按下。
用动态显示的方法扫描秒表的计数,显示所计下的数。
用中断方法来进行计时加1,每10ms中断一次进行重新赋值并加1,当10ms单元达到10,就令该单元赋0,并让100ms单元加1,以此类推。
第8页
湖南工学院《单片机应用技术》课程设计报告
3.23.2流程图
1、主程序流程图程序开始R1=R1+1程序初始化开各中断R1=?
#0ahhhhh?
R1=#00H2、加一子程序流程图
P1.0=?
1
关定时器0,1调用显示子程序
R2=R2+1
R2=?
#0ah
P1.0=?
0
R2=#00H
开定时器0,1
30H=R131H=R2
3、INT0中断子程序INT0入口地址
开定时器0
中断返回
第9页
湖南工学院《单片机应用技术》课程设计报告
4、数码显示流程图P2=#FEH置数码管个数R0=30H置首地址
5、定时器T0子程序
定时器T0入口地址
R6=#08H置数码管个数A=@R0A=@A+DPTR
置初值
R3-1=?
0A循环左移P3.3清零P3.0=CP3.1置位R6-1=?
0
调用加一子程序
调用数码显示子程序R3=#20H重置循环次数
R0=R0-1中断返回R7-1=?
0
返回
第10页
湖南工学院《单片机应用技术》课程设计报告
3.33.3源程序
;****************************************************************************************************;课题名称:
数字式秒表;****************************************************************************************************;30H-37H显示缓冲区30H十毫秒位31H百毫秒位,32H横杠,33H秒位从右到左显示
;****************************************************************************************************ORG0000HAJMPSTARTORG000BHLJMPT0_INT;定时中断010ms中断一次
ORG0030HSTART:
MOVSP,#60HSETBET0SETBEAMOVTMOD,#01HMOVTH0,#0D8HMOVTL0,#0F0HAA:
MOV@R0,#00HINCR0CJNER0,#38H,AAMOVP2,#00HMOVP0,#0CHACALLDL;AJMPLOOP;****************************************************************************************************;下面实现按键功能,P1.0启动,P1.1暂停,P1.2清零FIRST:
ACALLKEYS0:
JNBACC.0,S1ACALLDIRLJMPKEY1;启动键;输出P.;10MS12MHZ;显示缓冲区初始化;允许定时中断0
S1:
JNBACC.1,S2CLRTR0
;暂停键;暂停定时
第11页
湖南工学院《单片机应用技术》课程设计报告
ACALLDIRSETBP3.1AJMPFIRST;蜂鸣器停止响
S2:
JNBACC.2,FIRSTMOVR0,#30H
;清零键
AA1:
MOV@R0,#00HINCR0CJNER0,#38H,AA1
;显示缓冲区清零
MOV32H,#10111111B;横杠MOV35H,#10111111B;横杠ACALLDIRSETBP3.1AJMPFIRST;蜂鸣器停止响
;****************************************************************************************************;键处理子程序KS:
MOVA,P1CPLAANLA,#07HRETKEY:
ACALLKSJNZAGAINMOVA,20HAJMPEXTIAGAIN:
MOV20H,AACALLDIRACALLKSJNZLKPMOVA,20HAJMPEXTI;第二次判断无键闭合,则转向,暂时保留不写;两次判断有键闭合,则转向按键键值判断;延时八毫秒;无键闭合则转向,暂时保留不写;有键闭合则转向再次判断;屏蔽高五位
LKP:
PUSHACC第12页
湖南工学院《单片机应用技术》课程设计报告
LK:
ACALLDIRACALLKSJNZLKPOPACCEXTI:
RET
;****************************************************************************************************;启动键,启动定时子程序KEY1:
SETBTR0LOOP:
ACALLDIR
AJMPFIRST
;****************************************************************************************************;中断服务程序T0_INT:
MOVTH0,#0D8HMOVTL0,#0F0HMOVA,40H
INC30HMOVA,30HCJNEA,#0AH,ADD_END;判断是否到10
CPLP3.1MOV30H,#00HINC31HMOVA,31HCJNEA,#0AH,ADD_END;判断是否到10第13页
湖南工学院《单片机应用技术》课程设计报告
CPLP3.2MOV31H,#00HINC33HMOVA,33HCJNEA,#0AH,ADD_END;判断是否到10
MOV33H,#00HINC34HMOVA,34HCJNEA,#0AH,ADD_ENDMOV34H,#00HINC36HCJNEA,#0AH,ADD_ENDINC37HCJNEA,#0AH,ADD_ENDADD_END:
RETI;****************************************************************************************************;数码管显示程序DIR:
MOVP2,#11111110B;位控制MOVDPTR,#TABMOVR0,#30HN1:
MOVA,@R0MOVCA,@A+DPTRMOVP0,AACALLDL;判断是否到10;判断是否到10;判断是否到10
N2:
INC