溫濕度傳感器 sht11 仿真程序 sbit out =P3^0; //加熱口 //sbit input =P1^1;//檢測口 //sbit speek =P2^0;//報警 sbit clo =P3^7;//時鐘 sbit ST =P3^5;//開始 sbit EOC =P3^6;//成功信號 sbit gwei =P3^4;//個位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//報警音 sbit bjled =P0^1;//報警燈 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取轉換結果 uchar seth;//高時間 uchar setl;//低時間 uchar seth_mi;//高時間 uchar setl_mi;//低時間 bit hlbz;//高低標志 bit clbz; bit spbz; ///定時中斷程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5mS*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//產生時鐘 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延時/////// delay(int i) { while(--i); } ///////顯示處理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定時0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //開始計時 ET0=1; //開定時0中斷 EA=1; //開全中斷 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上傳時間: 2013-11-07
上傳用戶:我們的船長
溫濕度傳感器 sht11 仿真程序 sbit out =P3^0; //加熱口 //sbit input =P1^1;//檢測口 //sbit speek =P2^0;//報警 sbit clo =P3^7;//時鐘 sbit ST =P3^5;//開始 sbit EOC =P3^6;//成功信號 sbit gwei =P3^4;//個位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//報警音 sbit bjled =P0^1;//報警燈 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取轉換結果 uchar seth;//高時間 uchar setl;//低時間 uchar seth_mi;//高時間 uchar setl_mi;//低時間 bit hlbz;//高低標志 bit clbz; bit spbz; ///定時中斷程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5mS*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//產生時鐘 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延時/////// delay(int i) { while(--i); } ///////顯示處理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定時0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //開始計時 ET0=1; //開定時0中斷 EA=1; //開全中斷 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上傳時間: 2013-10-16
上傳用戶:黃蛋的蛋黃
1,消除按鍵的抖動問題 因為按鍵在閉合或斷開過程中出現一段抖動期,主要由于按鍵的不穩定性引起的,這時會呈現一串頁脈沖,時間的長短和開關的機械特性有關。一般在5mS~10ms之間。為保證CPU對鍵的一次閉合作一次處理,必須去抖動。在鍵的穩定閉合或斷開時讀鍵的狀態。 2,據EICE51原理圖編寫并調試一個鍵輸入子程序,其功能為判斷鍵盤上有無鍵輸入,若有鍵入,作去抖動處理后,計算輸入鍵的鍵號送累加器A。
標簽:
上傳時間: 2015-03-22
上傳用戶:qweqweqwe
/*紅外解碼的方法 NEC格式 upd6121 1、9Ms的高電平啟動頭,然后是4.5mS的低電平,如果2.25mS時就有高電平,是持續信號,不處理 2、然后以一個高電平和一個低電平為1Bit,高電平時間是0.5625mS=562us, 高低電平時間比為1:1時是Bit1,比為1:3時是Bit0 3、Timer1中斷執行100us采樣周期,9Ms=90,4.5mS=45,高電平=5,低電平最多15 4、共讀入4Byte共24bit,第1、2Byte是CustomCode碼和其反碼,第3、4Byte是DataCode和其反碼 5、CustomCode正確和DataCode效驗正確的話,執行 6、紅外接收器輸出是反相的
上傳時間: 2013-12-03
上傳用戶:15071087253
實現功能: 1.使用T0中斷,對LED進行2ms一次的動態掃描 2.使用T1中斷,0.5mS一次作Beep的驅動 3.實現時鐘的功能 4.實現UART的中斷發送功能 5.用兩個按鍵調整時鐘,有去抖動能力,一個為調整設置鍵,另一個為加一鍵 6.調整時鐘時,按鍵有BEEP提示,且LED有閃動提示,無按鍵10秒后自動恢復正常顯示
標簽: 中斷
上傳時間: 2013-12-11
上傳用戶:康郎
舵機控制程序,舵機的控制信號為周期是20ms的PWM信號,其中高電平持續時間0.5到2.5mS。
上傳時間: 2015-11-17
上傳用戶:小眼睛LSL
/* 程序詳細功能介紹: * 用AT89S51單片機產生“嘀、嘀、…”報警聲從P3.2端口輸出,產生頻率為1KHz, * 1KHZ方波從P3.2輸出0.2秒,接著0.2秒從P3.2輸出電平信號,如此循環下去,就形成我們所需的報警聲了。 * * 程序設計方法 *(1.生活中我們常常到各種各樣的報警聲,例如“嘀、嘀、…”就是常見的一種聲音報警聲, * 但對于這種報警聲,嘀0.2秒鐘,然后斷0.2秒鐘,如此循環下去,假設嘀聲的頻率為1KHz, * 由于要產生上面的信號,我們把上面的信號分成兩部分,一部分為1KHZ方波, * 占用時間為0.2秒;另一部分為電平,也是占用0.2秒;因此,我們利用單片機的定時/計數器T0作為定時, * 可以定時0.2秒;同時,也要用單片機產生1KHZ的方波,對于1KHZ的方波信號周期為1ms, * 高電平占用0.5mS,低電平占用0.5mS,因此也采用定時器T0來完成0.5mS的定時; * 最后,可以選定定時/計數器T0的定時時間為0.5mS,而要定時0.2秒則是0.5mS的400倍, * 也就是說以0.5mS定時400次就達到0.2秒的定時時間了。 */
上傳時間: 2015-11-27
上傳用戶:kiklkook
紅外解碼的方法 NEC格式 upd6121 1、9Ms的高電平啟動頭,然后是4.5mS的低電平,如果2.25mS時就有高電平,是持續信號,不處理 2、然后以一個高電平和一個低電平為1Bit,高電平時間是0.5625mS=562us, 高低電平時間比為1:1時是Bit1,比為1:3時是Bit0 3、Timer1中斷執行100us采樣周期,9Ms=90,4.5mS=45,高電平=5,低電平最多15 4、共讀入4Byte共24bit,第1、2Byte是CustomCode碼和其反碼,第3、4Byte是DataCode和其反碼 5、CustomCode正確和DataCode效驗正確的話,執行 6、紅外接收器輸出是反相的
上傳時間: 2016-02-05
上傳用戶:啊颯颯大師的
一個無線接收子程序,它接收一個2mS高2mS低電平起始位,16位地址(1.5mS高電平加0.5mS低電平為0,0.5mS高電平加1.5mS低電平為1),8位數據位,8位前面三個字節相加的校驗位。
上傳時間: 2014-05-27
上傳用戶:nairui21
采用c8051f020單片機接受數據,解碼(將0,1識別),由于發射端的數據為5mS每次,本程序也采用單片機集成比較器5mS檢測一次,識別出起始位,數據位,并顯示。
上傳時間: 2016-06-10
上傳用戶:15071087253