找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3180|回復(fù): 0
收起左側(cè)

51單片機(jī)寫的曝光定時(shí)器C語言程序

[復(fù)制鏈接]
ID:37685 發(fā)表于 2013-9-5 13:39 | 顯示全部樓層 |閱讀模式
#include "at89x52.h"   
#include "intrins.h"                            //_nop_();延時(shí)函數(shù)用   

#define  uchar unsigned char   
#define  uint  unsigned int   


uchar code discode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};   
//共陽LED段碼表        "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"   
uint disdata[2]={0,0};            

/*********************延遲1ms**********************/   

void delayms(uint ms)      
// 延時(shí)子程序   
{                          
    unsigned char i;   
    while(ms--)   
    {   
        for(i = 0; i <105; i++);   
    }   
}   

/********************顯示函數(shù)*********************/   

void scan(uint time)   
{     uint t,s;   
if(time>=10)t=time/10 ;else t=0;   
s=time-t*10;   
   disdata[0]=t;   
   disdata[1]=s;   
P3=0xff;   
P3_6=0;   
P0=discode[disdata[0]];   
delayms(5);   
P3=0xff;   
P3_7=0;   
P0=discode[disdata[1]];   
delayms(5);   
P3=0xff;   
}   
/*******************顯示+延遲0.1秒************************/   

void delay_scan(uint t,uint codes)   
{    t=t*10;   
  while(t--){   
    scan(codes);      
   }   

}   


/*********************聲音函數(shù)**********************/   

void beep(uint t,uint s)      

{   if(s==0)s=360;   
    else if(s==1) s=90;   
    else if(s==2) s=30;   
    else s=300;        
    while(t--)   
    {   
        P2_1=0  ;   
        delayms(s);   
        P2_1=1;   
        delayms(s);   
    }   
    delayms(s/6);   

}   
/****************主函數(shù)************************/   
main()   
{   
uint time=0;   
P1=0xFF;   


while(1)   
{   
scan(time);   

if(P1_0==0){   
delayms(5);   
if(P1_0==0){   
if(time<60) time++;else beep(1,1);   
scan(time);   
delay_scan(1,time);   
}   
}   
//----   
if(P1_1==0){   
delayms(5);   
if(P1_1==0){   
if(time>0) time--;else beep(1,1);   
scan(time);   
delay_scan(1,time);   
}   
}   
//----   
if(P1_2==0)   
{   
    delayms(5);   
    if(P1_2==0 && time>0)   
    { P2_0=1;   
      delay_scan(3,time);   
      while(time--)   
      { beep(1,2);   
        P2_0=0;   
      delay_scan(10,time);   


      }   
       P2_0=1;   
       beep(1,1);   
       time=0;   
    }   
    else   
    beep(1,0);   
    time=0;   
}   
//----   
if(P1_3==0){   
delay_scan(7,time);   
if(P1_3==0){   
beep(2,1);   
P2_0=~P2_0;   
delay_scan(10,time);   
}   
}   

}   
}   


回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表