找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)流水燈 含Proteus仿真原理圖及代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
之前學(xué)單片機(jī)做的一個(gè),以下是可實(shí)現(xiàn)的功能:
1. K1 為“啟動(dòng)鍵”,首次按壓 K1 可產(chǎn)生“自下向上” 的
流水燈運(yùn)動(dòng);
2. K2 為“停止鍵”,按壓 K2 可終止流水燈的運(yùn)動(dòng);
3. K3 和 K4 為“方向鍵”,分別產(chǎn)生 “自上向下”和 “自
下向上” 運(yùn)動(dòng)。
4. K5 為“閃爍鍵”,按壓 K5 可以使 4 個(gè)燈同時(shí)閃爍。

有很多不足,請(qǐng)多多指教。

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


單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. char led1[]={0xfe,0xfd,0xfb,0xf7};              //LED亮燈控制字
  3. char led2[]={0xf0,0xff};                        //LED閃爍控制字

  4. bit dir=0,run=0,tao=0;                          //全局變量

  5. unsigned char ms=0,i=0,j=3,k=0;                //全局變量

  6. unsigned char set;                             //全局變量

  7. timer() interrupt 1                            //T0方式延時(shí)延時(shí)函數(shù)
  8. {
  9.         TH0=0x3c;
  10.         TL0=0xb0;                                    //該初值為延時(shí)50ms,運(yùn)行10次后再進(jìn)行變量加一或減一即可實(shí)現(xiàn)延時(shí)500ms
  11.         ms++;
  12.          if(ms==10)
  13.          {
  14.                 ms=0;
  15.                 switch(set)
  16.                  {
  17.                          case 1:i++;break;
  18.                          case 2:j--;break;
  19.                          case 3:k++;break;
  20.      }
  21.    }
  22. }

  23. key() interrupt 0                             //鍵控中斷函數(shù)
  24. {
  25.         switch(P0&0x0f)                             //修改標(biāo)志位狀態(tài)
  26.         {
  27.                 case 0x0e:run=1;break;
  28.                 case 0x0d:run=0,dir=0;break;
  29.                 case 0x0b:dir=1;tao=0;break;
  30.                 case 0x07:dir=0;tao=0;break;
  31.                 case 0x0f:tao=1;break;
  32.   }
  33. }

  34. void main()
  35. {
  36.         TMOD = 0x01;                             //初始化T0,工作方式為工作方式1
  37.         TH0 = 0x3C;
  38.         TL0 = 0xB0;
  39.         ET0 = 1;
  40.         TR0 = 1;                                 
  41.        
  42.         IT0=1;EX0=1;                             //初始化外部中斷INT0
  43.        
  44.         EA=1;                                    //開總中斷
  45.         PX0=0;PT0=1;                             //設(shè)置中斷優(yōu)先級(jí)
  46.         while(1)
  47.         {
  48.                 if(run==1)
  49.                 {
  50.                         if(tao==1)                            //若run=1,tao=1,閃爍                     
  51.                         {
  52.                                 set=3;
  53.                                 if(k==2)
  54.                                 {
  55.                                         k=0;
  56.         }
  57.                                 P2=led2[k];
  58.                         }
  59.                         else
  60.                         {
  61.                                 if(dir==1)                          //若run=dir=1,自上向下流動(dòng)
  62.                                 {
  63.                                         set=1;
  64.                                         if(i==4)
  65.                                         {
  66.                                                 i=0;
  67.           }
  68.                                                 P2=led1[i];
  69.         }
  70.                                 else                                //若run=1;dir=0,自下向上流動(dòng)
  71.                           {
  72.                                   set=2;
  73.                                   if(j==-1)
  74.                                   {
  75.                                           j=3;
  76.           }
  77.                                   P2=led1[j];
  78.         }
  79.                   }
  80.     }
  81.                 else
  82.                 {
  83.                         P2=0xff;                       //燈全滅
  84.     }
  85.         }
  86. }
復(fù)制代碼

Keil代碼與Proteus仿真下載:
流水燈.zip (60.29 KB, 下載次數(shù): 22)

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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