×

51单片机流水灯设计

消耗积分:0 | 格式:zip | 大小:0.38 MB | 2022-12-28

香香技术员

分享资料个

方案介绍

       本程序适合单片机初学入门(新手)练习用,程序注解详细,非常容易看明白。资料免费,有需要者可以免费获取单片机Keil4软件工程文件及仿真文件。

单片机源程序:
#include    //包含单片机寄存器的头文件
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^1;     //从上到下按键  
sbit k2=P1^2;     //从下到上按键
sbit k3=P1^3;     //加速按键
sbit k4=P1^4;     //减速按键
sbit GND=P1^0;                
uint t;            //定义延时变量
uchar n;        //定义方向标志位 n=1,从上到下;n=0,从下到上      
/* 函数申明 -----------------------------------------------*/
void delay(uint z);    //延时函数   
void key();            //按键处理函数 
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
void main()
{
    uchar  num;                  //定义变量
    delay(500);                              //延时
    t=300;                                  //初始速度 值大,速度慢,值小,速率快
    n=1;                                  //从上到下
    GND=0;                                  //置按键接地端低电平
    while(1)                              //主循环
    {                              

        if(n==1)                          //从上到下
        {
            num++;                        //循环变量加1
            if(num>=3)                    //判断循环变量大于3时 ,将循环变量置0
            num=0;                        //将循环变量置0
            if(num==0)                    //判断循环变量等于0时.点亮1,4,7
            P0=0x6D;                    //点亮1,4,7 即01101101 
            else
            if(num==1)                    //判断循环变量等于1时.点亮2,5,8
            P0=0xB6;                    //点亮2,5,8 即10110110 
            else
            if(num==2)                    //判断循环变量等于1时.点亮3,6
            P0=0xDB;                    //点亮3,6 即11011011
            delay(t);                   //延时
            key();                           //调用按键处理子程序
        }
        else                            //从下到上
        { 
            num++;                        //循环变量加1
            if(num>=3)                    //判断循环变量大于3时 ,将循环变量置0
            num=0;                        //将循环变量置0
            if(num==0)                    //判断循环变量等于0时.点亮3,6
            P0=0xDB;                    //点亮3,6 即11011011

            else
            if(num==1)                    //判断循环变量等于1时.点亮2,5,8
            P0=0xB6;                    //点亮2,5,8 即10110110 
            else
            if(num==2)                    //判断循环变量等于1时.点亮1,4,7
            P0=0x6D;                    //点亮1,4,7 即01101101     

            delay(t);                   //延时
            key();                           //调用按键处理子程序
        }
    }
}

/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
    uchar j;                         //定义延时变量
    for(z;z>0;z--)                     //延时第一层循环
        for(j=200;j>0;j--);             //延时第二层循环
}

void key()            //按键处理函数 
{
    if(k1==0)                //按键按下
    {
        delay(20);            //延时消除按键抖动
        while(k1==0);        //等待按键松开
        n=1;                //从上到下
    }
    if(k2==0)                //按键按下
    {
        delay(20);            //延时消除按键抖动
        while(k1==0);        //等待按键松开
        n=0;                //从下到上
    }         
    if(k3==0)                //按键按下
    {
        t=t+10;                //延时速度加10
        if(t>600)            //限制延时速度最慢为1000
        t=600;                //限制延时系数1000
    }
    if(k4==0)                //按键按下
    {
        t=t-10;                //延时速度减10
        if(t<200)            //限制延时速度最快为10
        t=200;                //限制延时系数10
    }
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'51单片机流水灯设计',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);