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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ATMEGA16A 按鍵數碼管

[復制鏈接]
跳轉到指定樓層
樓主
ID:587926 發表于 2019-7-24 12:26 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
* 【編譯環境】: 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();  
                              }
                         }
                                 
                     
                     
                       
                           
               
               
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-7-24 14:32 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美成人影院 | 波多野结衣亚洲 | 999久久久精品 | 久久久久久久久久影视 | www.国产一区 | 日本小电影网站 | 欧美日韩综合一区 | 四虎影院美女 | 午夜久久久 | 成人精品在线观看 | 日韩中文一区二区三区 | 日本电影网站 | 夜夜爽99久久国产综合精品女不卡 | 国产精品视频一区二区三区不卡 | 国产91丝袜在线播放 | 亚洲成人精品在线观看 | 欧美一区 | 影音先锋中文字幕在线观看 | 国产精品一区二区免费 | 亚洲情综合五月天 | 色视频成人在线观看免 | 久草网址 | aaaa日韩| 国产在线精品一区二区 | 狠狠干美女 | xx视频在线观看 | 亚洲精品2区 | 成人精品福利 | 精品国产欧美一区二区 | 精品一区二区三区免费视频 | 国产黄视频在线播放 | 久久久久亚洲精品国产 | av免费看在线 | 成人av播放| 视频在线一区二区 | 欧美日韩一区精品 | 日韩欧美手机在线 | 日韩高清电影 | 国产精品美女久久久av超清 | 久久久综合网 | 国产精品一区久久久 |