单片机中流水灯的程序

单片机中流水灯的程序,第1张

LED的阳极接电源正,阴极接P1口,IO某位低电平时,就点亮相应位的LED。P1=0xff,灯全灭。P1=0xfe时点亮P10灯,延时500ms 。P1=0xfd,点亮P11灯。。。。

for(;;)

{} 这条就是程序在大括号里无限循环,就是灯从1~8点亮后再从1~8,一直反复循环,没必要 退出。

程序如下,仿真见附件。有问题请追问。

#include <AT89X51h>

#define uchar unsigned char

#define uint unsigned int

bit flag_1s=0;

uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]

//uchar code tab[8]={0x05,0,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小题用这个表]

void InitTimer1(void)

{

    TMOD = 0x10;

    TH1 = 0x3C;

    TL1 = 0x0B0;

    EA = 1;

    ET1 = 1;

    TR1 = 1;

}

void main(void)

{

    static uchar j;

    InitTimer1();

P0=0;

P1=0;

P2=0;

P3=0;

flag_1s=1;

while(1)

{

if(flag_1s==1)

{

flag_1s=0;

P2=tab[j];

j++;

if(j>=8) j=0;

}

}

}

void Timer1Interrupt(void) interrupt 3

{

    static uchar i;

    TH1 = 0x3C;

    TL1 = 0x0B0;

    //add your code here!

    i++;

    if(i>=20)//50ms20=1000ms

    {

    i=0;

    flag_1s=1;

    }

}

看来你是初学单片机,更是对c语言不懂,需要倍加努力了!

led=led-1的意思就是把led-1这个值赋值给led例如led=0xff(换成十进制255)减去1之后等于254把这个254赋值给led

while(led==0)在c语言中俩个等号才是相等,它在这里的意思 就是判断是不是led全部点亮了,如果是等全部亮了,延时一会然后用break跳出while循环,重复第一次的所有 *** 作

while(i--)

for(j=125;j>0;j--)

{;}

i只要不等于0说明条件为真 为真的话一直执行

for(j=125;j>0;j--)

{;}

直到i等于0时while条件为假才退出循环,在这里主要是为了延时进行空 *** 作

这个程序要演示的应该是用8位led表示0到255。

还有51单片机还是很简单的,买本郭天祥的10天学会单片机这本教材 在看下他的单片机视频 你会更快上手单片机!

以上就是关于单片机中流水灯的程序全部的内容,包括:单片机中流水灯的程序、51单片机流水灯程序、c语言流水灯八位二进制程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10139264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存