小灰的51单片机学习之初探51单片机(2)(如何利用keil建立一个简单的工程文件)

哈喽,大家好,我是小灰我又来了, 经过上一次我们了解了单片机是一种微小控制器,那么我们今天呢就来和大家一起探寻一下51单片机是怎么控制的,并且我们会带大家新建一个工程,用51单片机去点亮一个LED,Let’s go!

必备软件

俗话说的好,好马需配好鞍,我们去控制51单片机呢当然不是我们说一句话,他就会让LED去亮啦,我们需要用c语言写出一定的指令,然后呢单片机才会根据我们的指令去发出一定的信号让LED变亮。

那么我们需要什么软件呢?
首先是keil
在这里插入图片描述
这是一个集成开发环境,我们需要在这里写上我们c代码,也就是我们的控制代码,然后生成hex文件,最后通过烧写程序,把hex程序烧写进单片机里面。这个软件在我随后提供的云盘里会有教程,教大家怎么安装,以及拿破解机进行破解,如果教程看不明白的话,可以尝试在百度里面寻找答案,各种视频里面寻找安装方法,我相信聪明的大家这么简单的事情一定可以办到,在这里就不多赘述怎么安装了。

其次就是stc-isp
因为小灰在学习过程中采用的都是stc公司生产的几款51芯片,而这款软件也是stc公司为我们提供的一个烧录软件,十分便捷和方便。这款软件无需安装就能直接使用。
在这里插入图片描述
如果大家用的不是stc公司的芯片,可以用其他的软件,比如FlyMcu,flashmagic,等等,大家可以百度寻找,小灰在这里就不提供了。
链接:https://pan.baidu.com/s/1QHmt-AzJ7Y2sQx23FaPONQ
提取码:e408
这里就是我们的必备“武器”啦,接下来呢我们就可以入手去上阵杀敌了!冲鸭!

新建一个工程

这时候大家已经安装好了keil这个软件了,打开之后就是这个样子啦
在这里插入图片描述
ps:小灰弄过其他的东西在这里面,是用来写stm32的,可能和大家截面有一点点不太一样,但是使用到的功能都是一样的,大家不要在意是否一模一样!
英文学的好一点的同学就会知道,工程就是project了,所以我们第一步先点击这里
在这里插入图片描述
新建一个新的工程了,点击黄色框子那个new μVision project
接下来就会出现这个界面
在这里插入图片描述
这个的意思呢就是提示我们把工程保存在哪个地方,我们只需要找到一个合适的地方,一定要自己可以找到的地方保存好,就可以啦!(这里建议大家把工程放在一个独立的文件夹里面,因为工程有许多复杂的东西,不放在一起可能会觉得很乱)
当我们保存好了之后呢就是这个样子
在这里插入图片描述
在框里面搜索at89c51就可以了,然后点ok就可以啦
在这里插入图片描述
这里点否
在这里插入图片描述
然后呢我们点这里,建立一个新的空白文件
在这里插入图片描述
再点这里保存这个空白文件
在这里插入图片描述
这个时候就会出现这个样子,就是老样子,给文件保存到自己能找到的地方,名字随便取,但是后缀名一定要是.c,如下图所示,原因是因为我们用c语言写的要保存为c文件,所以后缀是.c。最后点确定就可以了。
在这里插入图片描述
然后双击左边的文件夹Source Group 1,就会出现接下来的样子,再双击你刚刚保存的.c文件就可以了。这是因为我们需要把刚刚那个c文件添加到我们的工程里面。到此为止我们的工程就建好了,接下来呢我们就需要写我们第一个点灯的程序啦!

点亮一个小灯之硬件部分

点亮一个小灯,小灯是什么,小灯其实是我们的简称,实际上是一个发光二极管,好吧就是一个LED,具体是什么可以百度一下就知道,反正我是不会告诉你我解释不清hhh,简单来说就是通电能发光,我相信大部分人在初高中就接触过这类东西了。那么又有一个问题来了,单片机怎么通电让LED发光呢?

