最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

利用單片機制作的自動定時斷電的電風扇控制器

出處:apad 發(fā)布于:2011-09-02 13:01:45 | 2870 次閱讀

  本文介紹使用單片機的控制電風扇定時控制器.
  通過手動鍵給單片機供電.電源指示燈LED4亮時單片機運行,繼電器2開始工作,給單片機供電.
  通過按鍵設置繼電器2的工作時間,實現(xiàn)系統(tǒng)的自動斷電.
  通過設置繼電器1的工作時間,實現(xiàn)風扇的間歇轉(zhuǎn)動,實現(xiàn)節(jié)能.


  顯示部分:
  通過按鍵,在風扇轉(zhuǎn)動時間,暫停時間,和系統(tǒng)關(guān)閉剩余時間切換顯示.數(shù)碼顯示兩位,為"分"走時,其中系統(tǒng)關(guān)閉剩余時間為"小時"走時,LED為紅,黃,藍,分別點亮對應的風扇轉(zhuǎn)動,暫停,和系統(tǒng)關(guān)閉剩余時間的狀態(tài).


  按鍵部分:
  K1為時間調(diào)整移位鍵,按下此鍵,數(shù)碼閃爍,同時對應的燈閃爍.在風扇轉(zhuǎn)動時間,暫停時間,和系統(tǒng)之間切換
  K2為加一和狀態(tài)切換顯示鍵,當有K1按下,為時間加1.否則,在在風扇轉(zhuǎn)動時間,暫停時間,和系統(tǒng)之間切換顯示.
  K3為減1和備用鍵,當有K1按下,為時間加1,否則無效.


  繼電器部分:
  繼電器1控制風扇的電源線,實現(xiàn)風扇的轉(zhuǎn)動和暫時.
  繼電器2控制單片機系統(tǒng)的電源,實現(xiàn)系統(tǒng)定時關(guān)閉.


  原理圖如下:

