找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3176|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机独立式键盘控制的4级变速流水灯源代码

[复制链接]
跳转到指定楼层
楼主
ID:318620 发表于 2018-5-24 18:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. //独立式键盘控制的4级变速流水灯
  2. #include<reg52.h>        //  包含51单片机寄存器定义的头文件
  3. unsigned char speed;    //储存流水灯的流动速度
  4. sbit S1=P1^4;          //位定义S1为P1.4
  5. sbit S2=P1^5;          //位定义S2为P1.5
  6. sbit S3=P1^6;          //位定义S3为P1.6
  7. sbit S4=P1^7;          //位定义S4为P1.7
  8. /**************************************************************
  9. 函数功能:延时20ms的子程序
  10. **************************************************************/
  11. void delay20ms(void)    //3*i*j+2*i=3*100*60+2*100=20000μs=20ms;
  12. {
  13.   unsigned char i,j;
  14.   for(i=0;i<100;i++)
  15.    for(j=0;j<60;j++)
  16.            ;
  17. }
  18. /**************************************************************
  19. 函数功能:延时可调子程序
  20. 入口参数:x
  21. **************************************************************/
  22. void delay(unsigned char x)
  23.    {
  24.           unsigned char k;
  25.           for(k=0;k<x;k++)
  26.                    delay20ms();
  27.         }
  28. /**************************************************************
  29. 函数功能:主函数
  30. **************************************************************/
  31. void main(void)
  32. {
  33.    TMOD=0x02;     //使用定时器T0的模式2
  34.           EA=1;          //开总中断
  35.         ET0=1;         //定时器T0中断允许
  36.         TR0=1;         //定时器T0开始运行
  37.         TH0=256-200;   //定时器T0赋初值,每200微妙来1次中断请求
  38.         TL0=256-200;
  39.   speed=3;        //默认流水灯流水点亮延时20ms×3=60ms
  40.    while(1)
  41.           {
  42.                     P0=0xfe;         //第一个灯亮
  43.                     delay(speed);    //调用延时可调子程序
  44.                     P0=0xfd;         //第二个灯亮
  45.                     delay(speed);
  46.                     P0=0xfb;          //第三个灯亮
  47.                    delay(speed);
  48.                    P0=0xf7;          //第四个灯亮
  49.                    delay(speed);
  50.                   P0=0xef;          //第五个灯亮
  51.               delay(speed);
  52.                         P0=0xdf;          //第六个灯亮
  53.                     delay(speed);
  54.                         P0=0xbf;          //第七个灯亮
  55.                 delay(speed);
  56.                         P0=0x7f;          //第八个灯亮
  57.                delay(speed);   
  58.                 P0=0xff;
  59.       }
  60.    }
  61. /**************************************************************
  62. 函数功能:定时器T0的中断服务子程序,进行键盘扫描
  63. **************************************************************/
  64. void intersev(void) interrupt 1 using 1
  65. {
  66.   TR0=0;            //关闭定时器T0/
  67.   P1=0xff;           //将P1口的均置高电平"1"
  68.   if((P1&0xf0)!=0xf0)    //如果有键按下
  69.     {
  70.            delay20ms();       //延时20ms,软件消抖
  71.             if((P1&0xf0)!=0xf0)  //确实有键按下
  72.                   {
  73.                      if(S1==0)       //如果是按键S1按下
  74.                               speed=5;   //流水灯流水点亮延时20ms×5=100ms
  75.                           if(S2==0)      //如果是按键S2按下
  76.                               speed=10;   //流水灯流水点亮延时20ms×10=200ms
  77.                           if(S3==0)      //如果是按键S3按下
  78.                               speed=25;  //流水灯流水点亮延时20ms×25=500ms
  79.                           if(S4==0)      //如果是按键S4按下
  80.                               speed=50;  //流水灯流水点亮延时20ms×50=1000ms
  81.                    }      
  82.          }      
  83.           TR0=1;               //启动定时器T0
  84. }


复制代码

所有资料51hei提供下载:
独立式键盘控制的4级变速流水灯.rar (11.79 KB, 下载次数: 25)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表