单片机流水灯c语言实现概要1
实验一 闪烁的Led
//名称:闪烁的Led
//说明:Led按设定的时间间隔闪烁,约亮1秒灭1秒
//-----------------------------------
#include
#define uchar unsigned char//uchar宏定义
#define uint unsigned int//uint宏定义
sbit led=P1^0;
//-----------------------------------
//延时子程序
//-----------------------------------
void delayMs(uint x)
{
uchar i;//uchar i取值为0-255
while(x--)
{
for(i=0;i<120;i++);//延时120微妙
}
}
//------------------------------------
//主程序
//-----------------------------------
void main ()
{
while(1)
{
led=~led;
delayMs(2050);//约亮1秒灭1秒
}
}
实验二 从左到右的流水灯
//名称:从左到右的流水灯
//说明:接在P0端口的8只Led从左到右循环依次点亮,产生走马灯效果
//-----------------------------------
#include
#include//循环左移头文件宏定义
#define uchar unsigned char
#define uint unsigned int
//------------------------------------
//延时函数
void delayMs(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//-------------------------------------
//主程序
void main ()
{
P0=0xfe;//P0口初始化值1111.1110
while(1)
{
P0=_crol_(P0,1);//P0口循环左移1位
delayMs(150);//晶振为11.0592时,0.1594885秒移动一次
}
}
实验三 左右来回循环的流水灯
//名称:左右来回循环的流水灯
//说明:程序利用循环移位函数_crol_和_cror形成来回滚动的效果
//---------------------------------------
#include
#include
#define uchar unsigned char
#define uint unsigned int
//---------------------------------------
void delayMs(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//--------------------------------------
void main ()
{
uchar i;
P2=0x01;//P2端口初始化
while(1)//死循环
{
for(i=0;i<7;i++)//i自加1,当i=7时执行第二个for语句
{
P2=_crol_(P2,1);//P2端口循环左移1位
delayMs(150);
}
for(i=0;i<7;i++)
{
P2=_cror_(P2,1);//P2端口循环右移1位
delayMs(150);
}
}
}
//注释for(i=0;i<7;i++).i初始值为0,
//i++就是i自加1,每加一次执行
//P2=_crol_(P2,1);//P2端口循环左移1位
//delayMs(150);延时
//当i=7时,跳出第一个for语句,
//执行第二个for语句
实验四 花样流水灯
//