
51单片机流水灯程序求助,求C语言程序!!!
1、用独立按键控制流水灯的亮、停、复位2、每隔一秒顺序点亮8个发光二级管,采用单片机内部定时器实现一秒定时3、流水灯顺序为先自左往右3次,然后自右往左3次,最后8个发光二...
1、用独立按键控制流水灯的亮、停、复位
2、每隔一秒顺序点亮8个发光二级管,采用单片机内部定时器实现一秒定时
3、流水灯顺序为先自左往右3次,然后自右往左3次,最后8个发光二级管同时闪烁3次,循环往复!!!
邮箱 1670072738@qq.com 展开
2、每隔一秒顺序点亮8个发光二级管,采用单片机内部定时器实现一秒定时
3、流水灯顺序为先自左往右3次,然后自右往左3次,最后8个发光二级管同时闪烁3次,循环往复!!!
邮箱 1670072738@qq.com 展开
4个回答
展开全部
这个- -!看来你是单片机没学好啊。
挺简单的找你同学写一个就行 我给你一个我练习的程序,你自己看看吧。不符合你要求,你参考参考吧。
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define BIT(x) (1 << (x))
uchar num;
void delayms(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<110;j++);
}
uchar KEY_PRESS()
{
uchar temp;
P3=0XF0;
temp=P3;
temp&=0XF0;
if(temp!=0XF0)
delayms(10);
if(temp!=0XF0)
{
return 1;
}
else
{
return 0;
}
}
uchar KEY_SCAN()
{
uchar key;
delayms(10);
if(KEY_PRESS())
{
key=P3;
key&=0XF0;
switch(key)
{
case 0XE0:
key=1;
break; //注意不能漏 break;
case 0XD0:
key=2;
break;
case 0XB0:
key=3;
break;
case 0X70:
key=4;
break;
default:
key=0;
}
while(KEY_PRESS());
}
else
{
key=5;
}
return key;
}
void LED_control()
{
uchar temp;
temp=KEY_SCAN();
if(temp==1)
{
num=_crol_(num,1); //循环左移
P1=num;
}
if(temp==2)
{
num=_cror_(num,1); //循环右移
P1=num;
}
}
void SYSTEM_INIT()
{
P1=0XF0;
num=P1;
}
void main()
{
SYSTEM_INIT();
while(1)
{
LED_control();
}
}
挺简单的找你同学写一个就行 我给你一个我练习的程序,你自己看看吧。不符合你要求,你参考参考吧。
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define BIT(x) (1 << (x))
uchar num;
void delayms(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<110;j++);
}
uchar KEY_PRESS()
{
uchar temp;
P3=0XF0;
temp=P3;
temp&=0XF0;
if(temp!=0XF0)
delayms(10);
if(temp!=0XF0)
{
return 1;
}
else
{
return 0;
}
}
uchar KEY_SCAN()
{
uchar key;
delayms(10);
if(KEY_PRESS())
{
key=P3;
key&=0XF0;
switch(key)
{
case 0XE0:
key=1;
break; //注意不能漏 break;
case 0XD0:
key=2;
break;
case 0XB0:
key=3;
break;
case 0X70:
key=4;
break;
default:
key=0;
}
while(KEY_PRESS());
}
else
{
key=5;
}
return key;
}
void LED_control()
{
uchar temp;
temp=KEY_SCAN();
if(temp==1)
{
num=_crol_(num,1); //循环左移
P1=num;
}
if(temp==2)
{
num=_cror_(num,1); //循环右移
P1=num;
}
}
void SYSTEM_INIT()
{
P1=0XF0;
num=P1;
}
void main()
{
SYSTEM_INIT();
while(1)
{
LED_control();
}
}
展开全部
想不劳而获的人咋就这么多啊,自简单的东西都不自己写,你真当其他程序员都是免费的劳工啊,自己都不努力,谁愿意帮你?
至少你也得自己动手设计设计,最终程序通不过了真要自己调不出来再发上来求助,到那时,一定会有人愿意为你指点迷津
至少你也得自己动手设计设计,最终程序通不过了真要自己调不出来再发上来求助,到那时,一定会有人愿意为你指点迷津
追问
我自己搞定了。。。。。。。。。浪费时间
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多看书吧!程序还是自己写的好,不懂查书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学过单片机吗?、这么简单的问题都让人家帮你,怎么学的单片机
点亮LED灯是单片机最简单的,最基本的啊
亲...........
点亮LED灯是单片机最简单的,最基本的啊
亲...........
追问
初学者啊亲!左右闪神马的好难~不是不会才来请教的嘛!能帮忙不~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询