利用單片機制作的自動定時斷電的電風扇控制器原理圖

  程序清單
  /*********************************************
  函數(shù)名稱: 聲明區(qū)
  功能描述:
  **********************************************/
  #include<reg51.h>
  #define uchar unsigned char
  #define uint unsigned int
  #define SEG P0 //數(shù)碼管段選.
  #define DIG P2 //數(shù)碼管位選
  uchar dis[2]; //數(shù)碼驅(qū)動組
  uchar code TAB[]={ 0xC0,0xF9,0xA4,0xB0,0x99,//0-4共陽.
  0x92,0x82,0xF8,0x80,0x90,0xff};//5-9,熄滅符
  uchar start,stop,close,sum,time; //各其本變量
  uchar fliflag,cflag,zflag,x,y;//各標志位
  uint count_T0,count_T1,c_count; //計數(shù)變量
  sbit K1=P3^7; //功能移位鍵
  sbit K2=P3^2; //加一鍵和切換移位鍵.
  sbit K3=P3^3; //減一.
  sbit RLED=P2^2; //紅燈,表風扇轉(zhuǎn)動狀態(tài).
  sbit YLED=P2^3; //黃燈,表風扇暫停狀態(tài)
  sbit BLED=P2^4; //藍燈,表系統(tǒng)狀態(tài)
  sbit CLED=P2^6; //風扇控制位
  sbit ZLED=P2^7; //系統(tǒng)工作控制位
  /*********************************************
  函數(shù)名稱:延時1MS函數(shù)
  功能描述:顯示調(diào)用.
  **********************************************/
  void delay1ms(uchar x)
  {
  uchar i,j;
  for(i=0;i<x;i++)
  for(j=0;j<120;j++);
  }
  /*********************************************
  函數(shù)名稱:顯示函數(shù)
  功能描述: 顯示分走時,兩位顯示.
  **********************************************/
  void display(void)
  {
  uchar i,scan=1;
  for(i=0;i<2;i++)
  { SEG=0xff;
  DIG=~scan;
  SEG=TAB[dis[i]];
  delay1ms(5);
  scan<<=1;
  }
  }
  /*********************************************
  函數(shù)名稱:延時5MS函數(shù)
  功能描述:按鍵消抖調(diào)用.
  **********************************************/
  void delay5ms(uchar x)
  {
  uchar j;
  for(j=0;j<x;j++)
  display();
  }
  /*********************************************
  函數(shù)名稱: 初始化函數(shù)
  功能描述: 各變量初始化.
  **********************************************/
  void init()
  { fliflag=0;//閃爍標志.
  cflag=1; //風扇狀態(tài)標志.
  zflag=0; //轉(zhuǎn)動標志.
  x=30;   //暫存
  y=10;    //暫存
  CLED=1;//系統(tǒng)工作.
  sum=0;   //移位
  start=30; //風扇轉(zhuǎn)動時間
  stop=10; // 暫停時間.
  close=5; //系統(tǒng)關(guān)閉剩余時間
  count_T0=0; //T0,T1相關(guān)
  count_T1=0;
  c_count=0;
  TMOD=0x11;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  TH1=(65536-50000)/256;
  TL1=(65536-50000)%256;
  EA=1;
  ET0=1;
  ET1=1;
  TR0=1;
  }
  /*********************************************
  函數(shù)名稱: 分離函數(shù)
  功能描述: 分離顯示十位,個位
  **********************************************/
  void disnner(void)
  { if(cflag==1)//1
  { RLED=0;YLED=1;BLED=1;//紅燈閃爍.
  time=start; //顯示轉(zhuǎn)動時間.
  }
  if(cflag==2)
  { RLED=1;YLED=0;BLED=1;
  time=stop;
  }
  if(cflag==3)
  { RLED=1;YLED=1;BLED=0;
  time=close;
  }
  dis[0]=time/10;
  dis[1]=time%10;
  }
  /*********************************************
  函數(shù)名稱:T0中斷函數(shù)
  功能描述: 產(chǎn)生1分鐘.
  **********************************************/
  void timer0(void)interrupt 1
  { TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  if(++count_T0==1200)//一分鐘.
  { count_T0=0;
  if(zflag==0) //為0
  { ZLED=1;   //則轉(zhuǎn)動.
  if(start!=99)//轉(zhuǎn)動時間為99,顯示99,不切換標志.一直轉(zhuǎn)動.
  {
  start--; //不,則倒計時.
  if(start==0)
  { zflag=1;//倒時時間到.切換標志.
  cflag=2;
  start=x;//重賦值
  }
  }
  }
  else
  { ZLED=0;   //否則暫停.
  stop--;   //倒計時計數(shù).
  if(stop==0)
  { cflag=1; //時間到.
  zflag=0;
  stop=y;
  }
  }
  if(close!=99)//系統(tǒng)時間為99,顯示99,系統(tǒng)一直工作..
  { if(++c_count==60) //對一分計數(shù)60,即一小時后.
  { c_count=0;
  close--;   //做一小時倒計時.
  if(close==0) //時間到,系統(tǒng)斷電.
  CLED=0; //低電平有效.
  }
  }
  }
  disnner();//分離.送顯示/
  }
  /*********************************************
  函數(shù)名稱:T1中斷服務函數(shù)
  功能描述: 調(diào)整時間閃爍用.
  **********************************************/
  void timer1(void)interrupt 3
  {
  TH1=(65536-50000)/256;
  TL1=(65536-50000)%256;
  if(++count_T1==6)//閃爍周期30MS
  {
  count_T1=0;
  fliflag=~fliflag; //切換
  if(fliflag==0)    //標志有效.
  {
  if(sum==1)cflag=1;//選用狀態(tài)閃爍.
  if(sum==2)cflag=2;
  if(sum==3)cflag=3;
  disnner();    //閃爍用.
  dis[0]=10;    //放熄滅符.
  dis[1]=10;
  }
  else    //否則,正常顯示.
  {
  RLED=1;YLED=1;BLED=1;
  dis[0]=time/10;
  dis[1]=time%10;
  }
  }
  }
  /*********************************************
  函數(shù)名稱:鍵掃描函數(shù)
  功能描述: 調(diào)整時間
  **********************************************/
  void scanner(void)
  { if(K1==0) //為0,表有鍵按下.
  {
  delay5ms(100);//延時500MS.
  if(K1==0) //還按下.剛退出.
  {
  while(K1==0)display();//等待釋放.
  delay5ms(2);     //消抖.
  cflag=1;   //退出顯示狀態(tài)1.
  count_T0=0;
  TR0=1;   //啟動T0
  TR1=0;   //關(guān)閃爍
  sum=0;   //歸位.
  x=start; //暫存.
  y=stop;   //暫存.
  }
  else
  {     //否則,有移位鍵按下.
  TR0=0;   //時間走動停止.
  TR1=1;   //開閃爍.
  sum++;   //移位.
  if(sum==4)
  sum=1;
  }
  }
  if(K2==0)
  {
  delay5ms(2);
  if(K2==0)
  {
  while(K2==0)display();
  delay5ms(2);
  if(sum) //有移位
  { if(sum==1)
  {
  start++;
  if(start==61)
  start=99;
  if(start==100)
  start=30;
  }
  if(sum==2)
  {
  stop++;
  if(stop==61)
  stop=5;
  }
  if(sum==3)
  {
  close++;
  if(close==9)
  close=99;
  if(close==100)
  close=1;
  }
  }
  else   //沒移位.
  {
  cflag++; //則進行顯示狀態(tài)移位.
  if(cflag==4)
  cflag=1;
  }
  }
  }
  if(K3==0)
  {
  delay5ms(2);
  if(K3==0)
  {
  while(K3==0)display();
  delay5ms(2);
  if(sum==1)
  { start--;
  if(start==29)
  start=99;
  if(start==98)
  start=60;
  }
  if(sum==2)
  { stop--;
  if(stop==4)
  stop=60;
  }
  if(sum==3)
  { close--;
  if(close==0)
  close=99;
  if(close==98)
  close=8;
  }
  }
  }
  }
  /*********************************************
  函數(shù)名稱:主函數(shù)
  功能描述:
  **********************************************/
  main()
  {
  init();
  while(1)
  {
  display();//顯示
  scanner(); //檢測按鍵..
  }
  }

 



  
0次

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!