標(biāo)題: 單片機矩陣按鍵設(shè)置自由設(shè)置占空比程序 [打印本頁]

作者: quefeng    時間: 2020-7-5 08:46
標(biāo)題: 單片機矩陣按鍵設(shè)置自由設(shè)置占空比程序
基本功能
1)按下FUN鍵后,進入占空比設(shè)置,按下ENT鍵,確認占空比并顯示;
2)按0-9號按鍵設(shè)置具體占空比比值,先按下的數(shù)字為十位數(shù),后按下的為個位,如果繼續(xù)按下數(shù)字鍵,個位的數(shù)字移到十位,最后按下的是個位數(shù);
3)占空比值顯示在數(shù)碼管上,在FUN按鍵按下,設(shè)置占空比時,數(shù)碼管閃爍顯示;
4)P2.0口輸出波形。

仿真圖:


程序:
//-------------------頭文件------------------
//-------------------頭文件------------------
#include<reg51.h>
//-----------------I/O口定義-----------------//-----------------I/O口定義-----------------sbit duan=P2^6;
sbit]sbit]sbit PWM=P2^0;
//------------------函數(shù)聲明----------------
//------------------函數(shù)聲明----------------
void anjian();
void]void]void xianshi();
void]void]void T_int();
void]void]//------------------變量定義----------------
char]char]bit flag=0,flag_c=0,flag_xs=0;
unsigned]unsigned]unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned]unsigned]//------------------主函數(shù)------------------
void]void]{
        while(1)
                msxz();
                xianshi();
}
//-------------定時器T0初始化
//-------------定時器T0初始化
void T_int()
{{        PWM=1;
        TMOD=0x12;


        TR0=1;
        TH0=256-200;

        ET1=1;
        TL1=35535%256;
}
}
//-----------T0中斷占空比-----------
void]void]{
        {
                PWM=~PWM;
                        temp=10-zkb/10;
                        temp=zkb/10;
}
//---------T1中斷閃爍顯示---------
//---------T1中斷閃爍顯示---------
void T1_ser() interrupt 3
{
{
        TH1=35536/256;
]]        if(++ss>=10)
                ss=0;
        }
}
}
//-------------模式選擇函數(shù)---------
void]void]{
        {
                c_temp=0;          //修改占空比暫值
                TR1=1;                  //閃爍顯示
        else if(key_v==11&&flag)        //ENT按下確認占空比,必須得先進入設(shè)置占空比之后
                flag=0;                  
                TR1=0;
        if(flag&&flag_c)                   //進入設(shè)置占空比且按鍵在0~9之間
                c_temp=(c_temp*10+key_v)%100;
                flag_c=0;
}
//-------------按鍵函數(shù)-------------
//-------------按鍵函數(shù)-------------
void anjian()
{
{
        P3=0x0f;
        {
                if(P3!=0x0f)
                        jianhao();
                        flag_c=1;
        }      
}
}
//----------------鍵號識別函數(shù)----------------
void]void]{
                                                                0xb7,0xbb,0xbd,0xbe,0x77,0x7b,0x7d,0x7e};      
        for(i=0;i<4;i++)
                P3=~hs;
                for(j=i;j<=16;j++)
                        if(jianma==jianhao[j])
                                key_v=j;
                                break;
                }
        }
}
}
//------------------顯示函數(shù)------------------
void]void]{
        if(flag&&flag_xs)
                        a[0]=10;
                }
                {
                        a[1]=zkb/10;      
                temp=0x02;
                {
                        wei=1;
               
                        duan=1;
                        delay_nms(5);
                }
}
}
//-------------延時函數(shù)------------
void]void]{
        while(x--)
                for(y=0;y<125;y++);
}







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