江科大51单片机学习笔记(1)

点亮一个LED

LED介绍

中文名:发光二极管
外文名:Light Emitting Diode
简称:LED
用途:照明、广告灯、指引灯、屏幕。
江科大51单片机学习笔记(1)_第1张图片

江科大51单片机学习笔记(1)_第2张图片
如果想让LED发光,需要让发光二极管两端产生电位差。

江科大51单片机学习笔记(1)_第3张图片
江科大51单片机学习笔记(1)_第4张图片
LED模块中串并联电阻是为了保护电路(限流)

电阻的运算(上图电阻中所标注):
102 (1010^2=1000=1K)
473 (47
10^3=47000=47K)
1001 (100*10^1=1000=1K)

江科大51单片机学习笔记(1)_第5张图片VCC:电源正极
单片机TTL电平:高电平5V,低电平0V
控制硬件电路:控制单片机IO口输出高低电平
江科大51单片机学习笔记(1)_第6张图片
代码在CPU中运行 ,CUP(直接访问寄存器)控制控制引脚
寄存器八个分为一组(寄存器中的每位对应一个IO口),驱动器增大电流(增大驱动能力),
CPU通过控制寄存器来控制硬件电路,硬件电路来 执行所需实现的功能
控制引脚输出高低电平,点亮LED灯(发光二极管正极接正,负极接负)
江科大51单片机学习笔记(1)_第7张图片
引脚由上至下分别为P20、P20、P21、P22、P23、P24、P25、P26、P27.
(通常情况下,默认P27为高位)
在二进制中,右侧为低位,左侧为高位.

江科大51单片机学习笔记(1)_第8张图片

#include 

void main()
{
	P2=0xFE;  //1111 1110
}
//1为5V,0为0V
//程序不支持直接写二进制,需要转换成十六进制
//0x是一个前缀,代表后面的是十六进制

江科大51单片机学习笔记(1)_第9张图片

LED闪烁

#include 
#include

//晶振上会标注为多少MHZ
延时函数
void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{
	
	while(1)
	{
		P2=0XFE;
		Delay500ms();
		P2=0XFF;
		Delay500ms();
	}
}

LED流水灯``

改造延时函数

void Delay1ms(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
		while(xms)			//这里加了一个循环,通过改变形参改变延时时间
		{					//加入输入300,进入这个循环会延时1ms
							//300变成299,再进入循环,如此往复循环300ms
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);	
//			xms=xms-1;
			xms--;
		}
	}

#include 

void Delay1ms(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
		while(xms)
		{
	
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);	
//			xms=xms-1;
			xms--;
		}
	}

void main()
{
	while(1)
	{
		P2=0xFE;//1111 1110
				Delay1ms(500);
		P2=0xFD;//1111 1101
			Delay1ms(500);
		P2=0xFB;//0111 1111
				Delay1ms(500);
		P2=0xF7;//1111 1011
				Delay1ms(500);
		P2=0xEF;//1111 0111
				Delay1ms(500);	
		P2=0xDF;//1110 1111
				Delay1ms(500);
		P2=0xBF;//1101 1111
				Delay1ms(100);
		P2=0x7F;//1011 1111
				Delay1ms(500);
		Delay1ms(500);
	}
}

江科大51单片机学习笔记(1)_第10张图片
如有错误,请指正批评!

你可能感兴趣的:(51单片机,51单片机,学习,笔记)