作业帮 > 综合 > 作业

使用52单片机,用8个开关,分别控制8个LED灯

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 08:37:20
使用52单片机,用8个开关,分别控制8个LED灯
52和51相同,就是多了几个I/O口,8个开关接的是P3口,LED接P4口.每次按键时,LED亮、灭交替变化.
我今天急着用,用C语言,
include
defined uint unsigned int
defined uchar unsigned uchar
sbit k1=P2^0;
sbit D1=P3^0;
sbit k2=P2^1;
sbit D2=P3^1;
sbit k3=P2^3;
sbit D3=P3^3;
sbit k4=P2^4;
sbit D4=P3^4;
sbit k5=P2^5;
sbit D5=P3^5;
sbit k6=P2^6;
sbit D6=P3^6;
sbit k7=P2^7;
sbit D7=P3^7;
sbit k8=P2^8;
sbit D8=P3^8;
delay_1ms(uchar m)
{
uchar i, j;
for(i=m;i>0;i--)
for(j=115;j>0;j--);
}
main()
{
while(1)
{
if(k1==0) delay_1ms(15);
if(k1==0) D1=~D1;
if(k2==0) delay_1ms(15);
if(k2==0) D2=~D2;

if(k3==0) delay_1ms(15);
if(k3==0) D3=~D3;
if(k4==0) delay_1ms(15);
if(k4==0) D4=~D4;
if(k5==0) delay_1ms(15);
if(k5==0) D5=~D5;
if(k6==0) delay_1ms(15);
if(k6==0) D6=~D6;

if(k7==0) delay_1ms(15);
if(k7==0) D7=~D7;
if(k8==0) delay_1ms(15);
if(k8==0) D8=~D8;
}
}
52并不比51多接口,都是四个I/O口(P0,P1,P2,P3),我上面的程序把按键接在了P2口上,LED灯接在了P3口上.
再问: if(k1==0) delay_1ms(15); 什么意思啊,新手求教,,,还有问下,这个程序我要是同时按下2个开关,2个灯也同时亮吗(要求的)
再答: 按键消抖,delay_1ms(15);是用来延时10ms,来消抖的。如果计数用,还要用按键释放while(!k); 如果按下两个灯,同时亮。