-
先来看看51的引脚配置图
上面的图应该就能很好的理解51是具有4个8位并行I/O口了,
主要包括P0、P1、P2、P3口(大多数端口具有复用功能如P3.0、P3.1是I/O与串口的复用),还有读写使能输出和时钟输入端等。
然后上面的51板是8位的CPU,片内有128位的RAM数据存储器和4KB的ROM程序存储器,而外部数据存储器地址空间和程序存储器地址空间都是64KB。
这是51的最基本配置,当然我们还得看看它的复位电路和时钟电路。
复位电路:
51单片机需要一个硬件复位电路,用于用户的手动复位,并且51单片机是高电平复位有效,上图就是最简单的一个复位电路了。
时钟电路:
在引脚XTAL1和XTAL2之间接一个晶振和两个电容就构成了内部震荡方式,而加上在单片机内部的一个高增益反相放大器,外接一个晶振后,就构成了自激振荡器并产生震荡时钟脉冲,上面就是简单的电路图了。
单片机最小系统:
那么这里有一个概念,什么是单片机最小系统呢?
它是指以51系列单片机作为核心,再附带一些使单片机能够运行的最小资源,主要包括时钟电路、复位电路和扩展接口电路等部分就构成了单片机的最小系统。
介绍了这些,学过C语言的话,你就能实现一个简单的LED灯程序了。当当当~~
-
点亮第一个灯
#include <reg52.h> //reg52.h包含52单片机的寄存器库
sbit led = P1^0; //只有地址可以被8整除的才可以用sbit单独定义某一位,P0——P3口都可以sbit单独定义
int main(void)
{
led = 1; //初始化P1^0,使之输出状态
while(1)
{
led = 0; //将P1^0输出低电平
}
}
上面的程序应该是很好读懂的,这样其实就入门了。在Protues上的仿真结果
发现P1^0口的灯被点亮了!
-
延时功能的实现
为了实现LED的闪烁,需要一个延时函数实现一定时间的延时。
#include <reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit led = P1^0;
void delay(u16 num)
{
u16 x, y;