定时器时钟

/*
1、按键可以调整当时时间
2、按键可以调节定时时间
3、定时时间到继电器吸合

*8位数码管显示 时间格式格式 12-08-00 标示12点08分00秒

S1 用于小时 加1操作  
S2 用于分钟 加1操作
S2 用于分钟减1操作
*/

#include <reg52.h>


sbit KEY1=P3^2;
sbit KEY2=P3^3;
sbit KEY3=P3^4;


sbit LED=P1^2;
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
            //共阴数码管 0-9
unsigned char StrTab[8];  //定义缓冲区
unsigned char minute=30,hour=12,second;  //定义并且初始化值 12:30:00

void delay(unsigned int cnt)//延时函数
{
 while(--cnt);
}


void Displaypro(void)
{

            StrTab[0]=tab[hour/10];    //显示正常时间
            StrTab[1]=tab[hour%10];
            StrTab[2]=0x40;
            StrTab[3]=tab[minute/10];
            StrTab[4]=tab[minute%10];
            StrTab[5]=0x40;
            StrTab[6]=tab[second/10];
            StrTab[7]=tab[second%10];
    
}

main()//主函数
{

    
    TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时
    TH0=0xd8;
    TL0=0xf0;
    ET0=1;
    TR0=1;

    TMOD |=0x10; //定时器1用于动态扫描
    TH1=0xF8;
    TL1=0xf0;
    ET1=1;
    TR1=1;
    EA =1;
    

 Displaypro();

while(1)//主循环
  {
   
/
  if(!KEY1) //按键1去抖以及动作
    {
    delay(10000);
    if(!KEY1)
       {          
         hour++;if(hour==24)hour=0;     //正常时间 小时 加1
         Displaypro();
       }
    }

/
  if(!KEY2) //按键去抖以及动作
    {
    delay(10000);
    if(!KEY2)
       {
        minute++;if(minute==59)minute=0;//分加1
        Displaypro();
      }
    }
/
  if(!KEY3) //按键去抖以及动作
    {
    delay(10000);
    if(!KEY3)
       {
        minute--;if(minute==0)minute=59;  //分减1
        Displaypro();
      }
    }
  }
}

/********************************/
/*      定时中断1                */
/********************************/
void time1_isr(void) interrupt 3 using 0//定时器1用来动态扫描
{
    static unsigned char num;
    TH1=0xF8;//重入初值
    TL1=0xf0;

    switch (num){
     case 0:P2=0;P0=StrTab[num];break; //分别调用缓冲区的值进行扫描
     case 1:P2=1;P0=StrTab[num];break;
     case 2:P2=2;P0=StrTab[num];break;
     case 3:P2=3;P0=StrTab[num];break;
     case 4:P2=4;P0=StrTab[num];break;
     case 5:P2=5;P0=StrTab[num];break;
     case 6:P2=6;P0=StrTab[num];break;
     case 7:P2=7;P0=StrTab[num];break;
     default:break;
}
num++;     //扫描8次,使用8个数码管
if(num==8)
   num=0;
}
//
/********************************/
/*      定时中断0                */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count;//定义内部静态变量

TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
   switch (count)
          {
           case 0:
           case 20:
           case 40:
           case 60:
           case 80:Displaypro(); //隔一定时间调用显示处理
                   break;
           case 50:LED=!LED; //半秒 LED闪烁
                   break;
           default:break;
          }

if (count==100)
    {
    count=0;
    second++;//秒加1
    if(second==60)
       {
       second=0;
       minute++; //分加1
       if(minute==60)
          {
           minute=0;
           hour++;  //时加1
           if(hour==24)
              hour=0;
          }  
      
       }
    
   } 
 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java-HashMap、TreeMap、LinkedHashMap、ArrayList、LinkedList使用笔记

背景 Map<String, Integer> unsortedMap new HashMap<>(); unsortedMap.put("One", 1); unsortedMap.put("Two", 2); unsortedMap.put("Three", 3); unsortedMap.put("Four", 4); 一、关于排序 TreeMap&#…

【Linux篇】gdb调试器的使用

gdb调试器之常用指令 前言一 . 程序的两种发布模式二 . gdb调试器的使用1> 调用调试器进入调试环境2 > 退出调试3 > gdb中常用调试指令 前言 gdb作为Linux下一款好用且强队的调试工具&#xff0c; 支持对 C C go Java 等多种高级编程语言进行调试.对于在Linux下进行编…

智能优化算法应用:基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.旗鱼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

PyTorch模型训练过程内存泄漏问题解决

近日&#xff0c;在模型训练过程中&#xff0c;发现过一段时间后进程会被kill&#xff0c;观察发现是由于内存泄漏问题造成的。通过逐行代码注释&#xff0c;发现问题在于数据集中的此行代码&#xff1a; info self.data_list[index]这里&#xff0c;self.data_list是dataset…

传统算法:使用 Pygame 实现K-Means 聚类算法

使用 Pygame 模块演示了 K-Means 聚类算法的基本原理。让我逐步解释它的实现: 初始化和基本设置 Pygame 初始化: 通过 pygame.init() 初始化 Pygame。 定义颜色和屏幕大小: 定义了一些颜色常量(WHITE, BLACK, RED, GREEN, BLUE)和屏幕的宽度和高度。 创建 Pygame 窗口:…

[LeetCode] 380. O(1) 时间插入、删除、获取随机元素

