99秒计时器
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
洛阳理工学院 课程设计报告 课 程 名 称:电子工程设计 设 计 题 目: 99秒计时器设计 系 别: 电气工程与自动化 专 业: 自动化 组 别: 七班第二小组 成 员:韩文丽B09040702 丛林涛 B09040707 王光辉 B09040722 指 导 教 师: 姚惠林 用AT89C51设计99秒定时器 引 言 单片机具有体积小、成本低、抗干扰能力强、面向控制、可以实现分机各分布式控制等优点。本秒表设计就是利用单片机的上述优点,采用目前市场上性能价格比较高的MCS-52单片机设计而成的最小系统。它在实际生活中具有广泛的应用。例如:工业生产中的定时启停自动化设备、学校中上下课铃定时控制、农村广播站每天早中晚广播的自动定时控制均可采用本仪器。 秒表的概述 秒表是电器制造,电国,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、廷时器、定时器等的时间测试。目前所使用的电秒表大多是指针式或集成电路型的,结构相对复杂、测试功能单一。但我们这次设计的秒表比较简单,所以使用很简单。 本设计任务 利用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秒计时器的原理框图如下图所示。它由以下几个部件组成: 单片机AT89C51 1个 静态数码显示 2个 开关按钮SP 1个 晶振(12.0MHZ) 1个 30pf电容 2个 10uf电解电容 1个 10k电阻 1个 电阻(PULLUP)等其它组件 系统原理框图 C130pFC230pFX119CRYSTALU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617p0.0p0.1p0.2p0.3p0.4p0.5p0.6p0.0p0.1p0.2p0.3p0.4p0.5p0.618XTAL2C3910uRSTR110k293031PSENALEEAp2.0p2.1p2.2p2.3p2.4p2.5p2.6p0.0p0.1p0.2p0.3p0.4p0.5p0.6p2.0p2.1p2.2p2.3p2.4p2.5p2.612345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 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—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 图2 AT89C51单片机 管脚说明: 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所示: 表1 P3口功能说明 P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 特殊功能 RXD(串行输入口) TXD(串行输出口) (外部中断0) (外部中断1) T0(定时器0外部输入) P3.5 P3.6 P3.7 T1(定时器1外部输入) WR(外部数据存储器写选通) RD(外部数据存储器读先通) P3口同时为闪烁编程和编程校验接收一些控制信号。 系统的软件设计 本系统的软件系统主要可分为主程序、定时计数中断程序二大模块。下面对部分模块作介绍。 系统主程序设计 程序设计内容 (1. 单片机对按键的识别的过程处理 (2. 单片机对正确识别的按键进行计数,计数满时,又从零开始计数; (3. 单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。 (4. 通过查表方式,分别显示出个位和十位数字。 系统主流程图 T0服务程序处理: 在正常计时状态下,若按下P1.1口按键,则进行时钟 /秒表功能的转换,转换后计时从开始。当按下P1.2口的按键时,可实现清0、计时启动、暂停功能。 T0中断入口 TCNT加1 TCNT=99? TCNT=0 SEC加1 汇编源程序 TCNTA EQU 30H TCNTB EQU 31H SEC EQU 32H KEYCNT EQU 33H SP1 BIT P3.5 ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV KEYCNT,#00H MOV SEC,#00H MOV A,SEC MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A MOV TMOD,#02H SETB ET0 SETB EA WT: JB SP1,WT LCALL DELY10MS JB SP1,WT INC KEYCNT MOV A,KEYCNT CJNE A,#01H,KN1 SETB TR0 MOV TH0,#06H MOV TL0,#06H MOV TCNTA,#00H MOV TCNTB,#00H LJMP DKN KN1: CJNE A,#02H,KN2 CLR TR0 LJMP DKN KN2: CJNE A,#03H,DKN MOV SEC,#00H MOV A,SEC MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A MOV KEYCNT,#00H DKN: JNB SP1,$ LJMP WT DELY10MS: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0: INC TCNTA MOV A,TCNTA CJNE A,#100,NEXT MOV TCNTA,#00H INC TCNTB MOV A,TCNTB CJNE A,#4,NEXT MOV TCNTB,#00H INC SEC MOV A,SEC CJNE A,#100,DONE MOV SEC,#00H DONE: MOV A,SEC MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A NEXT: RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 设计结果总结 这次我们主要的设计是一个99秒计时器,通过对按键来决定秒表的开停,超过99秒就会自动清“0”,设计原理很简单。这次主要参考了网上的一个实例, 本文来源:https://www.wddqw.com/doc/2472dc8b0329bd64783e0912a216147917117e98.html