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

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

这里可以加学校L O G A L

2011.12.23

目录1课程设计的目的和任务

2

3

3.3课程设计效果

4 心得体会

5 相关查阅资料

1. 课程设计的目的和任务

1.1单片机秒表课程设计的概述

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.3.2 设计要求

①画出电路原理图(或仿真电路图);

②软件编程与调试;

③电路仿真与调试;

2.软件与硬件设计

2.1系统硬件方案设计

单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。

在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。

图2系统硬件结构框

2.2软件方案设计

此次选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图图如图 3所示:

3

3.1 源程序及注释

/*-----------------------------------------------

名称:数码管显示,按键控制秒表

论坛:

编写:shifang

日期:2009.5

修改:无

内容:中断按键控制,数码管显示,中断0控制计时和停止,中断1清零

------------------------------------------------*/

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

unsigned int msecond,second;//定义全局变量

bit GoFlag;//定义停止,计时标志

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表示边沿触发

}

}

/*------------------------------------------------

显示函数,用于动态扫描数码管

输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显

如输入0表示从第一个显示。

Num表示需要显示的位数,如需要显示99两位数值则该值输入2 ------------------------------------------------*/

void Display(unsigned char FirstBit,unsigned char Num) {

static unsigned char i=0;

i=0;

}

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

void Init_Timer0(void)

{

TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

//TH0=0x00; //给定初值

//TL0=0x00;

}

{

num++;

if(num==5)

{

num=0;

msecond++;

if (msecond==100)//100进1

{

msecond=0;

second++;//秒加1

if(second==100)

second=0;

}

}

}

{

}

//主循环中添加其他需要一直工作的程序 }

相关文档
最新文档