380. O(1) 时间插入、删除和获取随机元素 labuladong 题解 实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回…

软件测试编写文档模板【附文档模板】

一、测试岗位必备的文档 在一个常规的软件测试流程中&#xff0c;会涉及到测试计划、测试方案、测试用例、测试报告的编写&#xff0c;这些文档也是软件测试岗位必须掌握的文档类型。 1、测试计划 测试计划是组织管理层面的文件&#xff0c;从组织管理的角度对一次测试活动进…

设计模式-创建型模式之工厂设计模式

文章目录 五、工厂方法六、抽象工厂 五、工厂方法 工厂方法&#xff0c;使用工厂可以像使用人员屏蔽对象创建的细节&#xff0c;使用者无需指定具体的类即可使用功能&#xff0c;达到信息隐蔽的作用&#xff0c;便于后期的维护&#xff0c;修改和扩展。 在看工厂方法前还有一…

华纳云:linux中怎么实现apache安装与配置

在 Linux 系统中&#xff0c;安装和配置 Apache HTTP 服务器通常涉及以下步骤。以下以 Ubuntu 为例&#xff0c;其他 Linux 发行版的步骤也大致相同。 步骤 1&#xff1a;安装 Apache 打开终端并运行以下命令&#xff1a; sudo apt update sudo apt install apache2 步骤 …

Java实现堆

堆是一种基于完全二叉树的数据结构&#xff0c;它分为大根堆和小根堆。在大根堆中&#xff0c;每个节点的值都大于或等于其子节点的值&#xff1b;而在小根堆中&#xff0c;每个节点的值都小于或等于其子节点的值。 在Java中&#xff0c;我们可以使用数组来表示堆。由于完全二…

网工内推 | 云计算运维,云相关认证优先,最高30K,带薪年假

01 安畅网络 招聘岗位&#xff1a;云计算运维工程师 职责描述&#xff1a; 1、负责对公有云平台的计算、存储、网络资源等IAAS/SAAS/PAAS层产品组件日常交付部署运维工作&#xff0c;包括调试、配置、维护、监控、优化等工作&#xff1b; 2、负责对操作系统及应用日常运行维护…

MySQL事务详解

MySQL事务详解 数据库事务概述事务是如何实现的事务的ACID特性事务的状态 事务的使用显式事务隐式事务示例自动提交回滚回滚到保存点 事务的隔离级别数据并发问题MySQL 支持的四种隔离级别注意示例 设置隔离级别 事务的常见分类 数据库事务概述 数据库事务是数据库管理系统&am…

《山水间的家》第二季收官,国台酒业解锁中国式浪漫

执笔 | 洪大大 编辑 | 萧 萧 近日&#xff0c;由国台酒特别支持的大型文旅探访节目《山水间的家》第二季在总台央视综合频道&#xff08;CCTV-1&#xff09;正式收官。 第二季节目以家庭为视角切入&#xff0c;先后走进江苏、四川、重庆、江西、湖北、贵州、浙江等地24个特色…

Python subprocess模块的高级玩法

Python的subprocess模块是一个非常强大的工具&#xff0c;用于启动和与外部进程进行交互。它允许执行外部命令、访问系统Shell、管道数据、捕获输出和错误信息&#xff0c;以及更多。 本文详细介绍 subprocess模块的各个方面&#xff0c;包括如何执行外部命令、传递参数、处理…

Redis安装和部署详细流程

文章目录 一、Windows环境下安装 Redis1.1 下载Redis1.2 启动redis服务器1.3 启动redis客户端1.4 配置环境变量 参考资料 一、Windows环境下安装 Redis windows系统环境下&#xff0c;redis安装方式主要有&#xff1a; zip压缩包方式 https://redis.io/download 或者 https:/…

MMdetection3.0 问题

MMdetection3.0 问题 希望各位路过的大佬指教一下&#xff1a; 问题&#xff1a; 1、NWPU-VHR-10有标注的数据一共650张&#xff0c;我将其分为了455张训练集&#xff0c;195张验证集。 2、然后使用MMdetection3.0框架中的Faster-rcnn网络进行训练&#xff0c;设置训练参数b…

CityEngine2023 根据shp数据构建三维模型并导入UE5

目录 0 引言1 基本操作2 实践2.1 导入数据&#xff08;.shp&#xff09;2.2 构建三维模型2.3 将模型导入UE5 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CityEngine专栏&#x1f4a5; 标题&#xff1a;CityEngine2023 根据shp数据构建三维模型…

Android问题笔记四十九:ViewPager 嵌套 Fragment 扩大滑动响应区域,避免左右滑动过于灵敏问题

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

finebi 新手入门案例

finebi 新手入门案例 连锁超市销售数据分析 步骤&#xff1a; 准备公共数据新建分析主题处理数据在数据中分析在图形中分析数据大屏 准备公共数据 点击公共数据 点击新建文件夹 修改文件夹名称 上传数据 鼠标悬停在文件夹上&#xff0c;右侧出现 鼠标悬停在文件夹上&#x…

git-5

1.GitHub为什么会火&#xff1f; 2.GitHub都有哪些核心功能&#xff1f; 3.怎么快速淘到感兴趣的开源项目 github上面开源项目非常多&#xff0c;为了我们高效率的找到我们想要的资源 根据时间 不进行登录&#xff0c;是没有办法享受到高级搜索中的代码功能的&#xff0c;登录…