99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

資深工程師實戰(zhàn)項目征服單片機精講【連載】

資深工程師實戰(zhàn)項目征服單片機精講【連載】

溫馨提示:可以關(guān)注微信公眾號:單片機精講吳鑒鷹,隨時隨地學習本項目的連在分享。



單片機精講 - 副本 (2) - 副本

2

 

       Hi!大家好,我叫吳鑒鷹,100%中國制造,長181cm,凈重70kg。采用人工智能,各部分零件齊全,軟硬件運轉(zhuǎn)穩(wěn)定,經(jīng)二十多年的運行,屬質(zhì)量信得過產(chǎn)品。是一名從業(yè)10多年的單片機工程師,長年從事單機、DSP、fpga、PLC以及觸摸屏的項目開發(fā),自信比牛頓更懂單片機、比諸葛亮更會玩DSP、比漢武大帝懂得什么是指針,這年頭就得玩一個綜合實力。 (以上內(nèi)容純屬調(diào)侃,絕無夸大自己之意)  

3

      聞得elecinfo上有一批志同道合之士,愿意一道交流技術(shù),于是花以時日瀏覽之,果然不乏臥虎藏龍之輩,鑒鷹深感欽佩,感謝這些前輩同行能夠分享自己的項目經(jīng)驗和學習心得。也通過這些有技術(shù)含量的帖子博客獲益不少。         

      回想當年鑒鷹剛剛大學本科畢業(yè)不久,進入一家大型國企,保守傳統(tǒng)思想——“教會徒弟,餓死師傅”這種陋習的影響,只能靠自己死磕書本,硬啃項目慢慢才取得一點進步。所以后來干脆辭職再次回到電子科技大學讀了三年研究生!為了讓現(xiàn)在畢業(yè)的畢業(yè)的年輕人不要重蹈鑒鷹當年的覆轍,我也愿意將自己多年積累的一點經(jīng)驗分享給大家,想讓更多的年輕人看到,獲得一點點幫助就足矣!     

      鑒鷹將會逐步分享自己的一點項目經(jīng)驗和學習心得,由于水平能力有限,紕漏之處,還望各位同行指出。每一個項目會提供原理圖、源程序還有仿真圖。

 

 

第一講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——硬件簡介

第二講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——源代碼介紹

第三講:吳鑒鷹單片機項目詳細解析系列(連載)之基于單片機的搖搖棒制作(一)——原理介紹

 

 

 

 

 

 

全部回復(fù)(25)
正序查看
倒序查看
2015-01-06 09:13
鑒鷹你好,歡迎來到電源網(wǎng)的單片機論壇,占個沙發(fā)期待后面的心得分享~·
0
回復(fù)
qiang7260
LV.5
3
2015-01-06 09:32
@電源網(wǎng)-娜娜姐
鑒鷹你好,歡迎來到電源網(wǎng)的單片機論壇,占個沙發(fā)期待后面的心得分享~·

支持吳老師在電源網(wǎng)開貼,在其他網(wǎng)站看到過吳老師的教程,很豐富對我?guī)椭艽蟆?

給吳老師提個建議:來這的網(wǎng)友以電源方面為主。可否吳老師講些數(shù)控/數(shù)調(diào)電源,數(shù)控充電器,數(shù)控LED

方面的案例。

0
回復(fù)
yzmkf
LV.1
4
2015-01-06 12:19
新生報到
0
回復(fù)
aninstone
LV.4
5
2015-01-06 17:24
占座聽講 我倒是很想重倒你的覆轍
0
回復(fù)
吳鑒鷹
LV.1
6
2015-01-07 09:23
@電源網(wǎng)-娜娜姐
鑒鷹你好,歡迎來到電源網(wǎng)的單片機論壇,占個沙發(fā)期待后面的心得分享~·
謝謝娜娜姐的支持,一定分享跟多有技術(shù)價值,原創(chuàng)的內(nèi)容。
0
回復(fù)
吳鑒鷹
LV.1
7
2015-01-07 09:34

     第一講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——硬件簡介

 

相關(guān)原理圖請點擊下載:

吳鑒鷹基于單片機的數(shù)字電子鐘.pdf

 

 HI!大家好,我叫吳鑒鷹,中國制造,長181cm,凈重70kg。采用人工智能,各部分零件齊全,軟硬件運轉(zhuǎn)穩(wěn)定,經(jīng)二十多年的運行,屬質(zhì)量信得過產(chǎn)品。是一名從業(yè)兩年的單片機工程師,長年從事單片機、DSP、fpga以及觸摸屏的項目開發(fā),自信比牛頓更懂單片機、比諸葛亮更會玩DSP、比漢武大帝懂得什么是指針,這年頭就得玩一個綜合實力。    

      其實吧, 人還不錯,出了長點帥點以外,也沒什么缺點

      在校期間,曾參加學校組織的電子設(shè)計大賽,一不小心獲得了一等獎,于是代表學校參加全省的電子設(shè)計大賽,一不小心碰上強敵,雖獲得一等獎,但并未拿到當年的最高獎項,所見,人外有人,天外有天于是更加發(fā)奮學習,以圖他日能技藝超群,聞得電子發(fā)燒友有一大幫志同道合之士,愿意一同切磋武藝,于是花以時日瀏覽之,果然不泛有臥虎藏龍之輩,吳某深感欽佩。

      從大學二年級起,尾隨恩師混跡于各大實驗室,也算小有技術(shù)心得,現(xiàn)在愿意與大家一塊分享兩年的項目經(jīng)驗,我相信只有交流才能促進發(fā)展,只有討論才能提升能力,懇請各位前輩同行斧正。    

     現(xiàn)在來第一講,詳細解析如何制作基于單片機的數(shù)字時鐘,提供詳細的硬件原理圖和軟件程序。      

    開關(guān)K1:K1 = 0時,時鐘正常運行,此時不允許調(diào)整時鐘。數(shù)碼管的高兩位顯示小時,后兩位顯示分鐘,led每閃一次表示時鐘運行一次,在調(diào)整的過程中,led是停止發(fā)亮的。

  一、 按鍵、開關(guān)功能說明:   

   *  按鍵RESET:按下能復(fù)位程序。     

   *  按鍵PULSE:提供單脈沖,從而實現(xiàn)單片機對外部脈沖的計數(shù),利用單脈沖實現(xiàn)相應(yīng)的位加一。    

   *  開關(guān)K0:K0 = 0能調(diào)整分位,K0 = 1能調(diào)整時位。    

   *  開關(guān)K2:k2為高電平時,使單脈沖輸入至INT1,通過外中斷實現(xiàn)相應(yīng)值的加一功能。

