標(biāo)題: 單片機(jī)定時(shí)器中斷控制的獨(dú)立式按鍵Proteus仿真+源碼 [打印本頁(yè)]

作者: 刀刀見(jiàn)紅    時(shí)間: 2019-1-17 01:37
標(biāo)題: 單片機(jī)定時(shí)器中斷控制的獨(dú)立式按鍵Proteus仿真+源碼
51單片機(jī)芯片定時(shí)器中斷控制的獨(dú)立式按鍵仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源碼:
//定時(shí)器中斷控制的獨(dú)立式按鍵
#include<reg51.h>   
sbit S1=P1^4;        
sbit S2=P1^5;        
sbit S3=P1^6;      
sbit S4=P1^7;      
unsigned char keyval;
/*************************************************
函數(shù)功能:流水燈延時(shí)
**************************************************/
void led_delay(void)
{
   unsigned char i,j;
        for(i=0;i<250;i++)
          for(j=0;j<250;j++)
            ;
}

/*************************************************
函數(shù)功能:軟件消抖延時(shí)
**************************************************/
void delay20ms(void)
{
   unsigned char i,j;
        for(i=0;i<100;i++)
          for(j=0;j<60;j++)
            ;
}
/*************************************************
函數(shù)功能:正向流水點(diǎn)亮LED
**************************************************/
void forward(void)
{
              P3=0xfe;         //第一個(gè)燈亮
                         led_delay();
                          P3=0xfd;         //第二個(gè)燈亮
                         led_delay();
                         P3=0xfb;          //第三個(gè)燈亮
                         led_delay();
                         P3=0xf7;          //第四個(gè)燈亮
                         led_delay();
                        P3=0xef;          //第五個(gè)燈亮
                   led_delay();
                        P3=0xdf;          //第六個(gè)燈亮
                    led_delay();
                        P3=0xbf;          //第七個(gè)燈亮
                   led_delay();
                        P3=0x7f;          //第八個(gè)燈亮
                   led_delay();  
                        P3=0xff;
                        P3=0xfe;         //第一個(gè)燈亮
                         led_delay();
}
/*************************************************
函數(shù)功能:反向流水點(diǎn)亮LED
**************************************************/
  void backward(void)
  {
               P3=0x7f;          //第八個(gè)燈亮
                   led_delay();  
                        P3=0xbf;          //第七個(gè)燈亮
                   led_delay();
                        P3=0xdf;          //第六個(gè)燈亮
                    led_delay();
                        P3=0xef;          //第五個(gè)燈亮
                   led_delay();
                         P3=0xf7;          //第四個(gè)燈亮
                         led_delay();
                        P3=0xfb;          //第三個(gè)燈亮
                         led_delay();
                   P3=0xfd;         //第二個(gè)燈亮
                         led_delay();
                        P3=0xfe;         //第一個(gè)燈亮
                         led_delay();

  }
/*************************************************
函數(shù)功能:關(guān)閉所有LED
**************************************************/
void stop(void)
{
        P3=0xff;    //關(guān)閉8個(gè)LED
}
/*************************************************
函數(shù)功能:閃爍點(diǎn)亮LED
**************************************************/
void flash(void)
{
  P3=0xff;      //關(guān)閉8個(gè)LED
  led_delay();
  P3=0x00;      //點(diǎn)亮8個(gè)LED
  led_delay();
}


/*************************************************
函數(shù)功能:主函數(shù)
**************************************************/
void main(void)  //主函數(shù)
{
  TMOD=0x01;      //使用定時(shí)器T0的模式1
  EA=1;           //開(kāi)總中斷
  ET0=1;          //定時(shí)器T0中斷允許
  TR0=1;          //啟動(dòng)定時(shí)器T0
TH0=(65536-1000)/256;    //定時(shí)器T0賦初值,每計(jì)數(shù)200次(217微秒)發(fā)送一次中斷請(qǐng)求
TL0=(65536-1000)%256;    //定時(shí)器T0賦初值
  keyval=0;              //按鍵值初始化為0,什么也不做
   while(1)
           {
                   switch(keyval)
                                  {
                                     case 1:forward();
                                                 break;
                                          case 2:backward();
                                                 break;
                                          case 3:stop();
                                                 break;
                                          case 4: flash();
                                                 break;
                                         }
                        
         }
}



全部資料51hei下載地址:
定時(shí)器中斷控制的獨(dú)立式按鍵.rar (15.5 KB, 下載次數(shù): 80)




作者: sheng7533967    時(shí)間: 2019-2-7 00:46
牛,收之吾用
作者: robter    時(shí)間: 2020-1-9 06:45
這個(gè)很好,下載參考學(xué)習(xí),感謝樓主的好資料
作者: jovew    時(shí)間: 2020-1-16 11:43
不能運(yùn)行啊。。。。。。
計(jì)時(shí)器不工作
作者: 愛(ài)電子998    時(shí)間: 2020-3-15 13:04
程序編譯一個(gè)警告,不能運(yùn)行
作者: kevind    時(shí)間: 2020-4-8 15:16
感謝樓主分享
作者: 最后一搏    時(shí)間: 2020-4-11 07:59
case后面的1234哪來(lái)的呢?程序怎么區(qū)分這四個(gè)按鍵
作者: 丞丞    時(shí)間: 2020-6-30 14:00
程序到case那里顯示錯(cuò)誤呀,




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1