AT89C51单片机学习日记2024/4/3

本文介绍了如何利用51单片机的P1和P3端口控制8个LED灯进行移位,通过独立按键每按一次使一个灭掉的灯移动,适用于共阴极LED。代码展示了延时处理和LED状态的逻辑更新过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                  利用独立按键控制LED移位

实验目的:    利用独立按键控制LED移位

实验接法:8个LED灯接51单片机P1_0—P1_7口,独立按键接单片机P3_0口,利用独立按键控制LED灯移位

实验现象:每按一下控制一个灭掉的灯移位

实验代码:

#include<regx52.h>                                                                                                //51单片机头文件
int Delay(unsigned int xms);                                                                                   //延时函数声明
unsigned char LEDNum;                                                                                     //定义变量LEDNum
int main()
{P1=0XFE;                                                                                //设置初始状态(P1_0口灭其他亮)
    while(1)
    {        
        if(P3_0==0)                                                                       //按键检测
        {
            Delay(20);                                                                     //延时消抖
            while(P3_0==0);                                                       //持续按键检测
            Delay(20);                                                                            //延时消抖
            LEDNum++;                                                             //按键每按一次,变量LEDNum+1
            if(LEDNum>=8)                                                 //0—7共8个口,如果等于8则置0重新开始
            {
                LEDNum=0;
            }
        P1=(0x01<<LEDNum);                        //每按一次按键,0x01向左移1位(移动LEDNum位)
            
        
            
        }

 需要注意的是,上述代码配对的是共阴极LED(0灭1亮),如果为共阳极,则要移位后取反并把初值取反       
 实验截图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值