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

標(biāo)題: 單片機(jī)數(shù)碼管后兩位為什么不顯示呢 求幫助 [打印本頁]

作者: zhangsh98    時(shí)間: 2019-6-25 22:07
標(biāo)題: 單片機(jī)數(shù)碼管后兩位為什么不顯示呢 求幫助
#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對(duì)應(yīng)8個(gè)數(shù)碼管,順序從左到右        ,sheding用于調(diào)節(jié)變燈閃爍時(shí)間
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位顯示數(shù)字,后面4位顯示紅綠燈交替
sbit beep=P2^0;
sbit key1=P2^1;                        //定義閃爍時(shí)間+
sbit key2=P2^2;                        //定義閃爍時(shí)間-
void delay(void)   //延時(shí)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()
{
           /************東西時(shí)間變化***************/
                if(jiaohuan==0)                           //jiaohuan是選擇交通信號(hào)燈切換
                {
                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是選擇交通信號(hào)燈切換
                {

        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;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開啟動(dòng)。
        TH0=0XD8;        //給定時(shí)器賦初值,定時(shí)10ms
        TL0=0XF0;        
        ET0=1;//打開定時(shí)器0中斷允許
        EA=1;//打開總中斷
        TR0=1;//打開定時(shí)器                        
}

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

}


void timer_calculate() //時(shí)鐘計(jì)算函數(shù)
{
        /********************************************/
         TIME--;  //定時(shí)用
         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;                   //固定按鍵設(shè)定范圍

}

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


        }               
}


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

         
                        
        }        
}




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91伊人网| 国产一区二区三区色淫影院 | 龙珠z国语版在线观看 | 黄色网址av| 日韩在线一区二区 | 96国产精品久久久久aⅴ四区 | 91精品国产综合久久久久蜜臀 | h视频免费在线观看 | 国产毛片久久久久久久久春天 | 九九视频在线观看视频6 | 国产探花| 成人精品在线观看 | 羞羞视频在线观看网站 | 久久精品国产久精国产 | 日韩成人在线网址 | 中文字幕一区二区三区在线乱码 | 亚洲aⅴ | 中文av网站 | 希岛爱理在线 | 欧美一区二区小视频 | 人人插人人 | 国产精品亚洲欧美日韩一区在线 | 91视频在线看 | 一区中文 | 欧美日韩在线免费观看 | 日韩欧美在线观看视频 | 天天影视亚洲综合网 | 久久久久国产精品一区 | 国产91av视频在线观看 | 久久伊人青青草 | 国产精品久久国产精品99 gif | 国产精品国产成人国产三级 | 中文字幕日韩三级 | 欧洲一级毛片 | 91精品国产综合久久久动漫日韩 | 成人精品免费视频 | 国产成人精品一区二区三区在线 | 天天拍天天操 | 毛片a区 | 欧美亚洲国语精品一区二区 | 欧美国产精品一区二区三区 |