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

標題: ATMEGA16A 按鍵數碼管 [打印本頁]

作者: 夏宇閃擎    時間: 2019-7-24 12:26
標題: ATMEGA16A 按鍵數碼管
* 【編譯環境】: ICCAVR  
* 【函數功能】: 按鍵K5 K6 實現數碼管加減1  初始值 8888
* 【晶    振】:  8M               
* 【芯    片】:  ATMEGA16A         
*                                              */   
/******************************************************************************/
      #define uchar unsigned char
          #define uint  unsigned int
          #include <iom16v.h>
          #define Set_Bit(val, bitn)    (val |=(1<<(bitn)))
      #define Clr_Bit(val, bitn)    (val&=~(1<<(bitn)))
      #define Get_Bit(val, bitn)    (val &(1<<(bitn)) )
          
      uchar disbuf[4]={0,0,0,0};
      uchar  discode[10]={ 0xC0, 0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };  //段碼表
      uchar  disbit[4]  ={ 0xFE, 0xFD,0xFB,0xF7}; //選通值   
      uchar  Key_Up;
      uchar  Key_Down;
          static uint k=8888;  
/******************************************************************************/
//延時函數
/******************************************************************************/                                                                                                                   
      void delay(void)
           {uint i;
             for(i=0;i<500;i++);
           }
/******************************************************************************/

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

//顯示函數
/******************************************************************************/                    
          void Display(void)
         {  uchar i;
            for(i=0;i<4;i++)
                {
                         PORTB=discode[disbuf[i]];
                 PORTA=disbit[i];
                 delay();
                 PORTA=0xff;
                            }
                 }       
/******************************************************************************/
//顯示數據處理
/******************************************************************************/                 
      void Process(uint i,uchar *disbuf)
         { disbuf[0]=i/1000;
                   i=i%1000;
                   disbuf[1]=i/100;
                   i=i%100;
                   disbuf[2]=i/10;
                   i=i%10;
                   disbuf[3]=i;
          }
/******************************************************************************/
//按鍵處理子程序
/******************************************************************************/            
      void Get_Key(void)
             {
                     if(Get_Bit(PINA,4)==0)    //PA4 按鍵處理函數        
                        {
                           Display();
                           Display();
                           Display();
                           Display();
                          while(!(Get_Bit(PINA,4)))//等待按鍵松開
                  {
                                  Display();
                  }
                                  k++;
                  if(k>9999)k=0;
                  Process(k,disbuf);   
                        }
                       
                      if(Get_Bit(PINA,5)==0)   //PA5 按鍵處理函數
                {  
                                  Display();
                                  Display();
                                  Display();
                               
                                 while(!Get_Bit(PINA,5))  //等待按鍵松開
                  {
                                  Display();
                                   Display();
                  }  
                  k--;   
                                     if(k==65535)k=9999;
                      Process(k,disbuf);     
                            }
         }
         void main (void)
             {
                         
                           DDRA|=1<<0|1<<1|1<<2|1<<3|0<<4|0<<5;//設置PA0,PA1,PA2為輸出,PA4,PA5為輸入
                   PORTA=0x00;
                                      
               DDRB=0xFF;
               PORTB=0xFF;
                        
               Process(k,disbuf);
                  while(1)
                 {   
                    Get_Key();
                                    Display();  
                              }
                         }
                                 
                     
                     
                       
                           
               
               

作者: admin    時間: 2019-7-24 14:32
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线亚洲电影 | 欧美性猛交 | 亚洲精品日日夜夜 | 国产精品成人在线播放 | 99re国产精品 | 国产精品亚洲成在人线 | 亚洲一区二区视频 | 久久久久一区 | 亚洲精品一二三区 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 九九伦理电影 | 91久久精品一区二区二区 | 久久美女网 | 欧美一级二级三级视频 | 天天操天天摸天天干 | 欧美激情一区二区三区 | 91视频一88av | 亚州精品天堂中文字幕 | 精产国产伦理一二三区 | 久久精品一区二区三区四区 | 亚洲一区二区在线 | 国产精品美女久久久久久免费 | 欧美激情视频一区二区三区在线播放 | 亚洲激情专区 | 亚洲精品国产一区 | 欧美一区二区三区视频在线 | 亚洲天天干 | 三级黄色片在线 | 五月天婷婷激情 | 久久久高清 | 99爱国产 | 99精品欧美一区二区三区综合在线 | 成人午夜精品 | 97超碰在线免费 | 成人免费视频网站在线观看 | 综合激情久久 | 国产精品国产a级 | 国产亚洲日本精品 | 中文字幕av中文字幕 | 亚洲电影免费 | 久久a久久|