89C51单片机课程设计之秒表设计实验报告.

合集下载

单片机时钟秒表课程设计报告

单片机时钟秒表课程设计报告

单片机的时钟设计小组成员:班级:课程老师:目录一、硬件结构 (3)1硬件原理 (3)1 89C52 (3)1.1硬件原理 (3)1.2 主要功能特性 (3)1.3 管脚说明 (4)1.4振荡器特性 (5)1.5结构特点 (5)2、数码管 (6)2.1数码管分类 (6)2.2数码管结构 (7)2.3驱动方式 (8)3、排阻 (9)3.1排阻的作用 (9)3.2排阻引脚说明 (9)4、晶振 (10)4.1晶振构成 (10)4.2工作原理 (11)4.3功能作用 (11)二、软件结构概述 (12)1、显示子程序 (12)2、键盘扫描子程序 (13)3、中断程序 (16)4、流程图 (18)三、调试过程 (20)四、心得体会 (22)五、参考文献 (23)六、硬件电路图 (23)七、程序清单 (25)一、硬件结构概述1、89C521.1硬件原理89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。

它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。

89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。

此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。

在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。

掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。

89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

1.2 主要功能特性·标准MCS-51内核和指令系统· 32个双向I/O口· 3个16位可编程定时/计数器·向上或向下定时计数器· 6个中断源·全双工串行通信口·空闲和掉电节省模式·片内8kROM(可扩充64kB外部存储器)· 256x8bit内部RAM(可扩充64kB外部存储器)·时钟频率3.5-12/24/33MHz·改进型快速编程脉冲算法· 5.0V工作电压·布尔处理器· 4层优先级中断结构·兼容TTL和CMOS逻辑电平· PDIP(40)和PLCC(44)封装形式·—帧错误侦测·—自动地址识别1.3 管脚说明VCC:供电电压。

完整版本基于89C51单片机的秒表设计

完整版本基于89C51单片机的秒表设计

《单片机原理与应用》课程设计报告鉴于 89C51 单片机的秒表设计专业:学号:姓名:2015-12-25一、课题名称鉴于 89C51单片机的秒表设计二、任务要求1、计时范围: 0~59 分 59.59 秒,整数四位数和小数两位数显示;2、计时精度 10 毫秒;3、复位按钮,计时器清零,并做好下次计时准备;4、能够对两个对象( A、B)计时,拥有启 / 停控制;3、设开始、停止A、停止 B、显示 A、显示 B、复位按钮。

三、任务剖析1、设计中包含硬件电路的设计和系统程序的设计。

其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。

主控制器采纳单片机89C52显示电路采纳共阳极 LED数码管显示计不时间。

2、利用 89C52单片机的准时器 / 计数器准时和记数的原理,使其能精准计时。

3、 P0 口输出段码数据, P2.0-P2.4 口作列扫描输出, P1.1、 P3.2、 P3.3、 P2.5 口接四个按钮开关,分别实现开始、暂停、清零和查察上一次计不时间功能。

4、利用中止系统使其能实现开始暂停的功能。

四、设计方案1、硬件方案工作原理:计时采纳准时器T0 中止达成,准时溢出中止周期为1ms,当一处中止后向CPU发出溢出中止恳求,每发出一次中止恳求就对毫秒计数单元进行加一,达到10次就对十毫秒位进行加一,挨次类推,直到99.99 秒从头复位。

再看按键的办理。

这四个键能够采纳中止的方法,也能够采纳扫描的方法来辨别。

复位键和查察主要功能在于数值复位和查问上一次计不时间,关于时间的要求不是很严格。

而开始和停止键则是用于对时间的锁定,需要比较正确的控制。

所以能够对复位和查察按键采纳扫描的方式。

而对开始和停止键采纳外面中止的方式。

设计中包含硬件电路的设计和系统程序的设计。

其硬件电路主要有主控制器,显示电路和回零、启动、查察、计次电路等。

