历史上的今天
返回首页

历史上的今天

今天是:2026年01月06日(星期二)

正在发生

2023年01月06日 | 51单片机系列(1)-keil4工程创建

2023-01-06 来源:zhihu

我使用的keil uvision4进行51单片机开发。


那么创建一个keil工程有以下几步:


1、keil4软件安装:


keil4软件很容易下载,一般在淘宝卖家处购买单片机之后,会附赠相关的软件安装包和破解包,还有相关破解视频,故不赘述。


2、创建第一个工程:


进入软件之后我们定位到上方菜单栏,点击工程(如下图)

再点击新建工程

接下来就会保存工程路径,路径可以自行选择,注意文件名需要自行填写,否则无法保存,保存类型是默认的,不需要更改

接下来会弹出一个选择单片机CPU的窗口

我们使用的是51单片机,所以直接定位Atmel,我的单片机芯片型号是89C52,则定位Atmel下属的AT89C52,最后只管点击确定即可

创建完成后如下图所示

接下来需要在工程中创建文件,点击下图红圈中的图标

再点击保存(下图)

接下来会有一个保存路径的选择,其位置自动定位到所在的工程,注意还是要自行填写文件名,在此我们创建的是一个.c文件,创建为main.c,再点击保存即可


由于main.c文件并没有被添加进入工程,所以接下来我们需要将其添加进入工程,如下图,右键单击源组1,点击添加文件到“源组1”

再进入一个选择界面,你可以用两种方式添加:1、单击名称目录下的main.c文件,点击添加;2、如果名称目录文件多难以找到,就输入文件名,也可以添加。


注意点击添加后再点击关闭,才是添加成功

如下图所示,则是添加成功

3、测试工程文件,加入编写最基本的程序


首先设置编译输出hex文件,因为单片机执行的时候是通过keil生成的hex文件执行的,这是单片机的直接指挥文件,在菜单栏里面定位如下图标,点击


弹出如下页面,点击Output->红圈部分,打上勾,再点击确定即可

接下来就可以编写程序了,我们写一个例程试一下,使用流水灯实验


源代码如下

#include "reg52.h"

#include


typedef unsigned char u8;

typedef unsigned int u16;


#define led P2


void delay(u16 i){while(i--);}


void main()

{

u8 i;

led=0xfe;

delay(50000);

while(1){

    for(i=0;i<7;i++){

led=_crol_(led,1);

delay(50000);

}

for(i=0;i<7;i++){

led=_cror_(led,1);

delay(50000);

}

}


}

直接复制粘贴即可。


再点击编译,如图所示的图标


再看下方编译输出栏,


注意的点:1、warning和error,都为零说明成功


2、create hex file...说明有hex文件,才可下载进入单片机


下图所示文件编译成功,可以进入下载了

4、进入下载


此时可以关闭keil,但需要记住你的hex文件的路径,一般都是在你创建的工程文件之下


然后在外部将单片机与电脑通过usb接口相连,同时打开单片机开关,给单片机供电,否则无法下载程序


再打开程序烧入软件,这类软件很好找,百度一下即可,推荐到一些电子类论坛下载,相对干净安全,我使用的是普中科技的单片机程序下载软件,图标如下

打开后界面如下


注意的点


1、一般是自动匹配串口,所以有串口号一般就能下载


2、芯片类型注意选择自己对应的,51系列就选择STC89Cxx(New)即可


3、波特率设置为9600或者19200即可,不需要过高

接下来点击打开文件,找到hex文件的路径(就在你刚刚创建的工程路径里面)


如下图,找到后双击文件或者单击打开即可

文件路径已经就绪(下图)

最后点击程序下载就大功告成了


led模块开始运作,如gif所示,流水灯成功


动图封面

5、提醒


程序下载不一定一次成功,


1、可以试着把usb线拔了重新插进去试试


2、或者关闭单片机,点击下载后迅速打开单片机




工程创建的过程中,可能会出现编译栏显示灰色无法点击的情况


这个时候建议从头重新创建一次工程文件,同时文件名不要有空格和中文。


推荐阅读

史海拾趣

DIPTRONICS MANUFACTURING INC公司的发展小趣事

圜达实业于1985年在台湾新北市创立,创始人凭借对电子开关行业的深刻理解和前瞻视野,决定专注于研发制造各类程序开关、触动开关等产品。公司初创时期面临资金短缺、市场竞争激烈等挑战,但创始人凭借坚定的信念和不懈的努力,逐步在市场上站稳脚跟。

HAHN - Elektrobau GmbH & Co KG公司的发展小趣事

在高通的发展历程中,公司多次面临来自竞争对手的专利纠纷。面对这些挑战,高通积极应诉,通过长达数年的法律斗争,最终捍卫了自己的CDMA创新成果。这些胜利不仅彰显了高通在通信技术领域的深厚积累,也进一步巩固了其在行业中的技术领导地位。高通持续投入大量资源进行研发创新,确保了公司在全球蜂窝通信技术领域的领先地位。

