目前,单片机型号种类繁多,以其优越的控制性能在自动化控制领域占有重要地位。如今单片机无处不在,像我们的电冰箱、空调、洗衣机都是单片机在内部控制,当然,他们所用的单片机是定制的,并不是我们学习时使用的单片机。除此不同品牌的单片机芯片采用的内核也会不同,比如INTEL公司的MCS-51内核(代表芯片:AT89系列、国产STC系列等),ARM公司的高性能”Cortex-M3”内核(代表芯片:STM32系列)等。因为内核的差异,使得他们在使用中也会有所不同。
对于初学者来说,51单片机中的STC89C52是很不错的选择,因为它便宜(单片价格在8RMB左右),而且相对容易学习。接下来将以这款芯片为例介绍51单片机。
![图片](https://mmbiz.qpic.cn/mmbiz_jpg/Px0x0xOsMVYtRiaptO9smicSJgxvy60V2QAxC1gRj5JBuBMpN1srJ1tNg6NcjNg25ZnNERIxh3iaKIfzZlHXNCvmQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
首先简单介绍这款芯片:
1.STC89C52是STC公司(中国深圳宏晶科技公司)生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器(8K对单片机来说不小了,当然不能跟我们的手机比),使用MCS-51内核,指令代码完全兼容传统8051。
2.工作电压范围很广(这里只介绍5V版本),在3.3V~5.5V之间都能工作,但是电压越高,工作电流也会更大,通俗的说,如果用单片机点亮一颗LED灯,使用5.5V供电,灯的亮度要比3.3V供电时亮,耗电也会更多。
3.通用I/O 口(4x8=32个),复位后为:P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为 I/O 口用时,需加上拉电阻。(除非某I/0口置零,否则它就输出高电平)
4.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz,其工作频率取决于晶振频率,我们常用的是12MHz、11.0592MHz。
5.ISP(在系统可编程)/IAP(在应用可编程),可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序。在学习过程中,我们只要使用ISP即可,也就是制作好电路板之后,只要把RxD/P3.0,TxD/P3.1通过排针引出来,我们就可以通过USB-TTL把程序烧录到单片机,不需要再把单片机芯片从系统板上取出来。
6.共3 个16 位定时器/计数器。即定时器T0、T1、T2
首先需要了解这款芯片的引脚图,才能根据引脚连接各种元件。(暂时只标注常用的的功能)
接下来详细探讨各模块:
** 1,I/O口**
I/O口即输入输出口,是单片机用来输出或者输入信号的端口。STC89C52共有四组(P0、P1、P2、P3),每组8个(每组I/O口能同时输出8位二进制数。其CPU计算时的数据宽度正好也是八位,所以该芯片为8位控制器),共32个I/O口。
单片机所有I/O口默认状态都是高点平,除非在程序里将其置0,这样的设定可以让单片机运行更稳定。
通常,I/O口都会连接上拉电阻,其目的一是使单片机运行稳定,二是提高单片机驱动能力,即让单片机能控制更大的负载。上拉电阻我们常用阻值为10K的9P排阻即可(其大小在1~10K都可,电阻小可提高驱动能力,电阻大可以降低功耗)。它有9个引脚,一个为公共端,另外八个引脚与I/O口相连。其结构及接线图如下图所示。注意,除了上拉电阻,还有下拉电阻,上拉电阻的公共端是接VCC,下拉电阻的公共端是接GND。
2.时钟电路
这里的时钟并不是我们所说的钟表,而是指一种信号(理想的时钟信号就是矩形波,或者说脉冲波)。从数字电子技术中学习知道,在逻辑电路中,必须依靠时钟信号才能工作(例如触发器,每收到一个时钟信号,就动作一次),单片机其实就可以看成就是一个集成化的逻辑电路。所以我们需要外接时钟电路,来让单片机工作。
时钟电路的核心是晶振,它是一种可以产生稳定震荡频率的电子元件。它的基本参数是震荡频率,单位为MHz,其参数决定了单片机的工作频率。其数值一般刻在晶振元件上面。常用的单片机晶振主要有12.000MHz和11.0592MHz,当程序中使用了定时器,使用11.0592MHz晶振可以定时更准确。
时钟电路除了晶振还有两个瓷片电容(30pF),这两个电阻可以起到微调频率的作用。
晶振电路有两个端口XT1和XT2,将这两个端口分别与单片机的18脚(XTAL2)、19脚(XTAL1)相连即可为单片机提供时钟信号(这两个端口没有顺序,可以随意连接)。
3.复位电路
复位电路说白了就是用来重启单片机,使单片机初始化,重新开始执行程序。当单片机因程序问题出现故障(比如程序中出现不可控的死循环),可通过复位电路向单片机第9脚RET发送一个复位信号,单片机就可自行复位。这个复位信号是一个连续2个机器周期(24个时钟周期)的高电平。也就是单片机的RES脚如果连续两个机器周期都是被置于高电平,单片机就会自动复位。
所以最简单的复位电路就是上图所示。按下开关K,VCC接入单片机RST,两个机器周期后,单片机复位。(实际使用中,你按下按钮立刻松开,这段时间已经远超过两个机器周期,所以按下复位键不需要停顿再松开)如果一直按着复位键,单片机则不会进入工作状态,只有松开复位键单片机才开始工作。
一般来说,单片机上电以后自动从程序开头执行,所有寄存器也是初始值,上电之后立即执行程序本是没有问题的。但是在一些复杂的电路中,单片机的外接电路很多,有时候会有电容电感之类的,他们上电之后并不能立即进入工作状态,他们有个“充电”过程,虽然时间短,但是单片机执行一条指令是微秒级的,很容易让单片机误判,出现意想不到的错误。如何避免这种现象?
请设想:如果单片机上电之后,不立即进入工作状态,而是停顿“一会儿”,等其他元件充电完毕,再进入工作状态,那就可以躲开上电初期的不稳定因素,从而避免误判。
那如何实现这个停顿呢?这就依赖于复位电路的上电自动复位了。
上面是单片机常用的复位电路。
其原理涉及到电路原理中的KCL定律和一阶电路的零状态响应,不感兴趣可略过。
上电后,电解电容C1充电,其电压变化为 [式1],
而RET处的电位即对地电压,可以看到,电阻R9的电压在数值上正好等于RET的电位,
根据基尔霍夫电压定律,R9的电压=电源电压-电容C1电压,即,
式中的τ为时间常数,其值为τ=RC=1000X22/1000000=22ms,其电压变化曲线如图(简略绘制,仅供参考):
可以看到在很长一段时间里(其实不到20ms),Ur都保持在较高的电位,也就是RET为高电平(3.7V以上电压单片机都认为是高电平),在这段时间,足够单片机躲过上电初期的不稳定。当Ur的电压减小到不足以让单片机判定为高点平,复位失效,单片机工作。
可以看到这种复位电路也能手动复位,按下开关S1,电容C1通过R10放电,松开S1,电容C1又开始充电,其情形与上电复位相同,RET接收到高电平,单片机复位。
所以复位电路的作用一是开机自动复位,躲过上电时的不稳定;二是手动复位,在单片机运行出错时使用。
4.其他引脚
并行串口:第10、11脚是单片机的并行串口,作用就是烧录程序。注意这两脚是P3.0、P3.1复用了。烧录程序需要用到烧录工具USB-TTL。
实际的USB-TTL有很多型号,有的型号有10个引脚,但烧录程序只需用到四个(VCC、GND、RXD、TXD)。所以我们需要四根杜邦线,首先,将转换工具上的VCC、GND与单片机系统板的VCC、GND连接,然后把烧录工具的RXD与单片机的TXD连接,烧录工具的TXD与单片机的RXD连接。因为两个引脚一个是发送数据,一个是接收数据,转换工具发送数据(TXD),单片机自然是接收数据(RXD),反之同理。另外,烧录程序还需用到软件STC-ISP,这是专门用于STC系列单片机的烧录软件。
存储器选通:单片机的31脚是存储器选通EA,单片机内部存储空间很小,如果需要扩展空间,就需要用到这个功能。当EA置于高电平,单片机从内部存储器开始执行程序;当EA置于低电平,单片机则从外部存储器开始执行程序。对初学者来说,我们使用内部存储器就足够了,所以可以直接将EA接VCC。
同样,第30脚ALE为地址锁存信号,也是在有外部存储器是使用,不用时将其悬空即可;29脚PSEN为外部存储器读选通信号,同样将其悬空。另外的40脚、20脚分别接电源正极、负极(地)不用多说了。
-
微控制器
+关注
关注
48文章
7542浏览量
151309 -
存储器
+关注
关注
38文章
7484浏览量
163759 -
STC89C52
+关注
关注
41文章
330浏览量
82041 -
51单片机
+关注
关注
274文章
5702浏览量
123482
发布评论请先 登录
相关推荐
评论