欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于單片機C語言查表法按鍵自加LED循環點亮 [打印本頁]

作者: wmq1517fc    時間: 2024-1-31 15:17
標題: 關于單片機C語言查表法按鍵自加LED循環點亮
各位老師好,此程序一上電是最低位LED燈亮,按鍵按下去第二位LED燈亮,來回循環.我想把它改成上電第一個LED燈不亮,有按鍵按下才開始亮第一個LED燈,應怎么處理。

/*************  本程序功能說明  **************
單片機型號:適合STC8G系列型號單片機
晶振                        :內部晶振11.0592或12MHz
復位                        :復位腳為IO口,用內部自帶復位

注意:STC8全系列,初始化必須配置所有IO口,否則IO口不能正常使用

顯示效果:  演示移動點亮LED燈,采用位操作方法,查表方法實現
******************************************/
#include    "STC8G.h"                                    //包括了STC8G.H文件里面的內容
#define     MAIN_Fosc       11059200L   //定義主時鐘
typedef     unsigned char   u8;         //為復雜的聲明定義簡單的別名
typedef     unsigned int    u16;        //為復雜的聲明定義簡單的別名
typedef     unsigned long   u32;        //為復雜的聲明定義簡單的別名

/******* IO口位定義 *******/
sbit LED_0 = P3^1;
sbit LED_1 = P3^2;
sbit LED_2 = P3^3;
sbit LED_3 = P3^4;
sbit LED_4 = P3^5;
sbit LED_5 = P3^6;
sbit LED_6 = P3^7;
sbit LED_7 = P1^0;

sbit K1 = P1^7;

/*------定義寄存器變量---------------*/
u8 ct;

/*------定義位寄存器變量---------------*/
u8 bdata led_bit;              //把不在一組IO口,整合一組IO口,便于操作

sbit LED_00 = led_bit^0;
sbit LED_01 = led_bit^1;
sbit LED_02 = led_bit^2;
sbit LED_03 = led_bit^3;
sbit LED_04 = led_bit^4;
sbit LED_05 = led_bit^5;
sbit LED_06 = led_bit^6;
sbit LED_07 = led_bit^7;

void Delay1ms(u16 xms);         //延時函數聲明
void IO_init_config(void);            //IO口初始化函數


/*------LED來回14次顯示表--------------*/
u8 code led_dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
                                        0xbf,0xdf,0xef,0xf7,0xfb,0xfd};

/******************** 主函數 **************************/

void main(void)
{
        IO_init_config();          //IO口初始化
        ct=0;
        while(1)
        {
                if(K1==0)                           //判斷按鍵是否有按下
                {
                      Delay1ms(20);           //按鍵按下消抖
                        if(K1==0)                   //再次判斷按鍵是否有按下
                        {
                                ct++;                   //按建有效變量自加1
                                if(ct==14)           //自加14次
                                ct=0;                   //變量清0
                                while(!K1);           //按鍵松手消抖                                                                                          
                        }
                }
               
                led_bit = led_dis[ct];        //查表的內容送到LED口顯示                                                                              
                LED_0 = LED_00;         //緩沖單元的內容送到LED口顯示
                LED_1 = LED_01;
                LED_2 = LED_02;
                LED_3 = LED_03;
                LED_4 = LED_04;
                LED_5 = LED_05;
                LED_6 = LED_06;
                LED_7 = LED_07;
        }
}


作者: Hephaestus    時間: 2024-1-31 18:20
把主循環之前的ct=0;改成ct=-1;就行了。
作者: wulin    時間: 2024-1-31 21:49
/******************** 主函數 **************************/
void main(void)
{
        IO_init_config();          //IO口初始化
        ct=0xff;
        while(1)
        {
                if(K1==0)               //判斷按鍵是否有按下
                {
                        Delay1ms(20);           //按鍵按下消抖
                        if(K1==0)               //再次判斷按鍵是否有按下
                        {
                                ct++;                //按建有效變量自加1
                                if(ct==14)           //自加14次
                                        ct=0;             //變量清0
                                while(!K1);           //按鍵松手消抖
                                led_bit = led_dis[ct];//查表的內容送到LED口顯示
                                LED_0 = LED_00;       //緩沖單元的內容送到LED口顯示
                                LED_1 = LED_01;
                                LED_2 = LED_02;
                                LED_3 = LED_03;
                                LED_4 = LED_04;
                                LED_5 = LED_05;
                                LED_6 = LED_06;
                                LED_7 = LED_07;
                        }
                }
        }
}

作者: lkc8210    時間: 2024-1-31 22:19
/*------LED來回15次顯示表--------------*/
u8 code led_dis[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
                                        0xbf,0xdf,0xef,0xf7,0xfb,0xfd};
作者: tangchangpu    時間: 2024-1-31 22:33
初始化ct=14,在 數組后面加 0xff;
if(ct==14)           //自加14次
改為 if(ct>=14)           //自加14次
作者: wd1988    時間: 2024-2-1 08:45
看你    if(ct==14)           //自加14次,
作者: wd1988    時間: 2024-2-1 08:45
led_bit = led_dis[ct+1];        //查表的內容送到LED口顯示                                            
作者: wmq1517fc    時間: 2024-2-18 14:51
各位老師好,謝謝你們的解答,已解決。
作者: chenyq    時間: 2024-2-21 13:56
主循環之前的ct改成1




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