• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      用AVR單片單片機建立實驗應用全過程
      文章長度[10518] 加入時間[2006/7/1] 更新時間[2025/6/30 7:02:41] 級別[3] [評論] [收藏]

      www.527dz.com原創

      你準備好AVR下載電纜和AVR的開發軟件了嗎?如果準備好了,我們就來體驗一下玩單片機的樂趣吧!


      實驗目標


      現在我們的目標是設計一個電路,用AVR單片機來控制一個紅色的LED和綠色的LED。電路加電后,首先綠色的LED點亮,5秒鐘以后,綠色的LED熄滅,然后紅色的LED點亮5秒鐘。最后紅色的LED和綠色的LED以1Hz左右的頻率交替閃爍。


      通過本實驗可以讓我們了解玩AVR單片機的基本步驟和基本開發軟件的簡單使用。


      實驗器材


      需要準備的器材:Atmega8或者其他AVR單片機一片、紅色LED一只、綠色LED一只、萬能實驗板一塊、7805、100uF電容各一只、470歐姆電阻兩只。


      實驗電路圖



      (點擊圖片放大)


      用匯編語言編寫


      1)創建一個新項目:


      打開AVR Studio軟件,選擇“Project”菜單中的“New project”命令,彈出下面窗口。這里新建一個名為test1的項目。




      點擊“Finish”存盤后出現下面界面:



      (點擊圖片放大)



      2)編輯匯編源程序:


      右鍵點擊“Workspace”子窗口中的“Asselmber”目錄,選擇“Creat new file”創建源程序文件,取名為test1.asm保存。


      用匯編語言編寫的源程序如下:


      .include "M8def.inc" ;CPU配置文件


      .org $0000


      rjmp reset ;上電復位跳轉到主程序


      .org $0013 ;代碼段定位,跳過中斷區


      reset:ldi r16,low(ramend) ;設置堆棧指針


      out SPL,r16


      ldi r16,high(ramend)


      out SPH,r16


      ldi r16,0b00000011 ;設置PB0、PB1為輸出端口


      out DDRB,r16


      START:



      ldi r16,0b00000010 ;PB1輸出高電平,綠燈亮


      out PORTB,r16


      ldi r16,76 ;延時5秒


      rcall delay


      ldi r17,0b00000001 ;PB0輸出高電平,紅燈亮,PB1輸出低電平,綠燈滅


      out PORTB,r17


      ldi r16,76 ;延時5秒


      rcall delay


      LED: com r17 ;PB0、PB1端口電平翻轉,兩個LED交替閃爍



      out PORTB,r17


      ldi r16,50 ;延時1秒


      rcall delay


      rjmp LED ;循環執行LED交替閃爍


      delay:



      push r16 ;延時子程序,延時時間由R16調整


      delay0:



      push r16


      delay1:



      push r16


      delay2:



      push r16


      delay3:



      dec r16


      brne delay3


      pop r16


      dec r16


      brne delay2


      pop r16


      dec r16


      brne delay1


      pop r16


      dec r16


      brne delay0


      pop r16


      ret


      3)匯編源程序編譯


      點擊“Project”菜單中的“AVR Assemble setup”命令,彈出編譯設置窗口,然后按下圖設置




      點擊“Project”菜單中的“Build”或者“Build and Run”命令開始進行編譯。如果是選擇“Build and Run”命令進行編譯,則編譯成功以后直接就進入到軟件仿真狀態。軟件仿真參考后面的程序調試一節。源程序編譯完成以后將生成test1.hex 目標文件。


      編寫程序

      用C(ICC)語言編寫



      • 創建一個新項目:從ICC的“Project”菜單中選擇“New”命令,選擇一個目錄后,將這個項目取名為test_C1存盤。存盤后,在ICC窗口的右邊(項目管理器)顯示了新建工程的目錄結構,如下圖:


      項目管理器顯示的項目



      • 新建源程序文件:選擇“Fill”菜單的“New”命令,ICC自動生成一個Untitled-0的文件。然后“Fill”菜單的“Save As”命令,將Untitled-0文件名改為test_C1.c后存盤。
      • 添加源程序文件到項目中去:鼠標右鍵點擊項目管理器的File目錄,選擇彈出窗口的“Add To File”命令將test_C1.c文件加入到項目中,如下圖:


      源程序文件添加到了項目中



      • 開始編輯源程序:

      #include //和單片機類型相對應的頭文件,選擇Atmega8做實驗;


      #include


      void delay_1ms(void); //函數聲明,本實驗中會用到這兩個函數


      void delay_nms(unsigned int n);


      void main(void) //主函數


      {



      DDRB=0B00000011; //定義B口的PB0、PB1為輸出口


      PORTB=0B00000001; //PB0口輸出高電平,PB1口輸出低電平,綠燈亮


      delay_nms(5000); //延時5秒


      PORTB=0B00000010; //PB1口輸出高電平,PB0口輸出低電平,關閉綠燈,紅燈亮


      delay_nms(5000); //延時5秒


      while(1) //程序一直執行該循環


      {



      PORTB^=0B00000011; //翻轉PB0和PB1口


      delay_nms(1000);


      }


      }


      void delay_1ms(void)//1ms延時函數


      {



      unsigned int i;


      for (i=0;i<150;i++)


      {


      }


      }


      void delay_nms(unsigned int n)//延時n毫秒


      {



      unsigned int i;


      for (i=0;i

      delay_1ms();


      }



      • 源程序編譯:選擇“Project”菜單下的“Operation”命令彈出編譯選項。選擇你安裝ICC的include和Lib子目錄的文件路徑:



      • Compiler選項中“Output Format”選擇“COFF/HEX”,同時生成.cof和.hex文件。Cof文件用于在AVR Studio中進行軟件仿真,hex文件是最后要下載到單片機中的文件。另外,要根據你使用的AVR Studio選擇相應的版本。



      • 選擇目標單片機類型,本次實驗選擇Atmega8。


      編譯選項設置完畢以后,選擇“Project”菜單中的“Rebuild All”命令,如果源程序沒有問題,即可完成源程序的編譯。編譯完成后,我們看到在你的項目的目錄中生成了一個test_C1.cof和test_C1.hex文件。


       


      程序調試


      用AVR Studio軟件模擬單片機的運行,在電腦上觀察單片機執行情況是否符合我們的要求。



      • 選擇“File”菜單中的“Open File”命令,如果是調試C語言編寫的程序則打開test_C1.cof文件。這時彈出仿真選項窗口,如下圖:這里選擇軟件仿真“AVR Simulator”目標CPU選擇“Atmega8”。



      • 點擊上面窗口的“Finish”按鈕后,出現下面界面:左邊的Workspace的I/O子窗口顯示的是CPU的狀態,右邊窗口顯示的是你的源程序。


      (點擊圖片放大)



      • 將CPU的I/O口和Processor狀態展開,如下圖:在這里我們可以詳細的觀察控制本實驗中兩個LEB的PB0、PB1腳的電平變化,以及延時情況。



      • 我們注意到在上面窗口中,顯示的時鐘頻率是4MHz,但本實驗采用的時鐘頻率是1MHz,因此選擇“Debug”菜單中的“AVR Simulator Options”命令,彈出下面窗口:



      • 現在我們可以來看看你的程序是否能夠滿足我們的要求了!在“Debug”菜單中可以選擇多種程序執行方式,注意觀察CPU的狀態窗口,看看PB0、PB1腳的輸出電平是否按照我們計劃的規律在變化。

      搭建實驗電路板


      將實驗所需元器件按實驗一電路圖在萬能實驗板上焊接好。這里我是直接采用自制的下載插座插到實驗板上的CPU插座上進行程序下載,也可以在萬能實驗板上將單片機的MISO、SCK、MOSV、RST、VCC、GND腳用一個插座引出,再接到你的下載電纜上。




      下載程序到CPU中去


      使用PonyProg2000軟件下載Hex文件。



      • 打開PonyProg2000軟件,界面如下:



      • 點擊“設置”菜單中的“接口設置”,按以下界面設置:



      • 在“器件”菜單中選擇CUP型號,本實驗選擇“AVR micro”中的“Atmega8”。


      (點擊圖片放大)



      • 讀取和設置加密位/配置位。


      點擊“命令”菜單中的“配置位和保密位”,彈出以下窗口:




      連接好下載電纜,并且實驗板加電后,點擊“讀出”,軟件就將CUP的熔絲位配置信息讀出,然后按下面窗口設置好后,點擊“寫入”,CPU的熔絲位就配置好了!


      注意:本實驗采用Atmega8的內部RC振蕩器產生1M的系統時鐘。根據Atmega8手冊,CKSEL3、2、1、0應該配置為:0001。在PonyProg2000軟件中方框打溝是表示0,空是表示1。




      • 加載Hex文件,選擇test_C1.hex文件,點擊打開。



      • Hex文件加載后,點擊命令中的“寫入所有”,出現下面的界面,點擊“Yes”后,文件就開始下載到你實驗板上的CPU中了。



      實驗結果


      好了!現在可以看到我們實驗板上的兩個LED已經按照我們的要求在閃爍了,你還可以再增加幾個LED,讓LED能夠閃爍出更多的花樣。


      本實驗只是簡單介紹了AVR單片機相關軟件的簡單使用,更多細節大家可以參考相關書籍或者到本論壇討論。

      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版