用定时器0控制切换流水灯顺序,用外部中断控制两种数码管显示方式

2023-11-10



#include "reg52.h"                     //此文件中定义了单片机的一些特殊功能寄存器

 

typedef unsigned int u16;         //对数据类型进行声明定义

typedef unsigned char u8;

 

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

 

sbit k3=P3^2;

sbit k4=P3^3;

 

sbit led1=P2^0;

sbit led2=P2^1;

sbit led6=P2^5;

sbit led7=P2^6;

sbit led8=P2^7;

 

int tt=0,time=0,flag=0,flag1=0,k=0;

 

u8 codesmgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};     

 

 

//延时函数,i=1时,大约延时10us

void delay(u16 i)

{

while(i--);

}

 

void DigDisplay()

{

         u8i;

          

          

         for(i=0;i<8;i++)

         {

         switch(i)   //位选,选择点亮的数码管,

                   {

                            case(0):

                                     LSA=0;LSB=0;LSC=0;P0=smgduan[time%10];break;//显示第0位

                            case(1):

                                     LSA=1;LSB=0;LSC=0;P0=smgduan[time/10];break;//显示第1位

                            case(2):

                                     LSA=0;LSB=1;LSC=0;P0=smgduan[time/100];break;//显示第2位

                       case(3):

                                     LSA=1;LSB=1;LSC=0;P0=smgduan[0];break;//显示第3位

                            case(4):

                                     LSA=0;LSB=0;LSC=1;P0=smgduan[0];break;//显示第4位

                            case(5):

                                     LSA=1;LSB=0;LSC=1;P0=smgduan[1];break;//显示第5位

                            case(6):

                                     LSA=0;LSB=1;LSC=1;P0=smgduan[6];break;//显示第6位

                            case(7):

                                     LSA=1;LSB=1;LSC=1;P0=smgduan[1];break;//显示第7位

                            }                

                    

         delay(80);

                P0=0x00;//消隐

         }

}

 

void Int0Init();

void Int1Init();

void init() ;

 

void main()

{ static u8 k=0;

 Int0Init();

 Int1Init();

 init() ;

 while(1)

  {

 DigDisplay();

  }

}

 

 

 

void init()

P0=0;

P2=0;

time=0;

tt=0;

TMOD=0x11; 

TH0=(65536-50000)/256; //定时器装初值50ms

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0;使TR0置位=1,定时器0开始计数;停止时,使TR0=0复位;

 

 

void timer0() interrupt 1

static int j=0;

static u8 aa=0;

TH0 =(65536-50000)/256;// 0x4c;                    //晶振11.0592Mhz 

TL0 = (65536-50000)%256;//0x00;                    //若用12Mhz晶振 则改为TH0=0x3c;TL0=0xb0;

  

if(flag==1)

{       

tt++;

if(tt ==20)

{

     time++;

     if(time==100)         //到99后在从00开始      

     {

            time = 0;

           }

          

     tt = 0; 

}

}

if(flag==2)

{

tt++;

if(tt==40)

{

    time=time+2;

     if(time==100)         //到99后在从00开始      

     {

            time=0;

           }

           tt=0;

}

}       

  k++;

  if(k<=20)

   {

   flag1=1;

   }

  if(k>=120&&k<=220)

   {

  flag1=2;

   }

  if(k>220)

   {

  k=0;

   }

  

  if(flag1==1)

   {

  aa++;

  if(aa==20)

         {

         switch(j)

         {

         case0:

           led1=0;led2=1;led6=1;led7=1;led8=1;break;

         case1:

           led1=1;led2=0;led6=1;led7=1;led8=1;break;

         case2:

           led1=1;led2=1;led6=0;led7=1;led8=1;break;

         case3:

           led1=1;led2=1;led6=1;led7=0;led8=1;break;

         case4:

           led1=1;led2=1;led6=1;led7=1;led8=0;break;

         case5:

           led1=1;led2=1;led6=1;led7=0;led8=1;break;

         case6:

           led1=1;led2=1;led6=0;led7=1;led8=1;break;

         case7:

           led1=1;led2=0;led6=1;led7=1;led8=1;break;

         case8:

          led1=0;led2=1;led6=1;led7=1;led8=1;j=-1;break;

          default:break;

           }  

           j++;

           aa=0;

           }

           }

           

       if(flag1==2)

          {

          aa++;

          if(aa==20)

          {

           switch(j)      

  {

         case0:

           led1=1;led2=0;led6=0;led7=1;led8=1;break;

         case1:

           led1=0;led2=1;led6=1;led7=0;led8=1;break;

         case2:

           led1=1;led2=0;led6=1;led7=1;led8=0;break;

         case3:

           led1=0;led2=1;led6=0;led7=1;led8=1;break;

         case4:

           led1=1;led2=0;led6=1;led7=0;led8=1;break;

         case5:

           led1=0;led2=1;led6=1;led7=1;led8=0;break;

         case6:

           led1=1;led2=0;led6=0;led7=1;led8=1;break;

         case7:

           led1=0;led2=1;led6=1;led7=0;led8=1;break;

         case8:

          led1=0;led2=1;led6=1;led7=0;led8=1;j=-1;break;

          default:break;       

          }

          j++;

          aa=0;

          }

          }

   

}

 

 

