用 定时计数器中断 和 动态八段数码管 做一个秒表
用 定时/计数器中断 和 动态八段数码管做一个秒表
目录
- 用 定时/计数器中断 和 动态八段数码管做一个秒表
- 1.思路
- 定时器
- 数码管
- 2.主要代码讲解
- 3.全部代码参考(代码写的很烂,欢迎提出建议)
学以致用,简单把定时器中断和数码管动态显示结合一下。
1.思路
使用定时器来计数,然后把秒数变化显示到数码管上。
定时器
数码管
2.主要代码讲解
void main()
{u16 a;a = 0;Time0Init();//定时器0中断的初始化操作while(1){ if(i == 1000)//设定一次中断是1ms,1000次是1s{i = 0; //把计数的i清零,方便下一秒计数1000次led = ~led; //起到提示作用a++; //累计的秒数}else if(i%25 == 0) //每25ms刷新一次{fenbian(a); // 数码管显示函数}}
}
3.全部代码参考(代码写的很烂,欢迎提出建议)
#include<reg51.h>typedef unsigned char u8;
typedef unsigned int u16;sbit led = P2^0;
static u16 i;
static u16 a;sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(u16 i)
{while(i--);
}void Time0Init()
{TMOD|=0x01; TH0 = 0xFC; TL0 = 0x66;TR0 = 1; ET0 = 1; EA = 1; } void fenbian(u16 a)
{ int b;int c;if(a<10){LSC=0;LSB=0;LSA=0;delay(100);switch(a){case(0):P0=smgduan[0];delay(100);break;case(1):P0=smgduan[1];delay(100);break;case(2):P0=smgduan[2];delay(100);break;case(3):P0=smgduan[3];delay(100);break;case(4):P0=smgduan[4];delay(100);break;case(5):P0=smgduan[5];delay(100);break;case(6):P0=smgduan[6];delay(100);break;case(7):P0=smgduan[7];delay(100);break;case(8):P0=smgduan[8];delay(100);break;case(9):P0=smgduan[9];delay(100);break;} P0 = 0x00; }else if(a>=10 && a<100){LSC=0;LSB=0;LSA=0;b = a/1%10;switch(b){case(0):P0=smgduan[0];delay(100);break;case(1):P0=smgduan[1];delay(100);break;case(2):P0=smgduan[2];delay(100);break;case(3):P0=smgduan[3];delay(100);break;case(4):P0=smgduan[4];delay(100);break;case(5):P0=smgduan[5];delay(100);break;case(6):P0=smgduan[6];delay(100);break;case(7):P0=smgduan[7];delay(100);break;case(8):P0=smgduan[8];delay(100);break;case(9):P0=smgduan[9];delay(100);break;}P0 = 0x00;LSC=0;LSB=0;LSA=1;c = a/10%10;switch(c){case(0):P0=smgduan[0];delay(100);break;case(1):P0=smgduan[1];delay(100);break;case(2):P0=smgduan[2];delay(100);break;case(3):P0=smgduan[3];delay(100);break;case(4):P0=smgduan[4];delay(100);break;case(5):P0=smgduan[5];delay(100);break;case(6):P0=smgduan[6];delay(100);break;case(7):P0=smgduan[7];delay(100);break;case(8):P0=smgduan[8];delay(100);break;case(9):P0=smgduan[9];delay(100);break;}P0 = 0x00; }}void main()
{u16 a;a = 0;Time0Init();while(1){ if(i == 1000){i = 0;led = ~led;a++;}else if(i%25 == 0){fenbian(a);}}
}//中断函数,但是我把处理放在主函数中,这样可以保证计数的准确
void Time0() interrupt 1
{TH0 = 0xFC;TL0 = 0x66;i++;
}
用 定时计数器中断 和 动态八段数码管 做一个秒表相关推荐
- 单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)
目录 一.实验要求 二.知识要点 (一)数码管 (二)八段数码管的字形编码 (三)C51变量定义的四要素 (四)中断源 (五)相关的特殊功能寄存器 1.定时器/计数器控制寄存器TCON 2.中断允许控 ...
- stm32寄存器版学习笔记04 定时计数器中断
STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...
- 手把手教学51单片机 | 第四节 动态数码管,用6位数码管做一个时钟
1.利用定时器做一个流水灯的程序 //流水灯从上到下一次点亮,然后让全部灯闪烁两次,依次循环 #include<reg52.h> #include<intrins.h> #de ...
- html制作一个动态仪表盘,用Excel做一个动态仪表盘,会这个绝对是大神
原标题:用Excel做一个动态仪表盘,会这个绝对是大神 Excel的仪表盘盛行,做起来也极其简单.(见图) (事实上上图的仪表盘认为两个部分,一个半环形图,一个是指针.我们先来搞定半环图. 首先你需要 ...
- 单片机原理及其应用——单片机定时器中断实验(八段数码管依次显示0~9数字)
目录 一.实验要求 二.知识要点 (一)单片机定时器/计数器 (二)相关的特殊功能寄存器 1.工作方式寄存器TMOD 2.定时器/计数器控制寄存器TCON (三)定时器/计数器的工作方式 1.工作方式 ...
- 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍
80C51中断系统 结构 80C51有5个中断源(89C52有6个),2个优先级,可实现二级中断嵌套 TCON中断标志 IT0(TCON.0),外部中断0触发方式控制位 IE0(TCON.1),外部中 ...
- 80C51的中断系统 - 定时/计数器
中断系统--80C51单片机学习笔记 中断的概念 中断系统的结构 中断请求标志 1.TCON的中断标志 2.SCON的中断标志位 80C51中断的控制 中断允许控制--IE 中断优先级控制--IP 中 ...
- 定时/计数器的原理和应用
定时/计数器实质上是一个加1计数器,计数值是存在THX,TLX(X取0或1)这2个8位的寄存器里的.它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输 ...
- 单片机 -定时/计数器的初始化编程及应用
定时/计数器的编程 1.根据要求选择方式,确定方式控制字,写入TMOD寄存器,配置好工作模式. 2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 . 3.根据需求,开放定时/计数 ...
最新文章
- 求 1~n 之间素数的个数
- 6 种不同情况下写的代码
- startprocessinstancebykey()里面填写的参数_3种方法,快速学会在Word文档里面如何插入表格...
- 网络编程学习笔记(gethostbyaddr函数)
- Request_获取请求头数据
- CG-CTF-Web-bypass again
- 简述C和C++的学习历程
- RxSwift笔记七其他操作符
- ASIHTTPRequest源码简单分析
- 告别卷积神经网络CNN?计算机视觉也能用上 Transformer 了
- 程序员3年工资从7千到2万2,晒出跳槽经历!网友:厉害!
- No SOURCES given to target: mpeg
- wilcoxon符号秩检验matlab,符号检验和wilcoxon符号秩检验的区别
- 《Dreamweaver CS6 完全自学教程》笔记 第二章:Dreamweaver CS6 入门
- openGauss长沙Meetup | 共建数据库可信开源社区
- 南方cass简码识别大全_cass-简码识别详细分解.doc
- 解析USGS网站页面中的地震空间数据
- DVD碟片w ndows7,Windows7-USB-DVD-Tool下载地址及使用方法解决
- 分布式IM原理与实战: 从0到1打造即时通讯云
- tf.layers.flatten()使用
热门文章
- t111111111111111111111
- Fiddler屏蔽某些url的抓取方法
- 西华计算机类专业学什么,2021年西华大学计算机科学与技术(081200)人工智能_考研专业目录_考试科目_考试范围 - 学途吧...
- 用c语言设计模拟电子琴软件下载,Electron Piano(虚拟电子琴模拟器) V2.01 官方版
- GICv3软件overview手册之LPI(1)
- TPS73533DRVR低压降线性稳压器 500mA低静态电流 低噪声 高PSRR
- ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]
- matlab计算THD,SNR,PSD
- openwrt二级路由wan口如何设置
- Error creating bean with name ‘compositeCompatibilityVerifier‘ defined in class pathresource之类问题解决方案