网易首页 > 网易号 > 正文 申请入驻

用单片机点亮LED灯,C语言详细Keil uVision4教程

0
分享至

小瓦君有话说:

本教程会用到Keil uVision4软件,所以开章部份会稍微介绍一下Keil uVision4的使用教程

Keil uVision4使用教程

首先,我们用 Keil 先打开一个现成的工程,来认识一下 Keil 软件,如图 1-7 所示。

图1-7 工程文件

从图 1-7 我们可以很轻松的分辨出菜单栏、工具栏、工程管理区、程序代码区和信息输出窗口。

这个是 Keil4 的英文版,网上有一些汉化版本的,但不建议使用。即使你的英语不好,使用英文版本的软件也一点问题没有,一共没几个单词,不需要你去翻译,用几次你就记住怎么用了。

因为以后做实际开发的时候,大多数软件都是英文版的,如果现在学习的时候一直用中文软件,将来一旦换了其它的英文软件就会慌了,所以从现在开始,慢慢的来熟悉英文软件,将来再用到其他英文软件的时候,就可以做到触类旁通、驾轻就熟了。

Keil 软件菜单栏和工具栏的具体细化功能,都可以很方便的从网上查到,不需要记忆,随用随查即可。在这里我们只介绍一点,关于 Keil 软件里边的字体大小和颜色设置。在菜单Edit-->Configuration-->Colors &Fonts 里边,可以进行字体类型、颜色、大小的设置,如图 1-8所示。

图1-8 字体设置(一)

因为我们用的是 C语言编程,所以我们在 Window 栏中选择 8051:Editor C Files,然后在右侧 Element 栏目里可以选择要修改的内容,一般我们平时用到的,只是其中几项而已,比如:

  • Text——普通文本

  • Text Selection——选中的文本

  • Number——数字

  • /*Comment*/——多行注释

  • //Comment——单行注释

  • Keyword——C 语言关键字

  • String——字符串

Keil本身都是有默认设置的,可以直接使用默认设置,但如果你觉得不合你的口味,那就在这里更改一下,改完后直接点 OK 看效果就可以了。

图1-9 字体设置(二)

用单片机点亮LED灯C语言教程

一、使用Keil uVision新建一个工程

对于单片机程序来说,每个功能程序,都必须要有一个配套的工程(Project),即使是点亮 LED 这样简单的功能程序也不例外,因此我们首先要新建一个工程,打开我们的 Keil 软件后,点击:Project-->New uVision Project...然后会出现一个新建工程的界面。

以我们在硬盘上建立了一个 lesson2 的目录,然后把 LED 这个工程的路径指定到这里,这样方便今后管理程序,不同的功能程序放到不同的文件夹下,并且给这个工程起一个名字叫做 LED,软件会自动添加扩展名.uvproj。如图 2-9 所示。

图 2-9 保存工程

直接点保存就可以了,工程会自动保存成 LED.uvproj 文件,下次要打开 LED 这个工程时,可以直接找到文件夹,双击这个.uvproj 文件就可以直接打开了。

保存之后会弹出一个对话框,这个对话框让我们选择单片机型号。因为 Keil 软件是外国人开发的,所以并没有国内的 STC89C52,但是只要选择同类型号就可以了。51内核是由 Intel 公司创造的,所以这里直接选择 Intel 公司名下的 80/87C52 来代替,这个选项的选择对于后边的编程没有任何的不良影响。如图 2-10 所示。

图 2-10 单片机型号选择

点击 OK 之后,会弹出一个对话框,如图 2-11 所示,每个工程都需要一段启动代码,如果点“否”,编译器会自动处理这个问题,如果点“是”,这部分代码会提供给我们用户,按需要自己去处理这部分代码。

那这部分代码在初学 51 的这段时间内,一般是不需要去修改的,但是随着技术的提高和知识的扩展,我们就有可能会需要了解这块内容,因此这个地方我们选一下“是”,让这段代码出现,但是我们暂时不需要修改它,大家知道这么回事就可以了。

图 2-11 启动代码选择

这样工程就建立好了,如图 2-12 所示,如果我们点击 Target 1 左边的加号,会出现我们刚才加入的初始化文件 STARTUP.A51,这个我们先不管。

图 2-12 工程文件

工程有了之后,我们要建立编写代码的文件,点击 File-->New,如图 2-13,新建一个文件,也就是我们编写程序的平台。然后点 File-->Save 或者直接点击那个 Save 的快捷键,可以保存文件,保存时我们把它命名为 LED.c,这个地方必须加上.c,因为如果写汇编语言,这个地方的扩展名是.asm,头文件就是.h 等等,我们编写的是 C 语言程序,这个地方必须自己添加文件的扩展名.c,如图 2-14 所示。

图 2-13 新建文件

图 2-14 保存文件

现在就可以在建立好的文件中输入我们的程序代码了,在编写之前还有个工作要做。我们每做一个功能程序,必须要新建一个工程,一个工程代表了单片机要实现的一个功能。但是一个工程,有时候我们可以把我们的程序分多个文件写,所以每写一个文件,我们都要添加到我们所建立的工程中去,鼠标右键点 Source Group 1,点 Add Files to GroupSource Group 1...,如图 2-15 所示。

图 2-15 添加文件(一)

在弹出的对话框中,单击 LED.c 选中它,然后点 Add,或者直接双击 LED.c 都可以将文件加入到这个工程下,然后单击 Close,关闭添加。这个时候大家会看到在 Source Group 1下边又多了一个 LED.c 文件。

图 2-16 添加文件(二)

二、用C语言编写单片机程序

准备工作做了那么多,终于要编写程序代码了。

第一个单片机程序:

#include <reg52.h> //包含特殊功能寄存器定义的头文件
sbit LED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!
void main(){ //任何一个 C 程序都必须有且仅有一个 main 函数
LED = 0; //分号表示一条语句结束
}

先从程序语法上来分析一下:

  • main是主函数的函数名字,每一个 C 程序都必须有且仅有一个 main 函数。

  • void是函数的返回值类型,本程序没有返回值,用 void 表示。

  • { } 在这里是函数开始和结束的标志,不可省略。

  • 每条 C 语言语句以;结束的。

逻辑上来看,程序这样写就可以了,但是在实际单片机应用中,存在一个问题。

比如我们的程序空间可以容纳 100 行代码,但是我们实际上的程序只用了 50 行代码,当运行完了50 行,再继续运行时,第 51 行的程序不是我们想运行的程序,而是不确定的未知内容,一旦执行下去程序就会出错从而可能导致单片机自动复位,所以我们通常在程序中加入一个死循环,让程序停留在我们希望的这个状态下,不要乱运行,有以下两种写法可以参考:

参考程序一:

#include <reg52.h>
sbit LED = P0^0;
void main(){
while(1){
LED = 0;
}
}

参考程序二:

#include <reg52.h>
sbit LED = P0^0;
void main(){
LED = 0;
while(1);
}

程序一的功能是程序在反复不断的无限次执行 LED = 0;这条语句,而程序二的功能是执行一次,然后程序直接停留下来等待,相对程序一来说程序二更加简洁一些。

我们的开发板上,还有一个 74HC138 作为 8 个 LED 小灯的总开关,而 P0.0 仅仅是个分开关。如同我们家里总是有一个供电总闸,然后每个电灯又有一个专门的开关,我们刚才的程序仅仅打开了那个电灯的开关,但是没有打开那个总电闸,所以程序需要加上这部分代码。

因为要介绍的内容比较多,所以我们把 74HC138 的原理以及为什么要加额外的代码在以后统一介绍,这次小瓦君直接加上这部分代码,大家知道有这么一回事就可以了。

#include <reg52.h> //包含特殊功能寄存器定义的头文件
sbit LED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main(){
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
LED = 0; //点亮小灯
while (1); //程序停止在这里
}

程序编好了,我们要对程序进行编译,生成需要的可以下载到单片机里的文件,在编译之前,我们先要勾选一个选项,Project-->Options for Target Target1...,或者直接点图 2-17 中红框内的快捷图标:

图 2-17 工程选项图标

在弹出的对话框中,点击 Output 选项页,勾选其中的“Create HEX File”复选框,然后点 OK,如图 2-18 所示。

图 2-18 创建 HEX 文件

设置好以后呢,点击“Project-->rebuild all target files”,或者鼠标点击图 2-19 中红框内的快捷图标,就可以对程序进行编译了。

图2-19 编译程序

