標題:
單片機按鍵控制LED,程序加進去,完全控制不了,求助該咋辦呀?
[打印本頁]
作者:
三三三皮蛋
時間:
2022-6-20 11:48
標題:
單片機按鍵控制LED,程序加進去,完全控制不了,求助該咋辦呀?
1.png
(55.78 KB, 下載次數: 37)
下載附件
2022-6-20 14:39 上傳
單片機源程序如下:
#include<reg51.h>
sbit ZZ=P2^0;
sbit YZ=P2^1;
sbit QD=P2^2;
sbit HD=P2^3;
sbit DD=P2^4;
sbit ZUOZ=P1^0;
sbit YOUZ=P1^1;
sbit QIAND=P1^2;
sbit HOUD=P1^3;
sbit DAOD=P1^4;
void delay() //定義延遲函數
{
unsigned char a,b;
for(a=0;a<200;a++)
for(b=0;b<200;b++);
}
void key() //按鍵處理函數
{
if(ZUOZ==0)
{
delay();
if(ZUOZ==0)
{
ZZ=~ZZ;
}
while(!ZUOZ);
}
if(YOUZ==0)
{
delay();
if(YOUZ==0)
{
YZ=~YZ;
}
while(!YOUZ);
}
if(QIAND==0)
{
delay();
if(QIAND==0)
{
QD=~QD;
}
while(!QIAND);
}
if(HOUD==0)
{
delay();
if(HOUD==0)
{
HD=~HD;
}
while(!HOUD);
}
if(DAOD==0)
{
delay();
if(DAOD==0)
{
DD=~DD;
}
}
}
void main(void) //主函數
{
if(ZUOZ==0)
{
while(1)
{
ZZ=0;
delay();
ZZ=1;
delay();
}
YZ=1;
QD=1;
HD=1;
DD=1;
}
if(YOUZ==0)
{
ZZ=1;
while(1)
{
YZ=0;
delay();
YZ=1;
delay();
}
QD=1;
HD=1;
DD=1;
}
if(QIAND==0)
{
ZZ=1;
YZ=1;
QD=0;
HD=1;
DD=1;
}
if(HOUD==0)
{
ZZ=1;
YZ=1;
QD=1;
HD=0;
DD=1;
}
if(DAOD==0)
{
ZZ=1;
YZ=1;
QD=1;
HD=1;
while(1)
{
DD=0;
delay();
DD=1;
delay();
}
}
}
作者:
這是個用戶名
時間:
2022-6-20 16:03
你的程序這么多個while(1),你覺得沒問題嗎?
作者:
wulin
時間:
2022-6-20 20:40
#include<reg51.h>
sbit ZZ=P2^0;
sbit YZ=P2^1;
sbit QD=P2^2;
sbit HD=P2^3;
sbit DD=P2^4;
sbit ZUOZ=P1^0;
sbit YOUZ=P1^1;
sbit QIAND=P1^2;
sbit HOUD=P1^3;
sbit DAOD=P1^4;
void delay() //定義延遲函數
{
unsigned char a,b;
for(a=0;a<200;a++)
for(b=0;b<200;b++);
}
void key() //按鍵處理函數
{
if(ZUOZ==0)
{
delay();
if(ZUOZ==0)
{
ZZ=~ZZ;
}
while(!ZUOZ);
}
if(YOUZ==0)
{
delay();
if(YOUZ==0)
{
YZ=~YZ;
}
while(!YOUZ);
}
if(QIAND==0)
{
delay();
if(QIAND==0)
{
QD=~QD;
}
while(!QIAND);
}
if(HOUD==0)
{
delay();
if(HOUD==0)
{
HD=~HD;
}
while(!HOUD);
}
if(DAOD==0)
{
delay();
if(DAOD==0)
{
DD=~DD;
}
}
}
void main(void) //主函數
{
while(1)
{
key();
}
}
作者:
hhh402
時間:
2022-6-21 23:59
樓主對基本電路可以說一竅不通,連基本的常識都不了解,89c52只有輸出0才有20mA電流,輸出1幾乎沒有電流,樓主LED接反了。LED限流電阻選5k,是閉著眼睛選的吧,歐姆定律是不是忘了。
作者:
三三三皮蛋
時間:
2022-6-22 13:04
大爺您說話真刺激,剛開始學3天,我要是懂我也不會發(fā)帖了,希望在你不擅長的事兒上也有人這么激勵你,謝謝昂
作者:
小江哥哥
時間:
2022-6-22 13:43
程序死在循環(huán)中出不去了
作者:
小江哥哥
時間:
2022-6-22 13:45
程序死在循環(huán)中了
作者:
sttt300
時間:
2022-6-22 13:50
剛開始學3天就能到這程度,那應該是要表揚的了,我都是初中開始學電路,那時只有理論,到了大學才能自己搭電路實踐一下,用了這么多年,差太多了,沒法比
作者:
bbxyliyang
時間:
2022-6-22 16:23
while(1)
{
ZZ=0;
delay();
ZZ=1;
delay();
}這個while循環(huán),系統(tǒng)死機了,出不來
作者:
人生涅槃
時間:
2022-6-22 17:37
改好了樓主講一下,我來學習謝謝
作者:
hylot
時間:
2022-6-22 17:59
改成二樓貼的程序
作者:
hylot
時間:
2022-6-22 17:59
改成二樓貼的程序就OK
作者:
三三三皮蛋
時間:
2022-6-22 18:47
我重新搞了一下,但是他放在仿真里第四個燈的亮度不夠,是為啥呢
#include <reg51.h>
#define uint unsigned int
void delay(uint z);
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit D1=P0^0;
sbit D2=P0^1;
sbit D3=P0^2;
sbit D4=P0^3;
sbit D5=P0^4;
void main()
{
while(1)
{
D1=D2=D3=D4=D5=1;
if(K1==0)
{
D1=0;
delay(1000);
D1=1;
delay(1000);
}
if(K2==0)
{
D2=0;
delay(1000);
D2=1;
delay(1000);
}
if(K3==0)
{
D3=0;
}
if(K4==0)
{
D4=0;
}
if(K5==0)
{
D5=0;
delay(1000);
D5=1;
delay(1000);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1