二、地址分配和鏈接     

   *  P2.7:  和寫信號一起組成字位口的片選信號,字位口的對應(yīng)地址為8000H。     

   *  P2.6:  和寫信號一起組成字位口的片選信號,字位口的對應(yīng)地址為4000H。     

   *  D0~D7: 單片機的數(shù)據(jù)總線,LED顯示的內(nèi)容通過D0~D7數(shù)據(jù)線從單片機傳到LED。   

   *  P2.0~P2.5:單片機的P2口,和2764的高位地址線相連,決定2764中的存儲單元的地址。   

   *  P1.4~P1.7: 單片機的P1端口,和發(fā)光二極管L1~L4相連,通過單片機的P1.4~P1.7控制,所以顯示秒表和時鐘的時間變化。    

   *  P1.0: 和開關(guān)K0相連,決定時間調(diào)整的字位。    

   *  P1.1 :  和開關(guān)K1相連,決定時間運行的模式。    

   *  P1.2: 和開關(guān)K2相連,決定外中斷的模式選擇。

三、整體功能簡介  

    LED顯示模塊與單片機的鏈接中,對LED顯示模塊的讀寫和字位、段碼的選擇通過口P2.6\P2.7完成的。 

     外部存儲器2764是通過鎖存器373和單片機相連,并且通過P2端口的相關(guān)信號線進行地址的分配。地址范圍是0000H~1FFFH。

 

0
回復(fù)
2015-01-07 09:36
@吳鑒鷹
謝謝娜娜姐的支持,一定分享跟多有技術(shù)價值,原創(chuàng)的內(nèi)容。[圖片]
客氣了,壇子里對這塊感興趣的朋友挺多的,之前也掀起了一股單片機學習熱,您來了應(yīng)該會更熱鬧~~~
0
回復(fù)
2015-01-07 09:41
歡迎吳老師來到電源網(wǎng)。技術(shù)分享贊一個
0
回復(fù)
吳鑒鷹
LV.1
10
2015-01-07 09:43

   第二講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——源代碼介紹

 

/******************************************************
*程序:吳鑒鷹數(shù)字電子鐘的設(shè)計                                                           
** 這一講的主要內(nèi)容: 數(shù)字電子鐘的設(shè)計原理和程序                                                                                
** 功能描述:  
** 輸 入:         
** 內(nèi)容:     
** 輸 出: 
**         
** 全局變量:
** 調(diào)用模塊: 
**
** 作 者:    吳鑒鷹
** 日 期:     14.02.17

備注:有什么錯誤的地方,歡迎各大燒友指正

O(∩_∩)O~
*******************************************************/
//變量定義和頭文件的調(diào)用
//定義頭文件和各個輸入管腳以及變量聲明
#include
#include
#define  uint unsigned int
#define  uchar  unsigned char


/*定義字型字位口*/
#define  DIGPORT  XBYTE  [0X8000]
#define  WORDPORT  XBYTE [0X4000]

/*定義P1口各管腳*/
sbit  K0 = P1^0;
sbit  K1 = P1^1;
sbit  K2 = P1^2;
sbit  BEEP = P1^3;
sbit  L0 = P1^4;
sbit  L1 = P1^5
sbit  L2 = P1^6;
sbit  L3 = P1^7;

uchar  data  BUFFER[2]  = {0,0};  //顯示的緩存數(shù)組,依次為低位、高位
uchar  data  CLOCK[4] = {0,0,0,0};
uchar  data  SECOND[2] = {0,0};

/*定義運行狀態(tài)*/
uchar  data  STATE = 0;
/*STATE = 0;秒表*/
/*STATE = 4,或者7,時鐘運行*/
/* STATE = 6,時鐘時調(diào)整 */

bit  bdata  SND = 0;    /*  秒表START(開始)  */
bit  bdata  RST = 0;     /*秒表RESET(復(fù)位)*/

/*數(shù)碼管顯示編碼“0”-“9”,"A","-"*/
uchar  code  TABLE[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X40};

