【零基础】入门51单片机图文教程(Proteus+Keil)
参考资料:
https://www.jianshu.com/p/88dfc09e7403
https://blog.csdn.net/feit2417/article/details/80890218
零、前言
我一直认为看资料还不如先动手试试,在“做”的过程中“学”,先打下基础、建立兴趣,再戒骄戒躁好好看看书,搞明白一些常识。但是网上的教程往往都比较片面,要么给几张图、几段代码就算完事了,环境如何安装、细节小问题是怎么回事都讲的不是很详细,所以这篇文章就是要把每一步都讲的详细了,真正0基础也能看得懂、学的会,不用再去搜其他资料,真的手把手也就这个效果了。
一、准备
1 硬件:需要有一台电脑,笔记本、台式机都行
2 环境:请使用官方原版(不要用ghost、精简系统)的XP或WIN7,很多莫名其妙的问题都是缺少一些dll文件,所以一定要用官方原版的系统,若不想重装电脑可以使用VMware安装虚拟机。另外尽量使用32位的系统,毕竟这些软件都比较老了
3 软件:
1)Proteus 8.4 SP0
下载地址:http://www.ddooo.com/softdown/26979.htm 注意看破解方法,其中针对WIN7 X64有部分有误的地方:
1)第七步:正确路径可能是“C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional”,将破解包中的BIN目录覆盖到这里即可
2)第八步:正确路径可能是“C:\ProgramData\Labcenter Electronics\Proteus 8 Professional”,将破解包中的MODELS目录覆盖到这里即可
(不要修改默认安装位置,找不到正确路径的话可以搜索下“Proteus 8 Professional”这个关键词)
2)Proteus 8.4 汉化包
下载地址:本文末尾处
3)Keil 5
下载地址:http://www.ddooo.com/softdown/79273.htm 需要注意的是:
1)使用注册机生成注册码时,因为现在Keil 5是针对ARM的所以在注册机的Target栏需选择为ARM而不是C51
4)Keil 5 C51依赖包
下载地址:https://share.weiyun.com/5WSwsJv(密码:0000)
(Keil 5是默认不支持51单片机的,但是可以通过依赖包实现,安装和使用方法:https://blog.csdn.net/feit2417/article/details/80890218)
4 安装:按下载页面的方法安装好,如果安装过程中有什么问题,一定要注意你操作系统的版本,以及是否是原生系统
二、在proteus绘制硬件电路
这里我们只实现最简单的功能:点亮一个LED灯
1、打开proteus,点击首页的“新建工程”新建一个项目

2、在新建工程向导里依次操作如下:
1)输入项目名称、选择项目存储位置
2)原理图:DEFAULT

3)PCB布板设计:不创建

4)固件:没有固件的项目

5)点击“完成”按钮完成新项目的创建

3、在电路图中放置我们需要的三个器件:51单片机、LED灯、电源并连线
1)51单片机
在界面中点击“P”(P和L代表的是元件模式)

在元器件选择窗口中输入51单片机的型号进行搜索,关键字“C52”(51单片机的常用型号是AT89C52)。

选择需要的型号后点击右下角的“确认”按钮,然后将其放置到电路图中即可

2)LED
重复前面的操作,关键字改为“LED”即可,这里选择的是“LED-YELLOW”,将LED放到单片机旁边

3)电源
电源在界面左侧选择“终端模式”,然后找到POWER这个元件即是电源。将电源也拖到单片机旁边

4)连接电路
使用鼠标将LED一端与电源连接,另一端连接单片机的P0.1,要注意LED的方向不要接反了。

三、Keil编写控制代码
1、启动Keil
2、新建项目
1)点击“Project->New μVersion Project”
2)输入项目名称
3)在新窗口中Search关键字“C51”,找到Atmel下的AT89C51,点击OK按钮完成项目创建

3、添加代码文件
1)右键“Source Group 1”
2)点击下图中画红线的地方

3)新弹出的窗口中选择C File,Name栏输入“main”

4)在main.c中输入下述代码,然后保存(画红圈的地方)

4、生成HEX文件(单片机运行使用的文件格式)
1)右键左侧的Target按钮,选择Opention for Target 'Target 1'

2)新弹出的窗口中选择Output选项卡,把“Creat HEX File”勾上,点击OK按钮即可(这一步是设置程序编译时要输出HEX文件)

3)点击下图画红线的按钮,编译程序,注意下侧“Build Output”栏是否有提示错误,输出 0 Error即是OK了

4)找到生成的HEX文件备用(在项目目录下的Objects目录内)
四、Proteus仿真运行
1、导入HEX文件
1)再次打开Proteus,右键单片机,点击“编辑属性”按钮

2)新窗口中点击“Program File”会弹出寻找HEX文件的小窗口,找到前面生成的HEX文件

