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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數碼管后兩位為什么不顯示呢 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:572164 發表于 2019-6-25 22:07 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "STC15.h"
//#include "reg52.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
u8  LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8,sheding,huan,jiaohuan,fuhao;        //LED1到LDE8對應8個數碼管,順序從左到右        ,sheding用于調節變燈閃爍時間
u8 TIME;                                                                                                                                        //huan用于紅綠燈的切換

u8 code smgduan[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x01,0x40,0x08,0X49,0X00}; //前面9位顯示數字,后面4位顯示紅綠燈交替
sbit beep=P2^0;
sbit key1=P2^1;                        //定義閃爍時間+
sbit key2=P2^2;                        //定義閃爍時間-
void delay(void)   //延時20 us        誤差0 us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=7;a>0;a--);
}

void delay500us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=71;b>0;b--)
        for(a=2;a>0;a--);
}
void delay10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void DigDisplay()
{
           /************東西時間變化***************/
                if(jiaohuan==0)                           //jiaohuan是選擇交通信號燈切換
                {
                P1=0XFE;
                P0=(smgduan[LED8]|0x80);
                delay();
                P0=0X00;

                P1=0XFD;
                P0=(smgduan[LED7]);
                delay();
                P0=0X00;
          /****************************/
                P1=0X7F;        //7F
                P0=(smgduan[LED1]|0x80);
                delay();
                P0=0X00;

               
                   P1=0XBF;        //BF
                P0=(smgduan[LED2]);
                delay();
                P0=0X00;




                }
          /***********************************/
                if(jiaohuan==1)                                          //jiaohuan是選擇交通信號燈切換
                {

        P1=0XFE;
                P0=(smgduan[LED8]);
                delay();
                P0=0X00;

                P1=0XFD;
                P0=(smgduan[LED7]|0x80);
                delay();
                P0=0X00;
          /****************************/
                P1=0X7F;
                P0=(smgduan[LED1]);
                delay();
                P0=0X00;

               
                   P1=0XBF;                  //BF
                P0=(smgduan[LED2]|0x80);
                delay();
                P0=0X00;



                }
         

           /***************東西紅 黃 綠**********************/
                P1=0XFB;
                P0=smgduan[LED6];
                delay();
                P0=0X00;

           /***************東西紅 黃 綠**********************/
                P1=0XDF;
                P0=(smgduan[LED3]);
                delay();
                P0=0X00;


}


void Timer0Init()
{
        TMOD=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
        TH0=0XD8;        //給定時器賦初值,定時10ms
        TL0=0XF0;        
        ET0=1;//打開定時器0中斷允許
        EA=1;//打開總中斷
        TR0=1;//打開定時器                        
}

void beep_up()
{
          u8 i;
          for(i=0;i<10;i++)
          {
                   beep=~beep;
                   delay500us();
          }
          beep=1;

}


void timer_calculate() //時鐘計算函數
{
        /********************************************/
         TIME--;  //定時用
         fuhao=3;                  //黃燈亮前三秒閃

         LED7=TIME%10;
         LED8=TIME/10;

          LED1=LED7;
          LED2=LED8;               

            if(TIME==0)
           {
                     TIME=60;
                   jiaohuan=!jiaohuan;
           }
               


           if(TIME==2)
           {

                             LED6=17;
                  LED3=17;
           }


  /*****************************************/

        
         
         

        

/**********************************************/
   
        if(TIME<=sheding)
        {
           if(TIME>=fuhao)
           {
                  huan=!huan;
                if(jiaohuan==1)
                {
           switch(huan)
         {
           case 0:        LED6=18; LED3=16;break;
           case 1:  LED6=20; LED3=20;break;
        
         }
          }

                        if(jiaohuan==0)
                {
           switch(huan)
         {
           case 0:        LED6=16; LED3=18;break;
           case 1:  LED6=20; LED3=20;break;
        
         }
          }



         
            

        }
        }
/************************************************/

         
                  
/*****************************************/
         
           if(TIME==60)
           {
                   beep_up();
                        if(jiaohuan==0)
                {
                    LED6=16;
                LED3=18;
               
                }

           if(jiaohuan==1)
           {
           LED6=18;
           LED3=16;
           }
                  
        
               
           }

               
                        
}






void key_button()
{
        if(key1==0)
        {
           delay10ms();
           if(key1==0)
           {
                    sheding++;                     
           }

        
        }
        while(key1==0);

          if(key2==0)
        {
           delay10ms();
           if(key2==0)
           {
                     sheding--;
              
           }

        }
        while(key2==0);

         if(sheding<=0||sheding>=56)sheding=10;                   //固定按鍵設定范圍

}

void main()
{        
        Timer0Init();
        key1=1;
        key2=1;
          LED1=9;// 秒針第一位,初始化
        LED2=5;// 秒針第二位,初始化
        LED4=0;// 分針第一位,初始化
        LED5=0;// 分針第二位,初始化
        LED7=9;// 時針第一位,初始化
          LED8=5;// 時針第二位,初始化
    LED6=16;
        LED3=18;
         jiaohuan=0;
         TIME=59;
         sheding=10;
         huan=0;
         
        P0M1=0X00;
         P0M0=0X00;
         P1M0=0X00;
         P0M0=0X00;        
         
        while(1)
        {        
               
        DigDisplay();  //數碼管顯示函數        
        // dengzhuan();
         key_button();


        }               
}


void Timer0() interrupt 1
{
        static u16 i=0;
        TH0=0XD8;        //給定時器賦初值,定時10ms
        TL0=0XF0;
        i++;
        if(i==100)
        {
               
                i=0;
        
          timer_calculate(); //時鐘計算函數

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产高清 | 黄网站涩免费蜜桃网站 | 欧美精品欧美精品系列 | 久久午夜电影 | 国产一级片av | 国产一区 | 米奇狠狠鲁 | 伊人免费网| 成人在线看片 | 精品伊人久久 | 久久99精品久久久久久秒播九色 | 精品国产18久久久久久二百 | 欧美亚洲综合久久 | 成人欧美一区二区三区黑人孕妇 | 国户精品久久久久久久久久久不卡 | 久久精品久久久久久 | 99国产精品久久久 | 一区二区三区国产精品 | 精品一区二区三区视频在线观看 | 综合久久综合久久 | 在线观看成年视频 | 波霸ol一区二区 | 日韩在线一区二区三区 | 国产综合精品一区二区三区 | 日韩久久中文字幕 | 成人99| 国产传媒毛片精品视频第一次 | 免费a大片 | 91久久久久久久久久久久久 | 色999日韩| 国产在线观看 | 国产一区二区三区 | 精品综合久久久 | 在线观看黄视频 | 国产伦精品一区二区三区照片91 | 在线视频91 | 亚洲人成人一区二区在线观看 | 激情伊人网 | 午夜国产 | 日日夜夜91 | 午夜天堂精品久久久久 |