51单片机_动态数码管(定时器中断实现)

2023-10-26

动态数码管(定时器中断)

原理

利用定时器0,定时5ms,中断溢出200次即为1s,1s数码管显示的数字加1,一直加到250后归0。

全部代码

#include <reg52.h>               //头文件
#define uint unsigned int        //宏定义
#define uchar unsigned char

uchar time;			//定义变量
uchar number;
uint y;

void delay(uint x);		//延时函数声明
void init();			//初始化函数声明
void display_init();		//显示初始化函数声明
void display(uchar z);		//显示函数声明
void timer0_init();		//定时器中断函数声明

//共阴极数码管编码表:0,1,2,3,4,5,6,7,8,9
uchar code shumaguan[]= {
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};

sbit s0=P1^0;			//数码管位选:百位
sbit s1=P1^1;			//数码管位选:十位
sbit s2=P1^2;			//数码管位选:个位

void main()			//主函数
{
 init();			//初始化
 timer0_init();  		//定时器中断初始化
 display_init();		//显示初始化

 while(1)			//死循环,不断显示
 {  
    display(number); 
 }
}

void delay(uint x)		//延时函数定义
{
 uint m,n;
 for(m=x;m>0;m--)
 {
  for(n=110;n>0;n--);
 }
}

void init()			//初始化函数定义
{
 y = 95;
 time = 0;
 number = 0;
}

void display_init()		//显示初始化函数定义
{
 s0=0;				//百位显示0
 P0=0x3f;
 s1=1;
 s2=1;
 delay(5);
 s1=0;				//十位显示0
 P0=0x3f;
 s0=1;
 s2=1;
 delay(5);
 s2=0;				//个位显示0
 P0=0x3f; 
 s0=1;
 s1=1;
 delay(5);
}

void display(uchar z)		//显示函数定义
{
 s0=0;				//打开百位位选
 s1=1;
 s2=1;
 P0=shumaguan[z/100];		//显示百位数值
 delay(5);

 s1=0;				//打开十位位选
 s0=1;
 s2=1;
 P0=shumaguan[z%100/10];	//显示十位数值
 delay(5);

 s2=0;				//打开个位位选
 s0=1;
 s1=1;
 P0=shumaguan[z%10];		//显示个位数值
 delay(5);
}

void timer0_init()		//定时器中断初始化定义
{
 EA=1;				//开总中断
 TMOD |= 0x01;			//定时器0选择工作方式1
 TH0 = (65536-5000)/256;	//初值5ms
 TL0 = (65536-5000)%256; 
 ET0 = 1;			//开定时器中断
 TR0 = 1;			//开定时器
   }

