• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234
    設(shè)計開發(fā)

    專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開發(fā)工具

    提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

    技術(shù)支持

    從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

    新聞中心

    提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動態(tài)

    初學(xué)C.按鍵+ LCD+DS1302+A_D程序

    更新時間: 2019-03-23
    閱讀量:2612

    十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享初學(xué)C.按鍵+ LCD+DS1302+A_D程序。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。

    #include
    #include
    #define uchar  unsigned char
    #define uint   unsigned int
    static volatile unsigned char acc @ 0x20;
    static volatile bit acc0     @ (unsigned)&acc*8+0;
    static volatile bit acc7     @ (unsigned)&acc*8+7;
    #define PORTAIT(add,bit) ((unsigned)(&add)*8+(bit))
    #define PORTBIT(add,bit) ((unsigned)(&add)*8+(bit))
    #define PORTCIT(add,bit) ((unsigned)(&add)*8+(bit))

    static  bit    RS  @  PORTCIT(PORTC,0);  
    static  bit    RW  @  PORTCIT(PORTC,1);  
    static  bit    E   @  PORTCIT(PORTC,2);  
    static  bit T_RST  @  PORTCIT(PORTC,5);  
    static  bit  T_CLK @  PORTCIT(PORTC,6);  
    static  bit  T_IO  @  PORTCIT(PORTC,7);  

    static  bit  PORTA_0 @  PORTAIT(PORTA,0);   ///*定義PORTA 0位*/
    static  bit  PORTA_1 @  PORTAIT(PORTA,1);   ///*定義PORTA 1位*/
    static  bit  PORTA_2 @  PORTAIT(PORTA,2);   ///*定義PORTA 2位*/
    static  bit  PORTA_5 @  PORTAIT(PORTA,5);   

    static  bit  RB_7 @  PORTBIT(PORTB,7);
    const   unsigned char  Data[ ]={'0', '1', '2','3','4', '5', '6','7', '8','9',' '};
    const   unsigned char  Ds1302[] = {9, 9, 0, 7,  1, 9 ,3,9,  2,4, 5, 9 ,5,9,};
                                                          // // 年  星期   月    日    時   分  秒
    const   unsigned char ds1302_sub[ ]={0};
    uchar  DisCash[]={0x00,0x30,0x09,0x1,0x06,0x06,0x06};
                                  //初始化參數(shù)  秒  分  時  日 月 星期 年
      unsigned  char  y,i;
                char *pc;
      uchar  BCD[3];
    uchar get1302[7];
    uchar appear[]={0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0};
    void Delay   (  );
    void enable  ();
    void  display();//顯示程序
    //延時子程序
    void delay()
    {  
    unsigned  int i=1000;
      while(i--) //for(i=6000;0<i;>  {

      ;  // continue;
         }
    }
    ////////////////十六進(jìn)制轉(zhuǎn)十進(jìn)制程序

    void  H_BCD (uchar x)
    {  
             //i,j,t1,t2;
        BCD [2]=x%10;
        BCD [1]=(x%100)/10;
        BCD [0]=x/100;
    }
        
    //////////寫入數(shù)據(jù)子程序////////////////////////////
    void W_data ()
    {
             Delay();//判斷液晶顯示器是否忙
             RS=1;
             RW=0;
             PORTB=y;
           // enable();//寫入控制命令子程序
             E=1;
             E=0;
    }

    //////寫入控制命令子程序////////////////////////////
    void enable  ()
    {  Delay();
       RS=0;

      RW=0;
       PORTB =y;
       E=1;
       E=0;
    }
    ///////判斷液晶顯示器是否忙///////////////////////
    void Delay ()
    {
        RS=0;
        RW=1;
        E=0;
        NOP();
        TRISB=0x80;
        E=1;
    while(RB_7==1 )

     {
           RS=0;
           RW=1;
           E=0;
           NOP();
           E=1;
         }
         TRISB=0x00;
    }
    ///////////////////////////////////////////////////////////////////////////

    void  interrupt  adint(void)
      {
          ADIF=0;//清/AD中斷標(biāo)志位
      }

    ////////系統(tǒng) 各I/O初始化子程序///////////////////////////////////////////
    void  initial ()
    {   TRISB=0;
        TRISC=0;
        TRISA=0x0ff;
    }
    //////////A/D轉(zhuǎn)換初始化子程序//////////////////////////////
    void  adinitial()
    {

    ADCON1=15;//;設(shè)置RA為A/D甬道模擬輸入
                       //;RC時鐘。打開A/D轉(zhuǎn)換器。先中通道0
         ADCON0=0x0c1;// B'11000001'   // ;A/D時鐘為RC。RA0作A/D輸入等
           ADIE=1; //時。開放中斷
           ADIF=0; //清/AD中斷標(biāo)志位   PIR1,
           PEIE=1; //開放外圍部件中斷INTCON,
           GIE=1;   //開放總中斷   INTCON,
    }
    /////往1302寫入1Byte數(shù)據(jù)////////////////////////
    void RTInputByte(uchar d)
    {
        uchar i;
        acc = d;
        TRISC=0x00;
        for(i=8; i>0; i--)
        {
          T_IO = acc0;//CARRY;//ACC0;  //*相當(dāng)于匯編中的 RRC */
          T_CLK = 1;
          T_CLK = 0;

    acc = acc >> 1;
        }
    }
    ///////從1302讀取1Byte數(shù)據(jù)////////////////////////
    uchar RTOutputByte(void)
    {
        uchar i;
        TRISC=0x80;
        for(i=8; i>0; i--)
        {
          acc = acc >>1;         //*相當(dāng)于匯編中的 RRC */
          acc7= T_IO;// CARRY
          T_CLK = 1;
          T_CLK = 0;
        }
         return(acc);
    }
    ///////先寫地址,后寫命令/數(shù)據(jù)//////////////////////////
    void W1302(uchar ucAddr, uchar ucDa)
    {
        T_RST = 0;
        T_CLK = 0;
        T_RST = 1;
        RTInputByte(ucAddr);      // /* 地址,命令 */
        RTInputByte(ucDa);        // /* 寫1Byte數(shù)據(jù)*/
        T_CLK = 1;
        T_RST = 0;
    }
    ///////先寫地址,后讀命令/數(shù)據(jù)////////////////////////
    uchar R1302(uchar ucAddr)
    {
        uchar ucData;

    T_RST = 0;
        T_CLK = 0;
        T_RST = 1;
        RTInputByte(ucAddr);            // /* 地址,命令 */
        ucData = RTOutputByte();        // /* 讀1Byte數(shù)據(jù) */
        T_CLK = 1;
        T_RST = 0;
        return(ucData);
    }
    /////////向1302寫入 秒 分 時 日 月 星期 年 */////////////
    void Set1302(uchar *pClock)
    {

      uchar i;
        uchar ucAddr = 0x80;
        W1302(0x8e,0x00);           ///* 控制命令,WP=0,允許寫操作*/
        for(i =7; i>0; i--)
        {
          W1302(ucAddr,*pClock);    ///* 秒 分 時 日 月 星期 年 */
          pClock++;
          ucAddr +=2;
        }
         W1302(0x8e,0x80);          // /* 控制命令,WP=1,寫保護(hù)*/
    }
    ////////從1302讀出 秒 分 時 日 月 星期 年 *//////////////////
    void v_Get1302(unsigned char  ucCurtime[])
    {
    unsigned char i;
    unsigned char ucAddr = 0x81;
    for (i=0;i<7;i++)
       {
          ucCurtime[i] = R1302(ucAddr);///*格式為: 秒 分 時 日 月 星期 年 */
          ucAddr += 2;
       }
    }
    //////////拆字子程序///////////////////////////////////////
    void  bcd_bcd( )
      {  uchar   a=6;


        for (i=0;i<=15;)
         {
               appear[i]=(get1302[a]&0xf0)/16;

     i++;
               appear[i]=get1302[a]&0x0f;
               i++;
               a--;
         }
    }
    ////////按鍵掃描///////////////////////////////////////////////////
                  
    //////////按鍵掃描/////////////////////////////////////////////////
    void   Key()
    {  
       uchar a,b,c,i;
      di();
      a=PORTA ;

     if(56!=(a&56))
       {
          display();
          a=PORTA ;
          if(56!=(a&56))
          {
            for (b=0;b<14;)
              {
                    uchar  z,x;
        
                    for(z=50;z>0&&b<14;z--)
                      {    z--;
                          display();// delay();
                           delay();
                           a=PORTA;
                           a=a&56;
                           switch(a)
                            {
        
                                case 48 :
                                    if(Ds1302[b]!=appear[b] )
                                       (appear[b])++;
                                        a=PORTA ;
                                      for(x=20;x>0&&56!=(a&56);x--)
                                       {   display();// delay();

     delay();
                                        } break; // 年  星期  月 日   時  分 秒  
                                case 40 : if(appear[b]!=0)(appear[b])--;
                                           a=PORTA ;
                                            for(x=20;x>0&&56!=(a&56);x--)
                                            {  display();// delay();
                                                  delay();
                                            } break;//  年  星期  月 日   時  分 秒    
                                case 24 :  b++;   while( PORTA_5==0);     break;
                            }
                        }
                        
                         a=PORTA ;
                       for(z=50;( z>0&&56==(a&56));z--)
                       {  
                          
                          i=appear[b];
                          appear[b]=10;
                          display( );

           delay();
                          appear[b]=i;
                          a=PORTA;
                         //a=a&56;
                         z--;
                    
                        }
                      
              }
                     while( PORTA_5==0);
                      i=13;
                      c=12;
                    for(b=0;b<7;b++)
                     {
                          DisCash[b]=((appear[c]&0x0f)*16)|(appear[i]&0x0f);
                           i=i-2;
                           c=c-2;
                     }
                     Set1302(&DisCash[0]);
                     a=PORTA ;
           }  
        }

    //////////顯示子程序/////////////////////////////////////////////
    void  display()//顯示程序
    {
          y=0x80;//0x0C0;寫入起始地址
           enable();//寫入控制命令子程序
          
           for(i=0;i<8;)
           {
              y=Data[ appear[i]];    // 1';//0x47;
              W_data ();//寫入數(shù)據(jù)子程序
           // delay();
               i++;
               y=Data[ appear[i]];    // 1';//0x47;
               W_data ();//寫入數(shù)據(jù)子程序
           // delay();
               i++;
               y='-'; // 1';//0x47;
               W_data ();//寫入數(shù)據(jù)子程序
            //delay();
           }
            y=0x0C0;

     enable();//寫入控制命令子程序
            for(i=8;i<14;)
             {
                 y=Data[appear[i]];    // 1';//0x47;
                 W_data ();//寫入數(shù)據(jù)子程序
                    //delay();
                   i++;
                   y=Data[appear[i]];    // 1';//0x47;
                   W_data ();//寫入數(shù)據(jù)子程序
                   // delay();
                    i++;
                    y=':';    // 1';//0x47;
                    W_data ();//寫入數(shù)據(jù)子程序
                    // delay();
          
              }
                 y='-';    // 1';//0x47;
                 W_data ();//寫入數(shù)據(jù)子程序
                 // delay();

              for(i=0;i<3;i++)
                   {
            
                     y=Data[ BCD[i]];    // 1';//0x47;
                     W_data ();//寫入數(shù)據(jù)子程序
                    }
    }
    ///////主程序//////////////////////////////////////////////////////
    void main()

    {  
        // TRISB=0x00;
        // TRISC=0x00;
             Set1302(&DisCash[0]);
            initial ();//系統(tǒng) 各I/O初始化子程序
            adinitial();//A/D轉(zhuǎn)換初始化子程序/
            y=0x01;//PORTB
            enable();//寫入控制命令子程序
            y=0x38;//8位2行5X7點(diǎn)陣0x3c
            enable();//寫入控制命令子程序
            y=0x0C;//顯示器開,F(xiàn)=光標(biāo)開,閃爍開。
            enable();//寫入控制命令子程序
            y=0x06; //文字不動,光標(biāo)自動右移。
            enable();//寫入控制命令子程序

    ///////////////////////////////////////////////////
       while(1)
       {
            v_Get1302(get1302);//從1302讀出 秒 分 時 日 月 星期 年
           bcd_bcd(get1302);//拆字子程序
           H_BCD ( ADRES ); //十六進(jìn)制轉(zhuǎn)十進(jìn)制程序
           ei();
           ADGO=1;      //啟動A/D轉(zhuǎn)換 ADCON0,
          
           display();
            Key();
        }  
    }

     

    (文源網(wǎng)絡(luò),侵刪)

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>