您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机电子秒表设计
基于单片机的电子秒表1.控制器的选择单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积小、技术成熟和成本低等优点,各个领域应用广泛。本实验采用AT89C52单片机。2.数码管的选择LED显示方式有共阴极和共阳极两种,在本实验中采用共阳极数码管。字形码表的产生以共阳极为例,LED八段数码管的每一段接低电平时亮,不同的组合可以显示不同的数字,有一定的对应关系。具体的对应关系如下0dgfedcba11000000C0H1dgfedcba11111001F9H2dgfedcba10100100A4H3dgfedcba10110000B0H4dgfedcba1001100199H5dgfedcba1001001092H6dgfedcba1000001082H7dgfedcba11111000F8H8dgfedcba1000000080H9dgfedcba1001000090H静态显示在静态显示方式下,每一位显示器的字段控制线是独立的。当显示某一字时,该位的各字段线和字位线的电平不变,也就是各字段的亮灭状态不变。静态显示方式下LED显示器的电路连接方法是:每位LED的字位控制线门共阴极点或共阳极点连在一起,接地或接+5V;动态显示利用人眼的视觉暂留效应,通过位选分时显示不同的数码管,这样可以看到正常的显示。本实验采用动态设计,p0口与数码管相连,p0.0—p0.7分别对应数码管的dgfedcba位,p2.0—p2.2为数码管的位控制位,当为高点平时对应的数码管亮。P3.2、p3.3分别控制开始和停止。3.设计说明当打开电源,进入待机状态,程序开始运行,给p0口送入80H,同时给p2.0送入高电平选中数码管的最低位,数码管将显示数字“8”,然后经过一秒的延时,将位控制位左移一位即选中p2.1,依次循环,这时需要检测数码管的第四位,若为高电平则程序返回最低位显示。在程序开头初始化各个数据,缓存区71H,72H,73H清零,开中断及开T1计数器,当按下开始键时,电子秒表开始计时,由于采用方式1,定时时间选50ms,经过两次中断后,100ms位加1,这时字位码选中最低位,同时查表字形码显示,当100ms位记满10次后,字位码向前移动一位,同时秒位加1,这时字形码的最高位取反,查表显示数字及小数点,当记满10此后,字位码向前移动一位,十秒位加1,查表显示当前数字,当记满10次后,清零,重新开始计时,依次循环,当按下停止键时,停止计时。4程序流程图NYNY开始初始化各数据进入待机状态开始键按下?开始计时100ms位记满?1秒位加1NYNYNY5程序清单ORG0000HAJMPMAIN十秒为加1秒位记满?十秒位记满?按下停止键?结束ORG0003HLJMPSTARTORG0013HLJMPSTOPORG001BHLJMPBRT1;――――――――――初始化程序―――――――――――MAIN:MOVTMOD,#10HMOVTH1,#3CHMOVTL1,#0B0HSETBEX0SETBEX1SETBET1SETBIT0SETBIT1SETBEASETBPT1SETBPX1MOVR4,#2MOV71H,#00HMOV72H,#00HMOV73H,#00H;―――――――――――待机画面程序―――――――――――MOVP0,#80HLOOP1:MOVA,#01HLOOP2:MOVP2,AACALLDELRLAJBACC.3,LOOP1SJMPLOOP2DEL:MOVR7,#10DEL1:MOVR6,#200DEL2:MOVR5,#248DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RET;―――――――――――开始计时子程序――――――――――START:SETBTR1ACALLDISPRETI;――――――――――停止计时子程序――――――――――――STOP:CPLTR1RETI;―――――――LED动态显示子程序―――――――――――――DISP:MOVR0,#71H;显示缓冲区首址送R0MOVR1,#01H;选中最右端LEDDISP1:MOVA,R1;取字位码MOVP2,A;字位码送P2口MOVA,@R0;第一位数字地址偏移量送AMOVDPTR,#TAB;指向字形表首址MOVCA,@A+DPTR;查表取得字形码JNBP2.1,DOT;查看第二位LED是否被选中CPLACC.7;如果是,显示小数点DOT:MOVP0,A;字型码送P0口ACALLDELAY;延时1msINCR0;指向下一位缓冲区地址MOVA,R1RLA;字位码移位MOVR1,A;移位后字型码送回R1JBACC.3,DISP;扫描完,跳转DISPAJMPDISP1;未扫描完,继续扫描TAB:DB0C0H,0F9H,0A4H,0B0H,99H;共阳极LED字形表DB92H,82H,0F8H,80H,90HDELAY:MOVR7,#02H;延时1ms程序DELAY1:MOVR6,#0FFHDELAY2:DJNZR6,DELAY2DJNZR7,DELAY1RET;―――――――定时器中断服务程序―――――――――――――BRT1:DJNZR4,NEXTINC71HMOVR2,71HCJNER2,#10,NEXT1MOV71H,#00HMOVR2,#00HINC72HMOVR3,72HCJNER3,#10,NEXT1MOV72H,#00HMOVR3,#00HINC73HMOVA,73HCJNEA,#10,NEXT1MOV71H,#00HMOV72H,#00HMOV73H,#00HNEXT1:MOVR4,#2NEXT:MOVTH1,#3CHMOVTL1,#0B0HRETIEND6仿真图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52PROGRAM=D:\SSS.HEXC11nFC21nFX1CRYSTALR1200C31uFR25007总结通过毕业设计,复习巩固以前我们所学习的数字、模拟电子技术、单片机原理及接口等课程知识,加深对各门课程及相互关系的理解,并成功使用了ProteusIsis电子软件,使理论知识系统化、实用化,系统的掌握微机应用系统的一半方法,培养较强的编程能力、开发能力,并充分认识到团队合作的精得。同时感谢老师的指导和同学的帮助。8辅助资料(1)1秒延时子程序:DEL:MOVR7,#10DEL1:MOVR6,#200DEL2:MOVR5,#248DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RET对每条指令进行计算得出精确延时时间为:1+(1*10)+(1*200*10)+(2*248*200*10)+(2*200*10)+(2*10)+2=[(2*248+3)*200+3]*10+3=998033μs≈1s由上式整理得:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+3此式适用三层循环以内的程序。(2)AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性·兼容MCS51指令系统·8k可反复擦写(1000次)FlashROM·32个双向I/O口·256x8bit内部RAM·3个16位可编程定时/计数器中断·时钟频率0-24MHz·2个串行中断·可编程UART串行通道·2个外部中断源·共8个中断源·2个读写中断口线·3级加密位·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能AT89C52各引脚功能及管脚电压概述:AT89C52P为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。P0口P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表1。Flash编程和程序校验期间,P1接收低8位地址。表.P1.0和P1.1的第二功能引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器2)P2口P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制
本文标题:基于单片机电子秒表设计
链接地址:https://www.777doc.com/doc-3489591 .html