/******************************************************
*程序:主程序                                                                                                                         
** 功能描述: 主干程序 
** 輸 入:         
** 內(nèi)容:     
** 輸 出: 
**         
** 全局變量:
** 調(diào)用模塊: 
**
** 作 者:    吳鑒鷹
** 日 期:     14.02.17

備注:有什么錯誤的地方,歡迎各大燒友指正

O(∩_∩)O~
*******************************************************/
void  main()
{
      uchar   stabak;
          P1 = 0X0F;
      EA = 1;
      IT1 = 1;
      ET0 = 1;
      TMOD = 0X61;
      TH0 = -5000/256;
      TL0 = -5000%256;
      TH1 = 0XFF;
      TL1 = 0XFF;
      T2CON = 0;
      TH2 = -5000/256;
      TL2 = -5000%256;

       K0 = 1;
       K1 = 1;
       K2 = 1;
       STATE = P1&0X07;
       stabak = STATE;

      for(;;)
    {
           switch(STATE)
        {
                case 0:
                {
                    EX1 = 0;
                    ET1 = 1;
                    ET2 = 1;
                    TR1 = 1;
                    SND = 1;
                    L1 = 1;    
                    L0 = 0;
                    L2 = 0;
                    SECOND[0] = 0;
                    SECOND[1] = 0;
                }break;

                 case   5:
                {
                          IE1 = 0;
                          EX1 = 1;
                          ET1 = 0;
                          ET2 = 0;
                          TR0 = 0;
                          L0 = 1;
                          L1 = 0;
                          L2 = 0;
                }break;

                case  6:
               {
                    IE1 = 0;
                    EX1 = 1;
                    ET1 = 0;
                    ET2 = 1;
                    TR0 = 0;
               }break;

                  default:
               {
                   EX1 = 0;
                   ET1 = 0;
                   ET2 = 1;
                   L1 = 0;
                                   L2 = 0;
               }

        }
         while(STATE == stabak)
     {
         switch(STATE)
      {
         case 0:
      {
         BUFFER[0] = SECOND[0];
         BUFFER[1] = SECOND[1];
      }break;
      
      case 5:
      {
          BUFFER[0] = CLOCK[2];
          BUFFER[1] = 101;/*A-*/
      }break;
      
      case 6:
      {
          BUFFER[0] = 110;/*A-*/
          BUFFER[1] = CLOCK[3];
      }break;
      
      default:
      {
          BUFFER[0] = CLOCK[2];
          BUFFER[1] = CLOCK[3];
      }break;
      
      default:
      {
          BUFFER[0] = CLOCK[2];
          BUFFER[1] = CLOCK[3];
      }
      
      }
      
     //顯示函數(shù)
     display();
     K0 = 1;
     K1 = 1;
     K2 = 1;
     STATE = P1&0X07;    
     }
     stabak = STATE;
    }
}

/******************************************************
*程序:子函數(shù)(1):timer0(void)                                                                                                                         
** 功能描述:  用定時器0實現(xiàn)24小時的時鐘顯示
** 輸 入:         
** 內(nèi)容:     
** 輸 出: 
**         
** 全局變量:
** 調(diào)用模塊: 
**
** 作 者:    吳鑒鷹
** 日 期:     14.02.17

備注:有什么錯誤的地方,歡迎各大燒友指正

O(∩_∩)O~
*******************************************************/
void  timer0(void)   interrupt  1  using 1
{
    /*重置定時器初值*/
TH0 = -5000/256;
TL0 = -5000%256;


/*定時器處理*/
CLOCK[0] = CLOCK[0]+1;
if((CLOCK[0] == 50) && (STATE >= 4))
{
    L0 = !L0;
}

if(CLOCK[0] == 100)
{
    if(STATE >= 4)  L0 = !L0;
    CLOCK[0] = 0;
    CLOCK[1] = CLOCK[1] + 1;
    
    if(CLOCK[1] == 60)
    {
       CLOCK[1] = 0;
    CLOCK[2] = CLOCK[2] + 1;
    if(CLOCK[2] == 60)
    {
        CLOCK[2] == 0;
     CLOCK[3] == CLOCK[3] + 1;
     if(CLOCK[3] == 24)
     {
        CLOCK[3] = 0;
     }
    }
    }
}
}

/******************************************************
*程序:子函數(shù)(2):intsvr1(void)                                                                                                                        
** 功能描述:  對外中斷1的按鍵脈沖進行判斷和計數(shù),并完成對應(yīng)的時間調(diào)整功能。
** 輸 入:         
** 內(nèi)容:     
** 輸 出: 
**         
** 全局變量:
** 調(diào)用模塊: 
**
** 作 者:    吳鑒鷹
** 日 期:     14.02.17

備注:有什么錯誤的地方,歡迎各大燒友指正

O(∩_∩)O~
*******************************************************/
void intsvr1(void) interrupt  2  using 2  
{
   if(STATE == 5)
   {
       CLOCK[2] == CLOCK[2] + 1;
    if(CLOCK[2] == 60)  CLOCK[2] == 0;
   }
   if(STATE == 6)
   {
       CLOCK[3] == CLOCK[3] + 1;
    if(CLOCK[3] == 24)  CLOCK[3] = 0;
   }
}

