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

更新时间:2023-03-08 05:30:38 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机技术》 课程设计报告

题 目:班 级:学 号:姓 名:同组人员:指导教师:

基于MCU-51单片机的秒表设计 王瑞瑛、汪淳

2014年6月17日

目 录

1 课程设计的目的 .................................................................................... 3 2 课程设计题目描述和要求 .................................................................... 3 2.1实验题目 ....................................................................................... 3 2.2设计指标 ....................................................................................... 3 2.3设计要求 ....................................................................................... 4 2.4增加功能 ....................................................................................... 4 2.5课程设计的难点 ........................................................................... 4 2.6课程设计内容提要 ....................................................................... 4 3 课程设计报告内容 ................................................................................ 4 3.1设计思路 ....................................................................................... 4 3.2设计过程 ....................................................................................... 5 3.3 程序流程及实验效果 .................................................................. 6 3.4 实验效果 .................................................................................... 13 4 心得体会 ............................................................................................ 14

基于 MCS-51单片机的秒表设计

摘要:单片机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体

的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。本次设计内容为以 8051 单片机为核心的秒表,它采用键盘输入,单片机技术控制。设计内容以硬件电路设计,软件设计和 PCB 板制作三部分来设计。利用单片机的定时器/计数器定时和计数的原理,用集成电路芯片、LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使他拥有正确的计时、暂停、清零、并同时可以用数码管显示,在现实生中应用广泛。 关键词:秒表;8051;定时器;计数器

1 课程设计的目的

《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。

2 课程设计题目描述和要求

2.1实验题目

开始时,显示“00.0”,第一次按下按钮后开始从0-99.9s计时,显示精度为0.1s;对用有4个功能按键,第1个按键复位00.0,第2个按键正计时开始按钮,第3个按键复位99.9,第4个按钮倒计时开始。 2.2设计指标

了解8051芯片的的工作原理和工作方式,使用该芯片对 LED 数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起

动、停止、99.9秒、倒计时清零等功能,精确到0.1秒。

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

(1) 画出电路原理图(或仿真电路图); (2) 软件编程与调试; 2.4增加功能

增加一个“复位 00.0”按键(即清零),一个“暂停”和“开始”按键,一个“复位 99.9” 按键(用来99.9秒倒计时),一个倒计时“逐渐自减”按键。 2.5课程设计的难点

单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现 LED 的动态扫描显示;三是如何对键盘输入进行编程。 2.6课程设计内容提要

本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED 数码管以及实验箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确 地进行计时,数码管能够正确地显示时间。其中本课程设计有四个开关按键:其中key2按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key1按键按下去时数码管清零,复位为“00.0”,key3 按键按下去时数码管复位为“99.9”(用于倒计时),key4 按键按下去则是数码管开始“逐渐自减”倒计时。

3 课程设计报告内容

3.1设计思路

3.1.1 系统硬件方案设计

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

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

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘 和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个 LED 指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。这里我们选择独立键盘如图3.2所示。系统硬件结构整体如图3.3所示。

图3.1 时钟电路 图3.2 按键电路

电源开关及指示模块 四个独立功能按键模块 STC89C52RC 系统时钟 模块 三个数码管显示模块

图3.3 系统硬件结构框图

3.2设计过程

3.2.1 系统设计思路及描述

该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.4,P3.5,P3.6,P3.7 作为按键的入口;定时器 T0 作为每 0.1 秒减一的定时器; 定时器 T1 作为每 0.1 秒加一的定时器。其中“开

始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。方框图图3.4所示 :

图3.4 数字秒表设计导向图

3.2.2.课程设计仪器

集成电路芯片8051,七段数码管,MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2),protues仿真软件。 3.3 程序流程及实验效果 3.3.1 程序流程图

开始

初始化 判断是否开启中断计时 N 等待中断发生 Y 调用显示子程序

调用开关子程序 图3.5 主程序流程图

选择按键 按键1 复位00.0 按键2 按键3 按键4 按一下,复位99.9 按一下,正计时开倒计时开始;再按始,再按一下,停下,停止。 止。 图3.6 按键流程图

计时数值入口 计时数值除以送显示到第一个数码管 100 显示秒十位 计时数值减去秒十位乘以100在送显示到第二个数除以10 码管 显示秒个位 计时数值减去秒十位、秒个位 送显示到第三个数码显示微秒 管

图3.7 显示流程图

计时开始

时1.0s计是否到

3.3.2 源程序及说明

#include #define uchar unsigned char #define uint unsigned int

sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7;

uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7c,0x07, 0x7f,0x67};

N Y 秒位加 1 N 计时是否到 10s Y 十秒位加 1

图3.8 计时流程图

//52 系列单片机头文件 //宏定义 //申明四个按键的锁存端 //含有 0~9 的数字数组 uchar code table2[]={ //含有 0~9 的数字数组(带小数点) 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfc,0x87, 0xff,0xe7};

void delayms(uint); //声明延时函数 void display(uchar,uchar,uchar); //声明显示函数 void keyscan(); //声明按键函数 uchar num1,num2,bai,shi,ge; //变量声明 uint num;

void main() //主函数入口 {

TMOD=0x11; //设置 TO,T1 定时器

TH0=(65536-45872)/256; //装初值11.05992M晶振50ms数为45872 TL0=(65536-45872)%6; TH1=(65536-45872)/256; TL1=(65536-45872)%6;

EA=1; //开总中断

ET0=1; //开启定时器 T0 中断 ET1=1; //开启定时器 T1 中断

while(1) //程序停在这里等待中断的发生,这个大循环也是实现数据显示的主体 {

keyscan(); //三个数码管要选送的数据 bai=num/100; //百位 shi=(num-100*bai)/10; //十位 ge=num-100*bai-shi*10; //个位

display(bai,shi,ge); //数码管显示 } }

void display(uchar bai, uchar shi,uchar ge) {

P1=0xfe; //位选选中第一个数码管 P2=table[bai]; //送段选数据 delayms(10); //延时 P1=0xff; //关闭位选

P1=0xfd; //位选选中第二个数码管

P2=table2[shi]; //送段选数据 delayms(10); //延时

P1=0xff; //关闭位选

P1=0xfb; //位选选中第二个数码管 P2=table[ge]; //送段选数据 delayms(10); //延时

P1=0xff; //关闭位选

}

void delayms(uint xms) //延时子函数 {

uint i,j; for(i=xms;i>0;i--) //i=xms 即延时约 xms 毫秒 for(j=110;j>0;j--); }

void keyscan() {

if(key1==0) //清零 {

delayms(10); //延时去抖 if(key1==0)

{ while(!key1) //等待按下 {

TR0=0; //定时器 TR0 关闭

本文来源:https://www.bwwdw.com/article/tex.html

Top