编写1个8个花样流水灯程序序每次亮两灯的

怎样写一个花样流水灯程序,8位发光二极管的 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
怎样写一个花样流水灯程序,8位发光二极管的
16:39:41  
11585&查看
/*& && && && && && && && && && && && && && && && && && && &
间隔300ms先奇数亮再偶数亮,
循环三次;一个灯上下循环三次;
两个分别从两边往中间流动三次;
再从中间往两边流动三次;8个全部闪烁3次;
关闭发光管,程序停止。
/*********************************************************/
#include&reg52.h&& &//52单片机头文件
#include &intrins.h& //包含有左右循环移位子函数的库
#define uint unsigned int& &&&//宏定义
#define uchar unsigned char& &//宏定义
void delay(uint z)& &//延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{& && && && && && && &//delay(500);大约延时500ms.
& &&&uint x,y;
& &&&for(x=z;x&0;x--)
& && && &for(y=110;y&0;y--);& &
void main()& && && && & //主函数
& &&&uchar a,i,j;
& &&&for(j=0;j&3;j++)& && & //寄偶交替
& && && && & P1=0x55;& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0
& && && && & delay(300); //延时300毫秒
& &&&for(j=0;j&3;j++)& &&&//流水灯
& && && &a=0
& && && &for(i=0;i&8;i++)
& && && && & {
& && && && && &&&P1=a;& && &&&//点亮小灯
& && && && && &&&delay(300); //延时300毫秒
& && && && && &&&a=_crol_(a,1);
& && && && & }
& &&&for(j=0;j&3;j++)& && &//从两边往中间流
& && && && & P1=0x7e;& && &&&//点亮小灯
& &delay(300); //延时300毫秒
& && && && & P1=0
& && && && & delay(300); //延时300毫秒
& && && && & P1=0& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0xe7;
& && && && & delay(300); //延时300毫秒
& &&&for(j=0;j&3;j++)& &&&//从中间往两边流
& && && && & P1=0xe7;& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0
& && && && & delay(300); //延时300毫秒
& && && && & P1=0& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0x7e;
& && && && & delay(300); //延时300毫秒
& &&&for(j=0;j&6;j++)& &&&//全部闪烁
& && && && & P1=~P1;& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& &&&while(1);
& && && && && &a=_crol_(a,1);
& && && && & }
& & for(j=0;j&3;j++)
& && & a=0
& && & for(i=0;i&5;i++)
& && && &{
& && && && &P1=a;
& && && && &delay(300);
& && && && &a=_crol_(a,1);
& && && & }
& &&&for(j=0;j&3;j++)& && &//从两边往中间流
& && && && & P1=0x7e;& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0
& && && && & delay(300); //延时300毫秒
& && && && & P1=0& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0xe7;
& && && && & delay(300); //延时300毫秒
& &&&for(j=0;j&3;j++)& &&&//从中间往两边流
& && && && & P1=0xe7;& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0
& && && && & delay(300); //延时300毫秒
& && && && & P1=0& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& && && && & P1=0x7e;
& && && && & delay(300); //延时300毫秒
& &&&for(j=0;j&5;j++)
& && &&&P1=0x66;
& && &&&delay(300);
& && &&&P1=0x99;
& && &&&delay(300);
& &&&for(j=0;j&6;j++)& &&&//全部闪烁
& && && && & P1=~P1;& && &&&//点亮小灯
& && && && & delay(300); //延时300毫秒
& &&&while(1);
资深工程师
16:41:52  
之前也这样写郭,一直认为有点不够精炼
能分享出来很给力
16:44:21  
void SetLed(u8 n){P1 |= (1&&n);}
void ClrLed(u8 n){P1 &= ~(1&&n);}
{u8 for(i=0;i&8;i++) SetLed(i);}
{u8 for(i=0;i&8;i++) ClrtLed(i);}
点亮奇数,偶数
{u8 for(i=1;i&8;i+=2) SetLed(i);}
{u8 for(i=0;i&8;i+=2) SetLed(i);}
熄灭奇偶数
{u8 for(i=1;i&8;i+=2) ClrLed(i);}
{u8 for(i=0;i&8;i+=2) ClrLed(i);}
很给力的楼主
16:45:06  
这两条语句可不可以解释一下,比如进入子函数时P1=?,不会就是0xff吧,那样就不对了啊,第一个子函数P1将永远等于0xff.
void SetLed(u8 n){P1 |= (1&&n);}
void ClrLed(u8 n){P1 &= ~(1&&n);}
资深工程师
16:46:19  
你搞错了吧!应该是P1=0x00
16:52:39  
给力{:48:}
15:19:28  
顶礼膜拜!
09:16:59  
学习,,,,
11:04:53  
不抱怨 内心强大 自信
19:56:43  
00:14:58  
15:45:16  
高级工程师
18:25:39  
写得不过简单,其实有更好的写法。不过很支持你
14:11:11  
13:53:26  
好好好。。。。。
13:53:38  
好好好。。。。。。
13:53:50  
好好好!!!!!!
13:54:01  
好好好~~~~~~
19:46:56  
等待验证会员
15:07:00  
第68有错误啊& && && && &
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司八个流水灯隔灯闪烁,程序怎么写?_百度知道
八个流水灯隔灯闪烁,程序怎么写?
我有更好的答案
#include&unsigned int LED;unsigned int a,i,m;void yiwei();void delay(unsigned int b);void main()TMOD=0x01; &//T0为方式1TH0=()/256;TL0=()%256; & //初值EA=1; & & & //允许中断ET0=1;while(1)P2=0x00;delay(2000);LED = 0x7f;m=0; for (i = 0 ;i & 8 ; i++){&a=0;TR0=1;delay(100);while(m);delay(2000);P2=0x00;delay(2000);LED = 0&m=0;for (i = 0 ;i & 8 ; i++)a=1;TR0=1;delay(100);while(m);} delay(2000); &
&}}void t0() interrupt 1 using 1{ &TH0=()/256;TL0=()%256;m++;if(m==20){m=0;yiwei(); & & &} &&}void yiwei(){ &if(a==0){ & &
&P2=LED;LED = LED&&1;
// 右移 LED = LED|0x80; &
&P2 &= LED;LED = LED && 1;
& & // 左移LED = LED | 0x01;
&&}}void delay(unsigned int b){for(b; b & 0; b--) & &//机器在这里执行需要一段时间 也就达到了延时效果for(j = 255; j & 0; j--);}自己调试过,我12晶振
采纳率:99%
#include //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main(void){
while(1){temp=0xFE;for(i=0;i&8;i++) //8个流水灯依次全部点亮{P1=delay(500); //调用延时函数temp&&=1;}}} void delay(uint t) //定义延时函数{for(;t;t--)for(bt=0;bt&255;bt++);}
本回答被网友采纳
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。流水灯左移8个灯亮然后右移至8个灯亮,再循环
我的第一个程序
/**************************************
深入浅出玩转51单片机——学习笔记:Led流水灯
实现功能:用左移和右移实现流水灯由右向左,然后由左向右循环移动
硬件接线:Led 接P1口
晶振频率:11.0592Mhz
**************************************/
#include&reg52.h&
#define uint unsigned int
void delay(uint z); //函数声明
void main(void)
&&{&&&& P1=0XFF;
&&&&&&& &for(i=0;i&17;i++)//本来左右循环一遍共需要16次,但是因为在i=8时&P1=0XFF没有右移所以写i&17不是16
&&&&&&&&&{& if(i&=8)
&&&&&&&&&&&&&&& &{& if(i&8)&&&//左移的过程
&&&&&&&&&&&&&&&&&&&&&{&P1&&=1;
&&&&&&&&&&&&&&&&&&&&&& delay(1000);
&&&&&&&&&&&&&&&&&&&&& &}
&&&&&& &&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&& &P1=0XFF;//为右移赋初值
&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& else
&&&&&&&&&&&&& &{ P1&&=1;//右移的过程
&&&&&&&&&&&&&&&&&delay(1000);
&&&&&&&&&&&&&& &}
void delay(uint z)
&& uint x,y;
&&for(x=0;x&z;x++)
&&&&&&for(y=0;y&113;y++);
通过此实验学会了左移,右移,宏定义,函数声明for语句if..else 嵌套语句,的使用。在调试的过程中遇到了以下错误并独自解决了:P一点要大写;注意if..else 嵌套语句的{}是否配对;当延时时间超过255时要用unsigned int不能再用unsigned char 了
关注微信公众号}

我要回帖

更多关于 单片机流水灯程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信