標(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口輸出波形。
仿真圖:
按鍵控制占空比.png
(166.77 KB, 下載次數(shù): 27)
下載附件
2020-7-5 08:45 上傳
程序:
//-------------------頭文件------------------
//-------------------頭文件------------------
#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