void timer0_irq() interrupt 1		//定时0中断
{
 TH0 = (65536-5000)/256; 		//重装初值5ms
 TL0 = (65536-5000)%256; 
 time++;				//每 5ms+1
 if(time == 200)			//达到20次,即1s
 {
  number++;				//数码管显示数字+1
  if(number>250)			//最大显示250
  {
   number = 0;
  }
 }  
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机_动态数码管(定时器中断实现) 的相关文章

  • webpack5

    为什么有webpack web1 0阶段 还没有明确前端岗位 主要职责是编写静态页面 用Js来进行表单验证或动画效果 为了在页面上动态填充数据 后面也出现了php jsp这种开发模式 web2 0阶段 伴随ajax的诞生 不止负责展示界面
  • C# this.InvokeRequired

    C 为控件单独开辟了一个线程 当另外一个线程的方法需要修改控件或者调用控件的方法时 需要通过控件的InvokeRequired方法来进行 InvokeRequired
  • tp5如何跨数据库查询

    gt 当然前提是 这两个的数据库都在同一个服务器上才可以的 如果没有在同一个服务器上 gt 解决办法 mysql设置一下权限 a 可以对b进行select的操作权限 tp5使用原生查询 代码如下 admin Db query SELECT

随机推荐

  • orangepi5使用sata ssd启动系统

    使用sata ssd启动香橙派官方的Ubuntu系统 以Orangepi5 1 1 0 ubuntu jammy server linux5 10 110为例 因为烧录系统到外接的ssd需要另一个系统辅助所以我们还要烧录一个带桌面的系统到T
  • 解决 LINK : fatal error LNK1104: 无法打开文件“freeglutd.lib”问题

    最近跑程序 发现总有这样的错误 如下图 开始我以为是缺少了freeglutd lib这个文件 之后才发现压根没有这个文件 于是找到了解决办法 鼠标右键单击项目 选择属性 出现如下图 找到C C 预处理器 点开预处理器定义 点编辑 添加 ND
  • libevent源码学习(0):libevent库安装与简单使用

    目录 1 下载并解压libevent库 2 安装libevent库 3 简单使用libevent库 1 下载并解压libevent库 这里下载的是libevent 2 0 21 stable版本的 使用wget命令如下所示 下载地址可通过h
  • .git文件夹_Git入门细致讲解

    什么是 git 分布式的版本管理与协作系统 安装 Git 下载安装就不详说了 安装之后 右键会出现 Git bush here 在当前文件夹打开 bash 是一个小型的 linux shell 可以在上面进行关于 git 的操作 他自带 m
  • 妙用mov edi,edi和5个nop实现inline hook

    妙用mov edi edi和5个nop实现inline hook 2008年2月22日 分类 其它技术 标签 inline hook nop 这方法MJ很早时就说过了 简单重复下 大家应该发现大部分API的第一条指令都是mov edi ed
  • MySQL 5.7版本简介

    MySQL的优势 MySQL的主要优势如下 1 速度 运行速度快 2 价格 MySQL对多数个人来说是免费的 3 容易使用 与其他大型数据库的设置和管理相比 其复杂程度较低 易于学习 4 可移植性 能够工作在众多不同的系统平台上 例如 Wi
  • MySQL—SQL优化详解(上)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • 【vue】npm install -g @vue/cli出现错误

    进行到npm install g vue cli这一步出现错误 操作步骤如下 1 先下载node js 不知道有没有下载 可以在cmd输入 node v 出现版本号则电脑已经有了node js 没有的话去官网下一个 csdn有其他小伙伴给了
  • Spring Boot全后端实现验证码

    验证码通常是利用前端技术实现的 前端的验证码需要先在后端进行保存 再传到前端 再于前端传输的数据对比校验 一些前后端分离项目的工作量大大增加 而如果完全是由后端独立实现的 那么在代码量和复杂程度上就大大降低了 框架 Spring Boot
  • JavaWeb使用ajax实现定时自动保存草稿功能

    在Web程序开发中 难免有时候会遇到一些定时业务 如考试系统中的自动提交试卷 还有平时写博客时定时自动保存草稿的功能 在JavaWeb中也可以利用ajax技术来实现这定时自动保存草稿这一功能 index jsp关键代码 html代码 加载时
  • 编写QT程序时发现内存泄漏的解决方法

    最近项目结尾进行测试的时候 发现项目持续运行产生大量数据后内存的消耗会无休止的增加 当关闭该窗口时 内存却并没有如期释放 理论上QT中所有的子对象在窗口被销毁时都会一同销毁 最终发现是我在这篇博客上写的添加长按的效果导致的 https bl
  • ipynb 格式文件

    最近碰到文件名后缀为 ipynb文件 起初没太在意这种文件格式 用Notepad 打开之后看到也是类似于JSON格式的信息 以为也是为其他的一些文件服务的 类似于配置一些HTML文件的配置文件 但是后来才发现这也是一种文本表示形式 只不过需
  • Lua:调试篇

    1 Lua代码编辑工具 辣博推荐 ZeroBrane Studio编写Lua脚本还是不错滴 基本的代码补全和提示都具有 按照从下往上的代码逻辑 还可以自动对齐格式 实话讲 还不是很完美 毕竟 作为一个使用习惯Qt如此完美的IDE工具的 Qt
  • [线性dp] aw897. 最长公共子序列(重要模板题+最长公共子序列模型)

    文章目录 0 前言 1 LCS 模板题 0 前言 LCS longest common sub sequences 最长公共子序列 子串 按原顺序依次出现 禁止跳过某元素的序列 具有连续性 子序列 在保持元素前后关系的前提下 可以跳过某些元
  • C语言文件指针设置偏移量--fseek

    一 fseek fseek是设置文件指针偏移量的函数 具体传参格式为 int fseek FILE stream long int offset int whence 返回一个整数 其中 1 stream是指向文件的指针 2 offset是
  • (亲测可用)html5 file调用手机摄像头

    在切图网一个客户的webapp项目中需要用到 html5调用手机摄像头 找了很多资料 大都是 js调用api 然后怎样怎样 做了几个demo测试发现根本不行 后来恍然大悟 用html5自带的 input file 纯html5 并且不涉及到
  • composer.json和composer.lock到底是什么以及区别?

    composer方文档 https docs phpcomposer com 04 schema html我们在做项目的时候 总是要安装一些依赖 composer给我们提供了很多方便 直接运行composer install 当我们运行co
  • Keras 深度学习之猫狗大战

    项目地址和代码 Project Dogs vs Cats 项目详细报告 Report dogs vs cats pdf keras 版本 2 1 5使用滴滴云AI大师码 0212 消费GPU有9折优惠哦 1 问题定义和数据集获取 项目属于计
  • Android RecyclerView 实现瀑布流

    Android RecyclerView 使用大全 基础使用 item 动画 下拉刷新等 瀑布流也是个常用的显示控件了 但是在使用时经常遇到一些问题 比如滑动回顶部后出现空隙 item在滑动时乱跳等问题 下面就来说说我怎么实现的瀑布流 并且
  • 51单片机_动态数码管(定时器中断实现)

    动态数码管 定时器中断 原理 利用定时器0 定时5ms 中断溢出200次即为1s 1s数码管显示的数字加1 一直加到250后归0 全部代码 include