void Int0Init()

{

 PX0=1;

 IT0=1;

 EX0=1;

 EA=1;

 }

 

void Int0()         interrupt0                 //外部中断0的中断函数

{

         delay(1000);     //延时消抖

         if(k3==0)

         {

           flag=1;

         }

}

 

void Int1Init()

{

 PX1=1;

 IT1=1;

 EX1=1;

 EA=1;

 }

 

void Int1()         interrupt2                 //外部中断0的中断函数

{

         delay(1000);     //延时消抖

         if(k4==0)

         {

         flag=2;     

         }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用定时器0控制切换流水灯顺序,用外部中断控制两种数码管显示方式 的相关文章

  • 基于51单片机的智能窗帘设计

    具体实现功能 系统由STC89C51 1602液晶 步进电机 光敏电阻 按键模块 DS1302时钟模块 ADC0832模块 电源构成 1 LCD1602显示日期和时间 当前控制模式及光照强度 2 可通过按键切换 手动模式 定时模式 光控模式
  • 【51单片机】数码管的使用

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 数码管的类型
  • 7、基于51单片机智能热水器温度水温水位检测 (proteus仿真+原理图+PCB图+程序+开题报告+参考论文)

    一 设计简介 本设计是基于51单片机智能热水器温度水温水位检测系统 主要实现以下功能 按键说明 从左边第一个起 减键 加键 设置键 输出方式 继电器输出 1 单片机型号 STC89C52 51 AT89C52 51 AT89S52 51 可
  • 【51单片机实验笔记】声学篇(一) 蜂鸣器基本控制

    目录 前言 硬件介绍 PWM基础 蜂鸣器简介 原理图分析 蜂鸣器驱动电路 软件实现 蜂鸣器短鸣 蜂鸣器功能封装 总结 前言 蜂鸣器在生活中的应用实则相当广泛 通过本章你将学会制造噪声 笑 你将学会驱动它们 并发出响声 硬件介绍 PWM基础
  • Keil4编辑器OXFD错误解决办法

    keil是德国的 对汉字的兼容不太好 在做液晶显示需要显示带0XFD的汉字如 三 时就不能正常显示 可以通过以下的补丁来修复 补丁文件 keil4编辑器0XFD补丁 其它文档类资源 CSDN下载https download csdn net
  • 6.2小车循迹,跟随,摇头测距功能实现

    1 循迹小车 1循迹模块的使用 TCRT5000传感器的红外发射二极管不断发射红外线 当发射出的红外线没有被反射回来或被反射回来但强度不够大时 红外接收管一直处于关断状态 此时模块的输出端为高电平 指示二极管一直处于熄灭状态 被检测物体出现
  • HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序

    HC 05是一款主从一体化的蓝牙模块 因此其使用起来比较方便 只需要进行简单的配置即可 本文就手把手的介绍小白入手模块后如何使用 对于模块使用 1 蓝牙配置 2 手机与蓝牙的传输 3 手机通过蓝牙模块控制单片机 4 一对蓝牙之间主 从传输数
  • keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解

    文章目录 前言 一 什么是软件调试 Debug 有什么用 二 keil Debug常用按钮 总结 前言 单片机的调试分为两种 一种是使用软件模拟调试 第二种是硬件调试 两种调试方式各有不同 软件模拟调试有误差 而硬件调试 借用仿真器调试是嵌
  • 基于51单片机 数控恒流源设计 可调电流源

    设计硬件组成 基于51单片机 数控恒流源设计 可调电流源基于单片机可调电流源设计 项目定制觉得选题不错 分享一下 由51单片机 LCD1602液晶 变压器 整流桥 开关电源LM2596 TLC5615 LM358 TIP31C 按键 TL4
  • 蓝桥杯单片机零基础到国二经验分享

    我参加的是第十三届蓝桥杯大赛 从最开始的零基础 毫无头绪 到拿下国二 颇有体会 在这里将我的备赛经验分享给大家 希望可以帮到一些正在备赛的蓝桥杯er 目录 一 蓝桥杯 单片机组介绍 二 零基础到国二历程 客观题 程序题 1 从零基础到省三
  • LCD1602液晶显示屏

    介绍 LCD1602液晶显示屏是一种字符型液晶显示模块 可以显示ASCll码的标准字符和其他一些内置的特殊字符 还可以内置8个自定义字符 显示容量 16 2个字符 每个字符为5 7点阵或5 10点阵 一 引脚介绍 VO 对比度调节电压 RS
  • 汇编语言实现跑马灯 8051单片机

    通过一位 F 的16进制 转换为 2进制的 1111 然后移动一位 有三极管开关所改变 0的时候发光 1的时候变暗 所以一开始0FFH表示高8位为0 低8位为1111 1111 表示全暗 然后右移变为1111 1110亮第一个等 之后类推
  • 《微机原理》-绪论

    微机原理 文章目录 微机原理 前言 一 微型计算机系统组成 1 早期计算机硬件系统 2 微型计算机系统硬件组成 二 存储器 前言 本系列博客主要是观看西安电子科技大学看老师于2009年录制的 微机原理视频 课程的CPU以8086CPU为例进
  • (十六)ADC转换实验

    本节主要是回顾有关于ADC的对应内容 我们这章通过一个AD芯片xpt2046来读取外部电压的变化 将电压的数字量显示在数码管上 关于ADC 我们都知道单片机内部都是数字量 就是1或者0 而我们的电流电压在传递的时候是模拟量 也就是模拟量很可
  • 基于51单片机无线NRF24L01的温湿度光照采集

    接收端 原理图 发送端 原理图 实物焊接图 主端源程序 发送端程序 从机NRF24L01程序 ifndef API DEF define API DEF Define interface to nRF24L01 Define SPI pin
  • 基于51单片机数字频率计的设计与实现

    目录 第一章 系统原理与总体设计 1 1系统组成 1 2系统原理 1 3测量原理 1 4频率测量与总体设计 第二章 硬件电路设计 2 1硬件电路框图 2 2数字频率计原理图 2 3硬件电路设计 第三章 软件程序设计 3 1程序流程图 3 2
  • 8x8LED点阵

    点量这个只需要把9高电平 13低电平就可以了 共阳极点阵 行线是led的正极 列线是led的列线 左上角点亮 显示多个灯是动态扫描的 一个一个显示的 然后间隔速度要快就可以造成显示 点阵由两篇74Hc595级联在一起驱动的 只需要三个io口
  • 【单片机】keil和Proteus使用教程

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 kei
  • 548、基于51单片机的比赛计分仿真设计(简易,LCD1602,独立按键)

    毕设帮助 开题指导 技术解答 有偿 见文末 目录 一 设计功能 二 proteus仿真 三 原理图 四 程序源码 五 资料包括 一 设计功能 二 proteus仿真 三 原理图 四 程序源码 五 资料包括
  • Linux值得学习吗?打工人利用业务时间学习Linux需要多长时间?

    nbsp Linux值得学习吗 打工人利用业务时间学习Linux需要多长时间 在开始前我有一些资料 是我根据自己从业十年经验 熬夜搞了几个通宵 精心整理了一份 Linux的资料从专业入门到高级教程 工具包 点个关注 全部无偿共享给大家 在评

随机推荐

  • 熔断,降级,限流区别

    熔断 限流 降级都是保持系统稳定运行的策略 但针对的场景有所不同 熔断 服务熔断的作用类似于我们家用的保险丝 当某服务出现不可用或响应超时的情况时 为了防止整个系统出现雪崩 暂时停止对该服务的调用 上面的解释中有两个很关键的词 一个是暂时
  • 推荐几个好用又好玩的vscode插件!

    推荐几个有用的插件 会提高你的开发效率 走过路过不要错过 一 koroFileHeader 先来一个镇场子的 一键生成佛祖保佑 下载koroFileHeader插件 安装之后 新建一个文件 这时候会自动生成一个模板 显示作者的相关信息 当然
  • 如何用原生JS写一个简单购物车?来这篇文章告诉你。

    首先声明这仅仅只是个人理解而已 有什么错误或者缺少大家尽管在评论区发出来 共同学习 一起进步 首先呢 我们要创建一个HTML基础代码 基础HTML代码模板如下 他是比较关键的 是我们接下来了解的属性相关 可以直接复制拿来用的哈 它的意义就是
  • Redis进阶实践之十一 Redis的Cluster集群搭建

    https www cnblogs com PatrickLiu p 8458788 html 一 引言 本文档只对Redis的Cluster集群做简单的介绍 并没有对分布式系统的所涉及到的概念做深入的探讨 本文只是针对如何设置集群 测试和
  • 人物关系图谱:ECharts 实现

    目录 1 什么是ECharts 2 开始简单配置关系图 3 完整代码 1 什么是ECharts ECharts是百度开源的纯 Javascript 图表库 目前开源可以与highcharts相匹敌的一个图表库 相信有很多国内用户使用 官网
  • 一、PID控制原理

    在模拟控制系统中 控制器最常用的控制规律是PID控制 模拟PID控制系统原理框图如下图 系统由模拟PID控制器和被控对象组成 PID控制器是一种线性控制器 它根据给定值Yd t 与实际输出值Y t 构成控制偏差 err Yd Y PID的控
  • 接口继承接口,类实现接口

    接口继承接口 1 类与类之间是单继承的 直接父类只有一个 2 类与接口之间是多实现的 一个类可以有多个接口 3 接口与接口之间是多继承的 注意事项 1 多个父接口当中的抽象方法如果重复没有关系 抽象的没事 没有方法体 2 多个父接口当中的默
  • windows为配置安全策略

    文章目录 限制 Management Manage01 05 只能从Client登录 限制 Finance F01 10 不能关闭计算机和重启计算机 所有的域计算机和域用户都能自动注册证书 证书颁发机构已经颁发过一次就不再重复颁发 除非证书
  • ChatGPT国内镜像软件推荐

    1 ChatGPT镜像是什么 ChatGPT镜像是一种技术方案 它将OpenAI的ChatGPT模型与相关技术部署在用户本地或私有服务器上 采用这种方式 用户可以在自己的环境中运行ChatGPT模型 无需依赖于OpenAI的在线API服务
  • 考研复试数据库原理课后习题(十四)——内存数据库系统

    内存数据库系统 1 内存数据库和磁盘数据库有什么区别 2 内存数据库的特点有哪些 内存是计算机存储体系结构中能够被程序可控访问 相对于硬件控制的cache 的最高层次 是能够提供大量数据存储的最快的存储层 内存数据库具有几个重要特性 高吞吐
  • 【RT-DETR】《DETRs Beat YOLOs on Real-time Object Detection》译读笔记

    DETRs Beat YOLOs on Real time Object Detection 摘要 近期 基于端到端的 transformer based的检测器 DETRs 取得了卓越的性能 然而 DETRs类模型计算成本高的问题尚未得到
  • 前沿应用丨大规模无人机集群与“虚实结合”半实物仿真系统

    一 应用背景 无人机集群在军事 安全 救援 航空监测 物流配送等领域具有广泛的应用前景 它可以提高任务执行的效率 灵活性和安全性 同时降低人力资源的需求和风险 无人机集群研究涉及多个学科领域 如机器人学 控制理论 通信技术和人工智能等 目前
  • TCP/IP 网络设备与基础概念

    本文目的在于按照自己的理解 解释清楚网络中的一些基本概念 以及支撑概念落地的网络设备的工作原理 从而解决网络联通性问题 以及为定量分析网络性能问题打基础 如有错漏 欢迎指正 什么是 WAN vs LAN 什么是子网 网关 LAN vs 子网
  • 小白笔记——HTML到Java的Date型转换

    本笔记旨在记录新手学习编程时遇到的问题以及解决方法 主要是作为备忘录来使用 希望路过的大神可以指点一二 同时也希望这个笔记可以帮助到其他有同样困惑的小伙伴 大学毕业之后就再没有用中文写过文章了 所以我写的东西字里行间都会透露出一股子翻译大碴
  • 星星之火-58:CPRI协议缺点,eCPRI协议是如何克服CPRI协议的不足?

    1 CPRI协议不足 CPRI数据传输链路属于空口协议栈 硬件 应用软件共同实现空口协议栈 RFIC gt FPGA RF gt 时域采样 CPRI gt CPRI gt DSP gt L1 软件 gt L2软件 gt L3软件 1 CPR
  • Orcale产生随机数

    1 Oracle中产生uuid的方法 select lower sys guid from dual 2 oracle中函数nvl 如果oracle第一个参数为空那么显示第二个参数的值 如果第一个参数的值不为空 则显示第一个参数本来的值
  • [orin] nvidia orin 上配置tensorrt

    版本 jetpack 5 0 1 tensorrt 8 4 1 5 概述 tensorrt会跟着jetpack的包一起安装 系统本身自带的python是3 8的版本 tensorrt的python包位于这个路径下 cd usr lib py
  • 可视化dockerregistry中的镜像

    1 先来个简单的 docker run d p 5000 5000 name registry srv registry 2 docker run it p 8080 8080 name registry web link registry
  • WebSocket的核心事件

    前言 在上一篇文章中 Spring Boot使用WebSocket模拟聊天 已经简单实现了我们WebSocket的Demo 里面使用的WebSocket事件函数在此做一个总结 WebSocket整体通讯的流程就是 建立链接 gt 发送消息
  • 用定时器0控制切换流水灯顺序,用外部中断控制两种数码管显示方式

    include reg52 h 此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16 对数据类型进行声明定义 typedef unsigned char u8 sbit LSA P2 2 sbit LS