导航:首页 > 操作系统 > 单片机限位开关程序

单片机限位开关程序

发布时间:2024-01-01 01:27:45

单片机控制电源开关

单片机控制电源开关:
1. 基于单片机控制的开关电源的可选设计方案
由单片机控制的开关电源, 从对电源输出的控制来说, 可以有三种控制方式, 因此, 可供选择的设计方案有三种:
( 1) 单片机输出一个电压( 经D/AC 芯片或PWM方式) , 用作开关电源的基准电压。这种方案仅仅是用单片机代替了原来开关电源的基准电压, 可以用按键设定电源的输出电压值, 单片机并没有加入电源的反馈环, 电源电路并没有什么改动。这种方式最简单。
( 2) 单片机和开关电源专用PWM芯片相结合。此方案利用单片机扩展A/D 转换器, 不断检测电源的输出电压, 根据电源输出电压与设定值之差, 调整D/A 转换器的输出, 控制PWM芯片, 间接控制电源的工作。这种方式单片机已加入到电源的反馈环中, 代替原来的比较放大环节, 单片机的程序要采用比较复杂的PID 算法
( 3) 单片机直接控制型。即单片机扩展A/DC, 不断检测电源的输出电压, 根据电源输出电压与设定值之差, 输出PWM波, 直接控制电源的工作。这种方式单片机介入电源工作最多。
2. 最优设计方案分析
三种方案比较第一种方案: 单片机输出一个电压( 经D/AC芯片或PWM方式) ,
用作开关电源的基准电压。这种方案中, 仅仅是用单片机代替了原来开关电源的基准电压, 没有什么实际性的意义。第二种方案: 由单片机调整D/AC 的输出, 控制PWM芯片, 间接控制电源的工作。这种方案中单片机可以只是完成一些弹性的模拟给定, 后面则由开关电源专用PWM芯片完成一些工作。在这种方案中,对单片机的要求不是很高, 51 系列单片机已可胜任; 从成本上考虑,51 系列单片机和许多PWM控制芯片的价格低廉; 另外, 此方案充分解决了由单片机直接控制型的开关电源普遍存在的问题———由于单片机输出的的PWM脉冲频率低, 导致精度低, 不能满足要求的问题。因此, 单片机和PWM芯片相结合, 是一种完全可行的方案。第三种方案: 是最彻底的单片机控制开关电源, 但对单片机的要求也高。要求单片机运算速度足够快, 且能输出足够高频率的PWM波。DSP 类单片机速度够快, 但价格也很高, 占电源总成本的比例太大, 不宜采用。廉价单片机中, AVR 系列最快, 具有PWM输出, 但AVR单片机的工作频率仍不够高, 只能是勉强使用。
比较分析后的结论。通过以上比较分析, 笔者的认为: 第二种 方式, 即单片机和开关电源专用PWM控制芯片相结合是目前基于单 片机控制的开关电源的最优设计方案。
3. 基于89c51 单片机控制的开关电源
根据上述最优设计方案的结论, 下面举出一个基于此最优方案下 的实例, 本实例根据典型PWM芯片TL494 的应用特点, 设计了一种 基于单片机89c51 辅助控制的正向变换器方式开关电源。

Ⅱ 单片机51C语言是如何处理接近开关,光电开并或限位开关的信号

若开关动作就有高电平(或低电平)送给单片机,那么,让信号送入单片机的外部中断引脚,单片机通过设置形成上升沿(或其他方式)中断来控制其他动作就行。

Ⅲ 51单片机,开关控制LED,开始流水灯,按一下停止,再按一下继续流水灯

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit button=P1^0;
uchar press=0;

void Delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=255;y>0;y--);
}

void Led_Continue()
{
P2=0xfe;
while(press==0|press==2)
{
P2=_crol_(P2,1);
Delay(255);
}
}

void Led_Stop()
{
P2=0xff;
}

void Keyscan()
{
if(button==0)
{
Delay(20);
if(button==0)
{
press+=1;
if(press==1)
{
Led_Stop();
}
if(press==2)
{

press=0;
}
}
}
}

void main()
{
while(1)
{
Keyscan();

Led_Continue();
}
}
试试这个,在mian中要一直去扫描,否则就扫描一次不能达到目的。
然后你问用中断怎么完成,告诉你中断更简单,定时器用作延时用,键盘只需要写当这个按键按下时 TRx=~TRx 就是每一次按下,定时器开关都和上一次状态不一样,这样每按一次都会停止、开始、停止、开始......
希望我的回答能帮助到你。

Ⅳ 单片机C语言按键开关程序

