找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1150|回复: 0
收起左侧

51单片机按键控制流水灯花样代码与Proteus仿真

[复制链接]
ID:924899 发表于 2023-4-14 18:25 | 显示全部楼层 |阅读模式
大家好,新手小白。分享先前尝试用51做的按键控制流水灯花样,有六个按键,分别实现单个灯的亮灭、从上往下流动、从下往上流动、全闪、全灭、暂停六种功能。已经成功仿真,有时候不太灵敏需要多按几下,附源码源程序。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

仿真原理图

仿真原理图


单片机源程序如下:
  1. #include<reg51.h>
  2. sbit LED1=P2^0;
  3. sbit K1=P1^0;
  4. sbit K2=P1^1;
  5. sbit K3=P1^2;
  6. sbit K4=P1^3;
  7. sbit K5=P1^4;
  8. sbit K6=P1^5;
  9. unsigned char keyval,num=0;
  10. int i,j,n;

  11. void delay_ms(int n)
  12. {
  13. for(i=0;i<n;i++)
  14. for(j=0;j<120;j++);}

  15. void forward()  //从上往下流动
  16. {
  17. P2=0xfd;
  18. delay_ms(150);
  19. P2=0xfb;
  20. delay_ms(150);
  21. P2=0xf7;
  22. delay_ms(150);}

  23. void backward() //从下往上流动
  24. {
  25. P2=0xf7;
  26. delay_ms(150);
  27. P2=0xfb;
  28. delay_ms(150);
  29. P2=0xfd;
  30. delay_ms(150);}

  31. void blink()        //全闪
  32. {
  33. P2=0xff;
  34. delay_ms(100);
  35. P2=0x00;
  36. delay_ms(100); }

  37. void key_scan()
  38. {
  39. P1=0xff;
  40. if((P1&0x3f)!=0x3f)
  41. {
  42.   delay_ms(100);
  43.   if(K1==0)
  44.   {keyval=1;num=(num+1)%2;}
  45.   if(K2==0)
  46.   keyval=2;
  47.   if(K3==0)
  48.   keyval=3;
  49.   if(K4==0)
  50.   keyval=4;
  51.   if(K5==0)
  52.   keyval=5;
  53.   if(K6==0)
  54.   keyval=6;}
  55.   while((P1&0x3f)!=0x3f);}

  56. void main()
  57. {
  58. keyval=0;
  59. while(1)
  60. {
  61.   key_scan();
  62.   switch(keyval)
  63.   {
  64.    case 1 :LED1=!num;break;                  //按一下亮按一下灭
  65.    case 2 :forward();break;        
  66.    case 3 :backward();break;
  67.    case 4 :blink();break;
  68.    case 5 :P2=0xff;break;             //全灭
  69.    case 6 :while(keyval!=6);break;}}} //暂停

复制代码


Keil代码与Proteus仿真下载: 按键控制流水灯花样.zip (70.76 KB, 下载次数: 48)

评分

参与人数 2黑币 +62 收起 理由
17740048467 + 12 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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