单片机流水灯的C语言编程

单片机流水灯的C语言编程,第1张

#include<reg52h>

#include<intrinsh>

#define uint unsigned int

#define uchar unsigned char

#define led P1

uint delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

{

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

}

}

void main()

{

uint i,temp,j;

for(i=0;i<3;i++)

{

led=0xAA;

delay(300);

led=0x55;

delay(300);

}

for(i=0;i<3;i++)

{

temp=0xfe;

for(j=0;j<8;j++)

{

led=temp;

delay(300);

temp=_crol_(temp,1);

}

temp=0xbf;

for(j=0;j<6;j++)

{

led=temp;

delay(300);

temp=_cror_(temp,1);

}

}

for (i=0;i<3;i++)

{

led=0x7e;

delay(300);

led=0xbd;

delay(300);

led=0xdb;

delay(300);

led=0xe7;

delay(300);

}

for (i=0;i<3;i++)

{

led=0xe7;

delay(300);

led=0xdb;

delay(300);

led=0xbd;

delay(300);

led=0x7e;

delay(300);

}

for (i=0;i<3;i++)

{

led=0xff;

delay(300);

led=0x00;

delay(300);

}

led=0xff;

while(1);

}

现象说明:

8个灯,间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环

三次;再分别从两边往中间流动三次;再从中间往两边流

动三次;8个全部闪烁3次;关闭发光管,程序停止。

晶振为110592MHz

#include "REG52H"

//控制引脚定义

sbit LED1 = PXX; //P00-P37任意引脚

sbit LED12 = PXX;

//宏定义灯亮灯灭

#define LED1_ON( ) LED1 =0 //阳极接电源

#define LED1_OFF( ) LED1 =1 //阳极接电源

#define LED12_ON( ) LED12 =0 //阳极接电源

#define LED12_OFF( ) LED12 =1 //阳极接电源

void Init_GPIO( )//端口引脚初始化,关闭所有指示灯

{

LED1_OFF( ) ;

LED12_OFF( ) ;

}

void Delay_ms( u16 dat ) //延时函数

{

u16 i, j;

for(i = dat; i>0; i--)

{

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

}

}

int main( ) //主函数

{

Init_GPIO( );//引脚初始化

while(1) //大循环

{

LED1_ON( );//点亮第一个LED

LED2_OFF( );

LED12_OFF( );

Delay_ms(1000);//延时 参数自己可以根据晶振频率自己调节

LED1_OFF( ); //点亮第二个LED

LED2_ON( );

LED3_OFF( );

LED12_OFF( );

Delay_ms(1000);

//按照上面修改;

LED1_OFF( );//点亮第十二个LED

LED2_OFF );

LED3_OFF( );

LED12_ON( );

Delay_ms(1000);

}

}

#include <reg52h>

//这是hc6800为模板的例子

#include <intrinsh>

void Delay10ms(unsigned int c);  

  

main()

{

 unsigned char LED;

 LED = 0xfe;

while (1)

{

    

 P0 = LED;

  

 Delay10ms(50);

  LED = LED << 1;  

 

    if (P0 == 0x00) 

  

 {

    LED = 0xfe;  

   } 

    

    

 }

}

void Delay10ms(unsigned int c)  

{

    unsigned char a, b;

    for (;c>0;c--)

{

  for (b=38;b>0;b--)

  {

   for (a=130;a>0;a--);

  }

    

      

 }       

}

可以用一个数组存放LED灯的状态,在定时器里面为LED赋值数组里面的值就行

例如 LED_arr[10] = {0x81,0x42,0x24,0x18,0x24,0x42,0x81};

LED = LED_arr[pos++];

我给你个简单的例子:

#include <AT89X51H> //预处理文件里面定义了特殊寄存器的名称如P1 口定义为P1

void main(void)

{

//定义花样数据

const unsigned char design[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,

0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0,

0xE7,0xDB,0xBD,0x7E,0xFF};

unsigned int a; //定义循环用的变量

unsigned char b; //在C51 编程中因内存有限尽可能注意变量类型的使用

//尽可能使用少字节的类型,在大型的程序中很

受用

do{

for (b=0; b<32; b++)

{

for(a=0; a<30000; a++); //延时一段时间

P1 = design[b]; //读已定义的花样数据并写花样数据到P1 口

}

}while(1);

}

程序中的花样数据可以自以去定义,因这里我们的LED 要AT89C51 的P1 引脚为低电平才

会点亮,所以我们要向P1 口的各引脚写数据O 对应连接的LED 才会被点亮,P1 口的八个引

脚刚好对应P1 口特殊寄存器的八个二进位,如向P1 口定数据0xFE,转成二进制就是

11111110,最低位D0 为0 这里P10 引脚输出低电平,LED1 被点亮。如此类推,大家不难算

出自己想要做的效果了。

留个邮箱给你发个入门文档

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

void delay(uint z);

main()

{

uchar aa;

while(1)

{

aa=0xfe;

P1=aa;

delay(100);

while(1)

{

aa=_crol_(aa,1);

P1=aa;

delay(100);

}

}

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

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

}

我是一名多年的单片机工程师,下面的程序你参考一下

效果图

程序如下:

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

uint i;

uchar j;

void delay_ms(uint k)  //延时子程序

{

for(i=0;i<k;i++)

 {

  for(j=0;j<230;j++)

{

 ;

}

 }

}

main()

{

uchar a,b;

P1=0xfe;

delay_ms(1000);

b=P1;

while(1)

{

for(a=0;a<7;a++)

{

  b=_crol_(b,1);

  P1=b;

  delay_ms(1000);

}

  for(a=0;a<7;a++)

{

  b=_cror_(b,1);

  P1=b;

  delay_ms(1000);

}

  }

}

如果你想学习更多单片机和程序的知识,可以看看我整理好的“17个实验学会单片机”,百度一下“17个实验学会单片机”就可以看到在首页了。

以上就是关于单片机流水灯的C语言编程全部的内容,包括:单片机流水灯的C语言编程、用C51单片机控制12个LED流水灯的C语言程序怎么写、C语言单片机流水灯设计程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9300052.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存