主控制器采纳单片机89C52,显示电路采纳共阳极LED数码管显示计不时间,四个按键均采纳触点式按键。

89C51单片机课程设计之秒表设计实验报告

89C51单片机课程设计之秒表设计实验报告

单片机课程设计报告单片机秒表系统课程设计班级:课程名称:秒表设计成员:实训地点:北校机房实训时间:6月4日至6月15日目录1课程设计的目的和任务1.1 单片机秒表课程设计的概述1.2课程设计思路及描述1.3 课程设计任务和要求2硬件与软件的设计流程2.1系统硬件方案设计2.2所需元器件3 程序编写流程及课程设计效果3.1源程序及注释3.2原理图分析3.3课程设计效果4 心得体会1. 课程设计的目的和任务1.1单片机秒表课程设计的概述一、课程设计题目秒表系统设计——用STC89C51设计一个4位LED数码显示“秒表”,显示时间为000.0~9分59.9秒,每10毫秒自动加一,每1000毫秒自动加一秒。

二、增加功能增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。

三、课程设计的难点单片机电子秒表需要解决几个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程;四是如何进行安装调试。

四、课程设计内容提要本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

其中本课程设计有三个开关按键:其中key1按键按下去时开始计时,即秒表开始键,key2按键按下去时数码管清零,复位为“00.00”. key3按键按下去时数码管暂停。

五、课程设计的意义1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

2)掌握定时器、外部中断的设置和编程原理。

3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义1.2课程设计思路及描述该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C51的P3.2,P3.3,RST作为按键的入口;定时器T1作为每0.1秒加一的定时器。

基于89C51单片机的秒表课程设计

基于89C51单片机的秒表课程设计

基于89C51单片机的秒表课程设计第一篇:基于89C51单片机的秒表课程设计摘要随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人对它的认识也逐步加深。

秒表计时器秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。

其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。

而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。

本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制承诺简易的秒表。

以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。

采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。

目录一、设计任务 (3)二、设计题目 (3)三、功能分析 (3)四、总体设计 (3)4.1硬件设计 (4)4.1.1 89C51单片机 (4)4.1.2晶体振荡电路 (5)4.1.3复位电路 (6)4.1.4按键电路 (7)4.1.5显示电路 (8)4.2引脚控制 (9)五、电路原理图 (10)六、程序流程图及程序设计 (11)6.1程序流程图 (11)6.2程序设计 (12)七、程序仿真 (21)八、心得体会 (22)九、致谢 (2)3十、参考文献 (24)一、设计任务以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。

二、设计题目秒表的设计三、功能分析采用3个LED数码管显示时间,计时范围设置为0~99.9秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。

单片机秒表课程设计报告

单片机秒表课程设计报告

一:课程设计题目秒表/时钟计时器二:课程设计任务与要求:利用89C51单片机设计秒表/时钟计时器,通过LED显示器显示秒十位和个位,在设计过程中用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,重新开始秒计数。

三:设计过程:1.设计原理:此次课程设计题目是秒表/时钟计时器,由课程设计的要求和任务,我采用的C语言编程,设计秒表要求一秒定时,采用了定时器和FOR循环来定时,其中一个软件一个硬件,会在方案论证中分析在1秒时采用的是硬件定时,即用单片机内部的定时器T0。

先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时。

然后由定义的变量second来进行加一运算,然后将其值通过P1,P2口在数码管上进行显示。

其中数码管的显示时,我在程序中首先定义了一个关于数码管显示的字形码定义,以便在显示时调用即可。

(1)方案论证:方案1:在方案1中,我们所选用的是软件定时,即用for循环来定时1秒进行显示的变化.方案2:在方案2中,采用的是硬件定时,即用单片机内部的定时器T0。

先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时.方案比较:我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的。

第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来,但真正大程序时会很占用资源的,所以在用定时中断过程中是非常节省资源的.综合上述两种比较,我们选用了第二种方案.(2)创新点:a。

