基于c51的LED数码管秒表的制作

基于c51的LED数码管秒表的制作

前言:简单的做个课程设计题目,本来题目并不难,但是设计过程中出现了很多小问题,发出来给自己提个醒。

一、设计要求

制作一个LED数码管显示的秒表,用2位数码管显示计时时间,最小计时单位为“百毫秒”,计时范围0.1~9.9。

  1. 当第1次按下并松开计时功能键时,秒表开始计时并显示时间;
  2. 第2次按下并松开计时功能键时,停止计时,计算两次按下计时功能键的时间,并把时间值送入数码管显示;
  3. 第3次按下计时功能键,秒表清零,等待下一次按下计时功能键。
  4. 如果计时到9.9,将停止计时,按下计时功能键,秒表清零,再按下重新开始计时。

二、设计思路及原理

  1. 计时:运用定时器Tim0,设置为工作方式2(自动填装)。
  2. 显示:数码管动态扫描。
  3. 判断按键:运用外部中断0。
  4. 判断是第几次按键,定义一个变量,每次按键后变量+1。
  5. 判断是否松开:对按键电平进行判断:while(key)。

三、代码

头文件
#ifndef _STOPWATCH_H
#define _STOPWATCH_H

#ifndef uchar 
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned int
#endif

#include "reg52.h"

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;  			//数码管所用74HC138译码器引脚定义

sbit Key=P3^2; 				//中段按键

extern uint timer;			//用来显示的数值(0~99)
extern uint count;			//当count记满400(1秒)时,timer++
extern uchar TimeData[2];	//timer的个位和十位
extern uchar Flag;			//第几次按键判断标志

void Int0Init();           //外部中断初始化
void Int0Callback();       //外部中断函数
void Tim0Init();           //定时器中断初始化   //两个初始化可以放在一起
void Tim0hander();         //定时器中断函数
void DataPros
  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值