51单片机(计时器+时钟应用)
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单片机(计时器+时钟应用)相关推荐
- 基于51单片机的时钟系统
这一次带来的项目是课程设计级别的基于51单片机的时钟系统,本次的项目共有两种,一种是基础功能时钟,上电后自动从00-00-00开始计时,另一种加上了调时功能,上电后自动从00-00-00开始,当需要 ...
- 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟
今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...
- 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器
目录 项目:基于51单片机ds1302时钟.ds18b20的恒温器 功能说明: 运行流程: 效果展示: 供电方式: 用途: 提高: 附: ...
- 【C 语言实现51单片机计时器】
C语言实现51单片机计时器 代码如下 接线如下 代码如下 #include <reg51.h>sbit Hc38A=P2^2; sbit Hc38B=P2^3; sbit Hc38C=P2 ...
- 基于51单片机电子时钟
keil工程与protues仿真电路 1 基于51单片机用LCD1602实现时-分的显示 2. 按键控制时-分的调整 3. 能实现整时报时的功能(蜂鸣器响) 4. 闹钟模式 5.按键切换模式(模式一: ...
- 51单片机调整时钟Proteus仿真
系列文章目录 第一章 51单片机Proteus仿真(二)可调时钟 文章目录 系列文章目录 前言 一.代码逻辑 二.完整代码 三.遇到问题 四.遇到问题 五.总结 前言 本文介绍51单片机Proteus ...
- 51单片机计时器中断
单片机中,中断算是一个比较重要的部分,在51单片机中有八种中断方式 ,其中常用的的有五种,分别是外部中断0,计时器中断0,外部中断1,计时器中断1,和串口中断.今天主要介绍的是计时器中断. 51单片机 ...
- 51单片机DS1302时钟LCD1602显示(可以按键设置时钟)
DS1302实时时钟具有能计算2100年之前的秒.分.时.日.日期.星期.月.年的能力,还有闰年调整的能力. 图1:DS1302引脚示意图 其中: X1.X2:32.768KHz晶振接入引脚. GND ...
- (九)51单片机——DS1302时钟
目录 DS1302介绍 引脚定义和应用电路 寄存器定义 命令字 时序定义 代码编写 今天,我们的任务是要编写一个用51开发板编写的可调小时钟,接下来就让我们一步一步来实现它吧! DS1302介绍 DS ...
- 51单片机实时时钟显示
51单片机+DS1302+DS18B20+LCD12864 用的IIC通信,写的一个ds3231时钟模块的程序,可更改时间,下面是.h文件里面的部分代码 #ifndef __ds3231_h #def ...
最新文章
- 三 volatile关键字
- SqlServer2000 类似sqlserver2005的 rownumber() 函数
- NAND FLASH读写速度计算方法详解
- factorybean 声明_阿里面试题:BeanFactory与FactoryBean的区别
- 2017上海金马五校 购买装备 贪心+二分Check
- 前端学习(2671): vue3.0脚手架获取功能页面布局
- STM32之独立看门狗例程
- 世界杯来了,移动办公的“世界杯”怎么踢?
- android手机常用浏览器,Android平台三款手机浏览器对比评测
- 计算机组装所需要的主要配件有哪些,组装电脑需要哪些零件_组装电脑需要哪些配件...
- ZBlogPHP评论验证码无法显示
- Redis 缓存回收的7种策略volatile设置过期时间及allkeys所有数据范围内
- C4D中使用Redshift渲染器翻转贴图
- 北洋UAM-05LX(网口系列适用)ROS节点
- java gif等比例缩放_对gif动图进行缩放等处理(java)
- MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧
- 操作系统学习笔记1--ucos
- android 世界各国英文简写代码 资源文件
- echo命令的换行方法
- 《学习之道》 读书记录