在课程要求的基础上,我们做成的电路板上,用复位键来控制秒表计时的重新开始,即清零。

b。

在以上设计的基础上,我们又重新设计了一个程序,基本原理没有变,只是将秒表在到达59清零的瞬间向分的位数上进1,程序将会在附录3中给出。

2.硬件系统框图与说明:首先,连接的是单片机51的最小系统,其中包括时钟电路,复位电路,在此中包括的元器件在附录3中.我们所选用的数码管是共阴极的,置1时导通,所以将单片机的P1。

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

标准文档9创新实践实训报告学院信息电子技术学院专业电子信息工程班级14学籍号姓名指导教师蒋野2017年06月29日单片机控制秒表电路一、电路工作原理1.工作原理用STC89C52设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“暂停”键S2和一个“继续”键S3。

为使本设计系统更加完善,可以引入一个“复位”键S1,以方便对系统的控制。

如图。

本系统采用STC89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,将软硬件有机结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,硬件系统利用Protues强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。

2.元器件作用(1)STC89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

(2)时钟电路作用是为电路提供唯一的时钟信号。

(3)复位电路外接一个开关,控制电路复位,接通电源电路直接复位,如果没有开关亦可将复位电路引出导线接电源后断开。

(4)本设计要求使用共阳极的数码管,如下是共阳极的数码管的0-9编码:0xc0,0x92,0x82,0xf8,0x80,0x90,0xf9,0xa4,0xb0,0x99.(5)控制电路:S2按下电路停止计时,S3按下电路恢复计时。

二、程序流程图主程序流程图三、检测安装与调试1.元件检测共阳极数码管检测管脚序号利用万用表二极管档红表笔接一个抵住两个管脚,利用另一个接触其他,找出1,2两个管脚,继续分别找出A,D,C,D,E,F,G,Dp管脚。

单片机秒表实验报告

单片机秒表实验报告

单片机课程设计说明书题目:电子秒表学生姓名:专业:班级:指导教师:日期:目录第一章单片机课程设计任务书 (1)一、目的意义 (1)二、设计时间、地点和班级 (1)三、设计内容 (1)四、参考电路图形 (2)五、单片机的相关知识 (3)第二章硬件设计 (5)一、单片机简介 (5)二、电源电路 (5)三、晶振振荡电路 (5)四、复位电路 (5)五、显示电路 (6)六、键盘电路 (6)七、硬件主电路图设计 (7)八、元件清单 (7)第三章软件设计 (8)一、软件设计概述 (8)二、主程序流程图 (8)三、程序中各函数设计 (8)四、C语言主程序设计 (10)第四章课程设计体会 (13)..参考文献 (14)五、单片机相关知识本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了AT89C51。

AT89C51单片机采用40引脚的双列直插封装方式。

图1.2为引脚排列图,40条引脚说明如下:主电源引脚Vss和Vcc①Vss接地②Vcc正常操作时为+5伏电源外接晶振引脚XTAL1和XTAL2①XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。

当采用外部振荡器时,此引脚接地。

②XTAL2内部振荡电路反相放大器的输出端。

是外接晶体的另一端。

当采用外部振荡器时,此引脚接外部振荡源。

图1.2 AT89C51单片机引脚图控制或与其它电源复用引脚RST/VPD,ALE/PROG,PSEN和EA/Vpp①RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。

②ALE/PROG正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。

因此,它可用作对外输出的时钟,或用于定时目的。

基于单片机的秒表设计与实现课程设计报告

基于单片机的秒表设计与实现课程设计报告

基于单片机的秒表课程设计报告一、设计题目秒表系统设计——用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。

另设计一个“开始”按键和一个“复位”按键。

二、增加功能增加一个“暂停”按键和一个“快加”按键(每10ms快速加一)三、设计提要本实验利用单片机的定时器/计数器定时和记数的原理,结合dvcc实验箱上的集成电路芯片8032、LED数码管以及实验箱上的按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

