您的位置:首页 > 其它

89c51单片机的简单运用1--数码管、流水灯

2012-06-22 23:53 190 查看
一.简单的点灯程序需要记住的

1.单片机控制开发板的二极管亮灭:

由单片机的P1口控制,注意开发板的原理图,分清楚到底是给低电平亮还是高电平亮,一般都给低电平亮。

控制灯分为总线法和位选法,总线法是用十六进制数控制P1口的高低电平,1为高,0为低,位选是选出P1口的任意一位操作。

流水灯是通过延时函数或定时器延时,依次控制不同的灯亮来完成流水灯

2.数码管的静态显示和动态扫描:

Lab-MCS51开发板通过单片机的P^0~P^3口分别控制四个数码管的亮灭,每个数码管显示的内容由P0口控制,



控制线路图如上,通过P0使a,b,c,d,e,f,g,dp亮,显示不同的数字或符号。

动态扫描是减少数码管间亮的间隙,使人的视觉感觉不出,造成数码管同时亮的假象。

#include<reg52.h>  //52单片机头文件

void main()		   //主函数
{
unsigned int i; //定义一个int型变量
while(1)
{
i=50000;    		//变量赋初值为50000
P1=0xfe;			//点亮第一个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0xfd;			//点亮第二个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0xfb;			//点亮第三个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0xf7;			//点亮第四个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0xef;			//点亮第五个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0xdf;			//点亮第六个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0xbf;			//点亮第七个灯
while(i--);     	//延时
i=50000;    		//变量赋初值为50000
P1=0x7f;			//点亮第八个灯
while(i--);     	//延时
}

}

流水灯;

#include <reg52.h>
#include<intrins.h>
void main ()
{  	int i, j ,k  ;
// for(i=0;i<8;i++)
P1=0xfe;
for(j=0;j<50000000;j++)
P1=	_crol_(P1,1);
//	for(k=0;k<50000000;k++) ;

}

数码管显示

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
//sbit wela=P2^7;
// sbit dula=P2^6;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10};
uchar num;
void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
void main()
{
//	wela=1;
P2=0xf0;
//	wela=0;
while(1)
{
for(num=0;num<10;num++)
{
//			dula=1;
P0=table[num];
//			dula=0;
delay(500	);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: