凡亿教育-小燕
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | STC单片机开发环境搭建
STC单片机开发环境搭建

作为国货之光,STC 单片机以其价格便宜、内置接口多等特性在一些大厂不屑一顾的角落茁壮成长。今天我们来学习一下如何使用 Keil C51 来开发一个基于 STC 单片机的闪灯程序。

一些术语罗列如下:

英文简写英文全写中文简介MCUMicrocontroller Unit微控制器单元又称单片机(Single-chip Microcomputer)IDEIntegrate Development Environment集成开发环境一种集成了代码编辑器、编译器、链接器等的开发工具。ISPIn System Programming在系统可编程一种在不移除的前提下烧录程序到已经焊接在电路板上的 MCU 的方法ICSPIn Circuit Serial Programming串口在线可编程ISP 的一个子集烧录软件

我们使用 STC-ISP 作为烧录软件。

STC-ISP 下载地址如下:http://www.stcmicro.com/rjxz.html 。STC-ISP 我没有从 STC 官网下载,那个网站实在是太那个啥了,一言难尽。我选择的是 v6.86E 版本,最新的版本我的浏览器不让下,说是有毒,官网也是如此。

下载解压完后,不用安装,直接运行,界面如下:

4a587d2ae22b23d81832315f747516.jpg

界面非常的朴实无华。

STC-ISP 这个软件除了烧录程序,还有它用,等会儿我们再说。

Keil 软件

IDE 我们使用 Keil C51, 下载地址如下:https://www.keil.com/demo/eval/c51.htm

227bba678f97f4e9c655b959ec7033.jpg

下载 Keil 的时候,Keil 网站可能会要求你填入姓名、电子邮件等信息,不愿意填的话可以胡编点填上。这点,STC 的官网比国外芯片商的官网好,下载软件时不用填入姓名电话等信息。

下载完了 不用破解,评估版本一样用,就是会对编译后的文件的大小做限制,不能超过一定的大小。学习用的话,可以先用着,等到代码超限了后再破解。破解的时候得需要让你关闭杀毒软件,还得管理员权限运行,风险相当高。如果你不怕这些风险,破解了,保存破解后生成的那个 .LIC 文件,以后同一台机器就不用再次破解了。

帝国主义的软件一向是不把我们中国人造的小小单片机看在眼里的,在 Keil 软件中新建工程默认是没有 STC 单片机的:

80be9760d207555725d8862b52b507.jpg

这时候就轮到我们前面的 STC-ISP 这个软件出马了。非精简版的 STC-ISP 软件有一个功能 Keil 仿真设置:

0cbfaf3e4c40db6d174c40a05ee50d.jpg

点那个 添加型号和头文件到Keil中 按钮,然后选择 Keil 的安装目录点击确定按钮就可以了。我的安装目录如下:

8037336117be7c17b327d21cdb67fe.jpg

刚才那个添加型号和头文件到 Keil 中主要是替我们干了下面两件事:

  • 添加 stc.cdb 文件到 Keil 安装目录中。

    我的安装目录是“D:\Keil_v5\UV4”, 你的可能是“C:\Keil_v5\UV4” 或者其他,你可以进去看下。

71199936f253c59594b632df05a8c8.jpg

  • 更改 TOOLS.INI 文件。

    更改 “D:\Keil_v5” 目录下的 TOOLS.INI 文件:

0fe5e5cb42a4e904c70ca2f41a231e.jpg

在 TOOLS.INI 文件中添加如下内容“CDB0=UV4\STC.CDB ("STC MCU Database")”:

89b417d64591b34f1df10063c72397.jpg

闪灯程序新建工程

现在,在 Keil 中新建工程,点击 Device 就可以愉快地选择 STC MCU 了:

c71972ea0afa4356466161d302fcc6.jpg

在电脑上找个地方新建一个文件夹 blink-demo, 你也可以起个其他的名字。然后在 Keil 里依次点击菜单 Project-> new uVision Project 新建工程, 新建工程时选择我们刚才新建的 blink-demo 文件夹作为工程目录:

f8c6c678b50b0f55f3251100e1bf48.jpg

我的单片机型号是 STC15W408AS ,你可以根据你的单片机型号做相应选择:

6422f2d90e4d85c6c5c1eaa46a1447.jpg

新建工程时,如果问你是否复制,你选是:

43cc0a1990af6d3b0f3e0cd2cadf8f.jpg

新建工程后,Project 窗口中内容如下:

1cc0806cfeb70bdc6cd54c87b41683.jpg

把 Target 1 改为我们工程的名字 blink-demo。

把 SourceGroup 1 改为 Source。

如果你不知道咋改名,选中目标,点一下键盘的 F2 就可以改名了。

改名后 Project 窗口内容如下:

fa941910ae891c3feb541c13f079a3.jpg

你也可以不改名,一样编译没问题。但我习惯改,这样看着舒心一些。

生成头文件

下面添加工程所需头文件。

在 STC-ISP 软件中,打开 头文件 选项卡,在单片机 系列下拉列表中选择你的单片机型号,点击 保存文件 按钮将头文件保存到工程目录中,头文件的名字可以命名为 STC89xxx.h 或者任何其他你喜欢的名字:

7e6f8d196946485c6f0e1d56c9c83b.jpg

2b72a4fa6738b7b2960de41af60fef.jpg

工程基本设置

在工程属性中做如下设置。

将系统频率设置为 12MHz, 你也可以设置成其他的,我的单片机最高可以支持到35MHz, 但对于小项目来说,一般 12MHz 就够用了:

2d188475d7afed36edb699ec1838c6.jpg

在 Output 选项中勾选 Hex文件,让系统编译后生成 .hex 文件:

f3517f560a8f5864327bdca01f0c73.jpg

设置头文件路径。在 C51 选项卡中点击 ... 按钮,选中头文件所在目录,此处,我们选择工程所在目录。

c2bd181571b25716099b39e18f42d3.jpg

abe02f5c259eb91d5c04e66aa61d9b.jpg

添加 main.c 文件

在 Project 窗口 的 Source 文件夹上点一下鼠标右键选择 Add New item to Group ‘Source' :

5b3719b263e92ff469653c3df06661.jpg

给文件起名为 main.c:

d5bfcbaf6e401e9f756c72d555f571.jpg

新建完成后 Project 窗口 内容如下:

9a0c775a3541ae35354dcc5fe2cc51.jpg

生成延时函数

闪灯程序需要一个延时函数,可以让 STC-ISP 这个软件给我们生成。

填入相应的参数,点击 生成C代码 即可生成延时函数:

0de8425fa1454b705a12588ea91aed.jpg

这里我想要的延时时间为 500ms。系统频率要与前面的设置的频率一致。

将生成的延时函数复制到 main.c 中:

void Delay500ms()       //@12MHz
{
   unsigned char i, j, k;

   _nop_();
   _nop_();
   i = 23;
   j = 205;
   k = 120;
   do
{
       do
       {
           while (--k);
       } while (--j);
   } while (--i);
}
完整的闪灯程序

完整的 main.c 代码如下:

#include         // fix _nop_() error
#include "STC89xxx.h"

void Delay500ms();      //@12MHz

void main(void)
{
   while(1)
{
       P1 = 0xFF;
       Delay500ms();
       P1 = 0x00;
       Delay500ms();
}
}

void Delay500ms()       //@12MHz
{
   unsigned char i, j, k;

   _nop_();
   _nop_();
   i = 23;
   j = 205;
   k = 120;
   do
{
       do
       {
           while (--k);
       } while (--j);
   } while (--i);
}

其中头文件“intrins.h” 用于包含延时函数中的 _nop()__ 函数,不加的话会出现编译错误。

点击工具栏中的 Build 按钮或者按一下键盘上的 F7 键开始编译。编译结果如下:

68fe390ed608c9894b29cf71b96893.jpg

零错误、零警告,Perfect!

烧录程序

接下来,我们使用 STC-ISP 这个软件将我们辛苦编译出来的程序烧写到单片机中。

STC 单片机支持串口在线可编程(ICSP),可以通过串口烧录程序。电脑中插入一个 USB 转串口适配器。电脑中会多出一个串口。在 STC-ISP 中选择这个串口:

e72bb9ad845e5f626f48c9554396fd.jpg


点击 打开程序文件 选择工程目录下 Objects 文件夹中的 blink-demo.hex 文件作为烧录文件:

32b93f2137a7f204fe30670177d6c0.jpg

内部晶振频率还是选择 12MHz。

设置是否使用复位引脚,这里选择使用,因此去掉了 复位脚作I/O口 的勾选。

下载的时候,需要手动复位或重启单片机。否则会一直显示 正在检测目标单片机:

44579f9697a95147ce859ce236bc1d.jpg

总结

今天我们学习了基于Keil C51 的 STC 单片机开发环境搭建。

主要知识点如下:

  • 如何向 Keil 软件中添加 STC 单片机

  • 如何生成给定型号单片机的头文件

  • 如何生成延时函数

各软件下载地址如下:

Keil C51: https://www.keil.com/demo/eval/c51.htm

STC-ISP: http://www.stcmicro.com/rjxz.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论