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

QQ登錄

只需一步,快速開始

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

初學(xué),不知道這個(gè)程序能不能實(shí)現(xiàn)KEY1控制LED1閃爍,KEY3控制LED3亮滅

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 10 黑幣 回復(fù)本帖可獲得 1 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:140102 發(fā)表于 2018-6-12 11:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 simas 于 2018-6-12 11:18 編輯

#include <STC15W.h>
#define ulong unsigned long
#define uchar unsigned char     
#define uint unsigned int
sbit LED1 =P3^7;
sbit LED2 =P3^6;
sbit LED3 =P3^3;
sbit BUZZ =P3^2;
sbit KEY1 =P1^1;
sbit KEY2 =P1^2;
sbit KEY3 =P1^3;
sbit KEY4 =P1^4;
char KEY1_T,KEY2_T,KEY3_T;
void delay( unsigned int t)
{
unsigned char i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void led1ss()
{
LED1=1;delay(1500);LED1=0;delay(1500);
}
void led2ss()
{
LED2=1;delay(1500);LED2=0;delay(1500);
}
void key_scan()
{
         if(KEY1==0)                                                        
        {
     delay(10);
                 if(KEY1==0)
                 {
                    if  ( (KEY1 == 0)&&(KEY1_T == 0) )
                         {led1ss();KEY1_T = 1;}
          else  if ( (KEY1 == 0)&&(KEY1_T == 1) )
                         {LED1 = 0;KEY1_T = 0;}
                 }
         }
       if(KEY2==0)                                                        
        {
     delay(10);
                 if (KEY2==0)
                 {
                    if  ( (KEY2 == 0)&&(KEY2_T == 0) )
                         {led2ss();KEY2_T = 1;}
          else  if ( (KEY2 == 0)&&(KEY2_T == 1) )
                         {LED2 = 0;KEY2_T = 0;}
                 }
         }
       if(KEY3==0)                                                        
        {
     delay(10);
                 if(KEY3==0)
                 {
                    if  ( (KEY3 == 0)&&(KEY3_T == 0) )
                         {LED3=1;KEY3_T = 1;}
          else  if ( (KEY3 == 0)&&(KEY3_T == 1) )
                         {LED3 = 0;KEY3_T = 0;}
                 }
         }
       if(KEY4==0)                                                        
        {
     delay(10);
                 if(KEY4==0)
                 {
                    BUZZ=1;
                 }
         }
}   
void main()
{
  LED1=0;
  LED2=0;
  LED3=0;
  BUZZ=0;
  
  
         while(1)
         {
                 key_scan();                                               
        }
}

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

使用道具 舉報(bào)

沙發(fā)
ID:329253 發(fā)表于 2018-6-12 12:21 來(lái)自手機(jī) | 只看該作者
實(shí)驗(yàn)一下就知道了呀
回復(fù)

使用道具 舉報(bào)

板凳
ID:320306 發(fā)表于 2018-6-12 12:25 | 只看該作者
KEY3_T,這幾個(gè)T是做什么的沒看懂。。。!
回復(fù)

使用道具 舉報(bào)

地板
ID:340443 發(fā)表于 2018-6-12 12:54 | 只看該作者
可以的
回復(fù)

使用道具 舉報(bào)

5#
ID:140102 發(fā)表于 2018-6-12 14:11 | 只看該作者
zsyzdx 發(fā)表于 2018-6-12 12:25
KEY3_T,這幾個(gè)T是做什么的沒看懂。。。!

按鍵標(biāo)志
回復(fù)

使用道具 舉報(bào)

6#
ID:140102 發(fā)表于 2018-6-12 14:12 | 只看該作者
134849694164151 發(fā)表于 2018-6-12 12:21
實(shí)驗(yàn)一下就知道了呀

實(shí)驗(yàn)后,只有在KEY1,KEY2按著的情況下才閃爍
回復(fù)

使用道具 舉報(bào)

7#
ID:140102 發(fā)表于 2018-6-12 16:16 | 只看該作者
如何實(shí)現(xiàn)按下key1, led1持續(xù)閃爍,再按下熄滅,請(qǐng)各位大師教教我。
回復(fù)

使用道具 舉報(bào)

8#
ID:350274 發(fā)表于 2018-6-12 16:35 | 只看該作者
如何實(shí)現(xiàn)按下key1, led1持續(xù)閃爍,再按下熄滅,請(qǐng)各位大師教教我。
回復(fù)

使用道具 舉報(bào)

9#
ID:350442 發(fā)表于 2018-6-12 17:05 | 只看該作者
看程序沒有問題,只是還有其他功能,不是太懂,借用別人的代碼?
回復(fù)

使用道具 舉報(bào)

10#
ID:350430 發(fā)表于 2018-6-12 17:47 | 只看該作者
if  ( (KEY2_T == 0)
                         {led2ss();KEY2_T = 1;}
          else  if ( KEY2_T == 1 )
                         {LED2 = 0;KEY2_T = 0;}
改成這樣試試
回復(fù)

使用道具 舉報(bào)

11#
ID:265995 發(fā)表于 2018-6-12 18:11 | 只看該作者
看看這個(gè)
程序不一定正確,
程序不一定正確,
程序不一定正確,
只是提供一個(gè)思路,
每按一次key1,主程序里led1_flash_ctr取反一次,led1_flash_ctr控制led1是否閃爍

#include <STC15W.h>
#define ulong unsigned long
#define uchar unsigned char     
#define uint unsigned int
sbit LED1 =P3^7;
sbit LED2 =P3^6;
sbit LED3 =P3^3;
sbit BUZZ =P3^2;
sbit KEY1 =P1^1;
sbit KEY2 =P1^2;
sbit KEY3 =P1^3;
sbit KEY4 =P1^4;
char KEY1_T,KEY2_T,KEY3_T;
void delay( unsigned int t)
{
unsigned char i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void led1ss(char SW1)
{
    if(SW1=1)
      {  LED1=1;delay(1500);LED1=0;delay(1500);}
    else
        LED1=1;
}

char key1_pressed;
char key2_pressed;
char key3_pressed;
char key4_pressed;
char led1_flash_ctr;


void key_scan()
{
         if(KEY1==0)                                                        
        {
               delay(10);
                 if(KEY1==0)
                 {
                    key1_pressed=1;
                     while(!KEY2);     //檢測(cè)按鍵彈起              
                 }
         }
       if(KEY2==0)                                                        
        {
              delay(10);
                 if (KEY2==0)
                 {
                    key2_pressed=1;
                    while(!KEY2);
                 }
         }
       if(KEY3==0)                                                        
        {
               delay(10);
                 if(KEY3==0)
                 {
                    key3_pressed=1;
                    while(!KEY3);
                 }
         }
       if(KEY4==0)                                                        
        {
               delay(10);
                 if(KEY4==0)
                 {
                    key4_pressed=1;
                    while(!KEY4);
                 }
         }
}   
void main()
{
  LED1=0;
  LED2=0;
  LED3=0;
  BUZZ=0;
  
  
         while(1)
         {
                 key_scan();
                 if(key1_pressed)
                 {
                    key1_pressed=0;
                    led1_flash_ctr=!led1_flash_ctr;
                 }
                 if(key2_pressed)
                 {
                    key2_pressed=0;
                    //按下key2的操作
                 }





            led1ss(led1_flash_ctr);


        }
}
回復(fù)

使用道具 舉報(bào)

12#
ID:350540 發(fā)表于 2018-6-12 19:41 | 只看該作者
程序太繁長(zhǎng),還亂,程序不是越長(zhǎng)越好。程序可以正常運(yùn)行。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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