编译完成后,在 Keil 下方的 Output 窗口会出现相应的提示,大家注意看图 2-20,这个窗口告诉我们编译完成后的情况

data=9.0 ,指的是程序使用了单片机内部的 256字节 RAM 资源中的 9 个字节,

code=29 的意思是使用了 8K 代码 Flash 资源中的 29 个字节。

当提示“0 Error(s), 0 warning(s)”表示我们的程序没有错误和警告,就会出现“creating hex file from “LED”...,意思是从当前工程生成了一个 HEX 文件,我们要下载到单片机上的就是这个HEX 文件。

如果出现有错误和警告提示的话,就是 Error 和 warning 不是 0,那么我们就要对程序进行检查,找出问题,解决好了再进行编译产生 HEX 才可以。

图2-20 编译输出信息

到此为止,程序就编译好了,下边我们就要把编译好的程序文件下载到单片机里了。

三、将程序下载到单片机

首先,要把硬件连接好,把板子插到电脑上,打开设备管理器查看所使用的是哪个 COM 口,如图 2-21 所示,找到“USB-SERIAL CH340(COM5)”这一项,这里最后的数字就是开发板目前所使用的 COM 端口号。

图 2-21 查看COM口

然后 STC 系列单片的下载软件——STC-ISP,如图 2-22 所示。

图2-22 程序下载设置

下载软件列出了 5 个步骤:

  • 第一步,选择单片机型号,我们现在用的单片机型号是STC89C52RC,这个一定不能选错了;

  • 第二步,点击“打开程序文件”,找到我们刚才建立工程的那个 lesson2 文件夹,找到 LED.hex 这个文件,点击打开;

  • 第三步,选择刚才查到的 COM口,波特率使用默认的就行;

  • 第四步,这里的所有选项都使用默认设置,不要随便更改,有的选项改错了以后可能会产生麻烦。

  • 第五步,因为 STC 单片机要冷启动下载,就是先点下载,然后再给单片机上电,所以先关闭板子上的电源开关,然后点击“Download/下载”按钮,等待软件提示你请上电后,如图 2-23 所示,然后再按下板子的电源开关,就可以将程序下载到单片机里边了。

当软件显示“已加密”就表示程序下载成功了,如图 2-24 所示。

图 2-23 程序下载过程

图 2-24 程序下载完毕

程序下载完毕后,就会自动运行,大家可以在板子上看到那一排 LED 中最右侧的小灯已经发光了。那现在如果我们把 LED = 0 改成 LED = 1,再重新编译程序下载进去新的 HEX 文件,灯就会熄灭。

至此,点亮一个 LED 的实验已经完成,终于迈出了第一步,是不是还挺好玩的呢!

点击“学学”菜单栏!获取更多机器人和单片机的相关知识,还有DIY教程哦~

回复“单片机”,获取51单片机电子教案(C语言完整版)

为您提供:

【前沿资讯】跟踪国内外机器人领域前沿最新动态

【萝卜知识】完整的机器人专业知识学习路径,人人都可以成为创客

【实践通道】提供机器人相关的产品、爱好者社区,以及工作实践机会

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
美国终于明白,中国是有史以来最难对付的对手,一切都来不及了

美国终于明白,中国是有史以来最难对付的对手,一切都来不及了

农夫史记
2026-02-27 20:51:02
白俄罗斯总统卢卡申科与俄罗斯总统普京举行会晤

白俄罗斯总统卢卡申科与俄罗斯总统普京举行会晤

看看新闻Knews
2026-02-27 15:48:02
美以对伊朗发动联合军事行动,中国使馆密集发声

美以对伊朗发动联合军事行动,中国使馆密集发声

环球网资讯
2026-02-28 18:12:07
俄罗斯警告中国:美打伊朗是个阴谋,就是想要逼解放军进行决战

俄罗斯警告中国:美打伊朗是个阴谋,就是想要逼解放军进行决战

健身狂人
2026-02-28 16:33:55
林允高清性感写真来啦!从爆红到实力蜕变

林允高清性感写真来啦!从爆红到实力蜕变

橙星文娱
2026-02-28 11:57:09
你永远想不到医院的八卦能有多炸裂?一件提神醒脑,两件直接撂倒

你永远想不到医院的八卦能有多炸裂?一件提神醒脑,两件直接撂倒

另子维爱读史
2026-01-22 18:21:09
重大信号!A股,集体公告!最牛净利大增超745%,“寒王”战报来袭

重大信号!A股,集体公告!最牛净利大增超745%,“寒王”战报来袭

券商中国
2026-02-28 13:42:06
35岁郑爽近照!整容后遗症明显变大妈,豪宅藏不住财力,但回不了头

35岁郑爽近照!整容后遗症明显变大妈,豪宅藏不住财力,但回不了头

八卦王者
2026-02-28 11:36:01
钟镇涛真的太有钱了,为了庆祝73岁生日,竟然从美国拉斯维加斯开启庆生之旅环绕快半个地球回到香港。

钟镇涛真的太有钱了,为了庆祝73岁生日,竟然从美国拉斯维加斯开启庆生之旅环绕快半个地球回到香港。

今古深日报
2026-02-28 11:24:38
人民币杀疯了!美元抛售潮开始了......

人民币杀疯了!美元抛售潮开始了......

新浪财经
2026-02-28 12:20:22
千万网红“一栗小莎子”确诊癌症,不良恶习害了她,儿子不到两岁

千万网红“一栗小莎子”确诊癌症,不良恶习害了她,儿子不到两岁

温读史
2026-01-24 07:39:28
暴跌60%,引来全国牙科关店潮,暴利的牙科生意真的走到了尽头?

暴跌60%,引来全国牙科关店潮,暴利的牙科生意真的走到了尽头?

小熊侃史
2026-01-17 07:50:11
立讯精密冲刺港股:9个月营收2209亿 厂妹出身的王来春身价855亿

立讯精密冲刺港股:9个月营收2209亿 厂妹出身的王来春身价855亿

雷递
2026-02-28 12:57:14
铁了心对付中国?暴跌58%,俄罗斯大幅加税,中国汽车栽得太冤了

铁了心对付中国?暴跌58%,俄罗斯大幅加税,中国汽车栽得太冤了

爱吃醋的猫咪
2026-02-01 19:36:46
张洪福母亲感谢恒大足校:树高千尺不忘根,人行千里莫忘本

张洪福母亲感谢恒大足校:树高千尺不忘根,人行千里莫忘本

懂球帝
2026-02-28 10:47:21
伊朗发射导弹一小时内 以色列300多地拉响警报

伊朗发射导弹一小时内 以色列300多地拉响警报

环球网资讯
2026-02-28 17:29:25
身材高挑丰满的成熟女性这样打扮既显身材又有女人味

身材高挑丰满的成熟女性这样打扮既显身材又有女人味

美女穿搭分享
2026-02-21 17:44:34
曼妙的身材:一副会呼吸的建筑

曼妙的身材:一副会呼吸的建筑

疾跑的小蜗牛
2026-01-20 22:35:32
81岁林豆豆现状:已退休23年,独居在北京老房子,用阅读打发时间

81岁林豆豆现状:已退休23年,独居在北京老房子,用阅读打发时间

揽星河的笔记
2025-11-12 12:36:17
中国真正的危机,不是缺钱!而是没人敢承认"东西已经够多了"?

中国真正的危机,不是缺钱!而是没人敢承认"东西已经够多了"?

凡知
2026-01-19 15:20:32
2026-03-01 01:52:49
美味乡土
美味乡土
美味乡土分享,农村美食
927文章数 43关注度
往期回顾 全部

科技要闻

狂揽1100亿美元!OpenAI再创融资神话

头条要闻

伊朗媒体公布反击美军军事行动结果

头条要闻

伊朗媒体公布反击美军军事行动结果

体育要闻

球队主力全报销?顶风摆烂演都不演了

娱乐要闻

周杰伦儿子正面照曝光,与父亲好像

财经要闻

冲突爆发 市场变天?

汽车要闻

岚图泰山黑武士版3月上市 搭载华为四激光智驾方案

态度原创

教育
数码
房产
手机
公开课

教育要闻

“比预估高了20多分,激动得有点想哭!”今天有人欢呼,有人沉默,有人红了眼眶,这一年都经历了什么?

数码要闻

小米超薄充电宝亮相MWC,98g有多能打?

房产要闻

滨江九小也来了!集齐海侨北+哈罗、寰岛...江东教育要炸了!

手机要闻

澎湃OS再次公布进展通报:10个问题,仅修复一则!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版