導航:首頁 > 操作系統 > 單片機繼電器控製程序

單片機繼電器控製程序

發布時間:2022-06-30 14:34:51

⑴ 51單片機控制繼電器每隔一小時閉合5分鍾程序怎麼寫

一、選用12M的晶振,則單指令周期為
1us
二、TMOD
設置為
0x21,即定時器0為
16
位計數器
三、TH0=0x3c,TL0=0xb0,即定時器
0
初始值為
15536,50ms
定時器溢出
四、設一個
5
分鍾的計時器
timer_50ms,以
50ms
為計時單位,300*20=6000,計時器到
6000
即復位,即
if
(timer_50ms>=6000)
timer_50ms=0x0000;
五、再設一個計時器timer_hour,以
5
分鍾為計時單位,計時器計到
12
即復位,即
if
(timer_hour>=12)
timer_hour=0x00;
可以在計時器任何一個位置控制繼電器閉合,在其它時間繼電器打開。如在主程序中可以加入
if
(timer_hour==0x02){//繼電器閉合}
else
{//繼電器打開}

⑵ 51單片機通過繼電器模塊控制減速電機啟動的程序

51單片機控制繼電器,去實現對減速電機啟動和關閉。這只需要定義一個io口輸出高低電平即可。

⑶ 如何用單片機控制繼電器

不要用三極體放大,接上拉電阻即可。

做實驗直接選用線圈電壓為5V的繼電器就可以。單片機輸出引腳與繼電器之間要接一個三極體,單片機I/O直接繼電器電流不夠。

單片機是一個弱電器件,一般情況下它們大都工作在5V甚至更低。驅動電流在mA級以下。而要把它用於一些大功率場合,比如控制電動機,顯然是不行的。

在這里,繼電器驅動含有兩個意思:一是對繼電器進行驅動,因為繼電器本身對於單片機來說就是一個功率器件。


(3)單片機繼電器控製程序擴展閱讀:

現在,單片機的某一個需要控制這個繼電器電路的輸出引腳就是一隻"手",當單片機的這個引腳輸出低電平的時候,就像"手"在打開三極體"水龍頭",水就從上往下流,繼電器"水輪機"就開始轉起來了。

反之,如果是輸出高電平,"手"就開始關"水龍頭",繼電器"水輪機"因為沒有水流下來,就會停止。

這就是三極體的開關作用。

簡單的理解和記憶就是:三極體是一個開關器件,其實真的可以將它看成是一個開關,只不過它不是用手來控制,而是用電壓(電流)來控制的,因此,三極體有些時候也被稱做電子開關(與機械開關相區別)。

⑷ 單片機控制繼電器定時開關的程序流程

板設計的定時開關控制器具有簡單易制、價格低廉、控制點數多、控制時間可精確到秒等特點:
1.主板電路部分
本電路主要是利用單片機AT89C2051(-24PI)作為主控制元件,通過外圍電路控制用電設備的電源,以達到定時開、關機的目的。AT89C2051具有體積小、功能強大、運行速度快、價格低廉等優點,非常適合製作集成度較高的控制電路。圖1為主電路原理圖,圖2為按其製作的主板(雙面)大小隻有95mm×70mm的器件位置圖。主板電路包括MCUAT89C2051、鍵盤與顯示、輸入與輸出口、復位和電源濾波等電路組成。
(1)鍵盤與顯示顯示電路由U2、U3、Q1~Q7和L1A、L2A組成。U2為BCD-7段解碼器(74LS47),通過單片機U1的P1.4~P1.7口將要顯示字元的BCD碼輸出到U2的四個輸入端,經U2解碼後輸出相應的筆段驅動LED數碼管(共陽)。LED數碼管顯示採用動態掃描方式,即在某一時刻,只有一個數碼管被點亮。數碼管的位選信號由單片機U1的P3.3~P3.5輸出,經U3(74HC138)解碼後通過Q1~Q6放大,驅動相應的數碼管。R17~R24為限流電阻。
由於U2隻能輸出7段筆段碼,而數碼管除了七段筆段外,還要控制點亮小數點,因此,小數點必須有另外的驅動電路來完成,在這里,通過Q7來驅動小數點。當需要點亮小數點時,在U1的P1.3輸出高電平即可。
鍵盤電路跟顯示電路一樣,採用掃描方式,利用動態顯示時的數碼管驅動位置信號來判斷相應按鍵的狀態。U1的P3.3~P3.5口輸出的BCD碼經U3解碼後,相應Y口呈低電平,而U1的P3.7口平時為高電平(由於R8上拉),當某一鍵按下時,P3.7被下拉為低電平,這時MCU利用程序查詢P3.7是否為低電平,如果P3.7為低電平,就讀回U1P3.3~P3.5口的值(從緩沖區讀取),則可判斷是哪個按鍵按下,然後調用相應的處理程序進行處理。
(2)控制輸出、復位與電源濾波電路MCU對控制的輸出是通過P3.0~P3.2口完成的。程序開始時這三個口的輸出狀態是低電平,MCU通過程序查詢三路輸出的ON或OFF狀態預置時間是否已到,如果已到時間,則改變相應的輸出狀態,就完成了對外部電路的控制。復位電路如圖1左上角所示,C3和R25完成上電復位,S6為手動復位,按鍵輸入干擾和抖動的預防是由軟體完成的。+5V電源由JP2輸入,經C4~C9濾波後給U1和其它器件供電。
2.電源與控制電路
電源及控制電路。其中,市電經總開關K後由B降壓、V1整流、C11~C14濾波、U4、U5穩壓後給主板和控制電路板提供穩定的工作電源;主板送過來的三路控制信號通過Q12~Q14分別控制繼電器J1、J2、J3,對外部電路實施直接控制。繼電器這里沒有給出具體型號,您可根據耐壓及通流大小選用相應的繼電器,如在大電流和強電磁場干擾的環境里工作,最好利用中間繼電器來間接控制。
3.程序軟體工作過程
(1)秒脈沖發生器秒脈沖發生器是由定時器T0和內存空間TT0配合完成的。T0工作於16位計數器模式,當T0向上計數由全1變為全0時產生中斷,本程序中T0的初值為0DC00H,大約0.01s中斷一次。這里使用的晶振頻率為11.0592MHz,由此可計算出日誤差約為0.78s。
圖4為程序流程圖。系統產生中斷後,首先保存ACC和PSW的值,然後為T0重裝初值,判斷中斷次數是否小於100,是則轉出中斷服務,反之則為秒計數器加1,秒計數器如果大於59,則為分計數器加1,同時秒計數器清0。同樣分計數器如大於59則為時計數器加1,同時分計數器清0,時計數器如大於23則清0並轉出中斷服務。T0中斷100次的時間剛好為1秒鍾。
(2)主程序上電復位過程:首先P0~P2口全部置1,P3口高5位置1,低3位置0。設置定時器T0工作於16位計數器模式,並賦初值TH0=0DCH,TL0=00H,關閉外部中斷和串列口中斷,時間計數器TS、TM、TH清0,所有預置時間存儲區全部賦值FFH,至此所有初始化工作完成。
主程序工作過程:首先循環進行六個數碼管掃描顯示(DISPLY段),然後比較所有預置時間(COMP段)是否與當前時間相等,如相等則轉向相應處理程序。在比較完成(或處理完成)後判斷有無按鍵(PP2段),沒有則返回繼續顯示、比較、判斷;有按鍵則轉向相應處理程序。按鍵轉移採用偏移量加表格跳轉轉移法(KEY段),簡單、明了。預置時間比較則採用逐一比較法,即對每一個預置值進行比較,如相等則做相應處理。具體比較時(COMP1段)先比較TH值,如不相等則直接轉出並置「時間到」標志CCB為0,如TH、TM、TS全部對應相等,則置該標志為1。
本程序在顯示及按鍵處理(設置過程)中巧妙使用R1寄存器作為公用地址寄存工具,對實時時間和預置時間的顯示和修改調用同一程序完成,使源代碼長度大大縮短,提高了程序的可讀性和運行效率。在本刊的網站(www.eleworld.com)上給出了源程序,供讀者參考。
4.製作與調試
(1)主板的製作與調試主板的製作稍微復雜一點。首先是製作印刷板,利用Protel99按照本文所示器件位置圖放置好元器件,然後手動布線(雙面),線寬為0.8mm左右,太寬做出的板子太大,太窄無法進行自製。繪好印製板圖後轉成BMP格式利用電腦刻字機鏤空(要用進口的即時貼紙,不然容易斷開),貼在雙面敷銅板上,就可以用FeCl3腐蝕了。具體的製作方法這里不再贅述,但最好在印製板布線時做個阻焊層,同時在即時貼上刻出來,當板子制好清洗干凈後敷在上面,用淺綠色油漆或清漆噴上薄薄的一層,好看又防腐蝕。
(2)元器件的選擇如果按照本文所附器件位置圖布線的話,數碼管需選用圖示型號才能安裝(5361BH,一拖三數碼管),選用不同型號數碼管時可能需修改器件位置參數,然後再布線即可;晶振為11.0592MHz;S1~S5選用黑色小型輕觸開關,S6則用紅色同類型開關;變壓器B選用15V、10W左右即可,V1硅堆應與B配合選用;控制繼電器根據需要選用適合的型號,如5、12、24V等,如果選用5V的,相應的B、V1可選小一點的,7812則不要。如選用24V的,那麼B、V1、7812、7805都需同時根據實際情況來選用;交流220V輸出插座沒有特殊要求,其耐壓和通流符合受控器件要求即可。其它元器件選用通用的就行。
(3)焊接元器件元器件購回後應先進行預處理(引腳打磨、上焊錫),然後逐一焊接。在焊接MCU(當然2051要燒好程序後才能焊接)和其它集成電路時應使用有良好接地的烙鐵(斷電焊接也可),以免被擊穿。由於雙面印刷板存在一個穿孔問題,器件引腳穿過後,兩面都要點上焊錫;如只是過孔,可用細銅線穿過並在兩面焊接後剪掉即可。
在印刷板製作良好,連線沒有不應有的開路或短路,且焊接沒有虛焊的情況下,不用調試即可正常工作(本程序已製作成品並調試通過,不需再行調試)。如果您覺得自己製作的印刷板不夠漂亮或太麻煩可聯絡凱思迪郵購(焊接好的整板也有),本刊網站有與凱思迪公司網站的鏈接。
(4)電源與控制板的製作可以將電源與控制板做在同一個板子上,也可分開製作,視所使用的情況而定,但JP1與JZ1之間的連線不宜太長。印刷板的製作同前所述,要注意的是在布線時對220V市電進入和輸出(包括中線)的線寬設計要寬一點(根據工作電流大小來定為好),還要注意市電與直流電源的隔離,以免在使用中造成觸電事故。
5.操作使用
本系統在加電後數碼管顯示「00.00.00」,輸出繼電器均不動作,此時可直接按S1、S2、S3鍵分別對時、分、秒進行調整,使當前時間與北京時間相符,時間設置過程中將停止計時,在設置好後按S4退出,時鍾即進入正常計時。如果要設置輸出控制的預置時間則先按S5,數碼管顯示「95.95.95」,此時可再按S1、S2、S3鍵分別對第一路輸出狀態ON的時、分、秒進行設置,設好後再按一次S5鍵,數碼管也顯示「95.95.95」,然後按S1、S2、S3鍵則分別對第一路輸出狀態OFF的時、分、秒進行設置,依此類推,按第七次時退出設定。任一路任一狀態被執行後其預置值即被清除,24小時後並不有效,如果需要每天循環執行則對程序進行簡單的修改即可(預置值不清除就可)。
6.改進與擴展
本文所述的AT89C2051在控制輸出時只使用了P3.0~P3.2三個口,所以只能控制三路六個狀態,如果把不用的P1.0~P1.2三個口用起來,則可控制六路十二個狀態,外圍電路相應增加三路繼電器,程序軟體只需稍事修改即可。當然如果需要控制更多路輸出狀態,那麼在使用鎖存器、解碼器、觸發器等後最多可以擴展到控制26=64路128個狀態。在對控制輸出的路數要求不多,而顯示部分需要比較多的情況下,如還要顯示年月日、農歷、星期等,只要對其進行擴展就可實現:P1.4~P1.7不動,選通端用兩個138,輸出口用P3.2~P3.5就有24=16個數碼顯示。這時仍然利用上述方法最多可擴展到控制25=32路64個狀態。當然年月日、農歷、星期的計算(如大月小月、閏年、閏月等)分別匯編相應的子程序插入即可

⑸ 單片機89c51控制多個繼電器程序

我來幫你做,你稍等。
差不多肯定你這里條件沒說明白,因為全是斷開沒有吸合,先按字面意思來。
假設八個繼電器由P1口驅動,高電平有效,及你所謂的打開,這是一個子程序,按鍵掃描你自己處理,當前鍵值為KEY,並將1-4鍵鍵值定義成KEY1、KEY2、KEY3、KEY4。
。。。。。。
MOV P1,#0C3H;這個加入你的主程序初始化中,1、4鍵控制的繼電器吸合
。。。。。。
MOV A,KEY;這個加入你的主程序鍵盤處理部分,鍵值送入A然後調用下面子程序
LCALL ONOFF
。。。。。。
ONOFF:

CJNE A,KEY1,CKEY2;不是1號鍵轉去判斷2號鍵

ANL ,#C3H;2-3鍵控制的繼電器斷開

RET
CKEY2:

CJNE A,KEY2,CKEY3;不是2號鍵轉去判斷3號鍵

ANL ,#CCH;1-3鍵控制的繼電器斷開

RET
CKEY3:

CJNE A,KEY3,CKEY4;不是3號鍵轉去判斷4號鍵

ANL ,#0F0H;1-2鍵控制的繼電器斷開

RET
CKEY4:

CJNE A,KEY4,ERROR;不是4號鍵鍵值錯誤,退出

ANL ,#C0H;1-2-3鍵控制的繼電器斷開

ERROR:
RET

⑹ 單片機控制繼電器程序

這個是簡單的電路圖,因為單片機上電時,各IO口有個瞬間高電平脈沖;這里選用PNP三極體來驅動。至於你說的按任意鍵啟動。。。。這個沒多大意義了,這里給你的是按鍵開、關繼電器。 //按K1 繼電器吸合
//按K2 繼電器斷開
/*********************************************************/#include <reg52.h>
sbit K1 =P3^2 ; //K1
sbit K2 =P3^3 ; //K2
sbit JDQ=P1^0; //繼電器/*********************************************************/
void Delay(unsigned int ii) //1MS
{
unsigned int jj;
for(;ii>0;ii--)
for(jj=0;jj<125;jj++)
{;}
}
void main()
{ while(1){

if (K1==0)
{
Delay(10);
if(K1==0){
JDQ=0;//吸合
P0=0x00;//P0口LED亮
}
}if (K2==0){
Delay(10);
if(K2==0){
JDQ=1; //釋放
P0=0xff; //P0口LED燈滅
}
}
}
}

⑺ 求一個單片機控制繼電器的程序。

如果是做產品的話,高電平驅動不好,復位的時候管腳默認狀態是高電平,就算程序中開機立即拉低IO口,上電的時候也可能繼電器顫抖一下

⑻ 求51單片機控制繼電器程序

程序就免了,給你幾個建議。

  1. 你最好把按鍵的程序和邏輯控制分開寫,這樣比較清晰,按鍵驅動的結果就是消抖以後的按鍵狀態,處理完清除,最好用固定時鍾驅動少用延時,按鍵驅動看著容易做好了還是不容易的。

  2. 邏輯控制無非就是if else。。。用全局量記錄之前的狀態,最好有個簡單明了的邏輯狀態圖否則很容易亂套,然後操作繼電器就是兩個io口就是了。

  3. 你用的這個和89c都是stc比較老的型號了,建議你到官網看看,很多新型號跑得更快,程序上能不能通用注意兩點,死等延時的時間和硬體上的區別。

  4. stc很多型號都用3.0和3.1口下載程序,所以按鍵會有影響,建議換個io口

  5. 繼電器的常開和常閉是接線決定的,按鍵常開和常閉可以用上下拉電阻來控制,硬體上處理一下,主要是要保證系統剛上電之前的這段時間的狀態是對的。

  6. 51和stm32是完全不同的cpu,如果要移植到stm32上初始化和寄存器操作是不一樣的,c語言的層面上大概只有邏輯控制這塊兒能用,而且stm32是3.3V硬體上也要處理。

  7. 這個做成並不難,做好就要花些心思,自己做才有意義解決問題就是學習的過程。

⑼ 用單片機控制繼電器和蜂鳴器的程序

sbit
pluse=P1^0;
sbit
jdq=P1^1;
sbit
beep=P1^2;
繼電器和
蜂鳴器
保持嗎?
如果保持的話:
while(1)
{
if(pluse==1)
{
jdq=1;
beep=1;
}
}
如果不保持的話:
while(1)
{
if(pluse==1)
{
jdq=1;
beep=1;
}
else
{
jdq=0;
beep=0;
}
}

閱讀全文

與單片機繼電器控製程序相關的資料

熱點內容
哪裡有配加密鑰匙的 瀏覽:208
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:519
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:8
蘋果手機如何給安卓手機分享軟體 瀏覽:759
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261
蛋糕店用什麼樣的app 瀏覽:877
長安銀行信用卡app怎麼取現 瀏覽:635
dos命令cmd命令的 瀏覽:226
阿里雲存檔視頻文件的伺服器 瀏覽:194
ftp修改文件許可權命令 瀏覽:491
周易八卦梅花演算法 瀏覽:676
java組織機構 瀏覽:953
h5大轉盤游戲源碼 瀏覽:592
學校伺服器地址查詢 瀏覽:109
pythontutorial下載 瀏覽:524
pythonswampy示例 瀏覽:95
有沒有什麼語音講書看書的app 瀏覽:995