/******************************************************
*程序:子函數(shù)(3):display(void)                                                                                                                        
** 功能描述:  用動態(tài)顯示的方法,將當前的時間或秒表內(nèi)容通過數(shù)碼管顯示。
** 輸 入:         
** 內(nèi)容:     
** 輸 出: 
**         
** 全局變量:
** 調(diào)用模塊: 
**
** 作 者:    吳鑒鷹
** 日 期:     14.02.17

備注:有什么錯誤的地方,歡迎各大燒友指正

O(∩_∩)O~
*******************************************************/
void diplay(void)
{
   uchar i;
   uchar delay;
   uchar disp;
   uchar digit;
   digit = 0x08;
   for(i = 0;i < 2; i++)
   {
      if(BUFFET> 100)  
{
   disp = BUFFER%10 + 10;
}
   else  disp = BUFFER%10;
   
   DIGPORT = digit;
   WORDPORT = TABLE[disp];
   
   for(delay = 0;delay <= 200;delay ++);
   digit = digit >> 1;
   disp = BUFFER/10;
   
   DIGPORT = digit;
   WORDPORT = TABLE[disp];
   
   for(delay = 0;delay <= 200;delay ++);
   digit = digit >> 1;
   }
}
 

 

0
回復(fù)
2015-01-08 13:37
@吳鑒鷹
   第二講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——源代碼介紹 /*******************************************************程序:吳鑒鷹數(shù)字電子鐘的設(shè)計**這一講的主要內(nèi)容:數(shù)字電子鐘的設(shè)計原理和程序**功能描述:**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************///變量定義和頭文件的調(diào)用//定義頭文件和各個輸入管腳以及變量聲明#include#include#defineuintunsignedint#defineucharunsignedchar/*定義字型字位口*/#defineDIGPORTXBYTE[0X8000]#defineWORDPORTXBYTE[0X4000]/*定義P1口各管腳*/sbitK0=P1^0;sbitK1=P1^1;sbitK2=P1^2;sbitBEEP=P1^3;sbitL0=P1^4;sbitL1=P1^5sbitL2=P1^6;sbitL3=P1^7;uchardataBUFFER[2]={0,0};//顯示的緩存數(shù)組,依次為低位、高位uchardataCLOCK[4]={0,0,0,0};uchardataSECOND[2]={0,0};/*定義運行狀態(tài)*/uchardataSTATE=0;/*STATE=0;秒表*//*STATE=4,或者7,時鐘運行*//*STATE=6,時鐘時調(diào)整*/bitbdataSND=0;/*秒表START(開始)*/bitbdataRST=0;/*秒表RESET(復(fù)位)*//*數(shù)碼管顯示編碼“0”-“9”,"A","-"*/ucharcodeTABLE[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X40};/*******************************************************程序:主程序**功能描述:主干程序**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidmain(){ucharstabak;P1=0X0F;EA=1;IT1=1;ET0=1;TMOD=0X61;TH0=-5000/256;TL0=-5000%256;TH1=0XFF;TL1=0XFF;T2CON=0;TH2=-5000/256;TL2=-5000%256;K0=1;K1=1;K2=1;STATE=P1&0X07;stabak=STATE;for(;;){switch(STATE){case0:{EX1=0;ET1=1;ET2=1;TR1=1;SND=1;L1=1;L0=0;L2=0;SECOND[0]=0;SECOND[1]=0;}break;case5:{IE1=0;EX1=1;ET1=0;ET2=0;TR0=0;L0=1;L1=0;L2=0;}break;case6:{IE1=0;EX1=1;ET1=0;ET2=1;TR0=0;}break;default:{EX1=0;ET1=0;ET2=1;L1=0;L2=0;}}while(STATE==stabak){switch(STATE){case0:{BUFFER[0]=SECOND[0];BUFFER[1]=SECOND[1];}break;case5:{BUFFER[0]=CLOCK[2];BUFFER[1]=101;/*A-*/}break;case6:{BUFFER[0]=110;/*A-*/BUFFER[1]=CLOCK[3];}break;default:{BUFFER[0]=CLOCK[2];BUFFER[1]=CLOCK[3];}break;default:{BUFFER[0]=CLOCK[2];BUFFER[1]=CLOCK[3];}}//顯示函數(shù)display();K0=1;K1=1;K2=1;STATE=P1&0X07;}stabak=STATE;}}/*******************************************************程序:子函數(shù)(1):timer0(void)**功能描述:用定時器0實現(xiàn)24小時的時鐘顯示**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidtimer0(void)interrupt1using1{/*重置定時器初值*/TH0=-5000/256;TL0=-5000%256;/*定時器處理*/CLOCK[0]=CLOCK[0]+1;if((CLOCK[0]==50)&&(STATE>=4)){L0=!L0;}if(CLOCK[0]==100){if(STATE>=4)L0=!L0;CLOCK[0]=0;CLOCK[1]=CLOCK[1]+1;if(CLOCK[1]==60){CLOCK[1]=0;CLOCK[2]=CLOCK[2]+1;if(CLOCK[2]==60){CLOCK[2]==0;CLOCK[3]==CLOCK[3]+1;if(CLOCK[3]==24){CLOCK[3]=0;}}}}}/*******************************************************程序:子函數(shù)(2):intsvr1(void)**功能描述:對外中斷1的按鍵脈沖進行判斷和計數(shù),并完成對應(yīng)的時間調(diào)整功能。**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidintsvr1(void)interrupt2using2{if(STATE==5){CLOCK[2]==CLOCK[2]+1;if(CLOCK[2]==60)CLOCK[2]==0;}if(STATE==6){CLOCK[3]==CLOCK[3]+1;if(CLOCK[3]==24)CLOCK[3]=0;}}/*******************************************************程序:子函數(shù)(3):display(void)**功能描述:用動態(tài)顯示的方法,將當前的時間或秒表內(nèi)容通過數(shù)碼管顯示。**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voiddiplay(void){uchari;uchardelay;uchardisp;uchardigit;digit=0x08;for(i=0;i<2;i++){if(BUFFET>100){disp=BUFFER%10+10;}elsedisp=BUFFER%10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay>1;disp=BUFFER/10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay>1;}}  
