Ps:
使用的是51单片机, 晶振为11.0592M的, 时间选择5ms。
这篇博客好像是第一篇单片机博客诶~。

算法:
简单的计时器应用, 最开始 根据 2^16 - (t - f)/12 计算得到值, 将其转换为16进制 (注意:单位的改变, 例如晶振要乘上 10e6 时间 要转换为秒s 乘上 10e-3)
由此可以得到 TH0/TL0的值。
例如:
设计的是5ms, 则 算式为 2^16 - (5 * 10^-3 - 11.0592 * 10^6) / 12; 转换为16进制 为DC00; 所以 TH0 = 0XDC __ TL0 = 0X00;

显示:
拆字什么的 就不说了~~, 反正就是 分和秒 对 10取余 和 整除。
下面函数中的 counter 和 second 分别对应 秒和分。

Hint:
老师说, 最好在 tmp=counter%4; 前 加上 if(changed == 1)执行拆字显示, 然后再将执行空语句 如此循环。 但还是不怎么明白为什么。 好像是说 保护 IO 之类的~~~~

#include<reg52.h>
#define uchar unsigned char
uchar counter=0,tmp,second=0,minute=0, changed = 1;
main()
{   //TMOD=0X21;                            //设置TMOD寄存器TMOD=0X01;                          //设置TMOD寄存器TH0=0xDc;              //装初值TL0=0x00;//TH1=0XFD;//TL1=0;//TR1=1;//SCON=0X50;EA=1;       //开 中断ET0=1;TR0=1;while(1){char a[10] = {0xc0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};//拆字//显示tmp=counter%4;switch(tmp){case 0:{P2 = 0x7f;P0 = a[second%10];}break;case 1:{P2 = 0xbf;P0 = a[second/10];}break;case 2: {P2 = 0xdf;P0 = a[minute%10];}break;case 3: {P2 = 0xef;P0 = a[minute/10];}break;}}/*if(j==2){j=0;P2=~P2;} */}
void zhongduan()interrupt 1
{TH0=0xee;              //装初值TL0=0x00;TF0=0;TR0=1;/*i++;if(i>=5){ i=0;    //SBUF=j;//while(!TI);//TI=0;j++;}*/counter++;if(counter==200){counter=0;second++;if(second==60){second=0;minute++;}}
}

51单片机(计时器+时钟应用)相关推荐

  1. 基于51单片机的时钟系统

     这一次带来的项目是课程设计级别的基于51单片机的时钟系统,本次的项目共有两种,一种是基础功能时钟,上电后自动从00-00-00开始计时,另一种加上了调时功能,上电后自动从00-00-00开始,当需要 ...

  2. 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟

    今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...

  3. 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器

    目录 项目:基于51单片机ds1302时钟.ds18b20的恒温器 功能说明: 运行流程: 效果展示: 供电方式: 用途: 提高: 附: ​                              ...

  4. 【C 语言实现51单片机计时器】

    C语言实现51单片机计时器 代码如下 接线如下 代码如下 #include <reg51.h>sbit Hc38A=P2^2; sbit Hc38B=P2^3; sbit Hc38C=P2 ...

  5. 基于51单片机电子时钟

    keil工程与protues仿真电路 1 基于51单片机用LCD1602实现时-分的显示 2. 按键控制时-分的调整 3. 能实现整时报时的功能(蜂鸣器响) 4. 闹钟模式 5.按键切换模式(模式一: ...

  6. 51单片机调整时钟Proteus仿真

    系列文章目录 第一章 51单片机Proteus仿真(二)可调时钟 文章目录 系列文章目录 前言 一.代码逻辑 二.完整代码 三.遇到问题 四.遇到问题 五.总结 前言 本文介绍51单片机Proteus ...

  7. 51单片机计时器中断

    单片机中,中断算是一个比较重要的部分,在51单片机中有八种中断方式 ,其中常用的的有五种,分别是外部中断0,计时器中断0,外部中断1,计时器中断1,和串口中断.今天主要介绍的是计时器中断. 51单片机 ...

  8. 51单片机DS1302时钟LCD1602显示(可以按键设置时钟)

    DS1302实时时钟具有能计算2100年之前的秒.分.时.日.日期.星期.月.年的能力,还有闰年调整的能力. 图1:DS1302引脚示意图 其中: X1.X2:32.768KHz晶振接入引脚. GND ...

  9. (九)51单片机——DS1302时钟

    目录 DS1302介绍 引脚定义和应用电路 寄存器定义 命令字 时序定义 代码编写 今天,我们的任务是要编写一个用51开发板编写的可调小时钟,接下来就让我们一步一步来实现它吧! DS1302介绍 DS ...

  10. 51单片机实时时钟显示

    51单片机+DS1302+DS18B20+LCD12864 用的IIC通信,写的一个ds3231时钟模块的程序,可更改时间,下面是.h文件里面的部分代码 #ifndef __ds3231_h #def ...

最新文章

  1. 三 volatile关键字
  2. SqlServer2000 类似sqlserver2005的 rownumber() 函数
  3. NAND FLASH读写速度计算方法详解
  4. factorybean 声明_阿里面试题:BeanFactory与FactoryBean的区别
  5. 2017上海金马五校 购买装备 贪心+二分Check
  6. 前端学习(2671): vue3.0脚手架获取功能页面布局
  7. STM32之独立看门狗例程
  8. 世界杯来了,移动办公的“世界杯”怎么踢?
  9. android手机常用浏览器,Android平台三款手机浏览器对比评测
  10. 计算机组装所需要的主要配件有哪些,组装电脑需要哪些零件_组装电脑需要哪些配件...
  11. ZBlogPHP评论验证码无法显示
  12. Redis 缓存回收的7种策略volatile设置过期时间及allkeys所有数据范围内
  13. C4D中使用Redshift渲染器翻转贴图
  14. 北洋UAM-05LX(网口系列适用)ROS节点
  15. java gif等比例缩放_对gif动图进行缩放等处理(java)
  16. MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧
  17. 操作系统学习笔记1--ucos
  18. android 世界各国英文简写代码 资源文件
  19. echo命令的换行方法
  20. 《学习之道》 读书记录

热门文章

  1. 如何让嵌入网站上的视频手机端自适应
  2. SpringCloud上传大文件的三种解决方案
  3. Java解析yaml文件
  4. PS把图片处理成可爱蜡笔画教程
  5. 扫地机器人杂牌的怎么样_入手评测哇力 扫地机器人怎么样??哇力拖扫地机器人好不好用,质量如何?...
  6. pytorch深度学习保姆级笔记--gpu环境配置
  7. 苹果悬浮球_今天才发现!iPhone手机悬浮球这么好用!怪自己知道太晚了
  8. 苹果手机照片不小心删除了怎么恢复?
  9. 动画效果-飞翔的小鸟
  10. 使用 VPN ,一定要知道的几个真相!