⑴ c51单片机复位电路的工作原理
51单片机复位电路工作原理之我理解
一、复位电路的用途
单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
二、复位电路的工作原理
在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢?
在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。
开机的时候为什么为复位
在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。
也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。
按键按下的时候为什么会复位
在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。
总结:
1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。
2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。
⑵ c51单片机 在矩阵键盘松手检测的原理是什么为什么要加松手程序不加又会怎样谢谢!
因为单片机运行速度很快,你按下的按键瞬间,单片机就可以执行数万调指令了,如果不加任何处理,可能就会误判你的按键,如果不加松手程序,那可能会因为按键的机械问题造成的弹跳被误判成好几个按键
⑶ c51单片机复位电路的工作原理
如S22复位键按下时:RST经1k电阻接VCC,获得10k电阻上所分得电压,形成高电平,进入“复位状态”
当S22复位键断开时:RST经10k电阻接地,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作
(3)c51单片机原扩展阅读:
复位电路是一种用来使电路恢复到起始状态的电路设备,它的操作原理与计算器有着异曲同工之妙,只是启动原理和手段有所不同。复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。
和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。一是在给电握绝路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。复位电路都是比较简单的大都是只有电阻和电容猜行组合就可以办到了,再复杂点就有三极管等配合程序来进行了。
单片机复位电路主要有四种类型:
(1)微分型复位电路:
(2)积分型复位电路:
(3)比较器型复位电路:
比较器型复位电路的基本原理。上电复位时,由于组成了一个RC低通网络,所以比较器的正相输入端的电压比负相端输入电压延迟一定时间.而比较器的负相端网络的时间常数远远小于正相端RC网络的时间常数。
因此在正端电压还没有超过负端电压时,比较器输出低电平,经反相器后产生高电平.复位脉冲的宽度主要取决于正常电压上升的速度.由于负端电压放电回路时间常数较大,因此对电源电压的波动不敏感.但是容易产生以下二种不利现象:
(1)电源二次开关间隔太短时,复位不可靠:
(2)当电源电压中有浪涌现象时,可能在浪涌消失后不能产生复位脉冲。
为此,将改进比较器重定电路,如图9所示.这个改进电路可以消除第一种现象,并减少第二种现象的产生.为了彻底消除这二种现象,可以利用数字逻辑的方法和比较器配合,设计的比较器穗皮哗重定电路。此电路稍加改进即可作为上电复位和看门狗复位电路共同复位的电路,大大提高了复位的可靠性。
⑷ 51单片机的编程问题
1:C51编译器如何区分位地址和字节地址
是靠预定义实现的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者声明了P0端口地址位于0x80,后者说明了P0端口的bit0,即P0.0位于位地址空间0x80处。这2个0x80具有完全不同的含义,靠关键字sfr和sbit来区别。这样当程序被编译时,编译器会依此编译成相应的汇编语言。例如:
C51语句: P0 = 1;
P0声明为sfr,因此编译成:mov 80h,01h,将把0x01数据送入0x80单元,由于0x80单元物理上对应P0端口,因此,P0.0脚将输出高电平(其实是呈现高阻态,P0口独有的),其他.1-.7脚输出低电平。
C51语句: P0_0 = 1;
P0_0声明为sbit,因此编译成:setb 80h,这将把位地址空间的0x80地址的bit的值置1。这个位正是P0口的bit0,执行后,P0.0将输出高阻态。而P0.1-.7不会变化。
2:C51为什么要嵌套汇编
51单片机一个显着优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合ISO7816协议的cpu卡的读写,对时序要求比较严格。其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就带来几个问题:如何声明函数、参数如何传递等。限于篇幅,不能说得很细。下面举例:
汇编程序单独保存一个文件,加入到工程中,函数如下:
_proc_a:
mov a, r7
inc a
mov r7, a
ret
用c语言在.h文件中声明: extern unsigned char proc_a(unsigned char val);
调用时形如: retvalue = proc_a(0x11);
说明:
a:汇编程序如果带参数,则需要在汇编程序前多加一个下划线。而声明它的地方不用加(伟福编译器这么要求的)。
b:函数的形参中第一参数用R7传递,函数返回值用R7返回,这是C51的通用规范。其他参数都有相应规定。函数可以返回一个位,用psw的c位返回。c:上面的语句,执行顺序是把0x11给R7,然后跳转子程序,子程序将它加1后送回。
d:函数跳转到汇编程序时,本区的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考虑调用后是否要恢复这些常规资源。上例中,A的值被函数使用了,编程者不必恢复调用前的值。
⑸ c51单片机原理及应用重点
1、单片机内部资源
STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源
(1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢
(2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用
(3)SFR —— 特殊功能寄存器
2、单片机最小系统
51单片机的内部组成及应用原理解析
最小系统:最少组件组成单片机可以工作的系统。
三要素:
(1)、 电源电路:5V
(2)、 晶振电路:11.0592MHZ、两个30PF
(3)、 复位电路:
P0:开漏输出,必须加上拉电阻
准双向口:
强推挽输出:电流驱动能力强
高阻态
上下拉电阻:上拉电路就是将不确定的信号通过一个电阻拉到高电平,同时限流作用。下拉电阻就是下拉到低电平。
上下拉电阻选取:从降低功耗方面考虑应该足够大,因为电阻越大,电流越小;驱动能力来看,小电阻
3、硬件基础知识
(1)、电磁干扰(EMI)——静电放电(ESD)、快速瞬间脉冲群(EFT)、浪涌(Surge)
(2)、去耦电容的使用
低频滤波电容,平常应用最多的事钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。
高频滤波电容,电容附近,通常用104电容来进行去除高频干扰。
(3)、三极管(PNP,NPN) b,c,e --- 电压驱动
控制应用
驱动应用
4、LED发光二极管——电流驱动
51单片机的内部组成及应用原理解析
通常红色贴片LED, 靠电流驱动,电压1.8V~2.2V,电流1~20mA,在1~5mA亮度有所变化,5mA以上亮度基本不变。
VCC 电压是 5V,发光二极管自
身压降大概是 2V,那么在右边 R34 这个电阻上承受的电压就是 3V。
R = U/I —— 1~20mA —— R:150~3K
5、C语言基础
(1)、基本运算符
+ - * / % ++ -- = == != += -= 《《 》》
⑹ 51单片机“上电/按键复位电路”的原理及其电容C的作用
我认为说法1正确:51单片机是高电平复位,所以先看给单片机加5V电源(上电)启动时的情况:这时电容充电相当于短路,你可以认为RST上的电压就是VCC,这是单片机就是复位状态。随着时间推移电容两端电压升高,即造成RST上的电压降低,当低至阈值电压时,即完成复位过程。
如果按下SW,的确就是按钮把C短路了,这时电容放电,两端电压都是VCC,即RST引脚电压为VCC,如果超过规定的复位时间,单片机就复位了。当按钮弹起后,RST引脚的电压为0,单片机处于运行状态。
51单片机复位要求是:RST上加高电平时间大于2个机器周期,你用的12MHz晶振,所以一个机器周期就是1us,要复位就加2us的高电平即可。
图中的RC常数是51K×1uF=51ms,即51毫秒,这个常数足够大了。
⑺ (51单片机)那个大佬给讲解一下这个延时函数
在C51程序中,我们常会使用宏定义来简化代码,比如将定义为unsigned int。这里有一个16位整型的形参变量,它实际上是一个宏定义的结果,而非C51固有的变量类型。
延时函数的基本原理是利用循环体来实现的,具体来说,就是使用while循环,通过变量自减,直到其值变为0,循环结束。这样的操作会消耗一定的时间,从而达到延时的效果。
延时函数通常的实现方式是这样的:
c
while(i--);
这里的`i--`表示将变量`i`减1,然后判断`i`是否等于0,如果不等于0,则继续循环。这个过程会重复执行直到`i`减至0,循环结束,整个过程就是一次延时。
需要注意的是,延时的时间长短取决于循环体内代码的执行速度,如果循环体内的操作越多,延时时间就越长。因此,我们可以通过调整循环体内的操作来控制延时的长短。
总结来说,通过利用循环来实现延时,是C51编程中常见的技术手段之一。
⑻ C51单片机对位寻址的原理和编程方法
原理:
位寻址是一种使用单片机实现程序控制位逻辑操作的方法,通过一系列指令在单字节的内存空间中的一个特定的位 (bit 位) 上进行操作。它用于控制乱拿只有两状态的I/O端口。
编程方法:
1. 用 ORL A, #data 命令将某个指定的位置位,即把单字节内部某个指定的位置1。
2. 用 ANL A, #data 命令清除某个指定衡槐的位置位,即咐陪友把单字节内部某个指定的位置0。
3. 用 CLR C 命令将某个指定的位置位清零,即把单字节内指定的位置置零。
4. 用 MOV C, bit 命令将某个指定的位置位置1,即把单字节内部某个指定的位置1。