關(guān)注加紅!
0
回復(fù)
苑留記
LV.8
12
2015-01-08 14:55

占個位置

0
回復(fù)
2015-01-09 09:32
@苑留記
占個位置
學習,學習!
0
回復(fù)
ZYZ
LV.1
14
2015-01-09 15:07
@yueyunno1
學習,學習!
原理圖好像有錯,P2. 6引腳沒有與其他相連。
0
回復(fù)
zhuzhu
LV.5
15
2015-01-09 16:44
@吳鑒鷹
   第二講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——源代碼介紹 /*******************************************************程序:吳鑒鷹數(shù)字電子鐘的設(shè)計**這一講的主要內(nèi)容:數(shù)字電子鐘的設(shè)計原理和程序**功能描述:**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************///變量定義和頭文件的調(diào)用//定義頭文件和各個輸入管腳以及變量聲明#include#include#defineuintunsignedint#defineucharunsignedchar/*定義字型字位口*/#defineDIGPORTXBYTE[0X8000]#defineWORDPORTXBYTE[0X4000]/*定義P1口各管腳*/sbitK0=P1^0;sbitK1=P1^1;sbitK2=P1^2;sbitBEEP=P1^3;sbitL0=P1^4;sbitL1=P1^5sbitL2=P1^6;sbitL3=P1^7;uchardataBUFFER[2]={0,0};//顯示的緩存數(shù)組,依次為低位、高位uchardataCLOCK[4]={0,0,0,0};uchardataSECOND[2]={0,0};/*定義運行狀態(tài)*/uchardataSTATE=0;/*STATE=0;秒表*//*STATE=4,或者7,時鐘運行*//*STATE=6,時鐘時調(diào)整*/bitbdataSND=0;/*秒表START(開始)*/bitbdataRST=0;/*秒表RESET(復(fù)位)*//*數(shù)碼管顯示編碼“0”-“9”,"A","-"*/ucharcodeTABLE[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X40};/*******************************************************程序:主程序**功能描述:主干程序**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidmain(){ucharstabak;P1=0X0F;EA=1;IT1=1;ET0=1;TMOD=0X61;TH0=-5000/256;TL0=-5000%256;TH1=0XFF;TL1=0XFF;T2CON=0;TH2=-5000/256;TL2=-5000%256;K0=1;K1=1;K2=1;STATE=P1&0X07;stabak=STATE;for(;;){switch(STATE){case0:{EX1=0;ET1=1;ET2=1;TR1=1;SND=1;L1=1;L0=0;L2=0;SECOND[0]=0;SECOND[1]=0;}break;case5:{IE1=0;EX1=1;ET1=0;ET2=0;TR0=0;L0=1;L1=0;L2=0;}break;case6:{IE1=0;EX1=1;ET1=0;ET2=1;TR0=0;}break;default:{EX1=0;ET1=0;ET2=1;L1=0;L2=0;}}while(STATE==stabak){switch(STATE){case0:{BUFFER[0]=SECOND[0];BUFFER[1]=SECOND[1];}break;case5:{BUFFER[0]=CLOCK[2];BUFFER[1]=101;/*A-*/}break;case6:{BUFFER[0]=110;/*A-*/BUFFER[1]=CLOCK[3];}break;default:{BUFFER[0]=CLOCK[2];BUFFER[1]=CLOCK[3];}break;default:{BUFFER[0]=CLOCK[2];BUFFER[1]=CLOCK[3];}}//顯示函數(shù)display();K0=1;K1=1;K2=1;STATE=P1&0X07;}stabak=STATE;}}/*******************************************************程序:子函數(shù)(1):timer0(void)**功能描述:用定時器0實現(xiàn)24小時的時鐘顯示**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidtimer0(void)interrupt1using1{/*重置定時器初值*/TH0=-5000/256;TL0=-5000%256;/*定時器處理*/CLOCK[0]=CLOCK[0]+1;if((CLOCK[0]==50)&&(STATE>=4)){L0=!L0;}if(CLOCK[0]==100){if(STATE>=4)L0=!L0;CLOCK[0]=0;CLOCK[1]=CLOCK[1]+1;if(CLOCK[1]==60){CLOCK[1]=0;CLOCK[2]=CLOCK[2]+1;if(CLOCK[2]==60){CLOCK[2]==0;CLOCK[3]==CLOCK[3]+1;if(CLOCK[3]==24){CLOCK[3]=0;}}}}}/*******************************************************程序:子函數(shù)(2):intsvr1(void)**功能描述:對外中斷1的按鍵脈沖進行判斷和計數(shù),并完成對應(yīng)的時間調(diào)整功能。**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidintsvr1(void)interrupt2using2{if(STATE==5){CLOCK[2]==CLOCK[2]+1;if(CLOCK[2]==60)CLOCK[2]==0;}if(STATE==6){CLOCK[3]==CLOCK[3]+1;if(CLOCK[3]==24)CLOCK[3]=0;}}/*******************************************************程序:子函數(shù)(3):display(void)**功能描述:用動態(tài)顯示的方法,將當前的時間或秒表內(nèi)容通過數(shù)碼管顯示。**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voiddiplay(void){uchari;uchardelay;uchardisp;uchardigit;digit=0x08;for(i=0;i<2;i++){if(BUFFET>100){disp=BUFFER%10+10;}elsedisp=BUFFER%10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay>1;disp=BUFFER/10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay>1;}}  
