毕业设计(论文)-基于单片机数字电子秒表电路设计.doc_第1页
毕业设计(论文)-基于单片机数字电子秒表电路设计.doc_第2页
毕业设计(论文)-基于单片机数字电子秒表电路设计.doc_第3页
毕业设计(论文)-基于单片机数字电子秒表电路设计.doc_第4页
毕业设计(论文)-基于单片机数字电子秒表电路设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

泰州农业职业技术学院 毕业论文(设计)课题名称基于单片机数字电子秒表设计专业及班级机电一体化专业 机电88学号姓名指导老师 2014年 5 月 5日基于单片机数字电子秒表设计摘 要数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。主控制器采用单片机AT89S51,显示电路采用共阴极LED数码管显示计时时间。文中设计了一种以单片机为控制核心的数字秒表。关键词:AT89S51 数字秒表 LED数码管显示Digital electronic stopwatch design based on MCUAbstract Digital electronic stopwatch display intuitive, read the convenient, high precision of advantages, widely used in time. The design of digital electronic stopwatch by single chip, and strive to simple structure, high precision for the target. Design including the design of the system hardware circuit and the design of the program. The main hardware circuit is the main controller, timing and display circuit and back to zero, start and stop watch circuit, etc. Lord AT89S51 single-chip controller, show circuit of the cathode LED digital pipe display time clock. This paper designs a with the single chip processor as the core to control the digital stopwatch.Key words:AT89S51 Digital stopwatch The LED digital display 目 录摘 要II目 录III1.绪 论12.设计功能、要求与构思22.1系统功能22.2设计要求22.3设计构思23.硬件电路设计与实现33.1硬件电路原理框图33.2 AT89C51微处理器介绍43.2.1 AT89C51单片机的功能结构43.2.2 AT89C51单片机的应用63.3总线锁存器74HC573功能结构73.4 译码器74HC138功能结构93.5 LED数码显示电路的实现103.6 硬件电路的实现103.6.1 总电路图103.6.2 硬件电路的工作过程103.6.3直流电源114.软件程序的设计与实现124.1 主程序的设计构思124.2 主程序的设计与实现154.2.1 主程序流程图154.2.2 主程序的实现154.3 软件程序的调试与运行225.总 结23致 谢24参考文献25附录26泰州正文第 25 页 共 26 页农业职业技术学院学生毕业论文 1.绪 论电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器就是秒表计时器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等有关时间的装置。一百多年中,首届奥运会上计时用的跑表到如今换成了一系列高科技计时装置,如高速数码摄像机、电子触摸垫、红外光束、无线应答器等等。即便千分之一秒的毫微差距,也决定着冠军的归属。奥运男子百米比赛中,牙买加飞人博尔特以9秒69的成绩夺得冠军,但是电子计时系统确认其冲过终点的瞬间是9秒68。奥运男子100米蝶泳决赛上,美国选手菲尔普斯以50秒58的成绩惊险夺冠,而塞尔维亚选手查维奇以50秒59的成绩夺得银牌,与菲尔普斯仅差0.01秒,即使现场大屏幕用超慢镜头回放也分辨不出来。在雅典奥运会的男子500米划艇决赛上,孟关良与杨文军以1分40秒278的成绩获得金牌,他们只比获得银牌的古巴选手快了0.072秒。在现在的体育竞技比赛中,随着运动员的水平不断提高,差距也在不断缩小。有些运动对时间精度的要求也越来越高,有时比赛冠亚军之间的差距只有几毫秒,因此就需要高精度的秒表来记录成绩。2.设计功能、要求与构思2.1系统功能数字电子秒表系统具有毫秒、秒、分、时的递进显示功能(满24小时自动复零),可以任意设置秒表初值,即可以在任意时刻开机运行。系统可通过按键开始记录时间,在事件结束时,又通过按键使秒表暂停,并显示该事件经历的时间,要求精确到0.01s(即10ms)。2.2设计要求(1)采用单片机AT89C51为核心器件,构成数字式电子秒表系统。(2)用8位LED数码管分别显示小时、分钟、秒钟、毫秒(格式为XX、XX、XX、XX)。(3)通过按键,实现下列操作:按OK键,电子秒表开始计时;按设置键,设置时钟初值;按清零键,时钟清零;按暂停键,电子秒表暂停计时。(4)用定时器或计数器作10ms的定时,当所定时时间到后,进入中断服务程序,在中断服务程序中实现时钟累进。(5)通过4个按键实现时钟运行,停止等操作,利用74HC573和74HC138芯片驱动LED数码管,实现时钟的显示。2.3设计构思以微处理器AT89C51为核心,利用微处理器的P0端口和P2端口实现数据、地址的传送。因为P0端口无锁存功能,所以P0端在进行地址传送时需加74HC573锁存器。由于微处理器AT89C51芯片内有程序存储器EPROM 8K和数据存储器RAM 256字节,所以微处理器没有进行外存储器的扩展,直接利用微处理器内部的程序存储器和数据存储器。采用74HC138芯片,将8个LED数码显示管实现动态显示。由于是8个LED数码管将扫描线中三根线经74HC138译码器产生8个扫描线分别接到八个数码管共阴极控制端。系统软件的主程序包括三个部分:初始化设置,包括设置定时器/计数器初始化、显示缓冲区初始化、开中断、定时器/计数器启动等。对键盘进行扫描,判断是否键按下,按的是哪一个键,根据不同的按键实现各种操作功能;实现电子秒表的显示。最后中断服务程序,它的主要功能是实现时钟递进,以及判断是否已到24小时。3.硬件电路设计与实现3.1硬件电路原理框图硬件电路由微处理器AT89C51、锁存器、接口电路、LED数码管、按键电路等组成,如图一所示:微处理器AT89C51锁存器接口电路82798位LED显示键盘电路图一 硬件电路原理框图3.2 AT89C51微处理器介绍AT89C系列单片机是ATMEL公司1993年开始研制生产的,优越的性能价格比使其成为颇受欢迎的8位单片机。AT89C系列与MCS51系列单片机在软、硬件上相互兼容,但AT89C系列与MCS51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整个硬件电路的体积更小。AT89C系列单片机有四种型号:AT89C51、AT89C52、AT89C1051、AT89C2051,其中AT89C2051/1051是ATMEL公司AT89C系列的新成员。它的较小的体积、良好的性能价格比倍受青睐,在家电产品、工业控制、计算机产品、医疗器械等应用方面成为用户降低成本的首选器件。3.2.1 AT89C51单片机的功能结构 AT89C51单片机芯片为40个引脚,HMOS工艺制造的芯片采用双列直插(DIP)方式,其引脚示意及功能分类如图二所示。它具有如下主要特性:AT89C51与MCS-51兼容;内部带4KB可编程闪速存储器;寿命为1000次擦/写循环;数据保留时间为10年;工作电压范围为2.7V6V;令静态工作频率为0Hz24Hz;1288位内部RAM;32条可编程I/O线;2个16位定时器/计数器;5个两级中断源;可编程全双工串行UART通道;低功耗的闲置和掉电模式; 图二 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的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。3.2.2 AT89C51单片机的应用 本电路中AT89C51单片机只用到了P0端口和P2端口的一部分,以及中断 (P3.3)、定时器/计数器(P3.5)、读/写状态线(P3.6、P3.7)、复位端RST/VP0(9脚)、ALE/(30脚)允许地址锁存信号端。(29脚)片外程序存储器读选通信号输出端,按高电平;啊/VPP为访问外部程序存储器控制信号端,按高电平;中断0(P3.2)按高电平;将P0端口与接口芯片8279的8位数据线DB0DB7相连,读/写状态线(/)与接口芯片8279的读/写状态线(/)相连。XTAL1、XTAL2(18、19脚)外接12MHZ的晶体振荡器。3.3总线锁存器74HC573功能结构74HC573是3 态非反转透明锁存器芯片,当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS 和TTL 接口上操作电压范围:2.0V6.0V 低输入电流:1.0uA CMOS 器件的高噪声抵抗特性。 管脚功能如图三: OE 1 20 Vcc D0 2 19 O0 D1 3 18 O1 D2 4 17 O2 D3 5 16 O3 D4 6 15 O4 D5 7 14 O5 D6 8 13 O6 D7 9 12 O7 GND 10 11 LE 图三 74HC573管脚功能图 表一 74HC573功能表 输入 输出 输出使能 锁存使能 D QLHHHLHLLLLX不变HXXZ X=不用关心 Z=高阻抗 74HC573逻辑图:图四 74HC573逻辑图原理说明:74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。当OE1是,无论Dn、LE为何,输出端为高阻态; 当OE0、LE0时,输出端保持不变; 当OE0、LE1时,输出端数据等于输入端数据。在实际应用时是这样做的: 1 OE0;2 先把数据从单片机的口线上输出到Dn; 3 再把LE从0-1-0 ;4 最后你所需要输出的数据就锁存在On上了,即使输入的数据在变化也影响不到输出的数据;3.4 译码器74HC138功能结构 38译码器74HC138是一种常用的地址译码器芯片,其管脚图如图五所示。其中,G1、2A、2B为3个控制端,只有当G1为“1”且2A、2B均为“0”时,译码器才能进行译码输出。否则译码器的8个输出端都为高阻状态。译码输入端与输出端之间的译码关系表二所示。 图五 74HC138引脚图表二 74HC138的译码关系A2A1A0输出有效0000010100111001011101113.5 LED数码显示电路的实现由于LED数码显示器为多位,因此采用动态显示扫描显示方式,即逐个地循环地点亮各位显示器。这样虽然任意时刻只有1位显示器被点亮,但是由于人眼具有视觉残留效应,所以看起来与全部显示器持续点亮的效果一样。为了实现8个LED显示器的动态扫描显示,段码控制信号经过74HC573芯片使显示器刷新寄存器输出。而位控制信号由单片机的P2口经译码器74HC138输出、共8个扫描线与LED显示器数码管共阴极相连。8位LED显示器的每位显示段码通过显示字符子程序以查看方式(MOVC A,A+DPTR)进行确定和输出显示子程序(Display),显示缓冲区的首地址为50H。 3.6 硬件电路的实现3.6.1 总电路图将处理器AT89C51、锁存芯片74HC573和译码芯片74HC138,以及各个功能元件按要求进行线路连接,所得电路图见附录。3.6.2 硬件电路的工作过程 1.软件程序已固化在程序存储器FLASH ROM中。开启直流电源+5V,经R2C3组成的微分电路将微处理器AT89C51、锁存芯片进行清零。按清零键,时钟清零;按设置键,设置时钟初始值,并按北京时间要求把时、分依次通过09和0.9.数字键将时钟设定;然后,按OK键,时钟开始计时。 2.电子秒表功能:按暂停键将时钟暂停计时;通过按清零键,时钟清零;按OK键,启动电子秒表开始计时;按暂停键,电子秒表暂停计时。3. 为保证处理器AT89C51、锁存芯片74HC138和74HC573可靠工作,外加手动复位功能SW1。3.6.3直流电源图六 直流电源电路图首先通过变压器T进行交流变压为交流12V,再经过桥式整流VD1-VD4产生脉动10.8V的单向的直流信号,其计算公式为 UC1=0.9U然后通过RC滤波,产生直流15.1V的直流电压,其计算公式为UC1=1.4UI经过三端稳压器LM7805和LM7810产生稳定的直流输出电压+5V。为了保证输出电压的稳定和减小交流波纹系数,增加滤波电容C2和输出电阻R2=200K,以保证输出直流电压的稳定。表三 直流电源元件选择序号名称型号单位数量说明1变压器TRANS1个1进行交流变压2桥式整流器IN4007个4产生单向直流信号3电解电容1000UF/15V个1产生直流电压4三端稳压器7805个1产生稳定的直流输出电压5滤波电容470FU/15V个1滤波6电阻个1分压 4.软件程序的设计与实现4.1 主程序的设计构思 主程序有三个部分:第一部分是初始化设置,包括设置堆栈指针、8279初始化、定时器/计数器初始化、显示缓冲区初始化、开中断、定时器/计数器启动等。定时器/计数器初始化就是选择定时器/寄存器TMOD的工作方式,它的高4位控制定时器T1,低4位控制定时器T0。TMOD中各位的定义如下: T1 T0GATECF1M1M0GATECF1M1M000010000TMOD其中:CF1:T/C功能选择位,当CF1=1时为计数方式;当CF1=0时为定时方式。M1M0:T/C工作方式定义位,M1M0=01时为工作方式,16位定时/计数器。TMOD=10H。设置定时/计数器初始值,定时10ms,计数初值X=DC00H(MOV TL1,#00H MOV TH1,#0DCH)。显示缓冲区初始化,其显示缓冲区的首地址(最低位)为50H。共送入8个字符(MOV R0,#50H MOV R2,#08H)。二部分主要是通过键扫描实现各种操作功能。核心部分是键扫描子程序KEYSCAN。KEYSCAN的主要功能是先通过读8279的状态字,判断是否有键按下,如有键按下则通过读FIF0 RAM命令,读得键值,通过查表得到相应的键号(0F号键相应的键号分别为30H3FH)。KEYSCAN子程序的出口条件是:如无键按下,A累加器的值为00H;如有键按下,A累加器的值为FFH,B寄存器中的内容则为键号。通过按键识别实现相应的操作功能。各项操作功能如下:按“C”键,秒表清零功能:在主程序中将键号和3CH比较,如相等,则调用时钟清零子程序(CLEART)。该子程序功能是将显示缓冲区50H57H(分别存放十时、时、十分、分、十秒、秒、百毫秒、十毫秒的数值)全部清零,显示全零。按“A”键,时钟启动计时功能:在主程序中将键盘扫描所得键号和3AH比较,如相等,则调用时钟启动计时子程序(STARTT)。该子程序的功能是将TR1置1,启动定时器/计数器1工作。按“D”键,时钟停止计时功能:在主程序中将键盘扫描所得序号和3DH比较,如相等,则调用时钟停止计时子程序(STOP_T)。该子程序的功能是将TR1置0,关闭定时器/计数器1。按“B”键,设置时钟初值功能:在主程序中将键盘扫描所得键号和3BH比较,如相等,则调用设置时钟初值子程序(SET_T)。该子程序的功能是通过按8个数字键,设置时钟各位(十时、时、十分、分、十秒、秒、百毫秒和十毫秒)的初值。程序的设计思路是:先通过键扫描确认是否有键按下,然判断键值是否在09之间(即键号是否在30H39H之间),以排除非数字键。后将键值(09)依次送入显示缓冲区50H57HDANYUAN ,再调显示子程序实现显示。其中调用了GETWORD子程序。该子程序的功能是在键扫描判断出有键按下后,再判断是否按的是09数字键(键号为30H39H)。判断方法是将键号与C6H相加,如有进位,则表示非09数字键。若在8次键入过程中任何一次输入了非数字键,则8位LED数码管全部显示为零,要求重新输入。SET_T子程序用一个循环程序实现上述8次键入的功能。第三部分是实现电子秒表的显示。主要调用显示子程序DISP。该显示子程序与以前所述子程序不同之处是其中某些位要显示小数点。按照课题要求,为区分时、分、秒、毫秒,要求时钟显示格式为XX.XX.XX.XX.,即8位数据显示中每间隔一位要显示一个小数点。为能显示小数点,本显示子程序中的DISLED子程序与以往有所不同,在以LEDSEG为起始地址的段码表中,增加了16个能显示小数点的段码值,如显示“3”的段码为3FH,而显示“3.”的段码为BFH。这段码的变化在懂得LED数码管工作原理的基础上应不难理解。当在DISLED子程序的段码表中加入16个带小数点的段码后,为实现预定的显示格式,只要在原显示子程序中加上一条ADD A, #10H指令即可。这样,当要求显示数据为“3”时,原通过查表得到的段码应为4FH,而现为CFH,即显示“3.”,从而使6#、4#、2#、0#LED数码管上显示的数据均带有小数点。4.2 主程序的设计与实现4.2.1 主程序流程图 定时器初始化 矩阵键盘扫描 是 是否有键按下 否 是 判断是否OK键 定时器开始计时 否 是 判断是否设置键 调设置子程序 否 是 判断是否秒表键 转到秒表功能 否 是 判断是否秒清零键 清零秒表计数否 秒表与时钟切换程序 数码管显示图七 主程序的流程图4.2.2 主程序的实现#include#define uchar unsigned char#define uint unsigned int#define clr time0=time1=time2=time3=time4=time5=time6=time7=0;uchar num,time8; /按键值,时间数组uchar buffer8; /暂存时间bit start,flag,add,sub,set,ok;/标志位uchar code seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数码管段选0-9uchar code seg_=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/数码管段选0.-9.void keyscan(void);/扫描矩阵键盘void delay(uint a);/1ms延时void display(uchar m);/数码管动态显示void timer2_init(void);/定时器2初始化void time_process(void);/秒表与时钟切换处理void timeset(void);/时间设置/-主函数-void main(void) timer2_init(); /定时器2初始化 while(1) keyscan(); /扫描矩阵键盘 timeset(); /时间设置 time_process(); /秒表与时钟切换数据处理 display(9); /数码管动态显示 /-1ms延时12Mhz-void delay(uint a)/1ms延时 uint i; while(-a!=0) for(i=0;i125;i+); /- -void display(uchar m) static uchar j; P2=7;/第8位数码管显示 P0=seg_time0; if(m=0)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=6;/第7位数码管显示 P0=segtime1; if(m=1)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=5;/第6位数码管显示 P0=seg_time2; if(m=2)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=4;/第5位数码管显示 P0=segtime3; if(m=3)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=3;/第4位数码管显示 P0=seg_time4; if(m=4)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=2;/第3位数码管显示 P0=segtime5; if(m=5)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=1;/第2位数码管显示 P0=seg_time6; if(m=6)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3); P2=0;/第1位数码管显示 P0=segtime7; if(m=7)/设置该位时数码管闪烁 j+; if(j=10) delay(2); j=0; else delay(3);/-定时器2初始化-void timer2_init()/定时器2初始化 /T2MOD=0;/定时器2工作模式寄存器,初始值定时器2做为普通的16位自动重装初值定时器用 /T2CON=0;/配置定时器2控制寄存器,这里其实不用写,T2CON初始值就是0 RCAP2H=0xd8;/在程序初始化的时候给RCAP2L和RCAP2H赋值, RCAP2L=0xf0;/TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。 TH2=RCAP2H;/12M晶振下每次中断10ms TL2=RCAP2L; ET2=1;/开定时器2中断/-秒表与时钟切换数据处理-void time_process() uchar i; keyscan(); if(start)/检测是否按下秒表键 start=0; for(i=0;i8;i+) bufferi=timei;/把当前时间暂存到buffer数组中delay(100);/延时,防止被定时器中断干扰 flag=1;/置位flag clr;/当前显示清0,从0开始计时 if(ok=1&flag=1)/检测是否按下OK键 for(i=0;i9)timei=0;timei+1+;/大于9时进位else if(timei5)timei=0;timei+1+;/大于6时进位 flag=0;/清零flag /-扫描矩阵键盘-void keyscan(void)/键盘扫描 uchar h,l;/h:行 l:列 P3=0x0f;/列全置低电平,行全置高电平 h=P3&0x0f; if(h!=0x0f)/若有键按下则行会出现低电平 delay(10);/按键去抖 if(h!=0x0f) h=P3&0x0f;/读入行值 P3=0xf0;/电平反转 l=P3&0xf0;/读入列值 switch(h+l)/行值+列值=按键值 case 0x7e: start=1;break; /秒表开始,定时器2开始计时 case 0xbe: EA=0;break; /秒表暂停,关总中断 case 0xee: set=1;break; /设置, case 0xde: num=0;if(!set)EA=0;clr;break;/秒表清0,设置0 case 0xbd: num=1;break; /1 case 0xdd: num=2;break; /2 case 0xed: num=3;break; /3 case 0xbb: num=4;break; /4 case 0xdb: num=5;break; /5 case 0xeb: num=6;break; /6 case 0xb7: num=7;break; /7 case 0xd7: num=8;break; /8 case 0xe7: num=9;break; /9 case 0x7d: add=1;break; /+, case 0x77: sub=1;break; /-, case 0x7b: ok=1;break; /OK, default: break; /-时间设置-void timeset(void) bit c; if(ok) TR2=1; EA=1;ok=0;/如果OK键按下则开始计时 if(set) /检测是否按下设置键 uchar i; while(!ok) /检测是否按下OK键 display(i); keyscan(); if(add)/检测是否按下add(加)键 i+;delay(100);add=0; if(sub)/检测是否按下sub(减)键 i-;delay(100);sub=0; timei=num;/设置该位 P1=num; if(i7)i=0;c=1; if(i=0&c=1)i=7;c=0; ok=0;set=0;/设置完成 /-定时器2中断服务程序-void timer2() interrupt 5 /定时器2中断服务程序标号为5,每10ms中断一次 TF2=0;/定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务程序中将其清零, time0+;/为了使定时尽量准确第一步就使TF2=0 if(time0=10) time0=0; time1+; if(time1=10) time1=0; time2+;/秒加 if(time2=10) time2=0; time3+; if(time35) time3=0; time4+;/分加 if(time4=10) time4=0; time5+; if(time55) time5=0; time6+;/时加 if(time63) time6=0; time7+; if(time72) time7=0; 4.3 软件程序的调试与运行 开始对软件程序进行编译,看是否有语法上的错误,在这里是借助WAVE软件进行检查。 然后在完成编译的情况下,打开菜单上的CPU窗口及数据窗口,在软件上模拟,并且观察各个窗口中数据的变化,该过程可以检查所编译的程序是否是自己所要的显示值。由于无单片机实验开发及仿真硬件系统,无法知道软件调试成功后硬件的运行情况,今后在此方面进行改进和加强。5.总 结本篇论文是利用单片机和接口外围电路组成的时钟和秒表双重功能的电子秒表电路。整个电路由硬件电路和软件程序两部分组成。硬件电路使用元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论