单片机的引脚,你都清楚吗?

第1课:单片机简叙

1.单片机可以做什么?

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。小到电话,玩具,手机,各类刷卡机,电脑键盘,彩电,冰箱,空调,电磁炉,大到汽车,工业自动控制,机器人,导弹导航装置,甚至是美国的火星车,这些设备里面都含有一个或者多个单片机 。单片机的数量不仅远超过PC机,甚至比人类的数量还要多。因此,单片机的学习、开发与应用将造就一大批软硬件工程师。

2. 学习单片机需要哪些基本条件?

模拟电路,数字电路基础,对C语言或汇编语言有一定的了解。当然,这些也可以在学习过程中掌握。对此这套教程均有讲解.

硬件条件的话:电脑一台,实验开发平台一套。

3、单片机的结构

一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片机。

单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。

天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。

不,价格并不高,从1元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。

为什么会这样呢?

功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。

既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要动用一台台式电脑不成?应用的关键是看是否够用,是否有很好的性能价格比。所以8051出来十多年,依然没有被淘汰,还在不断的发展中。

4、MCS51单片机和8051、8031、89C51等的关系

我们平常老是讲8051,又有什么8031,现在又有89C51,89s51它们之间究竟是什么关系?

MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。

INTEL公司将MCS51的核心技术授权(卖)给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,以后我们将用89C51单片机来完成一系列的教学实验。如有错误请在本文评论中批评指正.

5.该学汇编还是学C语言?

掌握用C语言单片机编程很重要,毕竟C容易写,可读性强,可移植性强。但是光会C语言也还是不够的,你还得了解汇编,实际上不是了解汇编指令,而是为了了解单片机的体系结构。可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者,所以我以为学习单片机,先学点汇编是必要的,但在以后的开发中主要用C语言,所以本系列教程将兼顾汇编和c两种语言.

 第2课:单片机引脚介绍

单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

⒈ 电源:

⑴ VCC - 芯片电源,接+5V;
⑵ VSS - 接地端;

⒉ 时钟:

XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

⒊ 控制线:

控制线共有4根

⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲

① ALE功能:用来锁存P0口送出的低8位地址
② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

⑵ PSEN:外ROM读选通信号

⑶ RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。

⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。

① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线

80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。

1、 电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。 


2、 振蒎电路:单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶体震荡器,电容,连上就能了,按图1接上即可。 


3、 复位管脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。 


4、 EA管脚:EA管脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。

我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个管脚相连,不然单片机就没法控制它了,那么和哪个管脚相连呢?单片机上除了刚才用掉的5个管脚,还有35个,我们将这个LED和1脚相连。(见图1,其中R1是限流电阻)

按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。因此要1脚我们要能够控制,也就是说,我们要能够让1管脚按要求变为高或低电平。即然我们要控制1脚,就得给它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51芯片的INTEL公司已经起好了,就叫它P1.0,这是规定,不能由我们来更改。


图1

名字有了,我们又怎样让它变'高'或变'低'呢?叫人做事,说一声就能,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。让一个管脚输出高电平的指令是SETB,让一个管脚输出低电平的指令是CLR。因此,我们要P1.0输出高电平,只要写SETB P1.0,要P1.0输出低电平,只要写 CLR P1.0就能了。

现在我们已经有办法让计算机去将P10输出高或低电平了,但是我们怎样才能计算机执行这条指令呢?总不能也对计算机也说一声了事吧。要解决这个问题,还得有几步要走。

第一,计算机看不懂SETB CLR之类的指令,我们得把指令翻译成计算机能懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东西——数字。因此我们得把SETB P1.0变为(D2H,90H ),把CLR P1.0变为 (C2H,90H ),至于为什么是这两个数字,这也是由51芯片的设计者--INTEL规定的,我们不去研究。

第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具"编程器"。如果你还不知道是什么是编程器,我来介绍一下,就是把你在电脑上写出来来的代码用汇编器等编译器生成的一个目标烧写到单片机的eprom里面去的工具,80c51这种类型的单片机编程是一件很麻烦的事情,必要要先装到编程器上编程后才能在设备上使用,而目前最新的AT89s51或者STC89C51单片机能支持在线编程(isp)功能,不用拔出来利用简单的电路就可以实现把代码写入单片机内部。