學習中
0
回復(fù)
higel
LV.8
16
2015-01-12 10:57
@吳鑒鷹
   第二講:吳鑒鷹單片機實戰(zhàn)精講之數(shù)字電子鐘的設(shè)計(一)——源代碼介紹 /*******************************************************程序:吳鑒鷹數(shù)字電子鐘的設(shè)計**這一講的主要內(nèi)容:數(shù)字電子鐘的設(shè)計原理和程序**功能描述:**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************///變量定義和頭文件的調(diào)用//定義頭文件和各個輸入管腳以及變量聲明#include#include#defineuintunsignedint#defineucharunsignedchar/*定義字型字位口*/#defineDIGPORTXBYTE[0X8000]#defineWORDPORTXBYTE[0X4000]/*定義P1口各管腳*/sbitK0=P1^0;sbitK1=P1^1;sbitK2=P1^2;sbitBEEP=P1^3;sbitL0=P1^4;sbitL1=P1^5sbitL2=P1^6;sbitL3=P1^7;uchardataBUFFER[2]={0,0};//顯示的緩存數(shù)組,依次為低位、高位uchardataCLOCK[4]={0,0,0,0};uchardataSECOND[2]={0,0};/*定義運行狀態(tài)*/uchardataSTATE=0;/*STATE=0;秒表*//*STATE=4,或者7,時鐘運行*//*STATE=6,時鐘時調(diào)整*/bitbdataSND=0;/*秒表START(開始)*/bitbdataRST=0;/*秒表RESET(復(fù)位)*//*數(shù)碼管顯示編碼“0”-“9”,"A","-"*/ucharcodeTABLE[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X40};/*******************************************************程序:主程序**功能描述:主干程序**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidmain(){ucharstabak;P1=0X0F;EA=1;IT1=1;ET0=1;TMOD=0X61;TH0=-5000/256;TL0=-5000%256;TH1=0XFF;TL1=0XFF;T2CON=0;TH2=-5000/256;TL2=-5000%256;K0=1;K1=1;K2=1;STATE=P1&0X07;stabak=STATE;for(;;){switch(STATE){case0:{EX1=0;ET1=1;ET2=1;TR1=1;SND=1;L1=1;L0=0;L2=0;SECOND[0]=0;SECOND[1]=0;}break;case5:{IE1=0;EX1=1;ET1=0;ET2=0;TR0=0;L0=1;L1=0;L2=0;}break;case6:{IE1=0;EX1=1;ET1=0;ET2=1;TR0=0;}break;default:{EX1=0;ET1=0;ET2=1;L1=0;L2=0;}}while(STATE==stabak){switch(STATE){case0:{BUFFER[0]=SECOND[0];BUFFER[1]=SECOND[1];}break;case5:{BUFFER[0]=CLOCK[2];BUFFER[1]=101;/*A-*/}break;case6:{BUFFER[0]=110;/*A-*/BUFFER[1]=CLOCK[3];}break;default:{BUFFER[0]=CLOCK[2];BUFFER[1]=CLOCK[3];}break;default:{BUFFER[0]=CLOCK[2];BUFFER[1]=CLOCK[3];}}//顯示函數(shù)display();K0=1;K1=1;K2=1;STATE=P1&0X07;}stabak=STATE;}}/*******************************************************程序:子函數(shù)(1):timer0(void)**功能描述:用定時器0實現(xiàn)24小時的時鐘顯示**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidtimer0(void)interrupt1using1{/*重置定時器初值*/TH0=-5000/256;TL0=-5000%256;/*定時器處理*/CLOCK[0]=CLOCK[0]+1;if((CLOCK[0]==50)&&(STATE>=4)){L0=!L0;}if(CLOCK[0]==100){if(STATE>=4)L0=!L0;CLOCK[0]=0;CLOCK[1]=CLOCK[1]+1;if(CLOCK[1]==60){CLOCK[1]=0;CLOCK[2]=CLOCK[2]+1;if(CLOCK[2]==60){CLOCK[2]==0;CLOCK[3]==CLOCK[3]+1;if(CLOCK[3]==24){CLOCK[3]=0;}}}}}/*******************************************************程序:子函數(shù)(2):intsvr1(void)**功能描述:對外中斷1的按鍵脈沖進行判斷和計數(shù),并完成對應(yīng)的時間調(diào)整功能。**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voidintsvr1(void)interrupt2using2{if(STATE==5){CLOCK[2]==CLOCK[2]+1;if(CLOCK[2]==60)CLOCK[2]==0;}if(STATE==6){CLOCK[3]==CLOCK[3]+1;if(CLOCK[3]==24)CLOCK[3]=0;}}/*******************************************************程序:子函數(shù)(3):display(void)**功能描述:用動態(tài)顯示的方法,將當前的時間或秒表內(nèi)容通過數(shù)碼管顯示。**輸 入:**內(nèi)容:**輸 出:****全局變量:**調(diào)用模塊:****作 者:吳鑒鷹**日 期:14.02.17備注:有什么錯誤的地方,歡迎各大燒友指正O(∩_∩)O~*******************************************************/voiddiplay(void){uchari;uchardelay;uchardisp;uchardigit;digit=0x08;for(i=0;i<2;i++){if(BUFFET>100){disp=BUFFER%10+10;}elsedisp=BUFFER%10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay>1;disp=BUFFER/10;DIGPORT=digit;WORDPORT=TABLE[disp];for(delay=0;delay>1;}}  
