久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

不會。

[復(fù)制鏈接]
ID:118284 發(fā)表于 2016-6-2 16:17 | 顯示全部樓層 |閱讀模式
50黑幣
//控制過程是計時開始時:OUT=0;計時過程有聲音,OUT=0;后5秒KV=0;結(jié)束前5秒KV=1; 結(jié)束時OUT=1;并一直報警。
//OUT=0;后5秒KV=0;沒整好。有不規(guī)范的地方,也請規(guī)范一下。
#include<STC15.h>  
#define ulong unsigned long
char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
#define LED P1   //P1為數(shù)碼管的段選
sbit W1=P3^7;           //P37為數(shù)碼管的位選       
sbit W2=P3^1;                //P31為數(shù)碼管的位選
sbit W3=P3^0;                //P30為數(shù)碼管的位選
sbit time_shift=P3^4;   //P3^4為"移位"按鍵
sbit time_set=P3^5;     //P3^5為"修改"按鍵
sbit set_inc=P3^2;      //P3^2為"增加"按鍵
sbit time_run=P3^3;     //P3^3為"計時開始暫停"按鍵
sbit OUT=P2^4;                //P5^4為MA高壓開,P24仿真。                                                                                         
sbit KV=P2^5;                    //P5^5為升壓輸出,P25仿真。
sbit KVI=P2^6;                    //P2^6為KV狀態(tài)檢測
sbit LI=P3^6;                    //P3^6為MA過流輸入
sbit WA=P2^7;                    //P3^7為無MA輸入                       
sbit GU=P1^7;                    //P1^7為MA過流故障燈
sbit LIGHT=P2^3;            //P2^3
sbit SPEAKER=P2^7;            //P2^7喇叭
unsigned char sec,min,sec_ge,sec_shi,min_ge,min_shi,t; //定義秒,分,時,秒的個位,十位,分的個位,十位
int state;    //秒表狀態(tài)指示 0-計時暫停  1-正在倒計時  2-計時時間參數(shù)修改
int flag;  //秒表修改數(shù)據(jù)指示 0-分鐘十位 1-分鐘個位 2-秒鐘十位  3-秒鐘個位
int  blink;
//---------------------------------------------------------------------
void init();
void display_run();
void display_pause();
void delay(int);
void time_modify();



//---------------------------------------------------------------------
void main()
{
init();
state=0;
flag=0;
blink=1;
t=0;

LIGHT=1;
SPEAKER=1;
OUT=1;
KVI=1;

min=2;
sec=0;
sec_ge=0;    //秒的個位和十位
sec_shi=0;
min_ge=2;    //分的個位和十位
                                                                                       
while(1)
{
   if(time_set==0)    //如果"調(diào)時"按鍵按下
        {
     delay(5);      //延時去抖
     if(time_set==0)
     state=2;
        }

   if(state==0)
     {
         TR0=0;
           TR1=0;
     display_pause();
         }
           if(state==0)
     {
         OUT=1;
    display_pause();
         }
   if(state==1)
   {
     TR0=1;
            TR1=0;
     display_run();
         }
   if(state==2)
    {
         TR1=1;
         OUT=1;
         time_modify();
     }
    if(state==1)
    {
         TR1=1;
         OUT=0;
         time_modify();
         }
    if(state==1)
    {
     OUT=0;
         time_modify();
    }
        if(state==1)
            { if(KVI==0)
       
    {time_set=0;
        delay(5); //延時
     OUT=1;
         time_modify();

        }
        }
   }
}

//---------------------------------------------------------------------
void init()
{

TMOD=0x11;
EA=1;                       //開總中斷
ET0=0;
ET1=0;        //定義定時器0工定時器1作與方式1
TH0=0x4d;     //定時器0賦初值
TL0=0xfc;

TH1=15536/256;     //定時器1賦初值
TL1=15536%256;

//中斷初始化
  EX0=1;
  PX0=0;               
  IT0=1;
  EX1=1;
  PX1=1;
  IT1=1;

}


//外中斷1
void INT_1() interrupt 2 using 0
{
  if( time_run==0)//表示按鈕有按下
  {
    delay(20); //延時
    if(time_run==0)
        {
     state=(state+1)%2;
         LIGHT=1;
     SPEAKER=1;
    }
  }
}

