基于AT89C52单片机的原理运用

1.1LED的点亮

首先我们通过原理图看到LED1-----LED8 8个LED灯的I/O接口分别连接到了P1总串口端,分别对应P1_0----P1_7

所以我们可以通过分别给总串口赋值和单独串口赋值从而来控制LED灯的点亮,由于vcc接电源正极,所以LED灯赋予低电平共阴极,具体代码如下:

 /*点亮第一个LED灯*/
#include <REGX52.H>  //引入头文件
void main()
{
	while(1)
	{
		P1=0xfe;  //1111 1110 0x为16进制后缀转换成二进制,表示点亮第一个LED
		P1_3=0xf7;  //1111 0111  点亮第4个LED灯
	}
}

 2.2 LED灯的流水

顾名思义就是给LED灯增加延迟函数,从而达到流水灯的作用,
1.通过给整个LED灯赋值实现流水灯 2.通过内置库函数实现LED灯的流水
_crol_ 循环左移 _cror_ 循环右移 所属库 <intrins.h>  ,具体代码如下:

#include <REGX52.H> 
#include<intrins.h>  

/*引入延迟500毫秒函数*/
//函数的调用

void Delay500ms(void)	//@12.000MHz
{
	unsigned char data i, j, k;

	_nop_();  //可有可无,建议去掉,有些编译器可能没有此头文件  <intrins.h>  
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	while(1)
	{
		P1=0xfe;   //1111 1110
		Delay500ms();
		P1=0xfD;  //1111 1101
		Delay500ms(); 
		P1=0xfb ; //1111 1011
		Delay500ms(); 
		P1=0xf7;  //1111 0111
		Delay500ms();
		P1=0xef;  //1110 1111
		Delay500ms();
		P1=0xdf;  //1101 1111
	    Delay500ms(); 
		P1=0xbf;  //1011 1111
		Delay500ms();
		P1=0x7f; //0111 1111  
		Delay500ms();
	}
}
#include <REGX52.H> 
#include<intrins.h>  

/*引入延迟500毫秒函数*/
//函数的调用

void Delay500ms(void)	//@12.000MHz
{
	unsigned char data i, j, k;

	_nop_();  //可有可无,建议去掉,有些编译器可能没有此头文件  <intrins.h>  
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	unsigned char LED=0xfe; //变量的初始化
	while(1)
	{
		P1=LED;  //点亮第一个LED灯
		Delay500ms();
		LED=_crol_(P1,1);  //每次向左移一个LED灯;
	}
}  

对于函数的调用我们也可以引入自定义参数变量

#include <REGX52.H> 
#include <intrins.h>
//函数的调用也可引用自定义参数
void Delay500ms(unsigned char x)	//@12.000MHz   无符号非负整形
{
	unsigned char data i, j, k;
while(x--)
{
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
}
void main()
{
	while(1)
	{
		unsigned char LED=0xfe; //变量的初始化
	    unsigned char time=500;
		P1=LED;  //点亮第一个LED灯
		Delay1ms(500);
		LED=_crol_(P1,1);  //每次向左移一个LED灯;
		time=time-100;  //led流水循环每次时间减少100ms;可以控制流水灯速度
	}
}

3.3 Key按键

首先我们观看S2——S5 四个key按键的原理图,发现其引脚所对应的位置分别为P3_4——P3_7.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值