前言:
单片机是一种我们常见的开发板,我们经常会在一些项目中使用到它。而今天我们要介绍的是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,原理相似。这里提供一下主函数写法:文章来源:https://www.toymoban.com/news/detail-497064.html
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;
}
}
}
结语:
这次的内容就写到这里了,对于入门的小伙伴,可以动手去尝试一下。也许刚开始你会遇到一些问题,不要着急,也不要慌乱。你可以选择在下方留言,也可以找百度或寻求他人帮助。在接下来的博客中,我将持续更新有关这个系列单片机的上手项目教程。感兴趣的可以点一波关注,让我们共同进步。文章来源地址https://www.toymoban.com/news/detail-497064.html
到了这里,关于初识C51单片机(详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!