基于51单片机的秒表设计—0.01精度、有提示音

基于51单片机的秒表设计

(仿真+程序+原理图+设计报告)

功能介绍

具体功能:

1.数码管显示,精度为0.01;

2.按键控制启动/停止,暂停/开始;

3.有一秒钟一次提示音(嘀嘀滴声,跟新闻联播倒计时一样),可按键控制打开/关闭;

/************************************************************************************************** 
51单片机简易秒表
**************************************************************************************************/

#include <reg51.h>

#define false 0
#define true 1
#define uchar unsigned char	 //0-255
#define uint unsigned int	 		//0-65535
#define ulong unsigned long	//0-4294967295

sbit start_key = P3^0;	//启动
sbit pause_key = P3^1;	//暂停
sbit beep_key = P3^3;	//提示音

sbit start_led = P3^4;		//启动指示灯
sbit pause_led = P3^5;		//暂停指示灯
sbit beep_led = P3^6;		//喇叭指示灯
sbit beep = P3^7;				//喇叭

uchar disCode[10] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //段码 0~9
uchar locCode[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};					//位码

void displayTime(void);	 //刷新时间显示
void disPlay(uchar num, uchar loc);	 //数码管显示韩函数

void Delay1ms(unsigned int n);	//延时1ms

uchar state;	//状态:0-停止,1-启动,2-暂停
ulong ms = 0;	//存储毫秒值
uchar fen = 0;	//分钟数
uchar miao;	//秒数
uchar ms2;	//毫秒数的10位

bit isBeep = false;	//是否开启蜂鸣器

/******************************************************************************* 
* 函数名        : T0_INT
* 函数功能        : T0定时器中断10ms
* 输入          : 无
* 输出       : 无
*******************************************************************************/ 
void T0_INT(void)  interrupt 1
{ 
	TL0= (65536-9000)/256;	
	TH0= (65536-9000)%256;
	ms ++;
}

/******************************************************************************* 
* 函数名         : main
* 函数功能         : 主函数
* 输入          : 无
* 输出       : 无
*******************************************************************************/  
void main(void)
{
	TMOD=0x61; //0110 0001	//方式一
	
	TL0= (65536-10000)/256;		// 10ms
	TH0= (65536-10000)%256;
	TR0=1;		//开启T0
	//ET0=1;		//T0中断允许
	
	EA=1;	//总中断开启
	

	start_led = 0;		
	pause_led = 0;		
	beep_led = 0;		
	
	while(1)
	{
		displayTime();	 //刷新时间显示
			
		//检测启动、停止按钮
		if(start_key == 0)	 //按下了启动、停止按钮
		{
			Delay1ms(10);	//延时消抖
			if(start_key == 0)
			{
				if(state == 0)
				{
					state = 1;	
					ms = 0;		
					fen = 0;	
					ET0 = 1;		
					start_led = 1;	
				}else{
					state = 0;		
					ET0 = 0;		
					start_led = 0;	
					pause_led = 0;	
				}
			   	while(start_key == 0) displayTime();	
			}
		}
		
		//检测暂停按钮,按下暂停,再次按下继续
		if(state != 0 && pause_key == 0)	
		{
			Delay1ms(10);	
			if(pause_key == 0)
			{
				if(state == 2)	
				{
					state = 1;	
					pause_led = 0;	
					ET0 = 1;		
				}else{
					state = 2;
					pause_led = 1;	
					ET0 = 0;		
				}
			   	while(pause_key == 0) displayTime();	
			}
		}
		
		//检测声音按钮,按键按下开始报警
		if(beep_key == 0)	
		{
			Delay1ms(10);	
			if(beep_key == 0)
			{
				isBeep = ~isBeep;	
				beep_led = isBeep;	
			  while(beep_key == 0) displayTime();	
			}
		}
		if(fen==10)//分钟等于10开始报警	
		{
				isBeep = ~isBeep;	
				beep_led = isBeep;	
			}
	}
}

硬件设计

使用元器件:

单片机:STC89C51;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

9*15万用板;共阴极数码管*6

40脚IC座;10k电阻;

2k电阻;103排阻;

10uf电解电容;12M晶振;

30pf电容*2;470uf电容;

0.1uf电容;Led灯*14;

按键*4;自锁开关;

导线:若干;

流程图:

设计资料

01 仿真图

本设计使用proteus8.9版本设计,资料里有安装教程,无需担心!具体如图!

02 原理图

本系统原理图采用Altium Designer19设计,具体如图!

03 程序

本设计使用软件keil5版本编程设计,资料里有安装教程,无需担心!具体如图!

04 设计报告

一万字设计报告,具体如下!

05 设计资料

全部资料包括仿真源文件 、程序(含注释)、AD原理图、开题报告、参考论文、流程图、讲解视频等。具体内容如下,全网最全! !

下面是开源51单片机设计资料

​大家共同学习进步:

链接:https://pan.baidu.com/s/1iavrCT1QEaFk7ilk6XfX0Q?pwd=znyg

提取码:znyg

点赞分享,一起学习进步!一起成长。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值