下面我们来实战一下:下图(图2)所示的软件名字叫keil —>点此下载,是用来编写程序代码并生成一个可以写入到单片机芯片的Hex文件(我们人要控制单片机只能用汇编语言或者C语言而单片机不认识怎么办呢?所以keil这个软件就把程序语言转换成了一种特定格式的Hex文件,只要把这个文件下载到单片机芯片单片机就会按我们程序的思路来运行)


图2 (keil编程软件)


图3(下载软件)

好了…… ,我们把 SETB P1.0 这条汇编语句用keil软件编译生成Hex文件,然后用图3所示的软件和图1所示的硬件(用串口连接电脑)下载到我们已经做好的电路板上的单片机芯片里去(图省事的话建议直接买个开发板),然后接通电源……什么?灯不亮?这就对了,因为我们写进去的指令就是让P10输出高电平,灯当然不亮,要是亮就错了。所以要将keil编缉区的内容改为CLR P1.0,重新编译生成Hex文件,重新下载,接电,好,灯亮了。因为我们写入的Hex就是让P10输出低电平的指令。这样我们看到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就能改变电路的输出效果。

END

推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Graphviz的安装及纠错

在Anaconda Prompt里边输入conda install graphviz 安装成功之后输入pip install graphviz 它会提示成功安装。 启动 Jupyter Notebook ,在文件里边输入 import graphviz 测试,如果没有报错证明,模块安装成功,但是在运行程序…

sklearn——决策树

总结sklearn决策树的使用,方便以后查阅。1.分类决策树 (基于CART树) 原型:参数:2、回归分类树 原型:参数:3、export_graphviz 当训练完毕一颗决策树时,可以通过sklearn.tree.expor…

Linux下SVN服务器的搭建

Linux下SVN服务器的搭建 宗旨:技术的学习是有限的,分享的精神是无限的。 1、下载工具(下载地址:) subversion-1.6.1.tar.gz subversion-deps-1.6.1.tar.gz 2、解压两个包: a) tar -xzvf subvers…

记一次解决问题的掉坑过程

这两天在调试一个音频ADC 芯片,也是之前的项目,但是一直调不出来,我发现我总是在这样的问题上纠结很久,以前踩过的坑后面照样会踩,只不过踩完会迅速把脚拉出来继续前进,我经常听到有人说「做嵌入式真的太容…

sklearn——AdaBoost应用

选自《python大战机器学习》

面试常见的C语言字符串操作

#字符串倒序输出实现逻辑,通过strlen获取字符串长度,然后通过 len/2 进行交叉赋值,这里需要注意,不需要考虑len是奇数还是偶数的问题。如果len是奇数,最后一个字符就不需要倒序,如果是偶数,最后…

HttpHandler:给指定路径下的图片添加水印显示

圣诞节,25日,要交ACCP5.0认证的项目,其中有这样一个要求:书店的所有图书的封面放在了\images\convers\下面,要求所有引用这一路径下的图片都添加书店的店名水印图片。就是说拦截Http请求了,自然想到HttpHan…

Linux 下的复制命令,这几个比较靠谱

平时我们使用Linux复制命令的时候,一般使用 cp命令,但是cp 命令性能比较令人担忧使用tar 命令来拷贝大量文件通过对比下面的几个命令,在拷贝比较多而且比较大的文件的话,用git clone 比较靠谱,特别是复制代码库&#x…

Mendeley文献管理软件使用介绍

<!DOCTYPE html>New DocumentMendeley 是一款免费的跨平台文献管理软件&#xff0c;同时也是一个在线的学术社交网络平台。Mendeley 对 PDF、Bibtex 的支持非常好&#xff0c;可以直接导出 Bibtex 格式&#xff0c;还可以直接导入zotero数据库&#xff0c;决定了其兼容性…

过拟合问题——正则化方法