//外中斷0
void INT_0()  interrupt 0 using 1
{
  if( set_inc==0)//表示按鈕有按下
  {
    delay(20);  //延時去抖
     if(set_inc==0)
     {      
                  switch(flag)  //分支結(jié)構(gòu),根據(jù)flag的值來判斷哪一位加1
       {
       
        case 0:   
        {
         min=(min+1)%10+min/10*10;
         break;
        }
        case 1:     
        {
         sec=(sec+10)%60;
         break;
        }
        case 2:   
        {
         sec=(sec+1)%10+sec/10*10;
         break;
        }
        default:break;
       }
      }
    }
}

//--------------------------------延時子函數(shù)------------------------------------
void delay(int x)
{
    int i,j;
    for(i=x;i>0l;i--)
     for(j=255;j>0;j--)
           ;
}
//-------------------------------顯示子函數(shù)---------------------------------------
void display_run()
{
if(TF0==1)    //如果定時器溢出
{
  TF0=0;    //清中斷標(biāo)志位
  t++;
  if(t==20)
  {
     t=0;
     if(min==0&&sec==0)   
         {

         OUT=1;

         }
     if(sec==0)  
         {
     sec=59;
     min--;
         }
     else sec--;

     if(state==1)
          

               

         {         GU=0;
                 SPEAKER=0;
                 delay(1);
                 GU=1;
                 SPEAKER=1;
                 delay(1);
                 GU=0;
                  SPEAKER=0;
                 delay(1);
                 GU=1;
                 SPEAKER=1;
                 delay(1);
                 GU=0;
                 SPEAKER=0;
                 delay(1);
                  GU=1;
                 SPEAKER=1;
                 delay(1);
                 GU=0;
                  SPEAKER=0;
                 delay(1);
                 GU=1;
                 SPEAKER=1;
                 delay(1);
                 GU=0;
                 SPEAKER=0;
                 delay(1);
                  GU=1;
                 SPEAKER=1;
                 delay(1);
                 GU=0;
                  SPEAKER=0;
                 delay(1);
                 GU=1;
                 SPEAKER=1;
                 delay(5000); //想開機5秒后KV=0;沒整好。影響讀秒。
                 }
                 KV=0;
              if(min==0&&sec<5)
         {                                                                                                                                                                       
                 KV=1;
                 SPEAKER=0;
                 delay(20);
                 SPEAKER=1;
         }
     if(min==0&&sec==0)

         {   

  SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;

         OUT=1;
                  state=3;
                  min=2;//回歸初始化
         sec=0;
         sec_ge=0;    //秒的個位和十位
         sec_shi=0;
         min_ge=2;    //分的個位和十位
                while(1)
{  
  SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
       SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
  SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
      SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
  SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
    SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
  SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
   SPEAKER=0;
  delay(2);
  GU=1;
  SPEAKER=1;
  delay(2);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;  
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
  SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
  SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
  SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
  SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;  
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
    SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;
   SPEAKER=0;
  delay(1);
  GU=1;
  SPEAKER=1;
  delay(1);
  GU=0;  
   SPEAKER=0;
  delay(5);
  GU=1;
  SPEAKER=1;
  delay(5);
  GU=0;
    SPEAKER=0;
  delay(5);
  GU=1;
  SPEAKER=1;
  delay(5);
  GU=0;
   SPEAKER=0;
  delay(5);
  GU=1;
  SPEAKER=1;
  delay(5);
  GU=0;
    delay(500);
}
               
               

         }
         }
         }
sec_ge=sec%10;    //秒的個位和十位
sec_shi=sec/10;
min_ge=min%10;    //分的個位和十位

W1=0;    //循環(huán)掃描
LED=tab[sec_ge];
delay(1);
W1=1;
W2=0;
LED=tab[sec_shi];
delay(1);
W2=1;
W3=0;
LED=tab[min_ge];
delay(1);
W3=1;

}


void display_pause()
{
W1=0;    //循環(huán)掃描
LED=tab[sec_ge];
delay(1);
W1=1;
W2=0;
LED=tab[sec_shi];
delay(1);
W2=1;
W3=0;
LED=tab[min_ge];
delay(1);
W3=1;

}