#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay_ms(uint);
sbitled0=P0^0;
sbitled1=P0^1;
sbitkey1=P3^2;
sbitkey2=P3^3;
voidmain()
{
uchari=0;
ucharj=0;
while(1)
{
if(key1==0)//按键1
{
delay_ms(10);
if(key1==0)
{
i++;
i=i%2;
switch(i)
{
case0:led0=1;break;//关小灯
case1:led0=0;break;//开小灯
default:break;
}
}
while(!key1);
}

if(key2==0)//按键2
{
delay_ms(10);
if(key2==0)
{
j++;
j=j%2;
switch(j)
{
case0:led1=1;break;//关小灯
case1:led1=0;break;//开小灯
default:break;
}
}
while(!key2);
}
}
}
voiddelay_ms(uintz)//延时子程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

Ⅳ 单片机如何用一个按键实现启停

不知道你想要实现啥样的启停,今天上班有点闲,给你写一个程序做参考,你可以根据你的需要进行更改。//功能是按键,按下启动停止,启动后LED灯闪烁,
停止LED灯灭。
#include
"REG52.H"
sbit
LED1_01
=
P1^1;
//LED灯
sbit
KEY0_01
=
P1^2;
//按键
bit
value_flag
=
0;
//标志位
/*
*
延时1ms延时子函数
**/
void
Delay_1ms(unsigned
int
Time)
{
unsigned
int
x,
y;
for(x
=
Time;
x
>
0;
x--)
for(y
=
120;
y
>
0;
y--);
}
/*
*
按键开关【启动和停止】子函数
**/
void
Scan_keyoutCmd(void)
{
if(KEY0_01
==
0)
//检测按键是否按下
{
Delay_1ms(10);
//延时去抖动
if(KEY0_01
==
0)
//确定按键按下
{
value_flag
=
~
value_flag;
//取反标志位
}
while(KEY0_01
==
0);
//检测松手
}
}
/*
*
程序运行【启动和停止】子函数
**/
void
Disp_layledketCmd(void)
{
if(value_flag
==
1)
//如果标志打开启动单片机运行程序
{
LED1_01
=
0;
Delay_1ms(500);
//启动运行程序后LED灯开始闪烁
LED1_01
=
1;
Delay_1ms(500);
}
else
if(value_flag
==
0)
//如果标志关闭停止单片机运行程序
{
LED1_01
=
0;
//停止运行程序后LED灭。
}
}
/*
*
函数主体
**/
int
main(void)
{
value_flag
=
1;
//打开标志位
while(1)
{
Scan_keyoutCmd();//单片机循环检测是否有按键按下【启动或停止】应运程序
Disp_layledketCmd();
//执行应运程序
}
}

Ⅵ 单片机c语言编了个流水灯,用按键怎么实现它暂停。

实现流水灯的方式有很多种(中断,定时器,延时等等),看用哪种方式,最简单的是延时做流水灯,那么在死循环里面增加按键检测,判断出有按键按下来时,再进入死循环,程序不往下走就可以暂停,再按跌出死循环。

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main(void)

{

uint i;

uchar temp;

uint Flag1=0; 按键标志位

uint Flag2=0;

while(1)

{

Flag1 = keyscan();

if(Flag1==1)(Flag2=~Flag2); //如果一旦检测到一次按键扫描就把标志位2 打开;再次就关闭;

if(Flag2==1)// 如果标志位打开就开始流水灯

{

temp=0x01;

for(i=0;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp<<=1;

}

}

(6)单片机限位开关程序扩展阅读:

单片机编程就是硬件是单片机,基于单片机进行的程序开发,在有周围外设支持的情况下,用软件来控制的部分通过单片机编程来实现。单片机能识别的语言是硬件语言即汇编,因此编程就是围绕汇编来实现,有直接用汇编程序来编写的,但是较难调试的编写,特别是一上规模就更不易实现,因此常用高级语言来写然后通过编译器转化成汇编。

阅读全文

与单片机限位开关程序相关的资料

热点内容
三种命令方块 浏览:560
hp服务器怎么重新做系统 浏览:480
电脑与单片机无线 浏览:611
云服务器钱怎么提现 浏览:878
华为运动app怎么退出登录 浏览:796
程序员那么可爱陆漓金句 浏览:879
java如何将自己电脑设置成服务器 浏览:858
域名怎么制定服务器8080端口 浏览:665
服务器的主机如何使用 浏览:814
广讯通服务器地址怎么填 浏览:665
山东交管服务器繁忙云空间 浏览:52
51单片机热敏电阻坏了 浏览:547
远程电脑是云服务器吗 浏览:194
压缩包解压出来是音频 浏览:946
明源云erp服务器故障 浏览:158
安卓主页英文怎么写 浏览:844
2002服务器系统怎么设置分屏 浏览:73
什么情况空调压缩机电容坏 浏览:991
pagerank算法图解 浏览:319
部落决斗命令 浏览:405