单片机控制的简易定时报警器电路设计(含电路图和程序)

[09-11 23:01:35]   来源:http://www.88dzw.com  单片机学习   阅读:8539

文章摘要:unsigned char data state_val; //状态值unsigned char data show_val; //存放需要在数码管显示的数字unsigned char data init_val; //暂存倒计数的初始值char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//--延时--void delay(unsigned int i) //大约延时i*2个微秒{ while(--i);}//---按键扫描-unsi

单片机控制的简易定时报警器电路设计(含电路图和程序),标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
unsigned char data state_val; //状态值
unsigned char data show_val;  //存放需要在数码管显示的数字
unsigned char data init_val;  //暂存倒计数的初始值
char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//----------延时--------------
void delay(unsigned int i)   //大约延时i*2个微秒
{  while(--i);}
//-----------按键扫描-------------
unsigned char scan_key()
{  unsigned char i;
   i=P1&0x0f;
   delay(100);           //延时,去抖动
   if (i==(P1&0x0f))
   { if (P1_0==0)
     {  i=1;    }
     else
     { if (P1_1==0)
       { i=2;}
       else
       { if (P1_2==0)
          { i=3;}
          else
          { if (P1_3==0)
            { i=4;} }
       }  }  }
   else
   {  i=255; }
   return i;
}
//---------数码管显示---------------
void led_show(unsigned int v)
{
 unsigned char i;
 if (state_val!=2)     //动态扫描
 {i=v%10;              //取要显示的数的个位
  P0=led_seg_code[i];  //转换为7段码
  P2=0xfe;             //显示个位
  delay(15);           //延时
  i=v%100/10;          //取十位
  P0=led_seg_code[i];  //转换为7段码
  P2=0xfd;             //显示十位
  delay(5);            //延时
 }
 else
 { P0=led_seg_code[0]; //处于闪烁状态
   if (shan_val)
   { P2=0xff; }        //将数码管的关闭
   else
   { P2=0xfc; }         //将数码管的打开
 }
}
//----------定时器T1中断服务程序---------------
void  timer1() interrupt 3     //T1中断,250us中断一次
{ T1_cnt++;
  switch (state_val)
   { case 0:
         if(T1_cnt>3999)       //如果计数>3999, 计时1s
         {  T1_cnt=0;
            if(cnt_val!=0)
            { cnt_val--;}
            else

上一页  [1] [2] [3] [4] [5]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行