用 定时/计数器中断 和 动态八段数码管做一个秒表

目录

  • 用 定时/计数器中断 和 动态八段数码管做一个秒表
  • 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++;
}

用 定时计数器中断 和 动态八段数码管 做一个秒表相关推荐

  1. 单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)

    目录 一.实验要求 二.知识要点 (一)数码管 (二)八段数码管的字形编码 (三)C51变量定义的四要素 (四)中断源 (五)相关的特殊功能寄存器 1.定时器/计数器控制寄存器TCON 2.中断允许控 ...

  2. stm32寄存器版学习笔记04 定时计数器中断

    STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...

  3. 手把手教学51单片机 | 第四节 动态数码管,用6位数码管做一个时钟

    1.利用定时器做一个流水灯的程序 //流水灯从上到下一次点亮,然后让全部灯闪烁两次,依次循环 #include<reg52.h> #include<intrins.h> #de ...

  4. html制作一个动态仪表盘,用Excel做一个动态仪表盘,会这个绝对是大神

    原标题:用Excel做一个动态仪表盘,会这个绝对是大神 Excel的仪表盘盛行,做起来也极其简单.(见图) (事实上上图的仪表盘认为两个部分,一个半环形图,一个是指针.我们先来搞定半环图. 首先你需要 ...

  5. 单片机原理及其应用——单片机定时器中断实验(八段数码管依次显示0~9数字)

    目录 一.实验要求 二.知识要点 (一)单片机定时器/计数器 (二)相关的特殊功能寄存器 1.工作方式寄存器TMOD 2.定时器/计数器控制寄存器TCON (三)定时器/计数器的工作方式 1.工作方式 ...

  6. 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍

    80C51中断系统 结构 80C51有5个中断源(89C52有6个),2个优先级,可实现二级中断嵌套 TCON中断标志 IT0(TCON.0),外部中断0触发方式控制位 IE0(TCON.1),外部中 ...

  7. 80C51的中断系统 - 定时/计数器

    中断系统--80C51单片机学习笔记 中断的概念 中断系统的结构 中断请求标志 1.TCON的中断标志 2.SCON的中断标志位 80C51中断的控制 中断允许控制--IE 中断优先级控制--IP 中 ...

  8. 定时/计数器的原理和应用

    定时/计数器实质上是一个加1计数器,计数值是存在THX,TLX(X取0或1)这2个8位的寄存器里的.它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输 ...

  9. 单片机 -定时/计数器的初始化编程及应用

    定时/计数器的编程 1.根据要求选择方式,确定方式控制字,写入TMOD寄存器,配置好工作模式. 2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 . 3.根据需求,开放定时/计数 ...

最新文章

  1. 求 1~n 之间素数的个数
  2. 6 种不同情况下写的代码
  3. startprocessinstancebykey()里面填写的参数_3种方法,快速学会在Word文档里面如何插入表格...
  4. 网络编程学习笔记(gethostbyaddr函数)
  5. Request_获取请求头数据
  6. CG-CTF-Web-bypass again
  7. 简述C和C++的学习历程
  8. RxSwift笔记七其他操作符
  9. ASIHTTPRequest源码简单分析
  10. 告别卷积神经网络CNN?计算机视觉也能用上 Transformer 了
  11. 程序员3年工资从7千到2万2,晒出跳槽经历!网友:厉害!
  12. No SOURCES given to target: mpeg
  13. wilcoxon符号秩检验matlab,符号检验和wilcoxon符号秩检验的区别
  14. 《Dreamweaver CS6 完全自学教程》笔记 第二章:Dreamweaver CS6 入门
  15. openGauss长沙Meetup | 共建数据库可信开源社区
  16. 南方cass简码识别大全_cass-简码识别详细分解.doc
  17. 解析USGS网站页面中的地震空间数据
  18. DVD碟片w ndows7,Windows7-USB-DVD-Tool下载地址及使用方法解决
  19. 分布式IM原理与实战: 从0到1打造即时通讯云
  20. tf.layers.flatten()使用

热门文章

  1. t111111111111111111111
  2. Fiddler屏蔽某些url的抓取方法
  3. 西华计算机类专业学什么,2021年西华大学计算机科学与技术(081200)人工智能_考研专业目录_考试科目_考试范围 - 学途吧...
  4. 用c语言设计模拟电子琴软件下载,Electron Piano(虚拟电子琴模拟器) V2.01 官方版
  5. GICv3软件overview手册之LPI(1)
  6. TPS73533DRVR低压降线性稳压器 500mA低静态电流 低噪声 高PSRR
  7. ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]
  8. matlab计算THD,SNR,PSD
  9. openwrt二级路由wan口如何设置
  10. Error creating bean with name ‘compositeCompatibilityVerifier‘ defined in class pathresource之类问题解决方案