新人求教51单片机

[复制链接]
972|7
 楼主| chuangbao 发表于 2016-11-22 20:57 | 显示全部楼层 |阅读模式
题目要求如下,按下s2 led1亮,再按一次led2亮,再按下次led3亮,如此类下到led8亮,亮完了蜂鸣器再叫两下,
 楼主| chuangbao 发表于 2016-11-22 21:01 | 显示全部楼层
请问,怎么写这程序呢?
dirtwillfly 发表于 2016-11-22 23:00 | 显示全部楼层
论坛很少有人免费写代码的。楼主不如说说遇到什么困难了
NE5532 发表于 2016-11-23 08:53 | 显示全部楼层
设一个变量,自加,作为状态转换开关,然后根据这个开关的值点亮不同的灯。
大禹时代 发表于 2016-11-23 16:22 | 显示全部楼层
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0,1,0,1};
void delay(uint z);
uchar s2num,i;
sbit s2=P3^5;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
sbit beep=P2^3;
void main( )
{
        while(1)
        {
                if(s2==0)
                {
                        delay(10);
                        if(s2==0)
                        {
                                s2num++;
                                while(!s2);
                        }
                }

                if(s2num==1)
                {
                        led1=0;
                }

                else if(s2num==2)
                {
                        led2=0;
                        led1=1;
                }

                else if(s2num==3)
                {
                        led3=0;
                        led2=1;
                }

                else if(s2num==4)
                {
                        led4=0;
                        led3=1;
                }

                else if(s2num==5)
                {
                        led5=0;
                        led4=1;
                }

                else if(s2num==6)
                {
                        led6=0;
                        led5=1;
                }

                else if(s2num==7)
                {
                        led7=0;
                        led6=1;
                }

                else if(s2num==8)
                {
                        led8=0;
                        led7=1;
                }

                else if(s2num==9)
                {
                        led8=1;
                        s2num=0;
                        for(i=0;i<4;i++)
                        {
                                beep=tab[i];
                                delay(500);
                        }
                        beep=1;
                        while(1);
                }

       
       
        }               



}

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

评分

参与人数 1威望 +1 收起 理由
chuangbao + 1 赞一个!

查看全部评分

 楼主| chuangbao 发表于 2016-11-23 18:40 | 显示全部楼层
大禹时代 发表于 2016-11-23 16:22
#include
#define uchar unsigned char
#define uint unsigned int

谢谢
 楼主| chuangbao 发表于 2016-11-23 18:42 | 显示全部楼层
NE5532 发表于 2016-11-23 08:53
设一个变量,自加,作为状态转换开关,然后根据这个开关的值点亮不同的灯。 ...

嗯,设变量是最好的办法!
零三翟邢止胃 发表于 2019-3-30 10:14 | 显示全部楼层
设变量是最好的办法!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部