看了很多资料&#xff0c;本身想放一个正则化的概念的&#xff0c;实在不敢放&#xff0c;怕吓跑一堆人&#xff0c;所以&#xff0c;将就吧。首先&#xff0c;我们知道正则化&#xff08;Regularization&#xff09;是解决过拟合问题的&#xff0c;简单来说&#xff0c;过拟合…

CentOS 8明年正式停止维护,以后再也不会有免费的RHEL了!

CentOS 8 明年正式停止维护&#xff0c;以后再也不会有免费的 RHEL 了!CentOS 是 Community Enterprise Operating System&#xff08;社区企业操作系统&#xff09;的首字母缩写&#xff0c;是 100&#xff05; 重建的 RHEL&#xff08;红帽企业 Linux&#xff09;。尽管 RHEL…

Python sqlalchemy orm 多外键关联

多外键关联 注&#xff1a;在两个表之间进行多外键链接 如图&#xff1a; 案例&#xff1a; # 创建两张表并添加外键主键 # 调用Column创建字段 加类型 from sqlalchemy import Integer, ForeignKey, String, Column# 调用基类Base from sqlalchemy.ext.declarative import dec…

将DataFrame格式的数据存入到mysql数据库中

因为最近频繁操作数据库&#xff0c;特别是写入数据比较麻烦。在DataFrame格式或者是Series格式的数据处理之后&#xff0c;总是会面临写入数据&#xff0c;迫不得已只能进行格式转换&#xff0c;搜索过程中发现了to_sql&#xff08;&#xff09;函数&#xff0c;就百度了用法&…

从小米智能家居入手,揭秘物联网关键技术

物联网已不知不觉融入我们的生活中给我们带来便捷&#xff0c;比如&#xff0c;智能门锁、ETC 电子自动收费系统等&#xff0c;一开始感觉还挺很新奇的&#xff0c;现在也习以为常了。那到底什么是物联网&#xff1f;可能很多人还挺蒙圈的。所谓物联网&#xff0c;最终目的就是…

Orange——The Data

The Data 这个部分描述的是怎样在Orange上加载数据。我们也将展示如何探索数据&#xff0c;发现一些基本统计特性&#xff0c;怎么数据取样。 Data Input Orange可以读取本机以制表符分隔的格式的文件&#xff0c;也可以从任何主要的标准电子表格文件类型加载数据&#xff0…

[转载]VirtualBox网络配置详解

标题: [原创]VirtualBox网络配置详解来自 http://www.linuxsir.org/bbs/showthread.php?p1800679#post1800679 欢迎转载, 转载请注明作者, 谢谢下面简单介绍一下Test-bed Environment:Host : 偶的本本OS : Arch Linux (Kernel Version 2.6.20) 已安装uml_utilities(包含tunctl…

工作4年工资8K,还有什么理由不努力?

—— 提问发哥&#xff0c;我现在还是从事裸机开发&#xff0c;51单片机&#xff0c;会点arm&#xff0c;但没有用arm真正做完整开发的经验&#xff0c;细想感觉自己会的不是很多&#xff0c;薪资提不上去&#xff0c;想做更高级点的工作&#xff0c;虽然自学点&#xff0c;到没…

嵌入式的坑在哪方面?

在知乎看到的&#xff0c;觉得见解不错&#xff0c;看完我觉得会对嵌入式有些见解&#xff0c;分享给大家。今年毕业刚工作半年&#xff0c;稍微写一下自己的见解。嵌入式就个万金油&#xff01;干得活可以涉及硬件和软件&#xff01;永远学不完的知识。嵌入式工程师简直就是硬…

Orange-Classification,Regression

1.Classification Orange和sklearn一样&#xff0c;提供了Classification和Regression等机器学习的算法&#xff0c;具体使用如下&#xff1a; import Orangedata Orange.data.Table("voting") lr Orange.classification.LogisticRegressionLearner() rf Orange…

再见,杀毒软件之父,王江民!

王江民&#xff0c;中国最早的反病毒专家&#xff0c;被业界尊称“中国杀毒软件之父”、“中国反病毒第一人。以38岁为分界&#xff0c;王江民的前半生&#xff0c;是中国青年身残志坚的楷模&#xff0c;他的后半生是中国安全软件的奠基人&#xff0c;带领中国商用软件第一个走…