99秒计时器Word格式文档下载.docx
《99秒计时器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《99秒计时器Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
![99秒计时器Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/8/36cd5afe-6940-41ba-981a-a45bc96f37bf/36cd5afe-6940-41ba-981a-a45bc96f37bf1.gif)
它在实际生活中具有广泛的应用。
例如:
工业生产中的定时启停自动化设备、学校中上下课铃定时控制、农村广播站每天早中晚广播的自动定时控制均可采用本仪器。
秒表的概述
秒表是电器制造,电国,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、廷时器、定时器等的时间测试。
目前所使用的电秒表大多是指针式或集成电路型的,结构相对复杂、测试功能单一。
但我们这次设计的秒表比较简单,所以使用很简单。
本设计任务
利用AT89C51单片机来制作一个手动计数器,在AT89C51单片机的P3.5管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示;
硬件电路图如下图所示。
(1.开始时,显示“00”,第1次按下SP1后就开始计时。
(2.第2次按SP1后,计时停止。
(3.第3次按SP1后,计时归零。
系统主要功能
99秒计时器主要是用在精确计时方面。
比如:
学校里的校运会、答题倒计时等方面。
它通过一个按键来控制它的开和停,它能及时有效的记录瞬间时间。
而且它在我们生活中运用很广泛,希望我们做的这个计时器对以上方面有所帮助。
它也许比较简单,而且有可能达不到很多人的要求,但我相信通过我们过一步的学习,我们一定会制造出更好的系统,为社会大众服务。
系统的硬件构成及功能
99秒计时器的原理框图如下图所示。
它由以下几个部件组成:
单片机AT89C511个
30pf电容2个
静态数码显示2个
10uf电解电容1个
开关按钮SP1个
10k电阻1个
晶振(12.0MHZ)1个
电阻(PULLUP)等其它组件
系统原理框图
99秒计时器系统原理框图
系统板硬件连线
(1.把“单片机系统”区域中的P0.0/AD0-P0.6/AD6端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-e端口上;
要求:
P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.6/AD6对应着e。
(2.把“单片机系统”区域中的P2.0/A8-P2.6/A14端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-e端口上;
P2.0/A8对应着a,P2.1/A9对应着b,……,P2.6/A14对应着e。
(3.把“单片机系统“区域中的P3.5/RD用导线连接到”独立式键盘“区域中的SP1端口上;
AT89C51单片机及其引脚说明
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
图2AT89C51单片机
管脚说明:
VCC:
供电电压
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表1所示:
表1P3口功能说明
P3口引脚
特殊功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读先通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
系统的软件设计
本系统的软件系统主要可分为主程序、定时计数中断程序二大模块。
下面对部分模块作介绍。
系统主程序设计
程序设计内容
(1.
单片机对按键的识别的过程处理
(2.
单片机对正确识别的按键进行计数,计数满时,又从零开始计数;
(3.
单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。
如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。
(4.
通过查表方式,分别显示出个位和十位数字。
系统主流程图
T0服务程序处理:
在正常计时状态下,若按下P1.1口按键,则进行时钟/秒表功能的转换,转换后计时从开始。
当按下P1.2口的按键时,可实现清0、计时启动、暂停功能。
汇编源程序
TCNTA
EQU30H
TCNTB
EQU31H
SEC
EQU32H
KEYCNT
EQU33H
SP1
BITP3.5
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVKEYCNT,#00H
MOVSEC,#00H
MOVA,SEC
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVA,B
MOVP2,A
MOVTMOD,#02H
SETBET0
SETBEA
WT:
JBSP1,WT
LCALLDELY10MS
INCKEYCNT
MOVA,KEYCNT
CJNEA,#01H,KN1
SETBTR0
MOVTH0,#06H
MOVTL0,#06H
MOVTCNTA,#00H
MOVTCNTB,#00H
LJMPDKN
KN1:
CJNEA,#02H,KN2
CLRTR0
KN2:
CJNEA,#03H,DKN
DKN:
JNBSP1,$
LJMPWT
DELY10MS:
MOVR6,#20
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
INT_T0:
INCTCNTA
MOVA,TCNTA
CJNEA,#100,NEXT
INCTCNTB
MOVA,TCNTB
CJNEA,#4,NEXT
INCSEC
CJNEA,#100,DONE
DONE:
NEXT:
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
设计结果总结
这次我们主要的设计是一个99秒计时器,通过对按键来决定秒表的开停,超过99秒就会自动清“0”,设计原理很简单。
这次主要参考了网上的一个实例,再加上了一些自己的补充。
我主要针对了这个设计的原理和程序的编写,从而来更好的学习设计的方法和创新。
虽然现在讲创新很难,但是相信对设计看多了,也安全熟悉了,讲创新肯定也就不会再难。
通过自己亲手去做,去实践,才体会到在实际工作当中会遇到很多问题,只有在亲自动手做时,去运用,遇到难题多思考,理论联系实际综合运用,在此过程当中能体会到其中的伟大和乐趣。
通过这次设计,我们学到了很多知识,例如:
我们学会了怎么使用Proteus软件和Keil软件,学会了怎么向芯片加载程序,以及怎么查找元器件、如何仿真……。
在此我们还体会到了科学知识的奇妙和伟大,同时也使我们看到了团队精神,明白生活当中需要这种精神。
在汇编程序中,程序对我们来说有点长,对于现在的我来说肯定编不出来,所以主要的还是以看懂为主。
根据每个程序的功能各不相同来使程序简化。
其实我们平时不懂就应该自己去学习去弄明白,只是平时我们都太懒。
通过这个课程设计,使我发现,原来小小的一片单片机有这么强大的功能,能应用于各种领域。
都觉得很神奇,人类都很聪明啊。
我应该在自己以后的学习中,不仅要有刻苦努力,要有专研精神,还要有创新,对自己感兴趣的一定要用心去学。
最后通过这次的自主完成单片机的应用系统设计,虽说不完全是自己完成,但是至少有一点,让我们学会了如何去完成一个设计报告,相信对以后的毕业设计也会有很大帮助。