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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3037|回復: 8
打印 上一主題 下一主題
收起左側

不會。

[復制鏈接]
跳轉到指定樓層
樓主
ID:118284 發表于 2016-6-2 16:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
//控制過程是計時開始時:OUT=0;計時過程有聲音,OUT=0;后5秒KV=0;結束前5秒KV=1; 結束時OUT=1;并一直報警。
//OUT=0;后5秒KV=0;沒整好。有不規范的地方,也請規范一下。
#include<STC15.h>  
#define ulong unsigned long
char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
#define LED P1   //P1為數碼管的段選
sbit W1=P3^7;           //P37為數碼管的位選       
sbit W2=P3^1;                //P31為數碼管的位選
sbit W3=P3^0;                //P30為數碼管的位選
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狀態檢測
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;    //秒表狀態指示 0-計時暫停  1-正在倒計時  2-計時時間參數修改
int flag;  //秒表修改數據指示 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)    //如果"調時"按鍵按下
        {
     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)  //分支結構,根據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;
       }
      }
    }
}

//--------------------------------延時子函數------------------------------------
void delay(int x)
{
    int i,j;
    for(i=x;i>0l;i--)
     for(j=255;j>0;j--)
           ;
}
//-------------------------------顯示子函數---------------------------------------
void display_run()
{
if(TF0==1)    //如果定時器溢出
{
  TF0=0;    //清中斷標志位
  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;    //循環掃描
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;    //循環掃描
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()
{   //修改位的閃爍狀態
           if(TF1==1)
           {
                   TF1=0;
                   blink=(blink+1)%2;
           }

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

          // 修改狀態下的數碼管顯示
                  switch(flag)  //分支結構,根據flag的值來決定掃描狀態
       {

        case 0:   
        {
          sec_ge=sec%10;    //秒的個位和十位
          sec_shi=sec/10;
          min_ge=min%10;    //分的個位和十位
          min_shi=min/10;
          W1=0;    //循環掃描
          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;    //循環掃描
          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;    //循環掃描
          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;
       }

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2016-6-2 16:29 | 只看該作者
不會什么?是這個程序看不懂嗎?還是其他問題?
回復

使用道具 舉報

板凳
ID:118284 發表于 2016-6-2 16:42 | 只看該作者
計時開始OUT=0;后5秒KV=0;沒整好。開始后5秒KV=0;沒整好不會
回復

使用道具 舉報

地板
ID:7485 發表于 2016-6-2 20:11 | 只看該作者
看程序好像是不會使用循環。
回復

使用道具 舉報

5#
ID:118284 發表于 2016-6-2 21:10 來自手機 | 只看該作者
主要問題是無法設定。計時開始5秒后kV為零。
回復

使用道具 舉報

6#
ID:97438 發表于 2016-6-3 00:50 | 只看該作者
這程序我看得也是醉了。。。循環不會寫。。。先學一下基礎嘛。。。
回復

使用道具 舉報

7#
ID:118284 發表于 2016-6-3 04:44 | 只看該作者
新的.rar (114.04 KB, 下載次數: 3)
回復

使用道具 舉報

8#
ID:118284 發表于 2016-6-3 04:52 | 只看該作者
發了個工程和仿真文件,不會貼的,
回復

使用道具 舉報

9#
ID:124813 發表于 2016-6-3 07:36 | 只看該作者
沒有積分可以下載,急需資料啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av国产精品毛片一区二区小说 | 亚洲午夜精品 | 99久久精品国产毛片 | 久久久久亚洲精品 | 国产探花在线精品一区二区 | 日一区二区| 国产成人精品网站 | 欧美在线视频一区二区 | 亚洲视频 欧美视频 | 伊人99| 九色网址| 欧美综合国产精品久久丁香 | 亚洲高清一区二区三区 | 日韩免费视频一区二区 | 日本成人二区 | 一区二区成人 | 午夜影视在线观看 | 性国产xxxx乳高跟 | 99亚洲综合 | 中文在线一区二区 | 激情五月婷婷综合 | 中文字幕在线三区 | 国产日韩免费观看 | 午夜在线视频一区二区三区 | 国产精品自拍av | 日韩成人免费中文字幕 | 精品日韩一区二区 | 日韩欧美精品一区 | 日韩欧美中文字幕在线观看 | 精品日韩一区 | 免费av毛片 | 九九九视频 | 日本一区二区三区视频在线 | 天天色天天 | 观看毛片 | 91精品国产91久久久久游泳池 | 亚洲精品视频播放 | 亚洲国产成人av好男人在线观看 | 欧美激情在线精品一区二区三区 | 久久一区二区三区四区 | 欧美一区二区三区在线播放 |