编程新手入门单片机学习(一)

背景

这篇文章主要是记录一下我的单片机学习历程,目前鄙人的学习进度正在51单片机的“数码管”,前来记录一下昨天学过的led灯的部分

关于软件安装

软件安装这玩意真的把我整气死,半年前我曾买过一个51单片机,stc89c51的机型,当时照着up主的教程一步一步做,很快就完成了。没想到后面参加机器人大赛,连过学校的实验室的高级单片机时候,再连我的小破板就连不上了。后来研究了好几个月,都没解决,上周末我试了一下点击stc软件的“更新”,更新完就烧录成功了。。。

··············································

话题跑远了,对于环境的要求,不过是2个软件、1个驱动(听说有的电脑自带51驱动?羡慕~)

软件:keil uVision5和stc-isp,​​​​​​对于安装方法b站有教程,就不过多赘述,这里有软件包资料下载,来自up主大大的简介。后者(stc)是绿色软件,无需安装,点击.exe文件即可打开软件

关于驱动:这大概是大部分人比较烦心的地方,可以让电脑先插入单片机,​​​​​​然后​点击下载的资源包的如下软件,

然后安装即可,安装之后如何检查驱动是否安装成功?打开stc的软件,查看下图

这里的扫描串口部分,如果有一行是比较长的,而且没有“蓝牙”二字的一栏(有CH340),那就是装好驱动啦,还有一种方式是打开:win系统的设置-系统-系统信息-设备管理器

打开“端口”一栏,查看是否含有CH340的端口信息,如果有了,就安装好了

led灯介绍

鄙人使用的51单机是江协科技up主大大的教学

使用的资料也是来源于此

led灯:即下图(图片来自b站视频)中右下角8×8矩阵键盘上面的有八个灯的东西

对于八个灯,在这个51单片机的板子上分别是以P2_0、P2_1、…P2_7八个口作为接口的,其他版本的单片机可以通过查询商家给的单片机的文件资源信息来查找接口;

那么如何点亮我们的led灯呢?

对于单个灯:
#include <REGX52.H>
void main(){
    P2_0 = 0;
	while(1);	// 这一行的作用最后讲
}

哪一行决定了灯的亮度?没错,是这一行

P_0 = 0;

众所周知,程序里我们数数喜欢从0开始数,P2_0也就是第一个灯,这一行代码也就是点亮第一个led灯的,那为什么要吧它赋值为0?

我们可以理解为,赋值1是给这个灯的一边接入“高电平”,赋值0是给这个灯的一边接入“低电平”,然而灯的另一边都是已经接了高电平的了,“人往高处走,电往低处流”,所以说,只有两边电平不同才有电流通过,所以说,我们给接口赋值“0”的时候,灯就会亮

那么难道说,一行代码只能对一个灯进行赋值吗,当然不是,我们有个方法可以对一排灯进行操作

控制八个灯亮灭状态的方法

前面八个灯是从P2_0到P2_7, 但是还有一个更高级的方法,就是对P2进行赋值,赋什么样的值呢,是八位的二进制数,如1110 1111, 那就是仅对第三个数字接入低电平;如0111 1101, 那就是仅对第一、第七个灯接入低电平……

当然我们不能直接输入P2 = 11101111;这样的二进制数,因为电脑不认识,我们得把它们转化为对应的十六进制数字,再进行赋值,如下

#include <REGX52.H>
void main(){
    P2 = 0xfe;
	while(1);	
}

这里插一嘴,由于我们51单片机经常用到8位二进制数字,比如P2接口,在后期的学习中我们经常会用unsigned chat num;定义一个八位二进制的数字num,如下:

unsigned char num;
num = 0;
P2 = num;

此时我们就巧妙的吧一个八位二进制的数字赋值给了P2(下一篇文章中会更详细的用到这个方法)

while(1)?

我们要知道,《程序不能停》,在单片机运行的程序里面,程序是不能停止的,因为如果停止了,硬件就不会运作了,所以我们在给led灯接口赋值之后会给一个while(1);目的就是让程序进行死循环,这样灯的状态就可以一直保持程序给予的状态,否则,就会是亮一下就结束了。

感谢阅读,恳请斧正!

作者:Hello_Monkeys

物联沃分享整理
物联沃-IOTWORD物联网 » 编程新手入门单片机学习(一)

发表回复