单片机跑马灯编程实现及按钮控制方法详解

 先上电路图(图示的是高电平点亮的跑马灯)

 这个是程序截图(keil5):我的建议是是先自己打一遍,边打边试着理解程序的意思。

#include <reg51.h>//引入头部文件

void delayms(unsigned int t)//指定延时函数delayms,指定一个无符号的变量t。
{
 unsigned int i,j;//指定无符号变量i,j。
 for(i=0; i<t; i++)//指定for循环:初始值为0,当i<t的时候,i每次循环加1。
 for(j=0; j<120; j++);//指定for循环:初始值为0,当j<120的时候,j每次循环加1。
}
void main()//指定主函数
{
 int n;//指定变量n,但是没有给定初始值
 unsigned char a[8] =  { 
   0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};/*指定一个无符号字符数据类型引导的8个元素数组,给定八个元素分别为0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80*/

 while(2)//无限循环
 {
  for(n=0; n<8; n++)//指定一个for循环,n初始值为0,n<8的时候,每次循环加1
  {
   P2 = a[n];//P2端口为a[n]数组对应的元素。
   delayms(500);//指定循环延时
  }
 }
}

下面的是没有注释的代码

#include <reg51.h>

void delayms(unsigned int t)
{
 unsigned int i,j;
 for(i=0;i<t;i++)
 for(j=0; j<120; j++);
}
void main()
{
 int n;
 unsigned char a[8] =  { 
   0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

 while(2)
 {
  for(n=0; n<8; n++)
  {
   P2 = a[n];
   delayms(500);
  }
 }
}

下一个是另外一种编程思路

#include < reg51.h >//调用头部文件
sbit P10=P1^0;//指定引脚P10等效为P1.0
void delay(unsigned char i );//延时函数声明
void main()
{
	unsigned char i,w,a;//指定无符号变量
	while(1)
	{
		w=0xFE;//初始值为0xFE
		
		for(i=0;i<8;i++)//指定for循环i初始值为0,最大值为8,每循环加一
		{
			if(P10==0)P0=w;//循环内容:如果P10等于0的时候,P0=端口的状态等同于w的示值
			//显示字送P0口
			delay(250);//延时
			w <<=1;//每次循环左移1位
			w|=1;//每次左移后的w和1进行一个或运算
			
		}

	}
}
void delay(unsigned char i)//定义延时函数,并且定义变量i应用于上述的循环
{
	unsigned char j,k;//定义无符号字符变量j,k
	for(k=0;k<i;k++)//指定for循环
	for(j=0;j<255;j++);//指定for循环
}

 

物联沃分享整理
物联沃-IOTWORD物联网 » 单片机跑马灯编程实现及按钮控制方法详解

发表评论