導航:首頁 > 操作系統 > 單片機限位開關程序

單片機限位開關程序

發布時間: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)單片機限位開關程序擴展閱讀:

單片機編程就是硬體是單片機,基於單片機進行的程序開發,在有周圍外設支持的情況下,用軟體來控制的部分通過單片機編程來實現。單片機能識別的語言是硬體語言即匯編,因此編程就是圍繞匯編來實現,有直接用匯編程序來編寫的,但是較難調試的編寫,特別是一上規模就更不易實現,因此常用高級語言來寫然後通過編譯器轉化成匯編。

閱讀全文

與單片機限位開關程序相關的資料

熱點內容
android定製輸入法 瀏覽:758
linux下編譯android 瀏覽:311
電影重建文件夾 瀏覽:981
第五人格香香解壓 瀏覽:626
我的世界手機版推薦什麼伺服器 瀏覽:706
安卓怎麼下載空戰 瀏覽:586
程序員賣房入市 瀏覽:117
android視頻播放窗口 瀏覽:288
17元特效的app名字叫什麼 瀏覽:838
小米手機什麼時候配置安卓 瀏覽:262
三種命令方塊 瀏覽:565
hp伺服器怎麼重新做系統 瀏覽:480
電腦與單片機無線 瀏覽:611
雲伺服器錢怎麼提現 瀏覽:878
華為運動app怎麼退出登錄 瀏覽:796
程序員那麼可愛陸漓金句 瀏覽:879
java如何將自己電腦設置成伺服器 瀏覽:858
域名怎麼制定伺服器8080埠 瀏覽:666
伺服器的主機如何使用 瀏覽:814
廣訊通伺服器地址怎麼填 瀏覽:665