历史上的今天
今天是:2025年08月06日(星期三)
2021年08月06日 | 51单片机之最简系统
2021-08-06 来源:eefocus
电源
这个就不需要太多解释了,没有电源是不可能正常工作的。关键问题在于单片机需要什么样的电源,又应该接在什么那个管脚(引脚)上?见下图:

通常我们给一个芯片的管管脚标序号时,使半圆形缺口朝上,逆时针从1开始,依次编号(不仅仅是单片机,很多的芯片都是这样给管脚标序号的)。对于STC89C51RC系列的5V的单片机,供电范围在5.5V-3.3V;3V的单片机,供电范围在3.8V-2.0V(这些信息都可以在官网的数据手册中查到)。针对于常用的5V单片机,电脑的USB口刚好就是5V的,通过下载电路就能供电了,而3V的单片机,下载器也有对应的电源接口。
如果我们制作自己的作品的时候,考虑到需要用电池供电,我们就不得不自己设计一下我们整套的电源电路,如果使用市面上常见的1.5V干电池,大概需要的3节(4.5V),如果用像18650这种的锂电池(4.2V-3.7V),一节就够了。当然了,这只是考虑到单片机的供电,有些模块如果需要3.3V的电压,就需要用到像ASM1117这种的稳压器了。

时钟信号
为什么需要它
说到这个,就不得不举一些例子了。军队行军的时候,需要一个领队的来喊口令,“121”,这样才会是每个人的步伐一致,上下一心。同样的道理,单片机执行命令的时候,可能部分电路任务简单,执行的快,有的电路任务重,执行的慢。这就需要有一个信号来把所有的士兵们统一起来,这个信号就叫时钟信号。可想而知,时钟信号的频率决定了单片机的速度,STC89C51系列的单片机甚至支持0~80M的时钟频率(查手册就可以知道)。
晶体or晶振
这的确是两个很容易搞混的概念,有时候有对这两个概念不加区分,其实晶体才是我们常说的那个东西,具体信息可以参考这篇文章
https://blog.csdn.net/tq384998430/article/details/53905584
在电路中通常是这样设计的(官方手册中的)

两个小竖线便是电容(陶瓷的),中间那个表示晶体。关于这些参数选择都已查找相应的手册。
三个周期
时钟周期:也就是振荡周期,指的是始时钟频率的倒数。
机器周期:单片机完成一项基本操作(取指令,读寄存器等)需要若干个时钟周期。在12T模式下,一个机器周期包含了12时钟周期:在6T模式下,一个机器周期包含了6个机器周期。STC12/15系列还支持1T模式。
指令周期:一条基本的汇编指令的指令周期包含若干个机器周期。比如一个简单的空指令(nop)就只需要一个机器周期,计数器也是每隔一个机器周期加1。但是其他的指令可能会包含2个或者更多机器周期。
注意:这里说的一条指令并不等同于C语言里面的一条语句。实际上C语言的一条语句编译后是好几条汇编语句。
一个简单的延时程序
接下来我们来一个计算。如果单片机需要1s的延时(比如说让某个LED亮1秒,灭1秒),我们怎么通过程序实现呢?
有两种方法,我们先讲一种简单的(另一种我们在讲定时器时再说):
假设我们使用的是12Mhz的晶体,那么
时钟周期

机器周期(12T模式)

指令周期
对于nop空指令,只占用一个机器周期,也就是1us。那我们立刻想到,需要延时1s的话,那我们用1 000 000个空指令不就行了么。确实是这样的,但是你想想一个延时塞一百万个空指令也太2了,估计会被后来人好好的嘲笑一番。机智的小伙子立马想到,这太简单了,用循环不就搞定了么。确实需要循环,但有一点问题,一个循环到底包含多少条指令我们是不知道的,这就需要借助STC提供的烧录工具了,对于软件延时,这个软件能够精确地帮你计算好,甚至连误差都有,并提供C代码(简直是神器)。
但是在选择的时候,注意晶振的选择,还有适用于STC89C52单片机的指令集的选择。

也有可能你会遇到这种问题,这一个函数_nop_()无法识别。你需要在头文件加上#include 复位电路 在接上电源的时候,我们希望程序从最开始的地方执行,这是一个很朴素的愿望。或者有时候程序卡住了,我们希望从头开始,这就牵扯到复位的问题。这两种复位的方式通常称为上电复位,按键复位。单片机的9号引脚(RST,reset)就是用来复位的,当这个引脚接收到一定时间的高电平时,就会复位。 可以用以下电路实现 其中原理可以这样解释:在接通电源瞬间,电容相当于导通,此时RST引脚为高电平,然后电容充电,RST引脚的电压逐渐降低,充电完成,电容相当于断开,RST始终为低电平。 当电容并联上一个按键时,按下按键,RST也能达到高电平,同样起到了复位的作用。 外部程序存储器访问控制 附录 最后,补上我提到过N次的数据手册: http://www.stcmcudata.com/datasheet/STC89C52.pdf 


上一篇:51单片机之UART
下一篇:51单片机之输入输出
史海拾趣
|
公司里有一台电脑,想做为服务器,只装linux操作系统 是否可能像windows 一样(c:系统盘;d:是数据盘),使我的启动分区与数据分开,但系统出现问题时,即使重装系统,我硬备上的数据区的数据仍存在? 如果可以,如何来实现? 望各位帮帮忙,感 ...… 查看全部问答> |
|
请大虾们帮个忙 Quartus :ERROR【10028】【10029】&Can't elaborate top-level user hierarchy RT 我做的是程序计数器PC.V 以下附源代码和错误 `include \"Defines.v\" module pc (rst, clk, pc_out, alu, pc_wr_sel, op1, op2, op3, wr, rd, int); // rst reset // clk &nbs ...… 查看全部问答> |
|
我刚下了个proteus 7.4 破解版的,安装完后就是运行不了一运行就是什么电脑上找不到isis的lxk文件的?哪位大侠给小弟指点指点吧!!!!… 查看全部问答> |
|
嵌入式开发,要对USB设备进行管理。在linux 2.4 下插入USB设备可以从系统配置文件/proc/scsi/usb-storage*/* 中读出USB设备的插入状态,该文件最好一行Attached为yes就是已经插上USB设备了,若为no就是没有插上。现在linux 2.6下,并没 ...… 查看全部问答> |
|
我在wince里添加了bluetooth pan profile,如何实现bluetooth pan:我的xp上连接了usb的蓝牙适配器,wince上连接csr的蓝牙,我想把xp和wince连接起来,能相互ping到对方,并实现共享上网?请大家帮忙了 … 查看全部问答> |
|
用CreateFile打开设备遇到ERROR_OPERATION_ABORTED 打开一个手机上的GSM Phone USB Modem。 每次刚热拔插的第一次可以正常打开。 但是之后再次打开就可能遇到 ERROR_OPERATION_ABORTED的错误了。 此时在设备管理器中的该设备属性对话框\"诊断\"标签中,点击\"查询调制解调器\",弹出报错\"...无 ...… 查看全部问答> |
|
【连载】【ALIENTEK MiniSTM32 开发板】STM32不完全手册--按键输入实验(实验二) ALIENTEK开发板购买地址:http://shop62103354.taobao.com/ [ 本帖最后由 正点原子 于 2010-8-30 09:35 编辑 ]… 查看全部问答> |




