專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

[原創(chuàng)]51單片機(jī)控制的微波爐定時(shí)程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年11月19日   【字體:
//微波爐定時(shí)程序(原創(chuàng),自已寫的)
//免責(zé)聲明:這是微波爐的定時(shí)功能  純?yōu)榧夹g(shù)交流、學(xué)習(xí)之用。
//轉(zhuǎn)載、使用者切莫用于不正當(dāng)?shù)挠猛,一切后果由轉(zhuǎn)截/使用者自行負(fù)責(zé)
//按下獨(dú)立鍵盤RD按鍵,每按一次增加60秒,按下INT1啟動(dòng),按下INT0停止
//我們知道微波爐是不會(huì)自動(dòng)運(yùn)行的,得手動(dòng)啟動(dòng)

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned uchar
sbit duan=P2^5;
sbit wei=P2^6;
const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};                //數(shù)碼管數(shù)組
uint bai=0,gg=16,shi=0,ge=0,x;
uint time=60,tt=0; //uint tt,time;

void init()
{

TMOD=0x01;                        

TH0=(65536-50000)/256;  

TL0=(65536-50000)%256;
EA=1;    

ET0=1;    

TR0=0;      

}
 
 void scan()
 {
 if(RD==0)
  {
  while(!RD);
 time=time+60;  
 } 
 if(INT0==0)TR0=0;
 if(INT1==0)TR0=1;
 }
void fuzhi()
{
  bai=time/60;
  shi=time%60/10;
  ge=time%10;
}
uint jishi()
 {
 if(tt==20)
  {
 tt=0;  
 time--;if(time==0)TR0=0;    //這個(gè)位置不能動(dòng),time--必須在if(tt==20)里
 }
 }
//-------------------函數(shù)聲明--------------------------
void disp(uint bai,uint gg,uint shi,uint ge);

void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
 for(b=110;b>0;b--);
}
void main()
{
init();
while(1)
 {
 jishi();
 scan();

 fuzhi();
 disp(bai,gg,shi,ge);
 if(INT1==0)TR0=1;
  }
}
//------------------------------------------------
void disp(uint bai,uint gg,uint shi,uint ge)
{
duan=1;P0=table[bai];duan=0;
wei=1;P0=0x02;wei=0;
delay(5);

duan=1;P0=table[gg];duan=0;
wei=1;P0=0x04;wei=0;
delay(2);

duan=1;P0=table[shi];duan=0;
wei=1;P0=0x08;wei=0;
delay(5);

duan=1;P0=table[ge];duan=0;
wei=1;P0=0x10;wei=0;
delay(5);

}
void tming0() interrupt 1
{
TH0=(65536-50000)/256;  

TL0=(65536-50000)%256;
tt++;      

}
 

//-----------------------------------------------

//51單片機(jī):微波爐定時(shí)程序(原創(chuàng),自已寫的)
//每按一次RD增加60秒,每按一次WR減少60秒,每按一次T1增加30秒,每按一次T0減少30秒
//按下INT1啟動(dòng),按下INT0停止
//我們知道微波爐是不會(huì)自動(dòng)運(yùn)行的,得手動(dòng)啟動(dòng),所以設(shè)定好定時(shí)時(shí)長(zhǎng)后按下INT0啟動(dòng)。結(jié)束后蜂鳴器響3聲
//已完善的程序見另一章文章:
//免責(zé)聲明:這是模擬微波爐的定時(shí) 
純?yōu)榧夹g(shù)交流、學(xué)習(xí)之用。轉(zhuǎn)載、使用者切莫用于不正當(dāng)?shù)挠猛,一切后果由轉(zhuǎn)截/使用者自行負(fù)責(zé)
關(guān)閉窗口

相關(guān)文章