新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)用制作:基于單片機(jī)的數(shù)顯可調(diào)定時(shí)器

實(shí)用制作:基于單片機(jī)的數(shù)顯可調(diào)定時(shí)器

作者: 時(shí)間:2012-09-03 來(lái)源:網(wǎng)絡(luò) 收藏

程序清單:

  #include AT89X51.H>

  #defi ne uchar unsigned char

  #defi ne uint unsigned int

  uchar bbit[]={0x04,0x02,0x01};

  uchar buffer[]={0,0,0};

  uchar hour=8,minute;//小時(shí)初始值為8,分鐘為00

  uint count;

  void delay(uchar ms)//毫秒級(jí)延時(shí)子程序

  {

  uchar j;

  for(;ms>0;ms--)

  for(j=0;j120;j++);

  }

  void tt0() interrupt 1 using 1//T0中斷子程序

  {

  TH0=(65535-50000)/256;

  TL0=(65535-50000)%256;

  if(count==1200) //50ms*1200=60s(秒)

  {

  count=0;

  if(hour==0minute==0)

  {

  P3_0=1; //繼電器動(dòng)作

  while(1){P1_7=0;}//充電完成 燈由閃爍變常亮

  }

  if(minute==0)

  {

  minute=60; hour--;

  if(hour>=9)hour=9;

  }

  minute--;

  if(minute>=59)minute=59;

  }

  buffer[0]=minute%10;//秒的低位放入顯示緩沖區(qū)

  buffer[1]=minute/10;//秒的高位放入顯示緩沖區(qū)

  buffer[2]=hour; //小時(shí)放入顯示緩沖區(qū)

  count++;

  if(count%10==0)

  P1_7=!P1_7; //正在充電 充電指示燈每秒閃爍一次

  }

  void display()//數(shù)碼管顯示子程序

  {uchar i;

  for(i=2;i!=0xff;i--)

  {

  P0=buffer[i];

  P2=bbit[i];

  delay(10);

  P0=0XFF;

  }

  }



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