找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4113|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

給大家分享下單片機獨立按鍵控制花樣流水燈程序Proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:259898 發(fā)表于 2020-5-22 09:10 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
仿真原理圖如下(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);  //延時函數(shù)
  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)   //延時函數(shù)
  43. {
  44.         unsigned int i,j;
  45.         for(i=0;i<tim;i++);
  46.                 for(j=0;j<120;j++);
  47. }                                  
  48. void disp1()                        //狀態(tài)1 LED順時針轉(zhuǎn)一圈
  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()                        //狀態(tài)2 LED逆時針轉(zhuǎn)一圈
  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()                        //狀態(tài)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()                        //狀態(tài)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. }
復(fù)制代碼

所有資料51hei提供下載:
流水燈.rar (68.44 KB, 下載次數(shù): 57)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:798824 發(fā)表于 2020-7-7 18:34 | 只看該作者
請問哪個是protues文件呀
回復(fù)

使用道具 舉報

板凳
ID:798824 發(fā)表于 2020-7-7 18:34 | 只看該作者
請問哪個protues文件
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表