51單片機控制繼電器的程序看不太懂,希望大神在每句后面注解一下。
-
#include
#include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定時器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; ... #include #include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定時器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; } void time0_server_(void)interrupt 1 { TH0=0x4C;TL0=0x00; t++; } void main() { Init_t0(); a=0;// b=0;// c=0;// d=0;// t = 0; EA = 1; while(1) //循環(huán) { switch(t) { case 0: a = 1; b = c = d = 0; break; case 40: b = 1; a = c = d = 0; break; case 80: c = 1; a = b = d = 0; break; case 120: d = 1; a = b = c = 0; break; case 160: t=0; break; default: break; } } } 展開
全部評論(2條)
-
- 初心暖哭i 2015-05-17 00:00:00
- 需要給你寫嗎
-
贊(20)
回復(fù)(0)
-
- 新航星洗滌設(shè)備 2017-09-27 12:16:13
- #include<reg52.h> #include <intrins.h> #define uint unsigned int sbit a=P1^4;//a繼電器控制端 sbit b=P2^3;//b繼電器控制端 sbit c=P2^5;//c繼電器控制端 sbit d=P2^7;//d繼電器控制端 uint t; void Init_t0(void) //定時器初始化 { TMOD=0x01; //定時器0工作于方式1,16位定時器 TH0=0x4C;TL0=0x00; //定時時間50ms ET0=1; //允許定時器0中斷 TR0=1; //定時器0啟動 } void time0_server_(void)interrupt 1 //定時器0中斷函數(shù) { TH0=0x4C;TL0=0x00; //定時時間50ms t++; //t每50ms加1 } void main() //主函數(shù) { Init_t0(); a=0; //初始化,所有繼電器釋放 b=0;// c=0;// d=0;// t = 0; //計時器從0開始計時 EA = 1; //開啟總中斷 while(1) //循環(huán) { switch(t) //以t為參數(shù)的分支程序,t每50ms加1 { case 0: //如果t=0(Z初2秒),繼電器a吸合,其他釋放 a = 1; b = c = d = 0; break; case 40: //如果t=40(第二個2秒),繼電器b吸合,其他釋放 b = 1; a = c = d = 0; break; case 80: //如果t=80(第三個2秒),繼電器c吸合,其他釋放 c = 1; a = b = d = 0; break; case 120: //如果t=120(第四個2秒),繼電器d吸合,其他釋放 d = 1; a = b = c = 0; break; case 160: //如果t=160(第四個2秒結(jié)束),t=0,重復(fù)Z初2秒情況 t=0; break; default: //如果t與上述數(shù)字都不想等,啥也不做,免得干擾繼電器狀態(tài) break; } } }
-
贊(10)
回復(fù)(0)
熱門問答
- 51單片機控制繼電器的程序看不太懂,希望大神在每句后面注解一下。
- #include
#include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定時器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; ... #include #include #define uint unsigned int sbit a=P1^4;// sbit b=P2^3;// sbit c=P2^5;// sbit d=P2^7;// uint t; void Init_t0(void) //定時器初始化 { TMOD=0x01; TH0=0x4C;TL0=0x00; //50ms ET0=1; TR0=1; } void time0_server_(void)interrupt 1 { TH0=0x4C;TL0=0x00; t++; } void main() { Init_t0(); a=0;// b=0;// c=0;// d=0;// t = 0; EA = 1; while(1) //循環(huán) { switch(t) { case 0: a = 1; b = c = d = 0; break; case 40: b = 1; a = c = d = 0; break; case 80: c = 1; a = b = d = 0; break; case 120: d = 1; a = b = c = 0; break; case 160: t=0; break; default: break; } } } 展開
- 匯編語言 51單片機 器程序
- 51單片機信號發(fā)生器的正弦波程序
- voidvout_sin(void)//輸出正弦波{floatx;//用于正弦波發(fā)生器if(Voutsin())//“正弦波按鍵”被有效按下do{for(x=-3.1415;x<3.1415;x+=0.1)//正弦波發(fā)生器{vout=255*(1+sin(x))/2;//輸出... void vout_sin(void) //輸出正弦波
{ float x; //用于正弦波發(fā)生器
if(Voutsin()) //“正弦波按鍵”被有效按下
do{
for(x=-3.1415;x<3.1415;x+=0.1) //正弦波發(fā)生器
{ vout=255*(1+sin(x))/2; //輸出值vout必須大于0
P1=vout;
delay_out();
} } while(P3_0==1&P3_1==1&P3_2==1&P3_4==1) } 此段程序中do{}內(nèi)的內(nèi)容不是很理解,希望好心網(wǎng)友幫忙解釋一下,財富值不是很多,謝謝了。 展開
- 51單片機制作簡易數(shù)字頻率計程序
- 溫度控制51單片機,DS1820溫度傳感器的程序
- 只要一小段,溫度加熱時候的程序,我要用Keil和proteus編程仿真的,加熱到40,60,80的時候分別需要恒定溫度一段時間后,在繼續(xù)加熱....... 只要一小段,溫度加熱時候的程序,我要用Keil 和 proteus 編程仿真的,加熱到40,60,80 的時候分別需要恒定溫度一段時間后,在繼續(xù)加熱.... 展開
- 51單片機頻率計的中斷程序怎么設(shè)計
- 有一個信號由200hz的NRZ碼控制輸出兩個頻率不同的方波(1600,800)?,F(xiàn)在要還原,如果檢測到1600則p3.5輸出高電平,800則輸出低電平。我的設(shè)想是定時一個5ms的中斷,對輸入的方波電平0→1進行計數(shù)。計數(shù)值大于(8+4)/2=6的話輸出1,小于輸出0。請問這樣可以... 有一個信號由200hz的NRZ碼控制輸出兩個頻率不同的方波(1600,800)?,F(xiàn)在要還原,如果檢測到1600則p3.5輸出高電平,800則輸出低電平。我的設(shè)想是定時一個5ms的中斷,對輸入的方波電平0→1進行計數(shù)。計數(shù)值大于(8+4)/2=6的話輸出1,小于輸出0。請問這樣可以嗎?對于定時器計時器還有中斷的使用不大明白,可否簡略寫下程序。謝謝 展開
- 51單片機溫度控制系統(tǒng)的C語言程序
- 設(shè)計基于單片計算機的溫度控制器。用于控制電加熱爐的溫度。具體要求如下1.溫度連續(xù)可調(diào),范圍為30℃~150℃2.超調(diào)量σ%≤20%3.溫度誤差≤±0.5℃4.人-機對話方便5.控制算法采用PID或改... 設(shè)計基于單片計算機的溫度控制器。用于控制電加熱爐的溫度。具體要求如下 1. 溫度連續(xù)可調(diào),范圍為30℃~150℃ 2. 超調(diào)量σ%≤20% 3. 溫度誤差≤±0.5℃ 4. 人-機對話方便 5. 控制算法采用PID或改進的PID或其他算法 .請發(fā)至3166109374@qq.com 謝謝幫忙 具體見http://wenku.baidu.com/view/e0feacf0f121dd36a22d822c 展開
- 基于51單片機,ADC0804,光敏電阻,濕度傳感器,求程序?。。?!
- 我用的51單片機,采集光強度和空氣濕度,利用了兩個ADC0804進行轉(zhuǎn)換(光敏電阻和電阻式濕度傳感器),但是沒有相應(yīng)程序,哪位大哥能幫忙弄一個程序?。咳绻强尚械某绦?,我賬號里剩下... 我用的51單片機,采集光強度和空氣濕度,利用了兩個ADC0804進行轉(zhuǎn)換(光敏電阻和電阻式濕度傳感器),但是沒有相應(yīng)程序,哪位大哥能幫忙弄一個程序?。咳绻强尚械某绦?,我賬號里剩下的分全給你,雖然不多... 展開
- 基于51單片機用LCD1602液晶顯示的頻率計程序
- 求程序——————
- 求一個51單片機控制的溫度計顯示程序
- stc98c51控制2個4位數(shù)碼管,溫度傳感器為DS18B20。數(shù)碼管的a,b,c,d,e,f,g,dp端接在P0口... stc98c51控制2個4位數(shù)碼管,溫度傳感器為DS18B20。數(shù)碼管的a,b,c,d,e,f,g,dp端接在P0口 展開
- 單片機通過溫濕度傳感器DHT11輸入數(shù)據(jù)控制繼電器通斷的程序
- 本人課程設(shè)計需要由單片機控制電路,單片機通過DHT11溫濕度傳感器讀取溫度數(shù)據(jù),然后與設(shè)定的溫度進行比較之后控制繼電器的通斷。設(shè)定的溫度是20~23,23~26,26~29,控制的繼電器是3個... 本人課程設(shè)計需要由單片機控制電路,單片機通過DHT11溫濕度傳感器讀取溫度數(shù)據(jù),然后與設(shè)定的溫度進行比較之后控制繼電器的通斷。設(shè)定的溫度是20~23,23~26,26~29,控制的繼電器是3個。當讀取的溫度達到設(shè)定值時其中一個繼電器吸合,達到另一個溫度區(qū)間時該溫度對應(yīng)的繼電器吸合,其他的都處于斷開狀態(tài)。本人苦逼不會寫程序,求各位大神幫個忙。急用謝謝了。 展開
- 誰能幫忙寫一下用霍爾傳感器和51單片機測量電機轉(zhuǎn)速的程序和接線圖
- 請問有誰寫過htu21d溫濕度傳感器的51單片機 c程序嗎,求參考一下
- 小白鼠排隊 (希望大神用c++編寫這個程序)
- 小白鼠排隊(希望大神用c++編寫這個程序)小白鼠排隊N只小白鼠(12017-02-24 00:45:58 674 1
- GP2Y1010AU0F檢測灰塵粉塵傳感器和51單片機連的程序
- 這個51單片機HC-SR04超聲波測距程序哪里錯了
- //晶振11.0592MHz #include
#define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TI... //晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TIM1init(void)//定時器1初始化 { TMOD=0x22;//定時器1工作方式2,TH1是重裝值,TL1是初值 TH1=0xd2; //重載值 溢出一次約50us TL1=0xd2; //初始化值 ET1=1; //開中斷 } void EX1init(void) //外部中斷1初始化 { IT1 = 1; //指定外部中斷0下降沿觸發(fā),INT1 (P3.3) EA = 1; //開總中斷 } /*------------------------------------------------ 定時器1中斷處理 ------------------------------------------------*/ void tim1_isr (void) interrupt 3 { irtime++; //用于計數(shù)2個下降沿之間的時間 } /*------------------------------------------------ 外部中斷1中斷處理 ------------------------------------------------*/ void EX1_ISR (void) interrupt 2 //外部中斷1服務(wù)函數(shù) { dis=340*(irtime/2.0)*50/10000; irtime=0; TR1=0; EX1=0; } void test(void) { trig=1; delay_20us(); trig=0; EX1=1; while(!echo); TR1=1; } void main(void) { TIM1init(); EX1init(); while(1) { test(); display(dis); } } 主函數(shù)調(diào)用test,然后在數(shù)碼管上顯示(顯示函數(shù)略過),測試的時候,在數(shù)碼管上顯示的距離明顯不對,還各種不穩(wěn)定,有時就個位數(shù)上顯示一個1或2,不知道怎么回事 展開
- 51單片機超聲波模塊測厚度程序怎么寫?
- 基于51單片機的lm393振動傳感器的程序怎么加蜂鳴器
- 51單片機 測速
- 當感應(yīng)到磁性的時候 有高電平,沒有感應(yīng)到磁性的時候是低電平,求兩次測到高電平之間時間是多少。 C語言程序怎么寫?用霍爾傳感器或者是磁性開關(guān)
- 求一段匯編程序,利用51單片機控制超聲波傳感器測距的程序。
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論