同样我们使用的仍然是STC的8051单片机,这段代码是用来做一个计时器,通过数码管实时显示出来,因为板子上数码管有6个,所以可以设置小时,分钟,秒三个单位,在Proteus上也是可以模拟的,计时结束可以用蜂鸣器,或者继电器接口连接

一个闹铃,闹铃用电磁式的就可以,当然简单来说蜂鸣器就是一个不错的选择。

程序中没有设置小时单位,想要加上的小伙伴可以用显示分钟,秒的方法同样显示出来,但添加后要注意延时的时间,时间设置不当可能会出现显示不清楚,数字抖动,或者未选中的数码管也隐隐发光(“鬼影”)。具体大小可以自己调试着来,也是很简单的。下边是源代码:

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit we=P2^7;
sbit du=P2^6;
uchar code table[]={0x3f,0x06,0x5B,0x4F,0x66,
               0x6D,0x7D,0x07,0x7F,0x6F,
               0x77,0x7C,0x39,0x5E,0x79, 
               0x71,0x76,0x38,0x37,0x3E,
               0x73,0x5C,0x40,0x00,};
uchar num=0,aa,s,g,m,f,h;
void delay(uchar x);
void main()
{    
    TMOD=0x01;    //设置内部中断0,1的工作方式为方式1    
    EA=1;          //开总中断
    ET0=1;        //允许中断    
    TR0=1;          //开中断0          
    TH0=0x4c;
    TL0=0x00;
    while(1)
    {    
            du = 1;
            P0 = 0;
            du = 0;

            we = 1;
            P0 = 0x3e;
            we = 0;
            
            du = 1;
            P0 = table[s];      //十位
            du = 0;
                
            delay(10);

            du = 1;
            P0 = 0;
            du = 0;

            we = 1;
            P0 = 0x3d;
            we = 0;
            
            
            du = 1;
            P0 = table[g];         //个位
            du = 0;
            delay(10);

            du = 1;
            P0 = 0;
            du = 0;

            we = 1;
            P0 = 0x1f; //显示分钟
            we = 0;
            
            du = 1;
            P0 = table[m];
            du = 0;
                
            delay(10);

            du = 1;
            P0 = 0;
            du = 0;

            we = 1;
            P0 = 0x2f;
            we = 0;
            
            du = 1;
            P0 = table[h];       
            du = 0;
                
            delay(10);
        
        if(aa == 20)    
        {            
            aa = 0;
            if(num == 59)
            {
                num = 0;
                f++;
            }
            else
                num++;
            s = num/10;
            g = num%10;
            m = f%10;
            h = f/10;                
        }
        if(h == 6)
        f = 0;
    }
}
void timer0() interrupt 1 //内部中断0
{
    TH0=0x4c;
    TL0=0x00;
    aa++;
}
void delay(uchar x)
{
    uchar y,z;
    for(y=x;y>0;y--)
        for(z=120;z>0;z--);
}

51单片机做一个计时器相关推荐

  1. 物联网名词和MQTT解释,阿里云的教程:用51单片机做一个物联网温度计+远程开关

    https://mvp.aliyun.com/zhidao/1915 本章主要介绍物联网平台中相关的产品名词.明白名词说的是啥.两眼不慌慌.看看官方文档吧 concent   报文连接服务器      ...

  2. 从0-1,用51单片机做一个积分计时器,以乒乓球为例

    前面可能有点啰嗦,可以直接跳到第四部分 一.设计目标 二.规则须知 (一)乒乓球计分规则 (二)乒乓球T2赛制 (三)乒乓球换位与交换场地 三.需求分析 1.计分功能 2.误触功能 3.满分功能 4. ...

  3. 用51单片机做一个物联网温度计+远程开关

    一 故事背景 1,对物联网技术感兴趣的朋友想玩一些物联网应用练练手,这个正好合适. 2,刚毕业的萌新或者还没有毕业的青年男女,想学习物联网知识,这个适合你练手. 3,已经入坑单片机开发很久的工程师,想 ...

  4. 利用51单片机做一个简易时钟

    利用独立键盘,数码管完成一个简易的时钟,按键一可以修改时间,按键二可以设置闹钟,按键三进行加一操作,按键四进行减一操作. 主函数: void main() {bsp_init();while(1){T ...

  5. 59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer

    51单片机00-59秒计时器 0-59s Timer 1.  实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个 ...

  6. 利用51单片机制作一个秒表的详细过程

    利用51单片机制作一个秒表的详细过程 前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大 ...

  7. 51单片机中断与计时器

    文章目录 1.配置下图中各寄存器 1. 定时器/计数器控制寄存器TCON 2.定时器.计数器模式控制寄存器TMOD 3.TH0及TL0 2.中断设置 二.中断程序 51单片机中断与计时器 # 一.定时 ...

  8. 110报警声+单片机c语言,用51单片机做发声小玩意及程序

    用51单片机做发声小玩意及程序 "嘀嘀"警报 生活中我们常常到各种各样的报警声,例如"嘀.嘀-"就是常见的一种声音报警声,但对于这种报警声,嘀0.2秒钟,然后断 ...

  9. 用51单片机做信号发生器,同时输出四种频率的方波

    //编写51单片机程序,输出方波. //要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波: //    P1.3 = 1.25kHz.P1.2 = 2.5kHz.P1.1 = ...

最新文章

  1. android 创建虚拟内存,在 Android 的 /data 目录下添加虚拟内存
  2. 深度案例 | TO B 企业如何从 0 到 1 实现数据驱动?
  3. 一个隐藏着的僵尸巨兽——Ponmocup僵尸网络
  4. boat启动器 minecraft_minecraft boat
  5. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程
  6. thinkphp中join用法
  7. hbase 根据主键查询
  8. SylixOS lsusb命令解析
  9. ROM下载地址(地址不定时更新)
  10. post 和 get 网站
  11. C语言的32个关键字怎么背,C语言32个关键字,精心整理带中文翻译
  12. java关键字有多少?
  13. json转xml、xml转json
  14. uniapp H5公众号errMsg: “onMenuShareAppMessage:fail, the permission value is offline verifying“
  15. 怦然心动(Flipped)-7
  16. python正则表达式例题_python—正则表达式实例
  17. GBase8d产品admin目录下的文件及文件夹说明
  18. goland试用期过后继续使用方式
  19. Linux安装conda未找到命令
  20. 如何进行PDF文件翻译?PDF翻译怎么操作

热门文章

  1. skynet.call流程
  2. js实现:函数实现从小到大排列,函数求阶乘计算结果和求出阶乘函数的和
  3. mysql五日均线_五日均线和日均线它们有什么作用吗?
  4. JavaEE程序员必读图书大推
  5. 终于能够轻松地读懂英文原版书了
  6. GFFcompare详解
  7. 直流可调稳压电源的Proteus仿真设计(附仿真+论文等资料)
  8. 招行票付通对接总体流程(商业票据)
  9. 华为智慧金融峰会, HMS Core金融解决方案助力数智金融新生态
  10. TS H5页面中判断在微博,微信等环境下