目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管液晶显示
2、按键控制开始、暂停、存储、上下翻页​
3、100条存储记录

二、使用步骤

基于51单片机的秒表计时器系统(带存储)是一个典型的嵌入式应用项目,结合了定时器中断、按键控制、数码管显示以及数据存储功能。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、数码管驱动芯片模块
4、继电器模块
5、数码管显示模块

四、软件设计

#include "reg51.h"
#include"absacc.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^3;//按钮
sbit k2=P1^4;
sbit k3=P1^5;
sbit k4=P1^6;
sbit smg1=P3^2;//数码管引脚
sbit smg2=P3^3;
sbit smg3=P3^4;
sbit beep=P1^0;//蜂鸣器

uchar xdata shu[100][3]; //存储数组
//数码管编码
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点
uchar time=0,mode=0;
uchar num=0,cha=0;
uchar fen=0,miao=0;
uchar beep_time=0;
//延时
void delay(uint i)
{
    while(i--);
}
//主函数
void main()
{
    uchar k=0;
    SCON=0X50;            //设置为工作方式1
    TMOD=0X21;            //设置计数器工作方式2
    TH1=0XFD;            
    TL1=0XFD;
    ES=1;                        //打开接收中断
    TR1=1;                    //打开计数器

    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    ET0=1;//打开定时器0中断允许
    EA=1;//打开总中断
    while(1)
    {
        if(k1 && k2 && k3 && k4)
            k=0;
    }
}
//定时器0中断
void Timer0() interrupt 1
{
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    if(time<99)//0.01s
        time++;
    else
    {
        time=0;
        if(miao<59)//秒计时
            miao++;
        else
        {
            miao=0;
            if(fen<99)//分计时
                fen++;
        }
    }
    if(beep_time>0)//蜂鸣器控制
    {
        beep_time--;
        beep=0;
    }
    else
        beep=1;
}

五、实验现象

演示视频:

【51单片机-B068】【protues仿真】基于51单片机秒表计时器(带存储)仿真

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