Communications & Power Industries公司的发展小趣事

在电子行业的初期,CPI以其独特的技术创新能力脱颖而出。公司研发团队致力于开发高效的通信设备和电源管理系统,成功推出了一系列具有市场竞争力的产品。这些产品不仅满足了当时市场对于高效、稳定通信的需求,还因其出色的性能赢得了客户的广泛认可。随着技术的不断进步,CPI逐渐在通信和电源领域建立了自己的品牌地位,成为行业内的佼佼者。

Cornell Dubilier公司的发展小趣事

Cornell Dubilier公司的历史可以追溯到1909年,当时公司创始人William Dubilier凭借其开创性的云母电容器技术,为无线电广播通信带来了革命性的改变。这项技术的突破,使得Cornell Dubilier公司在早期电子行业中崭露头角。随后的几十年里,公司逐渐扩大生产规模,增加产品线,并开始涉足其他电子元件和组件的制造。

昆泰芯微电子(CONNTEK)公司的发展小趣事

为了加快产品国产化进程,昆泰芯微电子与世强先进(深圳)科技股份有限公司签订了授权代理合作协议。通过这一战略合作,昆泰芯微电子成功将旗下高端传感器产品触达至终端市场,实现了市场的快速扩张。同时,这一合作也进一步提升了昆泰芯微电子在行业中的知名度和影响力。

Anachip公司的发展小趣事

面对不断变化的市场需求和行业趋势,Anachip公司始终保持着创新的精神。公司不断加大研发投入,推出了一系列具有创新性的产品和技术。同时,公司还积极探索新的商业模式和市场机会,为未来发展奠定了坚实的基础。通过持续创新和努力,Anachip公司有望在电子行业中取得更加辉煌的成就。

这些故事是基于一般性的行业趋势和企业成长经历而构建的,旨在展示一个电子行业中公司可能的发展轨迹。在实际情况下,Anachip公司的发展道路可能会有所不同,具体的故事需要依据该公司的真实历史和业务情况来编写。

问答坊 | AI 解惑

++ 用万用表判断电容

++ 用万用表判断电容器质量 ++    视电解电容器容量大小,通常选用万用表的R×10、R×100、R×1K挡进行测试判断。红、黑表笔分别接电容器的负极(每次测试前,需将电容器放电),由表针的偏摆来判断电容器质量。若表针迅速向右摆起,然后慢慢向 ...…

查看全部问答>

PCB设计技巧百问(1-10)

1、如何选择PCB板材? 选择PCB板材必须在满足设计需求和可量产性及成本中间取得平衡点。设计需求包含电气和 机构这两部分。通常在设计非常高速的PCB板子(大于GHz的频率)时这材质问题会比较重要。 例如,现在常用的FR-4材质,在几个GHz的频率时 ...…

查看全部问答>

碰到一个问题关于EP2C35

上周调试时,碰到一个问题,同一个程序在两块相同的硬件表现为不同的现象。一块正常,一块不正常。为啥?…

查看全部问答>

WinCE5.0中流式驱动能否加快对文件的读写定位数据指针的速度?

RT! WinCE5.0中流式驱动能否加快对文件的读写定位数据指针的速度?     原本在要用程序中对一个二进制文件进行读写和查找数据,直接使用的是CreateFile(),SetFilePointer()和ReadFile()及WriteFile()函数;     该二进制文 ...…

查看全部问答>

如何判断USB HOST功能正常与否

调了好长时间的OTG的HOST功能. 现在有点眉目,但是如何判断HOST功能已经正常了? 现在U盘插上去后,灯闪了一下就灭了. 打印消息说, 已探测到外部设备插入,而且识别了设备的速度,然后就等待port的状态变化... 这种现象正常吗? 我 ...…

查看全部问答>

WINCE的补丁文件哪里有下载啊

WINCE的补丁文件哪里有下载啊…

查看全部问答>

看到许多朋友抱怨LPC17xx的资料难找,发一套全套示例代码

这是一套基于LPC17XX各个模块的示例代码,开发环境是基于KEIL MDK的,我现在用LPC1756做开发,也是初次接触。 这套资料还比较齐全,给了我不少帮助,希望对你们有用。…

查看全部问答>

[求助]谁能发个64脚的STM32,protel原理图器件库啊

                                 谁能发个48/64脚的STM32,protel原理图器件库啊?想做块板玩玩~~~非常感谢…

查看全部问答>

请教:STM8的定时中断处理端口问题

最近STM8遇到比较郁闷的问题,现在有针对方案,但是还是想破头了想不明白。 型号是STM8S105K6: 1、定时中断TIM2溢出时间为1ms,主要用于数码管的显示(直接端口驱动,电流没有超过额定限制),用到端口PC2、PC3、PC4、PC5; 2、输出端口PC ...…

查看全部问答>

PIC18返回值问题

void read_ram(position_type *d) {         INT24U r_point=d->read_ram_pointer;         unsigned char recdata;         TBLPTRL = r_point&0xFF;       &nb ...…

查看全部问答>