請繼續(xù)~ 
0
回復(fù)
2015-01-12 11:59
@ZYZ
原理圖好像有錯,P2.6引腳沒有與其他相連。
MARK
0
回復(fù)
2015-01-15 09:37
鷹哥講課我也占個座
0
回復(fù)
Temo
LV.5
19
2015-01-15 12:27

頂,來聽課

0
回復(fù)
2015-01-28 11:43
@Temo
頂,來聽課
鷹哥貌似飛走了
0
回復(fù)
吳鑒鷹
LV.1
21
2015-03-09 14:48
@電源網(wǎng)-娜娜姐
鷹哥貌似飛走了[圖片]
過完年,吳鑒鷹又飛回來了
0
回復(fù)
吳鑒鷹
LV.1
22
2015-03-09 14:56

3、吳鑒鷹單片機項目詳細解析系列(連載)之基于單片機的搖搖棒制作(一)——原理介紹

HI!大家好,我叫吳鑒鷹,100%年中國制造,長181cm,凈重70kg。采用人工智能,各部分零件齊全,軟硬件運轉(zhuǎn)穩(wěn)定,經(jīng)二十多年的運行,屬質(zhì)量信得過產(chǎn)品。是一名從業(yè)兩年的單片機工程師,長年從事單片機、DSP、fpga以及觸摸屏的項目開發(fā),自信比牛頓更懂單片機、比諸葛亮更會玩DSP、比漢武大帝懂得社么是指針,這年頭就得玩一個綜合實力。   其實吧, 人還不錯,出了長點帥點以外,也沒什么缺點

   在校期間,曾參加學校組織的電子設(shè)計大賽,一不小心獲得了一等獎,于是代表學校參加全省的電子設(shè)計大賽,一不小心碰上強敵,雖獲得一等獎,但并未拿到當年的最高獎項,所見,人外有人,天外有天于是更加發(fā)奮學習,以圖他日能技藝超群,聞得電子發(fā)燒友有一大幫志同道合之士,愿意一同切磋武藝,于是花以時日瀏覽之,果然不泛有臥虎藏龍之輩,吳某深感欽佩。

   從大學二年級起,尾隨恩師混跡于各大實驗室,也算小有技術(shù)心得,現(xiàn)在愿意與大家一塊分享兩年的項目經(jīng)驗,我相信只有交流才能促進發(fā)展,只有討論才能提升能力,懇請各位前輩同行斧正。   現(xiàn)在來第二講,詳細解析如何制作基于單片機的搖搖棒,提供詳細的硬件原理圖和軟件程序。   何為搖搖棒,鷹哥老給你們介紹搖搖棒是如今流行的一種玩具,在各種聚會、節(jié)日中均見得到它的身影。本設(shè)計也追隨著搖搖棒的原理,利用人眼的視覺暫留特性,通過AT89S52單片機對16只高亮度LED發(fā)光二極管進行控制, 配合手的左右搖晃就可呈現(xiàn)一幅完整的畫面。

原理圖下載:

吳鑒鷹搖搖棒原理圖.pdf  

  鷹哥的搖搖棒具有如下功能:

   1) 顯示  “就要離開電子科技大學了!”;

   2) 顯示  “o(∩_∩)o”微笑圖案;

   3) 顯示    心形圖案;

   4) 顯示  “LOVE”;

   5) 顯示  “天天開心”

   6)顯示  “笑笑照顧好自己!”

   7)顯示   “我們畢業(yè)了!”

   8)顯示   “周曉曉”

   9) 可以通過開關(guān)實現(xiàn)轉(zhuǎn)換,輪流顯示并循環(huán)。

 

跟大家講,搖搖棒其實很簡單,大學期間,我自己用萬用板搭了一個,別人覺得很好玩,就來問我怎么做。其實就是一個循環(huán)的LED顯示,利用人的視覺滯留產(chǎn)生靜態(tài)顯示的現(xiàn)象。要實現(xiàn)這個目標,就要求延時部分做的比較小,所以采用石英晶體振蕩器。而目前能夠?qū)崿F(xiàn)這種功能的器件有很多種,不同的類型的器件也能夠很好的完成。

 

    鷹哥的這個作品本著方便、價格低廉的原則,采用單片機控制,由水銀開關(guān)的閉合對單片機產(chǎn)生外部中斷,從而對中斷進行采集。到達一定數(shù)量便進行圖象的轉(zhuǎn)換。

   這是鷹哥當年在大學做的送給女朋友的哦!她玩了好久,還帶回去給她老爸看了,所以年輕的工程師可以做一個送給你心愛的姑娘啊!信鷹哥,搞定女神不是夢!

 

   整個系統(tǒng)由單片機控制模塊,開關(guān)及電源模塊和輸出顯示模塊三個部分構(gòu)成。

 

 

