单片机流水灯程序c语言 单片机while1的作用
其实单片机流水灯程序c语言的问题并不复杂,但是又很多的朋友都不太了解单片机while1的作用,因此呢,今天小编就来为大家分享单片机流水灯程序c语言的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
51单片机流水灯用C语言编写的设计程序
/*********************************************************************************************
程序名: 8路流水灯
编写时间:2009年5月13日
硬件支持:STC12C4052AD外部12MHZ晶振
接口说明:8个LED彩灯接P1口
修改日志:
NO.1-2009年5月14日在程序前面加入参数定义项
/*********************************************************************************************
说明:
根据参数设置产生流水LED效果。
/*********************************************************************************************/
#include<REG51.h>//51头文件
/*********************************************************************************************/
#define DY_PORT P1//设置LED连接的I/O组
#define DY_SPEED 100//设置每一个明亮级的停留时间(值域:0~65535)
/*********************************************************************************************
bit [自定义名];//定义一个位(位的值只能是0或1)例:bit LED
#define [代替名] [原名]//用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1
sbit [自定义名]= [系统位名];//自定义系统位名。例:sbit Add_Key= P3 ^ 1;
unsigned char [自定义名];//定义一个0~255的整数变量.例:unsigned char a;
unsigned int [自定义名];//定义一个0~65535的整数变量
/*********************************************************************************************/
void delay(unsigned int a){// 1ms延时程序
unsigned int i;
while(--a!= 0){
for(i= 0; i< 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600
}//AT89C51单片机在外部晶振为12MHz时i值上限为125
}
/*********************************************************************************************/
void main(void){
unsigned int i;
unsigned int temp;
while(1){
temp=0x01;
for(i=0;i<8;i++){//8个流水灯逐个闪动
DY_PORT=~temp;
delay(DY_SPEED);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++){//8个流水灯反向逐个闪动
DY_PORT=~temp;
delay(DY_SPEED);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++){//8个流水灯依次全部点亮
DY_PORT=temp;
delay(DY_SPEED);//调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++){//8个流水灯依次反向全部点亮
DY_PORT=temp;
delay(DY_SPEED);//调用延时函数
temp>>=1;
}
}
}
/*********************************************************************************************/
单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
单片机流水灯C语言程序的源代码如下:
#include//51系列单片机定义文件
#define uchar unsigned char//定义无符号字符
#define uint unsigned int//定义无符号整数
void delay(uint);//声明延时函数
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++)//8个流水灯逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++)//8个流水灯反向逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++)//8个流水灯依次全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++)//8个流水灯依次反向全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp>>=1;
}
void delay(uint t)//定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
扩展资料
51单片机流水灯的源代码如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
51单片机流水灯程序
程序如下:
#include<reg52.h>
sbit led1= P2^0;
sbit led2= P2^1;
sbit led3= P2^2;
sbit led4= P2^3;
sbit led5= P2^4;
sbit led6= P2^5;
sbit led7= P2^6;
sbit led8= P2^7;
void main()
{
int i,j;
//点亮第一个灯
led1= 1;
led2= 0;
led3= 0;
led4= 0;
led5= 0;
led6= 0;
led7= 0;
led8= 0;
//延时1秒
for(i= 0;i< 110;++i)
{
for(j= 0; j< 1000;++j)
{
;//什么也不做
}
}
//点亮第二个灯
led1= 0;
led2= 1;
led3= 0;
led4= 0;
led5= 0;
led6= 0;
led7= 0;
led8= 0;
//点亮剩余的灯
//省略……
while(1);
}
扩展资料:流水灯几点说明:
void:因为该延时函数不需要返回值,所以写为void
delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。
():不需要传入参数,所以括号中为空
至此我们可以把流水灯程序写为以下形式:
关于本次单片机流水灯程序c语言和单片机while1的作用的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。