其中本实验设计了四个开关按键:其中一个按键按下去时以1秒加一开始计时,即秒表开始键(本实验中当开关从1变为0时开始计时),另一个按键按下去时暂停计时,使秒表停留在原先的计时(本实验中当相应开关从1变为0时即停止计时),第三个按键按下去时清0(本实验中当相应开关从1变为0时即停止计时),第四按键按下去则是以每10ms秒快速加一计时(本实验中当开关从1变为0 时开始计时)。

本实验中开始时都要使各按键回到各初始位置,即都处于1状态。

三、课设目的1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

2、掌握定时器、外部中断的设置和编程原理。

3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

四、意义该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、快加功能,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。

五、本人所做工作根据相关的单片机材料,利用所学的单片机知识,结合DVCC系列单片机微机仿真实验系统中的软件和硬件(集成电路芯片8032,七段数码管,开关电路及时钟信号电路,按键等),编写能够实现该项目的软件程序,最后将软、硬件有机的结合起来,进行有效的调试,达到完成该实验课程设计的目的要求。

六、实验内容用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这里可以加学校LOGAL单片机课程设计报告院系:12级物信系班别:光信息科学与技术7班课程名称:秒表设计姓名:龚俊才欧一景学号:********** *****************2011.12.23目录1课程设计的目的和任务1.1 单片机秒表课程设计的概述1.2课程设计思路及描述1.3 课程设计任务和要求2硬件与软件的设计流程2.1系统硬件方案设计2.2软件方案设计3 程序编写流程及课程设计效果3.1源程序及注释3.2原理图分析3.3课程设计效果4 心得体会5 相关查阅资料1. 课程设计的目的和任务1.1单片机秒表课程设计的概述一、课程设计题目秒表系统设计——用STC89C52RC设计一个4位LED数码显示“秒表”,显示时间为00.00~99.99秒,每10毫秒自动加一,每1000毫秒自动加一秒。

二、增加功能增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。

三、课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。

四、课程设计内容提要本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

其中本课程设计有两个开关按键:其中key1按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key2按键按下去时数码管清零,复位为“00.00”.五、课程设计的意义1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

2)掌握定时器、外部中断的设置和编程原理。

3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义六、课程设计仪器a) 集成电路芯片8051,七段数码管,89C51单片机开发板b) MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。

1.2课程设计思路及描述该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.2,P3.5作为按键的入口;定时器T1作为每0.01秒加一的定时器。

其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。

方框图如下图1:图1数字秒表设计导向1.3 课程设计任务和要求1.3.1 设计指标 。

了解8051芯片的的工作原理和工作方式 ,使用该芯片对LED 数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、99秒、清零等功能,精确到0.01秒。

要求选用定时器的工作方式,画出使用单片机控制LED 数码管显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。

1.3.2 设计要求① 画出电路原理图(或仿真电路图); ② 软件编程与调试; ③ 电路仿真与调试;2.软件与硬件设计2.1系统硬件方案设计单片机应用系统由硬件系统和软件系统两部分组成。

硬件系统是指单片机以及扩展的存储器、I\O 接口、外围扩展的功能芯片以及接口电路。

软件系统包括监控程序和各种应用程序。

在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。

与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O 接口,使单片机应用系统能够运行。

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。

在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。

配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED 指示灯就可以进行处理了。

在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。

图2系统硬件结构框11.0592M Hz 晶振2个独立式的按键电源指示灯电源开关4个数码管显示STC89C52RC2.2软件方案设计此次选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。

