初识C51单片机(详解)

前言:
单片机是一种我们常见的开发板,我们经常会在一些项目中使用到它。而今天我们要介绍的是C51单片机,下面来介绍一下今天的”主角“:STC89C52RC40I-LQFP44单片机(后面将用到它做一些项目)。

1.了解命名规则一张图搞定:
在这里插入图片描述
2.学会看单片机电路原理图
只是一些初中的电路知识罢了,不用感到害怕!
3.开发环境安装:
(1)Keil C51安装,并搭配好环境(百度有教程)。
(2)STC-ISP:一款单片机下载编程烧录软件,是针对STC系列单片机设计。使用如下:
使用教程

4.入门——点灯
灯为什么会亮?我们可以这样思考:你家停电了,灯开了也不会亮。所以灯会亮就是“有电”,也就是有电流流过。根据我们初中学的知识,电流由高电平流到低电平。把这个“灯”看作一个负载在中间有电流流过,所以也就是相当于一边配高电平,另一边配的是低电平。我们再根据单片机原理图来做分析:
在这里插入图片描述
很明显只需要将D5(LED1),D6(LED2),跟D4一样接地(看单片机一上电它就会亮起)即可(配成低电平),同时根据芯片图LED1接的是P3.7引脚,LED2接的是P3.6引脚。可以完成编程。代码如下(高电平1,低电平0):

#include "reg52.h"
sbit led1 = P3^7;//根据原理图(电路图),设备变量led1指向P3组IO口的第7口
sbit led2 = P3^6;//根据原理图(电路图),设备变量led2指向P3组IO口的第6口
void main()
{
	led1 = 0; //根据电路图,低电平点亮led
	led2 = 0;
	while(1);
}

接下来也可以给灯玩些花样:

  • 灯闪烁

如何实现灯闪烁?这里给一些思路,结合上述代码可以自己去实现:
“灯闪烁”无非就是亮灭交替。也就是一下子给高电平(灯灭),一下子给低电平(灯亮)。这里很容易想到用延时函数。我们可以使用STC-ISP自带延时函数(操作如下图)。当然学到定时器后,我们可以自己去定义。
在这里插入图片描述

  • 按键控灯

传统按键和灯是在同一个电路中,而单片机编程按键和灯是分开的两个电路,通过单片机作为媒介来处理数据,逻辑实现按键控制灯。先来看一下单片机原理图:
在这里插入图片描述
看了上述单片机原理图,应该会有初步想法:如何证明SW1被按下。很显然,电路中有个C3电容相当于断路。所以当SW1按下时,KEY1直接接地,表现为低电平(0),当SW1没有按下时KEY1 位置通过上拉电阻到5v表现为高电平(1)。所以我们可以理解下列代码:

#include "reg52.h"
sbit led1 = P3^7;
sbit key1 = P2^1;
void main()
{
	while(1){
	if(key1 == 0){
		led1=0;
	}
	}
}

当然我们也可以做到SW1开灯,SW2关灯。原理跟上面相似,根据上面所学可以自行实现。(这里注意一下可以采用延时函数来软件消抖。)
除了以上这些,还可以采用所谓的状态位来控制LED,原理相似。这里提供一下主函数写法:

void main()
{		
	 int ledMark = OFF_STATUS; //定义一个状态
	 led1=1;
	//查询法检测,是否按下
	while(1){
		if(key1 == 0){
			//按键消抖
			//感觉被按下,不知道是抖动还是人为,延迟50ms在判断一次
			//软件消抖
			Delay50ms();
			if(key1 == 0){
				ledMark = ON_STATUS; 
			}			
		}
		if(key2 == 1){ //KEY2位置和GND接通,表现为低电平,值为0
			ledMark = OFF_STATUS;
		}	
		if(ledMark = ON_STATUS){
			led1=0;
		}
		else{
			led1=1;
		}
	}
}

结语:
这次的内容就写到这里了,对于入门的小伙伴,可以动手去尝试一下。也许刚开始你会遇到一些问题,不要着急,也不要慌乱。你可以选择在下方留言,也可以找百度或寻求他人帮助。在接下来的博客中,我将持续更新有关这个系列单片机的上手项目教程。感兴趣的可以点一波关注,让我们共同进步。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值