点亮一个小灯之又软又硬

还记得之前我们看到过的那个IO口吗,IO的含义就是IN and OUT,准确来说就是输入和输出。那输入和输出又是干啥的呢?打个比方吧,我们和别人打电话,我把我需要告知的事情告诉别人,这就是我的输出,别人听到我想让他干的事情就是输入,那么单片机也是这样,它需要通过引脚也就是IO口输出高电平或者低电平来输出信号从而起到控制的作用。所以说IO可以说是一个通道,来发送信号的。可能这么一说大家还是懵逼,建议大家可以百度搜索一下51单片机的样子,可以看一下IO长什么样子,可能你就会能理解了。

点亮一个小灯之软件部分

在我刚刚接触单片机的时候,我的学长就一直告诉我,软件必须需要硬件的支持,就是这样。比如说单片机的控制,输出高低电平,那到底是输出高电平还是输出低电平让一个LED亮呢?
拿这幅图来说
在这里插入图片描述
ps:p2^x都是IO口的名字,一般来讲,对于5V电源的单片机来说,低电平在1.3V以下,高电平在3.7V以上
我们可以继续查资料,一个LED小灯需要3v-3.3v才能工作。这个时候,我们如果让单片机输出一个高电平,我们不算电阻的压降,仅仅LED小灯两端的电压远远不足其工作的电压,所以显而易见,我们需要让单片机输出低电平,这样小灯才能工作。可能其他一个电路就可以让单片机输出高电平使LED点亮。那为啥不这么干呢?因为一般的c51单片机输出的电流有限,无法使LED工作,或者亮度不够,这样效果不好,所以大家一般采用这种输出低电平的办法。那么这个电阻是用来干啥的呢?因为一般来说一个51单片机的引脚最大承受的电流为10mA(一般来说,具体得看相应的单片机的数据手册stc的好像可以承受20mA),所以过大的电流会烧坏单片机,这也就是电阻的作用。
但是吧如果说你手上只有一个最小开发板,你就直接吧小灯的正极接对应的IO口,吧负极接GND也是可以亮的,stc89c52rc亲测有效。

手撸代码冲冲冲!

这里贴上基于上面的硬件配置的图的一个代码

#include <reg52.h>    //因为现在市面上较火的51芯片为stc89c52RC,不要问我为啥他叫c52请自行百度,这一行代码就是包含这个头文件,和c语言里面的stdio.h是差不多的
sbit LED = P2^0;	//sbit定义的是SFR(特殊功能寄存器)的bit,看不懂没关系,只需要理解为把我想操作的IO口另取了一个名字,你还可以叫他zhangsan(张三),都可以的,看自己的板子的电路图吧P2^0换成对应的io口

void main()	//这里不能像我们平时一样写有返回类型的主函数
{
	while1//这里设置死循环是让单片机里面一直运行这个程序
	{
		LED = 0//这句话的意思就是让指定的IO口输出低电平,以此类推就让一个IO口输出高电平就是LED = 1;
	}
}

