很简的51单片机C语言流水灯程序

很简的51单片机C语言流水灯程序,第1张

1、清启带51单片机C语言实现循环8个流水灯左移三次,后右移三次。

例程:

#include<reg51.h>  //51单片机头文件

#include <intrins.h> //包含有左右循环移位子函数的库

#define uint unsigned int    //宏定义

#define uchar unsigned char  //宏定义

sbit beep=P2^3

void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200)大约延时200ms.

{                    //delay(500)大约延时500ms.

    uint x,y

    for(x=zx>0x--)

        for(y=110y>0y--)    

}

void main()            //主函数

{

    uchar a,i,j

    while(1)        //大循环

    {

        a=0xfe     //赋初值

        for(j=0j<3j++) for(i=0i<8i++)   //左移三次

        {

            P1=a       //点亮小灯

            beep=0     //开启蜂鸣器

            delay(50) //延时50毫秒

            beep=1     //关闭蜂鸣器

       旁洞     delay(50)  //再延时50毫秒

            a=_crol_(a,1) //将a变量循环左移一位

        }

        a=0x7f

       for(j=0j<3j++) for(i=0i<8i++) 答芦 //右移三次

        {

            P1=a       //点亮小灯

            beep=0     //开启蜂鸣器

            delay(50) //延时50毫秒

            beep=1     //关闭蜂鸣器

            delay(50)   //再延时50毫秒

            a=_cror_(a,1) //将a变量循环右移一位

        }        

    }

}

2、51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。

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

#include <AT89X51.h>

#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,0x0a,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)//50ms*20=1000ms

   知配 {

    i=0

    flag_1s=1

    }

}

第4题

89S51 单片机的P1 口接有 8个 LED,当某一端口输出为“0”时,相应的 LED 点亮,P3.2、P3.3、P3.4、P3.5 分别接有四个按钮 K1~K4,按下按钮时,相应引脚被接地。现要求编写可键控的流水灯程序,当 K1 按下时,开始流动,K2 按下悄镇时停止流春森动,全部灯灭,K3 使灯由上往下流动,K4 使灯由下往上流动。

#include "reg51.h"

#include "intrins.h"

#define uchar unsigned char

void mDelay(unsigned int DelayTime)

{ unsigned int j=0

for(DelayTime>0DelayTime--)

{ for(j=0j<125j++)

{} }}

uchar Key()

{ uchar KeyV

uchar tmp

P1=P1|0x3c//四个按键所接位置

KeyV=P1

if((KeyV|0xc3)==0xff) //无键按下

return(0)

mDelay(10) //延时,去键抖

KeyV=P1

if((KeyV|0xc3)==0xff)

return(0)

else

{ for(){ tmp=P1

if((tmp|0xc3)==0xff)

break}

return(KeyV)}}

void main()

{ unsigned char OutData=0xfe

bit UpDown=0

bit Start=0

uchar KValue

for()

{ KValue=Key()

switch (KValue)

{ case 0xfb: //P3.2=0,Start

{ Start=1

break}

case 0xf7: //P3.3=0,Stop

{ Start=0

break}

case 0xef: //P3.4=0 Up

{ UpDown=1

break}

case 0xdf: //P3.5=0 Down

{ UpDown=0

break}

}

if(Start)

{ if(UpDown)

OutData=_crol_(OutData,1)

else

OutData=_cror_(OutData,1) P2=OutData

}

else

P2=0xff//否启森粗则灯全灭

mDelay(1000)

}

}


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

原文地址: http://outofmemory.cn/yw/8235985.html

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

发表评论

登录后才能评论

评论列表(0条)

保存