void time_modify()
{   //修改位的閃爍狀態(tài)
           if(TF1==1)
           {
                   TF1=0;
                   blink=(blink+1)%2;
           }

          //修改具體哪個數(shù)碼管指示
     if(time_shift==0)   
     {
         delay(60);   
      if(time_shift==0)
       flag=(flag+1)%3;   
     }

          // 修改狀態(tài)下的數(shù)碼管顯示
                  switch(flag)  //分支結(jié)構(gòu),根據(jù)flag的值來決定掃描狀態(tài)
       {

        case 0:   
        {
          sec_ge=sec%10;    //秒的個位和十位
          sec_shi=sec/10;
          min_ge=min%10;    //分的個位和十位
          min_shi=min/10;
          W1=0;    //循環(huán)掃描
          LED=tab[sec_ge];
          delay(1);
                   W1=1;
          W2=0;
          LED=tab[sec_shi];
          delay(1);
                  W2=1;
           if(blink==1)
                  {
                   W3=0;
           LED=tab[min_ge];
           delay(1);
                   W3=1;
                   }

                  break;
        }
        case 1:     
        {
         sec_ge=sec%10;    //秒的個位和十位
          sec_shi=sec/10;
          min_ge=min%10;    //分的個位和十位
          min_shi=min/10;
          W1=0;    //循環(huán)掃描
          LED=tab[sec_ge];
          delay(1);
                  W1=1;
                  if(blink==1)
                  {
          W2=0;
          LED=tab[sec_shi];
          delay(1);
                  W2=1;
                  }
          W3=0;
          LED=tab[min_ge];
          delay(1);
                  W3=1;

          break;
        }
        case 2:   
        {
          sec_ge=sec%10;    //秒的個位和十位
          sec_shi=sec/10;
          min_ge=min%10;    //分的個位和十位
          min_shi=min/10;
                  if(blink==1)
                  {
          W1=0;    //循環(huán)掃描
          LED=tab[sec_ge];
          delay(1);
                  W1=1;
                  }
          W2=0;
          LED=tab[sec_shi];
          delay(1);
                  W2=1;
          W3=0;
          LED=tab[min_ge];
          delay(1);
                  W3=1;

         break;

          break;
        }

        default:break;
       }

}


回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2016-6-2 16:29 | 顯示全部樓層
不會什么?是這個程序看不懂嗎?還是其他問題?
回復(fù)

使用道具 舉報

ID:118284 發(fā)表于 2016-6-2 16:42 | 顯示全部樓層
計時開始OUT=0;后5秒KV=0;沒整好。開始后5秒KV=0;沒整好不會
回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2016-6-2 20:11 | 顯示全部樓層
看程序好像是不會使用循環(huán)。
回復(fù)

使用道具 舉報

ID:118284 發(fā)表于 2016-6-2 21:10 來自手機 | 顯示全部樓層
主要問題是無法設(shè)定。計時開始5秒后kV為零。
回復(fù)

使用道具 舉報

ID:97438 發(fā)表于 2016-6-3 00:50 | 顯示全部樓層
這程序我看得也是醉了。。。循環(huán)不會寫。。。先學(xué)一下基礎(chǔ)嘛。。。
回復(fù)

使用道具 舉報

ID:118284 發(fā)表于 2016-6-3 04:44 | 顯示全部樓層
新的.rar (114.04 KB, 下載次數(shù): 3)
回復(fù)

使用道具 舉報

ID:118284 發(fā)表于 2016-6-3 04:52 | 顯示全部樓層
發(fā)了個工程和仿真文件,不會貼的,
回復(fù)

使用道具 舉報

ID:124813 發(fā)表于 2016-6-3 07:36 | 顯示全部樓層
沒有積分可以下載,急需資料啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲伊人a | 超碰在线人 | 综合久久99 | 天天射色综合 | 日韩视频中文字幕 | 欧美日韩精品一区二区三区蜜桃 | 久久尤物免费一区二区三区 | 亚洲成人午夜电影 | 51ⅴ精品国产91久久久久久 | 福利视频大全 | 天天操天天干天天透 | 国产污视频在线 | 欧美精品一区二区在线观看 | 久久亚洲精品久久国产一区二区 | 欧美片网站免费 | 亚洲精品视频在线观看免费 | 亚洲欧美综合精品另类天天更新 | 国产一区二区三区在线观看免费 | 精品欧美一区二区三区久久久 | 麻豆视频在线免费观看 | 欧美极品在线观看 | 久久精品免费 | 精品三级在线观看 | 久久最新| 亚洲欧美日韩一区 | 秋霞a级毛片在线看 | 中文字幕一区在线观看视频 | 亚洲91视频 | 成人国产精品一级毛片视频毛片 | 日韩视频区 | 色在线视频网站 | 伊人网伊人 | 久久久.com| 日韩欧美在线不卡 | 91视频大全 | 欧美日韩在线视频一区二区 | 欧美精品乱码久久久久久按摩 | 999久久精品 | 日韩av电影院 | 久久久精品视频一区二区三区 | 日本色高清 |