欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)數(shù)碼管一閃一閃的,按鈕除了復(fù)位和K5能按,其它都按不了,而且也沒啥反應(yīng)
[打印本頁]
作者:
羽兒
時(shí)間:
2020-6-20 20:32
標(biāo)題:
單片機(jī)數(shù)碼管一閃一閃的,按鈕除了復(fù)位和K5能按,其它都按不了,而且也沒啥反應(yīng)
數(shù)碼管一閃一閃的,按鈕除了復(fù)位和K5能按,其它都按不了,而且也沒啥反應(yīng)····
[%S@]E0FZZC@~(QM(_J5S@3.png
(158.23 KB, 下載次數(shù): 44)
下載附件
2020-6-20 20:31 上傳
單片機(jī)源程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit SPK=P1^5;
sbit K1=P2^0;
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit K5=P2^4;
sbit A1=P1^0;
sbit A2=P1^1;
sbit A3=P1^2;
sbit A4=P1^3;
uchar miao_g,miao_d,fen_g,fen_d;
uchar code Num[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar num1;
uchar code song[]={0x58,0x84,0xA8,0x84,0x68,0x82,0x62,0x5C,0xA4,0xA4,0xA4,0xA4,0x93,0x81,0x9C,0x9C,0xC8,0xC4,0xC8,0xD2,0xC2,0xA8,0x92,0x82,0x6B,0xC4,0xC4,0xC4,0xA8,0x94,0x8C,0xFF};
//音律部分,前四位為音階,后四位為節(jié)拍,其中以1/4節(jié)拍為單位節(jié)拍;
uchar m;
uchar code yinjie[]={0xff,0xff,0xFC,0x4A,0xFC,0xAE,0xFD,0x08,0xFD,0x30,0xFD,0x80,0xFD,0xC6,0xFE,0x02,0xFE,0x2A,0xFE,0x5C,0xFE,0x84,0xFE,0x98,0xFE,0xC0,0xFE,0xE8,0xFF,0x06};
//音階所對(duì)應(yīng)的計(jì)時(shí)器初值,前兩位是占位,中間14位是中音1~7,后面14位是高音1~7,晶振為12MHz;
uchar ding;
void delay_1();//1/4節(jié)拍函數(shù)聲明;
void delay(uint k);//計(jì)數(shù)器延時(shí)函數(shù)聲明;
void display(uint fen_g,uint fen_d,uint miao_g,uint miao_d);//數(shù)碼管顯示函數(shù)聲明;
void music();//音樂函數(shù)聲明;
void delayxiaodou(int n);//消抖函數(shù)聲明,用于主函數(shù)K5;
//數(shù)碼管部分
void delay(uint k) //延時(shí)函數(shù),用于計(jì)時(shí)器計(jì)算1s部分和數(shù)碼管延時(shí)顯示部分
{ uint x,y;
for(x=k;x>0;x--)
for(y=125;y>0;y--);
}
void delayxiaodou(int n)
{
while(n--);
}
void display(uint fen_g,uint fen_d,uint miao_g,uint miao_d) //數(shù)碼管顯示時(shí)間
{
P0=0xFF; //消隱;
A1=1;A2=0;A3=0;A4=0;
P0=Num[fen_g];
delay(1);
P0=0xFF;
A1=0;A2=1;A3=0;A4=0;
P0=Num[fen_d];
delay(1);
A1=0;A2=0;A3=1;A4=0;
P0=0xFF;
P0=Num[miao_g];
delay(1);
A1=0;A2=0;A3=0;A4=1;
P0=0xFF;
P0=Num[miao_d];
delay(1);
TR0=0;
}
//倒計(jì)時(shí)部分
void timer()interrupt 1 //定時(shí)器0,方式1
{
TH0=0x3C; //50ms倒計(jì)時(shí)
TL0=0xB0;
num1++;
if(num1==20) //50ms*20=1s
{ num1=0;
miao_d--;
if(miao_d==-1)
{ miao_d=9;
miao_g--;
if(miao_g==-1)
{ miao_g=5;
fen_d--;
if(fen_d==-1)
{ fen_d=9;
fen_g--;
if(fen_g==-1)
{
fen_g=5;}}}}}}
//音樂部分
void music()
{ uint data j=0;
uchar data g;
uchar data i;
while (*(song+j)!=0xff)//歌曲的停頓;
{ g=*(song+j)&0x0F;//低4位,節(jié)拍;
m=*(song+j)>>4; //高4位,音階;
TH1=yinjie[2*m];
TL1=yinjie[2*m+1];
TR1=1;
if((yinjie[2*m]==0xff)&&(yinjie[2*m+1]==0xff))
{ TR1=0;
SPK=1;}
for(i=g;i>0;i--)
{ delay_1();
TR1=0;
j++;
}}}
void delay_1()//1/4 節(jié)拍所需要用的時(shí)間,約187ms;
{ uchar m,n,p;
for(m=100;m>0;m--)
for(n=20;n>0;n--)
for(p=15;p>0;p--);
}
void timer0() interrupt 3 //半個(gè)周期后,SPK處的脈沖反相,得到音階;
{ TH1=yinjie[2*m];
TL1=yinjie[2*m+1];
SPK=!SPK;
}
//核心處理模塊
void main()
{
TMOD=0x01; //啟動(dòng)定時(shí)器,初值為50ms;
TH0=0x3C;
TL0=0xB0;
ET0=1; //定義中斷;
ET1=1;
EA=1;
TR0=0; //時(shí)鐘初始化;
miao_g=miao_d=fen_g=0;
fen_d=1;
ding=0;
while(1)
{
display(fen_g,fen_d,miao_g,miao_d);
if(K5!=0)
{
if(K1==0) //K1按鍵:在1分鐘基礎(chǔ)上遞增,可自定義計(jì)時(shí)時(shí)間;
{ delayxiaodou(100);
if(K1==0)
{ miao_g=miao_d=0;
fen_d++;
if(fen_d==10)
{ fen_d=0;
fen_g++;
if(fen_g==6)
{fen_d=0;
}}}}
while(!K1);
if(K2==0) //K2按鍵:初值為5分鐘;
{ delayxiaodou(100);
if(K2==0)
{
miao_g=miao_d=0;
fen_d=5;
fen_g=0;
}
}
while(!K2);
if(K3==0) //K3按鍵:初值為15分鐘;
{ delayxiaodou(100);
if(K3==0)
{ miao_g=miao_d=0;
fen_d=5;
fen_g=1;
}
}
while(!K3);
if(K4==0) //K4按鍵:初值為20分鐘;
{ delayxiaodou(100);
if(K4==0)
{ miao_g=miao_d=0;
fen_d=0;
fen_g=2;
}
}
while(!K4);
}
if(K5==0) //K5按鍵:初值設(shè)定好后,啟動(dòng)倒計(jì)時(shí);
{ delayxiaodou(1);
if(K5==0)
{ ding++;
if(ding==2)
{ ding=5;}
}}
while(!K5);
if(ding==5)
TR0=1;
//倒計(jì)時(shí)結(jié)束;
display(fen_g,fen_d,miao_g,miao_d);
if(fen_g==0&&fen_d==0&&miao_g==0&&miao_d==0)
music();
}
}
復(fù)制代碼
作者:
SKYLAR123
時(shí)間:
2020-6-24 11:48
當(dāng)你說數(shù)碼管一閃一閃,我的想法就是去找你的延時(shí)函數(shù),發(fā)現(xiàn)你的延時(shí)時(shí)間太長,一般是2ms。你這里1s肯定是這個(gè)效果。其余懶得看程序,你把按鍵找個(gè)單獨(dú)的IO先測(cè)試,先別復(fù)用,測(cè)試效果好,再復(fù)用IO引腳,
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1