就这样一个点灯的小程序就写完啦,然后我们就应该编译链接啦
在这里插入图片描述
就是这三个按钮啦,从左往右点(显示的是最后一个)然后就会出现这个界面
在这里插入图片描述
在这里插入图片描述
舒坦了!!!
你以为结束了???哈哈哈还没有呢!
接下来我们需要把程序烧录到单片机里面,那到底烧录个啥呢,这个时候我们需要用keil去生成一个hex文件,再用stc-isp烧录进去,接下来我们接着操作!
在这里插入图片描述
我们需要点击这个小魔法棒,emmm有人叫仙女棒,行吧我还有朋友叫锤子,随便了hh。
在这里插入图片描述
再点击output,勾上create HEX File这一栏,最后点上ok就可以了。
一定要记住完成了这一步骤之后要把程序重新编译一下!不然找不到HEX文件的
在这里插入图片描述
这个时候就会多出一行,creating hex file from …
这个时候我们去文件夹里面的object里面就能找到一个hex文件
在这里插入图片描述
到这里我们在keil上面的操作就结束了,我们需要打开stc-isp的软件
先选择自己的芯片的型号(一定要选对,不然烧写不进去的)
在这里插入图片描述
再就是选择串口号
ps:记得安装我给的网盘里面那个ch340的驱动,如果安装失败大概率可能你电脑自带了
如果没有安装这个驱动可能找不到你想要的串口,就像我这样
在这里插入图片描述
安装完成后找到带有ch340的那个串口,串口数字可能不同,如图我的就是com7,你的可能是com1,com2等等。
在这里插入图片描述
如歌没有遭到ch340的串口有几种可能,1.检查线有没有插好,2.驱动没有安装好,3.你的板子用的不是ch340的芯片,找到其他合适的串口。
然后点击打开程序,找到我们刚刚生成的hex文件,再点击下载。
在这里插入图片描述
在这里插入图片描述
接下来会出现这个样子,也就是检测目标单片机。
在这里插入图片描述
这个时候我们需要把单片机电源关闭(不是吧线扯了,是关了开关)然后再打开开关,这样才能烧写进去程序,别纠结为啥这样才可以,人家就是这么设计的,照做就好了。还记得小灰第一次自己探索的时候,等了半个多小时不知道为啥一直检测,还以为是自己的单片机坏了。
然后就会显示下载成功啦!
在这里插入图片描述
这个时候我们就能看到这个灯亮了!
激不激动,小灰当时可是整整高兴了一整天呢,真的是很有成就感的一件事。在这里小灰就要提出几个问题了哈,我们现在点亮了这个灯,那么怎么关这个灯呢?我又如何让才能让这个灯闪烁呢?这些都是需要大家思考的呀,这个的答案我将会在我的下一个帖子说。下一个帖子呢将会告诉大家一些关于点灯背后的故事,比如说我为啥让这个IO口等于1,不是2不是3呢?并且带领大家弄响我们的蜂鸣器,在弄响我们的蜂鸣器的过程中学习如何去看我们的开发板以及最小系统板的原理图,是不是很期待呢!冲鸭!

什么是单片机之初探

其实我们讲了硬件软件包括软硬什么的,但是我们的问题还是回归到了什么是单片机,什么是51单片机?
大家可能通过这一次的学习知道了单片机是如何控制的,虽然我们学的很简单,让IO口等于1或0,但是正是这简单的0和1构成了许许多多复杂的东西。那我们可不可以这么说,单片机就是一个微控制器,我们可以通过烧写程序进去,在程序里面控制相应的IO口输出相应的信号来控制外部电路以及硬件工作,软件和硬件虽然各自独立,但是却难舍难分,相辅相成。可能小灰的语言不是很精炼,也不是很准确,但是我觉得这种粗糙的语言能在一定程度上解释单片机是什么?
什么没有弄懂!没关系,我们才初探单片机呢,我们在以后的学习中再更深入的学习单片机,我们在学习的过程中也将有自己独到的理解,我也知道在这个过程中非常痛苦,要不停的查资料不停的学习,但是学会了你也就会明白这一切都是值得的!加油呀!

扫描二维码关注公众号,回复: 9466670 查看本文章
写在最后

这篇稿子写了好几天hhh,虽然没什么特别深的东西,但是也算的上干货了吧,emmm希望大家喜欢小灰的可以给小灰点点赞,点关注不迷路哦(手动滑稽),如果有问题可以评论, 小灰看到会及时回复大家的,也希望有大佬发现我的错误能支出,小灰学习并改正,小灰不胜感激。我是小灰,一个努力用平实的语言写出困难内容的探索者!

发布了15 篇原创文章 · 获赞 35 · 访问量 3407

猜你喜欢

转载自blog.csdn.net/weixin_44065323/article/details/88804183