㈠ 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毫秒,这个常数足够大了。
㈡ 单片机 中 IT0=1; EX0=0 是什么意思,用在什么时候
51单片机的IT0位是控制外部中断0的触发方式的。
外部中断0触发方式控制位,1表示边沿触发,0表示电平触发。
如果IT0设置为0,则外部中断0引脚被拉至低电平即可引发外部中断。
如果IT0设置为1,则外部中断0引脚需要检测到下降沿才能引发外部中断。
EX0是外部中断0的使能控制位,如果EX0设置为0,则外部中断0失效,无论外部中断引脚如何变化,都不会发生外部中断。
(2)单片机中的微积分扩展阅读:
单片机中断系统的作用——
不同的计算机其硬件结构和软件指令是不完全相同的,因此,中断系统也是不相同的。计算机的中断系统能够加强CPU对多任务事件的处理能力。
中断机制是现代计算机系统中的基础设施之一,它在系统中起着通信网络作用,以协调系统对各种外部事件的响应和处理。
中断是实现多道程序设计的必要条件。 中断是CPU对系统发生的某个事件作出的一种反应。 引起中断的事件称为中断源。
中断源向CPU提出处理的请求称为中断请求。发生中断时被打断程序的暂停点称为断点。CPU暂停现行程序而转为响应中断请求的过程称为中断响应。
处理中断源的程序称为中断处理程序。CPU执行有关的中断处理程序称为中断处理。而返回断点的过程称为中断返回。中断的实现实行软件和硬件综合完成,硬件部分叫做硬件装置,软件部分称为软件处理程序。
㈢ 在单片机中关于积分微分的函数是怎么弄的!!!
用查表法吧,相当于把积分离散化
㈣ 微积分能不能应用在电子方面
可以,微积分在电子可以说成微分电路和积分电路(我好像在说废话)。微分电路,顾名思义,就是输出与输入是微分关系,如单片机复位电路,见下图。
上电时,单片机复位,RST引脚需要有高电平。一段时间后(很短)复位完成,RST引脚需要有低电平,此后,单片机可正常工作。微分电路正好可以满足需求,此电路中,RST引脚会有一个从高到低的变化,即微分电路的输出与输入是微分关系(输出电平由高到低变化)。
有些单片机是低电平复位,此时需要上电时,RST引脚有低电平,一段时间后(很短)复位完成,RST引脚需要有高电平,这样单片机才能正常工作。积分电路可满足需求(将上图电阻电容换位置),保证RST引脚电平有一个由低到高的变化,即积分电路的输出与输入是积分关系(输出电平由低到高变化)。
就说这一个例子吧,其它的同理。微积分电路的意思是根据电路算出的等式关系是数学上的微积分关系,所以才叫微分、积分电路吧。
上述纯属个人愚见,难免有误,还望不吝赐教。
㈤ 只用单片机单独一个芯片能进行积分,微分等复杂运算吗不能的话怎么办
单片机当然可以进行积分/微分运算,关键还是看你的速度要求
㈥ 可以跟我讲一下单片机的算法需要高数的哪些重要类容呢
大学的高数是必须学的,单片机某些这也必学。
单片机需要预备知识很多,难
㈦ 51单片机“上电/按键复位电路”的原理及其电容C的作用
简单来讲电容在这里只起到了一个启动的作用,就是按键按下后立即释放电容内部的电荷,直接连接到单片机的复位端给复位端强行输入一个电位使单片机复位~~
㈧ stm32单片机能运算微积分吗,运算微积分的能力怎么样,大概需要多长时间运算一次,在此谢过。。。
关键问题不是MCU而是你能不能用C语言编出合理相应函数的算法,如果能 51单片机也能实现
㈨ 不太懂微积分,怎么做单片机PID啊,如果要学重点学那一部分
不用懂微积分,仅仅是一个PID算式而已,现在还有点印象
Pout = Pp*delta + Pi * (所有delta的和)+Pd*(delta1-delta2)
delta:给定和测量值之差
就是那个三角号,你要控制到的目标值和当前测量值只差,然后你就调P,I,D三个参数就可以了
你到网上随便找一个单片机的PID程序,我给你注释一下
int delta_PID(PID *pp, int next_point)//增量法
{
int error;
error = pp->set_point - next_point;
pp->ek[2] = pp->ek[1];
pp->ek[1] = pp->ek[0];
pp->ek[0] = error;
return (KP*pp->ek[0] - KI*pp->ek[1] + KD*pp->ek[2]);
}
void PIDproc(PID *pp, int next_point) //带死区控制以及抗积分饱和的PID
{
uint tmp[3] = {0, 0, 0};
uint PosSum = 0;
uint NegSum = 0;
uchar gain = 1;
if(pp->set_point > next_point){
tmp[0] = pp->set_point - next_point;//ek0
if(tmp[0] > pp->B){
pp->ek[2] = pp->ek[1];
pp->ek[1] = pp->ek[0];
pp->ek[0] = tmp[0];
pp->ek_flag[2] = pp->ek_flag[1];
pp->ek_flag[1] = pp->ek_flag[0];
pp->ek_flag[0] = 0; //当前EK为正数
tmp[0] = KP * pp->ek[0] / dKP + KI * pp->ek[0] / dKI + KD * pp->ek[0] / dKD; // KP*EK0
tmp[1] = KP * pp->ek[1] / dKP + 2 * KD * pp->ek[1] / dKD; // KI*EK1
tmp[2] = KD * pp->ek[2] / dKD; // KD*EK2
}
}
else{ //反馈大于给定
tmp[0] = next_point - pp->set_point;//ek0
if(tmp[0] > pp->B){
//数值移位
pp->ek[2] = pp->ek[1];
pp->ek[1] = pp->ek[0];
pp->ek[0] = tmp[0];
//符号移位
pp->ek_flag[2] = pp->ek_flag[1];
pp->ek_flag[1] = pp->ek_flag[0];
pp->ek_flag[0] = 1; //当前EK为负数
tmp[0] = KP * pp->ek[0] / dKP + KI * pp->ek[0] / dKI + KD * pp->ek[0] / dKD; // KP*EK0
tmp[1] = KP * pp->ek[1] / dKP + 2 * KD * pp->ek[1] / dKD; // KI*EK1
tmp[2] = KD * pp->ek[2] / dKD; // KD*EK2
}
}
/*以下部分代码是讲所有的正数项叠加,负数项叠加*/
if(pp->ek_flag[0]==0){
PosSum += tmp[0]; //正数和
}
else{
NegSum += tmp[0]; //负数和
} // KP*EK0
if(pp->ek_flag[1]!=0){
PosSum += tmp[1]; //正数和
}
else{
NegSum += tmp[1]; //负数和
} // - kI * EK1
if(pp->ek_flag[2]==0){
PosSum += tmp[2]; //正数和
}
else{
NegSum += tmp[2]; //负数和
} // KD * EK2
PosSum += pp->uk; //
if(PosSum > NegSum){ // 是否控制量为正数
tmp[0] = PosSum - NegSum;
tmp[0] *= gain;
if( tmp[0] < (uint)65000){ //小于限幅值则为计算值输出
pp->uk = tmp[0];
}
else{
pp->uk = (uint)65000; //否则为限幅值输出
}
}
else{ //控制量输出为负数,则输出0
pp->uk = 0;
}
}
void PID_init(PID* pp)
{
pp->set_point = OBJ;
pp->B = 0;
pp->ek[0] = 0;
pp->ek[1] = 0;
pp->ek[2] = 0;
pp->ek_flag[0] = 0;
pp->ek_flag[1] = 0;
pp->ek_flag[2] = 0;
pp->uk = 0;
}
我以前用过的程序
㈩ 科学计算器究竟是单片机系统还是嵌入式系统
1.单片机系统就是嵌入式系统中的一个分支!
2.汇编开发是可以的,但计算器中涉及到浮点运算,用汇编的难度就非常大!比如三角函数和反三角函数,对数和指数,以及开方和微积分等,虽然有可以实际操作的数学公式,但是汇编的难度非常大,所以用C去开发才是可能的。至于JAVA,现在还没有在这种单片机上运行的,至少要32位单片机才行。