找回密码
 立即注册

QQ登录

只需一步,快速开始

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

给大家分享下单片机独立按键控制花样流水灯程序Proteus仿真

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <REG52.H>
  2. #define        uint        unsigned int
  3. #define        uchar        unsigned char
  4. sbit k1=P1^0;
  5. uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED从低位往高位移
  6. uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED从高位往低位移
  7. uchar code table2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//LED从1个亮到8个都点亮(从低位往高位)
  8. uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//LED从1个亮到8个都点亮(从高位往低位)
  9. uchar i,tm;
  10. uchar num=0;
  11. void disp1();
  12. void disp2();
  13. void disp3();
  14. void disp4();
  15. void delay_ms(unsigned int tim);  //延时函数
  16. void t0isr() interrupt 1
  17. {
  18. TH0=(65536-50000)/256;
  19. TL0=(65536-50000)%256;
  20. tm++;
  21. if(tm>=10)
  22. {
  23.     tm=0;
  24.          
  25.                         switch(num)
  26.                         {
  27.                           case 1: disp1();delay_ms(100);break;
  28.                                 case 2: disp2();delay_ms(100);break;
  29.                                 case 3: disp3();delay_ms(100);break;
  30.                                 case 4: disp4();delay_ms(100);num=0;break;
  31.        
  32.                                 default:break;
  33. }
  34. }
  35. }
  36. void delay(uchar time)
  37. {
  38.         uchar j,k;
  39.         for(j=time;j>0;j--)
  40.         for(k=125;k>0;k--);
  41. }
  42. void delay_ms(unsigned int tim)   //延时函数
  43. {
  44.         unsigned int i,j;
  45.         for(i=0;i<tim;i++);
  46.                 for(j=0;j<120;j++);
  47. }                                  
  48. void disp1()                        //状态1 LED顺时针转一圈
  49. {


  50.                
  51.         for(i=0;i<8;i++)
  52.         {
  53.                 P2=table0[i];
  54.                 delay(1000);
  55.         }
  56.         P2=0xff;
  57.         for(i=0;i<8;i++)
  58.         {
  59.                 P0=table0[i];
  60.                 delay(1000);
  61.         }
  62.         P0=0xff;
  63.        
  64. }
  65. void disp2()                        //状态2 LED逆时针转一圈
  66. {



  67.        
  68.         for(i=0;i<8;i++)
  69.         {
  70.                 P0=table1[i];
  71.                 delay(1000);
  72.         }
  73.         P0=0xff;
  74.         for(i=0;i<8;i++)
  75.         {
  76.                 P2=table1[i];
  77.                 delay(1000);
  78.         }
  79.         P2=0xff;
  80. }

  81. void disp3()                        //状态3 LED自上而下逐渐点亮(一半点亮一半不亮)
  82. {


  83.         delay(1000);       
  84.         if(k1==1)
  85.         {
  86.         for(i=0;i<8;i++)
  87.         {
  88.                 P0=table2[i];
  89.                 P2=table2[i];
  90.                 delay(1000);
  91.         }

  92. }
  93.         }
  94. void disp4()                        //状态4 LED自下而上逐渐点亮(直到全部点亮)
  95. {

  96.         for(i=0;i<8;i++)
  97.         {
  98.                 P0=table3[i];
  99.                 P2=table3[i];
  100.                 delay(1000);
  101.         }
  102.                 P0=0xff; P2=0xff;
  103.         }

  104. void main()
  105. {
  106. TMOD=0x01;
  107. TH0=(65536-50000)/256;
  108. TL0=(65536-50000)%256;
  109. TR0=1;
  110. ET0=1;
  111. EA=1;

  112.         while(1)
  113.         {
  114.                 if(k1==0)
  115.                 {
  116.                         delay_ms(500);                 //消抖
  117. //    while(!k1);                  //等待按键松开
  118.                         if(k1==0)
  119.                         { num++;
  120.                  while(!k1);
  121.                         }
  122.                 }
  123.         }
  124. }
复制代码

所有资料51hei提供下载:
流水灯.rar (68.44 KB, 下载次数: 57)


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

使用道具 举报

沙发
ID:798824 发表于 2020-7-7 18:34 | 只看该作者
请问哪个是protues文件呀
回复

使用道具 举报

板凳
ID:798824 发表于 2020-7-7 18:34 | 只看该作者
请问哪个protues文件
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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