2、点击Proteus左下角的启动按钮,开始仿真

3、运行结果:LED灯被点亮啦!

五、思考
1、为什么代码中LED=0,电源要加在LED的一侧
实际上,代码中LED=1,电路中LED旋转180度,LED一侧接地而不是电源也可以将LED点亮。但一般不这么做,因为单片机启动时会进行初始化,初始化过程中各引脚会出现瞬间的通电、断电,如果LED一侧不接电源而接地,单片机初始化时会导致LED闪烁。
2、代码中引用的reg52.h是什么文件
C语言中.h是头文件,reg52.h是51单片机的通用头文件,里面是单片机的寄存器声明
六、相关资料
看完本文你就已经学会了如何使用Proteus+Keil进行51单片机的开发啦!不过这只是最最基础的内容,后面进阶的学习还需要你多多动手,不过毛大闲已经为你准备了后续学习的必备资料。
关注公众号“零基础爱学习”回复“51”可获得下面的资料
1、本文所述的Proteus8安装包、Proteus8汉化包、Keil5安装包、Keil5 C51支持包
2、上述软件安装方法的PDF文档
3、Proteus8中文使用手册
4、AT89C52中文说明书
5、51单片机入门实例(仿真电路图+C代码)
后续还会继续补充更多学习资料,敬请关注“零基础爱学习”!

【零基础】入门51单片机图文教程(Proteus+Keil)的更多相关文章
- Spring Boot 2.x零基础入门到高级实战教程
一.零基础快速入门SpringBoot2.0 1.SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2 ...
- 【Python教程】《零基础入门学习Python》(小甲鱼)
[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609
- WordPress安装:零基础入门教程
WordPress安装:零基础入门教程 1主机空间要求要运行 WordPress,主机空间需满足以下条件.不过现在网络上的空间基本都可以,而且还让你随意定制Php和Mysql版本,至于空间和数据库大小 ...
- 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程
点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...
- Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)
Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 【JAVA零基础入门系列】Day14 Java对象的克隆
今天要介绍一个概念,对象的克隆.本篇有一定难度,请先做好心理准备.看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充. 克隆,自然就是将对象重新复制一份,那为什么要用克隆呢 ...
- 零基础入门微信小程序开发
注:本文来源于:<零基础入门微信小程序开发> 课程介绍 本达人课是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件.页面样式文件.Ja ...
随机推荐
- ELECTRON 打包
安装electron-packager cnpm install electron-packager -g 配置package.json "scripts": { "st ...
- java之JVM学习--简单理解编译和运行的过程之概览
java代码编译流程图: java字节码执行由JVM执行引擎完成 Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 Java源码编译机制 Jav ...
- 2.3 使用 dom4j 对 xml文件进行 dom 解析
// 使用dom4j对XML文档进行解析 CRUD public class Demo1 { //读取XML文档中第二本书的书名 <书名>javaWEB</书名> @Test ...
- CHD-5.3.6集群上hive安装
解压过后: [hadoop@master CDH5.3.6]$ ls -rlttotal 8drwxr-xr-x. 17 hadoop hadoop 4096 Jun 2 16:07 hadoop- ...
- Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608
这个问题也是某天做一个上传文件功能发生的.然后在网上查找的资料,整理了这几个解决方案. 1.在application.yml文件中设置multipart location ,并重启项目 spring: ...
- Python Scrapy爬虫框架之初次使用
此篇博客为本人对小甲鱼的课程的总结. 关于Scrapy的安装网上都有方法,这里便不再叙述. 使用Scrapy抓取一个网站一共需要四个步骤: 0.创建一个Scrapy项目: 1.定义Item容器: 2. ...
- D. Happy Tree Party CodeForces 593D【树链剖分,树边权转点权】
Codeforces Round #329 (Div. 2) D. Happy Tree Party time limit per test 3 seconds memory limit per te ...
- 【记忆化搜索/数位DP】zznu2175(长度为n的含有ACM的字符串)
随机字符串 题目描述 起名字什么的最麻烦,我们来生成一些随机字符串吧 生成的字符串当然是有要求的: .长度不能超过n .字符串中仅包含大写字母 .生成的字符串必须包含字符串“ACM” ok,是不是很简 ...
- R的数据结构--向量
向量:用于存储数值型.字符型或逻辑型数据的一维数组,只可以包含一种数据 向量的创建与运算 创建向量 # 创建简单向量 l <- c(2, 2, 1, 3, 8) # [1] 2 2 1 3 8 ...
- echarts自定义折线图横坐标时间间隔踩坑总结
折线图需求:横坐标为时间,要求按一定间隔展示,鼠标移至折线上间隔时间内的数据也可展示 其实很简单的一个配置就可搞定,但在不熟悉echarts配置的情况下,就很懵逼 xAxis: { boundaryG ...