其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图图如图 3所示:图33 程序编写的流程及课程设计效果3.1 源程序及注释/*-----------------------------------------------名称:数码管显示,按键控制秒表论坛:编写:shifang日期:2009.5修改:无内容:中断按键控制,数码管显示,中断0控制计时和停止,中断1清零------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义unsigned int msecond,second;//定义全局变量bit GoFlag;//定义停止,计时标志#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存sbit KEY=P3^2;unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量void DelayUs2x(unsigned char t);//函数声明void DelayMs(unsigned char t);void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);void CLR(void);/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char num=0;EX0=1; //外部中断0开IT0=1; //IT1=0表示边沿触发EX1=1; //外部中断1开IT1=1; //IT1=1表示边沿触发Init_Timer0();while (1) //主循环{TempData[0]=dofly_DuanMa[second/10];//分解显示信息,如要显示68,则68/10=6 68%10=8TempData[1]=dofly_DuanMa[second%10];TempData[2]=0x40;// "-"TempData[3]=dofly_DuanMa[msecond/10];//分解显示信息,如要显示68,则68/10=6 68%10=8TempData[4]=dofly_DuanMa[msecond%10];//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------显示函数,用于动态扫描数码管输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。

Num表示需要显示的位数,如需要显示99两位数值则该值输入2 ------------------------------------------------*/void Display(unsigned char FirstBit,unsigned char Num) {static unsigned char i=0;DataPort=0; //清空数据,防止有交替重影LATCH1=1; //段锁存LATCH1=0;DataPort=dofly_WeiMa[i+FirstBit]; //取位码LATCH2=1; //位锁存LATCH2=0;DataPort=TempData[i]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;i++;if(i==Num)i=0;}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/void Init_Timer0(void){TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响//TH0=0x00; //给定初值//TL0=0x00;EA=1; //总中断打开(总中断控制开关)ET0=1; //定时器中断打开(允许中断0的发生)TR0=1; //定时器开关打开(定时器T0开始工作)}/*------------------------------------------------定时器中断子程序------------------------------------------------*/void Timer0_isr(void) interrupt 1{static unsigned char num;TH0=(65536-2000)/256; //重新赋值 2msTL0=(65536-2000)%256;Display(0,8);if(GoFlag){num++;if(num==5){num=0;msecond++;if (msecond==100)//100进1{msecond=0;second++;//秒加1if(second==100)second=0;}}}}/*------------------------------------------------外部中断0程序------------------------------------------------*/void ISR_INT0(void) interrupt 0{if(!KEY) //如果检测到低电平,说明按键按下{DelayMs(20); //延时去抖,一般10-20msif(!KEY) //再次确认按键是否按下,没有按下则退出{GoFlag=!GoFlag; //利用外部中断打开和关闭定时标志用于开始和停止计时}}//主循环中添加其他需要一直工作的程序}/*------------------------------------------------外部中断1程序------------------------------------------------*/ void ISR_INT1(void) interrupt 2{if(GoFlag==0)//停止时才可以清零CLR();}/*------------------------------------------------数值清零------------------------------------------------*/ void CLR(void){second=0; //利用外部中断清零msecond=0;}void DelayUs2x(unsigned char t){while(--t);}void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}3.2原理图分析图4按键原理图图5显示电路图6电源电路原理图3.3课程设计效果通过最后软件对程序的编译,组建,执行,还有最终生成.hex文件,把.hex下载到TX-1C开发板的STC89C52RC单片机上的最终效果图如下:下图: 开始运行,执行自动加1下图:下图为复位后的显示下图:“开始自加”运行,一直加到99秒4 心得体会以下是我在设计这个秒表过程中所总结的心得,整个过程主要是:设计程序----修正程序5 相关资料查阅【1】孙育才编著.MCS-51系列单片微型计算机及其应用.东南大学出版社.2009.12 【2】郭天祥编著.51单片机C语言教程-入门、提高、开发、拓展全攻略.电子工业出版社.2010.05【3】刘刚编著.Protel DXP 2004 SP2原理图与PCB设计.电子工业出版社.2009.07 【4】丁峻岭主编.C语言程序设计.中国铁道出版社.2009.12。

相关文档
最新文档