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

QQ登錄

只需一步,快速開始

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

單片機(jī)矩陣按鍵設(shè)置自由設(shè)置占空比程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基本功能
1)按下FUN鍵后,進(jìn)入占空比設(shè)置,按下ENT鍵,確認(rèn)占空比并顯示;
2)按0-9號(hào)按鍵設(shè)置具體占空比比值,先按下的數(shù)字為十位數(shù),后按下的為個(gè)位,如果繼續(xù)按下數(shù)字鍵,個(gè)位的數(shù)字移到十位,最后按下的是個(gè)位數(shù);
3)占空比值顯示在數(shù)碼管上,在FUN按鍵按下,設(shè)置占空比時(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();
}
//-------------定時(shí)器T0初始化
//-------------定時(shí)器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按下確認(rèn)占空比,必須得先進(jìn)入設(shè)置占空比之后
                flag=0;                  
                TR1=0;
        if(flag&&flag_c)                   //進(jìn)入設(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;
        }      
}
}
//----------------鍵號(hào)識(shí)別函數(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í)函數(shù)------------
void]void]{
        while(x--)
                for(y=0;y<125;y++);
}


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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