独立式键盘控制的4级变速流水灯

#include<reg51.h>        //  包含51单片机寄存器定义的头文件
unsigned char speed;    //储存流水灯的流动速度
sbit S1=P1^4;          //位定义S1为P1.4
sbit S2=P1^5;          //位定义S2为P1.5
sbit S3=P1^6;          //位定义S3为P1.6
sbit S4=P1^7;          //位定义S4为P1.7
/**************************************************************
函数功能:延时20ms的子程序
**************************************************************/
void delay20ms(void)    //3*i*j+2*i=3*100*60+2*100=20000μs=20ms;
{
  unsigned char i,j;
  for(i=0;i<100;i++)
   for(j=0;j<60;j++)
       ;
}
/**************************************************************
函数功能:延时可调子程序
入口参数:x
**************************************************************/
void delay(unsigned char x)
   {
      unsigned char k;
      for(k=0;k<x;k++)
           delay20ms();
    }
/**************************************************************
函数功能:主函数
**************************************************************/
void main(void)
{
   TMOD=0x02;     //使用定时器T0的模式2
      EA=1;          //开总中断
    ET0=1;         //定时器T0中断允许
    TR0=1;         //定时器T0开始运行
    TH0=256-200;   //定时器T0赋初值,每200微妙来1次中断请求
    TL0=256-200;
  speed=3;        //默认流水灯流水点亮延时20ms×3=60ms
   while(1)
      {
            P3=0xfe;         //第一个灯亮
            delay(speed);    //调用延时可调子程序
            P3=0xfd;         //第二个灯亮
            delay(speed);
            P3=0xfb;          //第三个灯亮
           delay(speed);
           P3=0xf7;          //第四个灯亮
           delay(speed);
          P3=0xef;          //第五个灯亮
          delay(speed);
            P3=0xdf;          //第六个灯亮
            delay(speed);
            P3=0xbf;          //第七个灯亮
            delay(speed);
            P3=0x7f;          //第八个灯亮
           delay(speed);    
             P3=0xff;
      }
   }
/**************************************************************
函数功能:定时器T0的中断服务子程序,进行键盘扫描
**************************************************************/
void intersev(void) interrupt 1 using 1
{
  TR0=0;            //关闭定时器T0/
  P1=0xff;           //将P1口的均置高电平"1"
  if((P1&0xf0)!=0xf0)    //如果有键按下
    {
       delay20ms();       //延时20ms,软件消抖
        if((P1&0xf0)!=0xf0)  //确实有键按下
          {
             if(S1==0)       //如果是按键S1按下
                  speed=5;   //流水灯流水点亮延时20ms×5=100ms
              if(S2==0)      //如果是按键S2按下
                  speed=10;   //流水灯流水点亮延时20ms×10=200ms
              if(S3==0)      //如果是按键S3按下
                  speed=25;  //流水灯流水点亮延时20ms×25=500ms
              if(S4==0)      //如果是按键S4按下
                  speed=50;  //流水灯流水点亮延时20ms×50=1000ms
           }    
     }    
      TR0=1;               //启动定时器T0
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/333782.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品渲染效果图怎么做?云渲染解决:批量效果图渲染

渲染产品效果图是设计师交付项目的重要环节之一&#xff0c;优秀的效果图渲染能准确传达设计意图和概念&#xff0c;并在与客户交流时产生积极评价。那么&#xff0c;如何制作出出色的产品效果图&#xff1f;另外&#xff0c;如何高效完成大量效果图的渲染呢&#xff1f; 一、产…

工程中的数据拟合方法

本文介绍工程中的数据拟合方法。 工程中经常会涉及到对测量到的数据进行拟合&#xff0c;如传感器标定。本文从工程化的角度介绍数据拟合。 1.数据测量 数据测量是非常重要的&#xff0c;数据测量的好坏直接影响数据是否能被按一定的函数曲线进行拟合及最终拟合的精度。 数…

基于filter的内存马

主要是通过过滤器来拦截severlet请求中的参数&#xff0c;作为过滤器中的参数&#xff0c;来调用自定义过滤器中的恶意函数 在这里我们分析一下filter的实现原理&#xff0c;循序渐进 Demo1&#xff1a; 直接使用filter模拟内存马效果&#xff1a; 1.配置一个简单的severlet的…

ssm基于Vue的戏剧推广网站论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统戏剧推广信息管理难度大&#xff0c;容错率低&#xff0c…

揭秘证券公司网站部署的SSL证书品牌

近日&#xff0c;有多家证券公司因网络安全问题被点名&#xff0c;由此&#xff0c;建立完善的网络安全管理制度、采用适当的安全策略和工具&#xff0c;以营造安全的网络环境&#xff0c;更好的保护用户隐私和业务安全就显得尤为重要。SSL证书作为保护传输数据安全的重要工具&…

2024天津市大学软件学院专升本专业考试准考证打印、考场相关安排

天津市大学软件学院2024年“高职升本科”联合招生专业考试相关安排 一、考试安排 &#xff08;一&#xff09; 专业考试时间&#xff1a; 1月13日 15:00——17:00&#xff08;二&#xff09; 考场地址 1、天津市西青区宾水西道399号天津工业大学院内&#xff1b; 2、考场分布在…

【服务器数据恢复】Raid5热备盘同步失败导致lvm结构损坏的数据恢复案例

服务器数据恢复环境&#xff1a; 两组由4块磁盘组建的raid5磁盘阵列&#xff0c;两组raid5阵列划分为lun并组成了lvm结构&#xff0c;ext3文件系统。 服务器故障&#xff1a; 一组raid5阵列中的一块硬盘离线&#xff0c;热备盘自动上线并开始同步数据。在热备盘完成同步之前&am…

软件测试入门基础

说到软件测试&#xff0c;那么首先得和没有基础的同学们&#xff0c;讲解一下&#xff0c;平时我们使用的那些app&#xff0c;比如淘宝&#xff0c;微信是怎么进行交互的呢&#xff1f;在淘宝上下个订单&#xff0c;按钮按出去为什么就能下单成功呢&#xff1f;微信看朋友圈&am…

vue购物车案例、v-model进阶、与后端交互

一 购物车案例 - 结算 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>购物车结算</title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></scr…

【Scala】——函数式编程

1 面向对象编程和函数式编程 1.1 面向对象编程 解决问题&#xff0c;分解对象&#xff0c;行为&#xff0c;属性&#xff0c;然后通过对象的关系以及行为的调用来解决问题。 • 对象&#xff1a;用户 • 行为&#xff1a;登录、连接 JDBC、读取数据库 • 属性&#xff1a;用户…

Linux学习记录——삽심칠 传输层TCP协议(2)

文章目录 1、滑动窗口2、拥塞控制3、延迟应答4、捎带应答5、总结TCP可靠性和性能提高6、面向字节流7、粘包问题8、异常情况9、全连接、半连接 上一篇是传输层TCP协议&#xff08;1&#xff09;。本篇默认读者已经清楚TCP报头各个部分、可靠性和握手挥手的含义。 有时候会把客户…

AI大语言模型会带来了新一波人工智能浪潮?

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…