1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > avr单片机流水灯程序c语言 AVR单片机综合流水灯C程序

avr单片机流水灯程序c语言 AVR单片机综合流水灯C程序

时间:2021-07-03 22:33:56

相关推荐

avr单片机流水灯程序c语言 AVR单片机综合流水灯C程序

#include //AVR单片机头文件包含

#define uchar unsigned char//宏定义

#define uint unsigned int//

/*************************************************************/

/*********************延时子程序******************************/

/*************************************************************/

void delay(uint z)//一个带参数,不带返回值的子函数

{

uint x,y;//定义两个变量

for(x=0;x<100;x++)//外循环

for(y=z;y>0;y--);//内循环

}

/*************************************************************/

/*********************左移流水灯******************************/

/*************************************************************/

void zouyi()

{

uchar shu,j;//定义两个变量,shu表示要存的数,j表示循环变量

shu=0x01;//先将数变量赋值,即让左边第1颗灯亮起

for(j=0;j<9;j++)//循环9次

{

PORTA=~shu;//将要显示的数给寄存器

delay(3550);//调用延时子程序

shu<<=1;//将要显示的数左移1位,这样就形成了左移

}

}

/*************************************************************/

/*********************右移流水灯******************************/

/*************************************************************/

void youyi()

{

uchar shu,j;//定义两个变量,shu表示要存的数,j表示循环变量

shu=0x80;//先将数变量赋值,即让右边第1颗灯亮

for(j=0;j<9;j++)//循环9次

{

PORTA=~shu;//将要显示的数给寄存器

delay(3550);//调用延时子程序

shu>>=1;//将要显示的数右移1位,这样就形成了右移

}

}

/*************************************************************/

/*********************左移跑马灯******************************/

/*************************************************************/

void zoupao()

{

uchar shu,j;//定义两个变量,shu表示要存的数,j表示循环变量

shu=0xfe;//先将数变量赋值,即让左边第1颗灯亮

for(j=0;j<9;j++)//循环9次

{

PORTA=shu;//将要显示的数给寄存器

delay(1000);//调用延时子程序

shu<<=1;//将要显示的数左移1位,这样就亮起2颗灯.....3颗灯

}

}

/*************************************************************/

/*********************右移跑马灯******************************/

/*************************************************************/

void youpao()

{

uchar shu,j;//定义两个变量,shu表示要存的数,j表示循环变量

shu=0x7f;//先将数变量赋值,即让右边第1颗灯亮

for(j=0;j<9;j++)//循环9次

{

PORTA=shu;//将要显示的数给寄存器

delay(1000);//调用延时子程序

shu>>=1;//将要显示的数右移1位,这样就亮起2颗灯.....3颗灯

}

}

/*************************************************************/

/******************中间到两边跑马灯***************************/

/*************************************************************/

void zhongjian()

{

uchar shu,j;//定义两个变量,shu表示要存的数,j表示循环变量

shu=0x08;//先将数变量赋值,即中间那颗LED亮

for(j=0;j<6;j++)//循环6次

{

PORTA=~shu;//将要显示的数给寄存器

delay(2000);//调用延时子程序

shu<<=1;//将要显示的数左移1位,这样就形成了从中间到左边亮起

}

shu=0x08;//先将数变量赋值,即中间那颗LED亮

for(j=0;j<5;j++)//循环5次

{

PORTA=~shu;//将要显示的数给寄存器

delay(2000);//调用延时子程序

shu>>=1;//将要显示的数右移1位,这样就形成了从中间到右边亮起

}

}

/*************************************************************/

/************************主程序*******************************/

/*************************************************************/

void main()

{

uchar shu,j;//定义两个变量,shu表示要存的数,j表示循环变量

DDRA=0xff;//设置PA口全为输出口

while(1)//大循环

{

zouyi();//调用左流水灯子程序

youyi();//调用右流水灯子程序

zoupao();//调用左跑马灯子程序

youpao();//调用右跑灯子程序

zhongjian();//调用从中间到两边流水灯子程序

zoupao();//调用左跑马灯子程序

zhongjian();//调用从中间到两边流水灯子程序

youyi();//调用右流水灯子程序

zouyi();//调用左流水灯子程序

zhongjian();//调用从中间到两边流水灯子程序

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。