0
回復(fù)
2015-03-10 09:37
@吳鑒鷹
3、吳鑒鷹單片機項目詳細解析系列(連載)之基于單片機的搖搖棒制作(一)——原理介紹HI!大家好,我叫吳鑒鷹,100%年中國制造,長181cm,凈重70kg。采用人工智能,各部分零件齊全,軟硬件運轉(zhuǎn)穩(wěn)定,經(jīng)二十多年的運行,屬質(zhì)量信得過產(chǎn)品。是一名從業(yè)兩年的單片機工程師,長年從事單片機、DSP、fpga以及觸摸屏的項目開發(fā),自信比牛頓更懂單片機、比諸葛亮更會玩DSP、比漢武大帝懂得社么是指針,這年頭就得玩一個綜合實力。   其實吧, 人還不錯,出了長點帥點以外,也沒什么缺點[圖片]。   在校期間,曾參加學校組織的電子設(shè)計大賽,一不小心獲得了一等獎,于是代表學校參加全省的電子設(shè)計大賽,一不小心碰上強敵,雖獲得一等獎,但并未拿到當年的最高獎項,所見,人外有人,天外有天于是更加發(fā)奮學習,以圖他日能技藝超群,聞得電子發(fā)燒友有一大幫志同道合之士,愿意一同切磋武藝,于是花以時日瀏覽之,果然不泛有臥虎藏龍之輩,吳某深感欽佩。   從大學二年級起,尾隨恩師混跡于各大實驗室,也算小有技術(shù)心得,現(xiàn)在愿意與大家一塊分享兩年的項目經(jīng)驗,我相信只有交流才能促進發(fā)展,只有討論才能提升能力,懇請各位前輩同行斧正。   現(xiàn)在來第二講,詳細解析如何制作基于單片機的搖搖棒,提供詳細的硬件原理圖和軟件程序。   何為搖搖棒,鷹哥老給你們介紹搖搖棒是如今流行的一種玩具,在各種聚會、節(jié)日中均見得到它的身影。本設(shè)計也追隨著搖搖棒的原理,利用人眼的視覺暫留特性,通過AT89S52單片機對16只高亮度LED發(fā)光二極管進行控制, 配合手的左右搖晃就可呈現(xiàn)一幅完整的畫面。原理圖下載:吳鑒鷹搖搖棒原理圖.pdf    鷹哥的搖搖棒具有如下功能:   1) 顯示  “就要離開電子科技大學了!”;   2) 顯示  “o(∩_∩)o”微笑圖案;   3) 顯示    心形圖案;   4) 顯示  “LOVE”;   5) 顯示  “天天開心”   6)顯示  “笑笑照顧好自己!”   7)顯示   “我們畢業(yè)了!”   8)顯示   “周曉曉”   9) 可以通過開關(guān)實現(xiàn)轉(zhuǎn)換,輪流顯示并循環(huán)。 跟大家講,搖搖棒其實很簡單,大學期間,我自己用萬用板搭了一個,別人覺得很好玩,就來問我怎么做。其實就是一個循環(huán)的LED顯示,利用人的視覺滯留產(chǎn)生靜態(tài)顯示的現(xiàn)象。要實現(xiàn)這個目標,就要求延時部分做的比較小,所以采用石英晶體振蕩器。而目前能夠?qū)崿F(xiàn)這種功能的器件有很多種,不同的類型的器件也能夠很好的完成。     鷹哥的這個作品本著方便、價格低廉的原則,采用單片機控制,由水銀開關(guān)的閉合對單片機產(chǎn)生外部中斷,從而對中斷進行采集。到達一定數(shù)量便進行圖象的轉(zhuǎn)換。[圖片]   這是鷹哥當年在大學做的送給女朋友的哦!她玩了好久,還帶回去給她老爸看了,所以年輕的工程師可以做一個送給你心愛的姑娘啊![圖片]信鷹哥,搞定女神不是夢!    整個系統(tǒng)由單片機控制模塊,開關(guān)及電源模塊和輸出顯示模塊三個部分構(gòu)成。 [圖片] 
追女神的神器啊~福利貼
0
回復(fù)
Widey
LV.5
24
2015-03-21 19:49
@電源網(wǎng)-娜娜姐
追女神的神器啊~福利貼[圖片]
學習了 
0
回復(fù)
吳鑒鷹
LV.1
25
2015-03-24 20:12
@Widey
學習了 
好好學習,做一個送給你心愛的女生吧。
0
回復(fù)
2016-02-21 19:37
學習
0
回復(fù)
發(fā)
主站蜘蛛池模板: 亚洲成人黄色片 | 肉岳疯狂69式激情的高潮 | 亚洲黄网在线观看 | 一区二区三区精品视频免费看 | 国产三级网 | 国产精品网站在线 | 日韩精品美腿丝袜 | 毛片a片免费看 | 亚洲成人中文在线 | 高清国产午夜精品久久久久久 | 人妻丝袜AV中文系列先锋影音 | 国产一区影院 | 欧美精品一国产成人综合久久 | 国产精品久久久久久免费一级 | 91九色丨porny丨交换 | 日本黄色一级带 | 精品国产AV色一区二区深夜久久 | 国产三级无毒无害视频 | 酒色成人网 | 国产欧美亚洲精品第一区软件 | 中文字幕色哟哟 | 69久久夜色精品国产69蝌蚪网 | 国色天香免费视频日本 | 91精品在线视频观看 | 日韩AV一中美AV一中文字慕 | 久久精品国产亚洲av麻豆小说 | 国产精华最好的产品有哪些 | 日本一区二区免费高清视频 | 一级全黄男女免费大片 | 日本一区二区国产 | 国内精品福利 | 新版天堂资源中文www官网 | 1769中文字幕岛国 | 久久精品国产99久久久 | 国产精品成人一区二区三区吃奶 | 九九色视频| 东京复仇者第三季天竺篇在线观看 | 国产探花一区二区 | 日本看片一区二区三区高清 | 国产精品高潮久久 | 亚洲成人资源在线观看 |