單片機(jī)技術(shù)及應(yīng)用項(xiàng)目教程 課件全套 欒秋平 項(xiàng)目1-8 與單片機(jī)的一見鐘情-記錄你與單片機(jī)的相識(shí)- 單總線-溫度測量報(bào)警系統(tǒng)_第1頁
單片機(jī)技術(shù)及應(yīng)用項(xiàng)目教程 課件全套 欒秋平 項(xiàng)目1-8 與單片機(jī)的一見鐘情-記錄你與單片機(jī)的相識(shí)- 單總線-溫度測量報(bào)警系統(tǒng)_第2頁
單片機(jī)技術(shù)及應(yīng)用項(xiàng)目教程 課件全套 欒秋平 項(xiàng)目1-8 與單片機(jī)的一見鐘情-記錄你與單片機(jī)的相識(shí)- 單總線-溫度測量報(bào)警系統(tǒng)_第3頁
單片機(jī)技術(shù)及應(yīng)用項(xiàng)目教程 課件全套 欒秋平 項(xiàng)目1-8 與單片機(jī)的一見鐘情-記錄你與單片機(jī)的相識(shí)- 單總線-溫度測量報(bào)警系統(tǒng)_第4頁
單片機(jī)技術(shù)及應(yīng)用項(xiàng)目教程 課件全套 欒秋平 項(xiàng)目1-8 與單片機(jī)的一見鐘情-記錄你與單片機(jī)的相識(shí)- 單總線-溫度測量報(bào)警系統(tǒng)_第5頁
已閱讀5頁,還剩493頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目1:與單片機(jī)的一見鐘情

——記錄你與單片機(jī)的相識(shí)1認(rèn)知智能電子產(chǎn)品的構(gòu)成2認(rèn)知馮諾依曼思想3認(rèn)知單片機(jī)4構(gòu)建單片機(jī)開發(fā)環(huán)境5實(shí)現(xiàn)會(huì)唱歌的“音樂盒”目錄知識(shí)目標(biāo)(1)了解智能電子產(chǎn)品的基本概念;(2)了解單片機(jī)的基本概念;(3)掌握智能電子產(chǎn)品的基本構(gòu)成;(4)掌握層次化軟件設(shè)計(jì)方法的基本構(gòu)成;(5)掌握邏輯層程序的設(shè)計(jì)方法。能力目標(biāo)(1)能夠正常啟動(dòng)和退出AtmelStudio軟件,創(chuàng)建和打開文件;(2)能夠編寫基于邏輯層的C語言程序;(3)能夠打開一段程序,修改、調(diào)試和運(yùn)行程序;(4)能夠處理程序中的異常情況。素質(zhì)目標(biāo)(1)具備正確拆裝電子產(chǎn)品的綜合能力;(2)具備運(yùn)行、調(diào)試C語言應(yīng)用程序的綜合能力;(3)具備小組分工合作與協(xié)調(diào)的綜合能力。山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目1:與單片機(jī)的一見鐘情

——記錄你與單片機(jī)的相識(shí)1認(rèn)知智能電子產(chǎn)品的構(gòu)成2認(rèn)知馮諾依曼思想3認(rèn)知單片機(jī)4構(gòu)建單片機(jī)開發(fā)環(huán)境5實(shí)現(xiàn)會(huì)唱歌的“音樂盒”目錄1認(rèn)知智能電子產(chǎn)品的構(gòu)成

智能電子產(chǎn)品:從廣義上講,是指能自動(dòng)進(jìn)行一定人類邏輯思維能力判斷的電子設(shè)備;從狹義上講是指能夠通過軟件編程實(shí)現(xiàn)一定邏輯控制的電子設(shè)備。圖1-1智能電子產(chǎn)品硬件:

計(jì)算機(jī)系統(tǒng)中由電子,機(jī)械和光電元件等組成的各種物理裝置的總稱。這些物理裝置按系統(tǒng)結(jié)構(gòu)的要求構(gòu)成一個(gè)有機(jī)整體為計(jì)算機(jī)軟件運(yùn)行提供物質(zhì)基礎(chǔ)。軟件:

一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。一般來講軟件被劃分為系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件。軟件并不只是包括可以在計(jì)算機(jī)(這里的計(jì)算機(jī)是指廣義的計(jì)算機(jī))上運(yùn)行的電腦程序,與這些電腦程序相關(guān)的文檔一般也被認(rèn)為是軟件的一部分。簡單的說軟件就是程序加文檔的集合體。圖1-2MP4效果圖MP4:全稱MPEG-4,是一種使用MPEG-4的多媒體電腦檔案格式,簡稱為mp4,以儲(chǔ)存數(shù)碼音訊及數(shù)碼視訊為主?,F(xiàn)在,MP4又可理解為MP4播放器(包括軟件和硬件),MP4播放器是一種集音頻、視頻、圖片瀏覽、電子書、收音機(jī)等于一體的多功能播放器。圖1-3MP4內(nèi)部整體結(jié)構(gòu)圖1-4MP4PCB板上的主要核心部件圖1-5MP4PCB板上的主控芯片RK2705DRAM(DynamicRandomAccessMemory),即動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,是最為常見的系統(tǒng)內(nèi)存。DRAM只能將數(shù)據(jù)保持很短的時(shí)間。為了保持?jǐn)?shù)據(jù),DRAM使用電容存儲(chǔ),所以必須隔一段時(shí)間刷新一次,如果存儲(chǔ)單元沒有被刷新,存儲(chǔ)的信息就會(huì)丟失,所以DRAM斷電后,里面存儲(chǔ)的信息會(huì)全部丟失。圖1-6MP4PCB板上的DRAM芯片HY57V281620圖1-7MP4PCB板上的FLASH芯片K9LBG08U0MFLASH存儲(chǔ)器簡稱為閃存,是一種長壽命的非易失性(在斷電情況下仍能保持所存儲(chǔ)的數(shù)據(jù)信息)的存儲(chǔ)器,由于其斷電時(shí)仍能保存數(shù)據(jù),閃存通常被用來保存設(shè)置信息,如在電腦的BIOS(基本輸入輸出程序)、PDA(個(gè)人數(shù)字助理)、數(shù)碼相機(jī)中保存資料等。圖1-8MP4PCB板上的收音機(jī)芯片TEA5767圖1-9MP4PCB板上的功放芯片LN4890圖1-10MP4PCB板上的LCD連接線2認(rèn)知馮諾依曼思想圖1-11世界上第1臺(tái)數(shù)字電子計(jì)算機(jī)世界上第1臺(tái)數(shù)字電子計(jì)算機(jī)誕生于1946年2月14日美國賓夕法尼亞大學(xué)模擬信號(hào)是指信息參數(shù)在給定范圍內(nèi)表現(xiàn)為連續(xù)的信號(hào),或在一段連續(xù)的時(shí)間間隔內(nèi),其代表信息的特征量可以在任意瞬間呈現(xiàn)為任意數(shù)值的信號(hào),其主要特征是連續(xù)可變,圖1-12顯示了回流焊設(shè)備的溫度曲線圖,就是典型的模擬信號(hào)。圖1-12回流焊設(shè)備的溫度曲線圖圖1-13IIC總線時(shí)序圖數(shù)字信號(hào):是指自變量是離散的、因變量也是離散的信號(hào),其用0和1來表達(dá)自然界的物理狀態(tài),其主要特征是階躍可變,圖1-13顯示了數(shù)字信號(hào)中一種非常常用的同步串行總線——IIC總線,就是典型的數(shù)字信號(hào)。圖1-14基于馮.諾依曼思想的現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)圖馮.諾依曼思想主要包括2部分內(nèi)容:(1)計(jì)算機(jī)硬件設(shè)備由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備5部分組成;(2)存儲(chǔ)程序思想:把計(jì)算過程描述為由許多命令按一定順序組成的程序,然后把程序和數(shù)據(jù)一起輸入計(jì)算機(jī),計(jì)算機(jī)對(duì)已存入的程序和數(shù)據(jù)處理后,輸出結(jié)果。表1-1MP4內(nèi)部結(jié)構(gòu)原理性框圖與現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)圖之間的聯(lián)系現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)圖MP4內(nèi)部結(jié)構(gòu)原理性框圖CPU(運(yùn)算器+控制器)主控芯片RK2705存儲(chǔ)器DRAM芯片HY57V281620FLASH芯片K9LBG08U0M輸入設(shè)備收音機(jī)芯片TEA5767MIC輸入電路按鍵電路輸出電路功放芯片LN4890LCD液晶顯示器3認(rèn)知單片機(jī)圖1-15ATmega168PA內(nèi)部結(jié)構(gòu)圖單片機(jī)(SingleChipMicrocomputer)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。圖1-15ATmega168PA內(nèi)部結(jié)構(gòu)圖4構(gòu)建單片機(jī)開發(fā)環(huán)境圖1-16Atmel公司官方網(wǎng)站

使用AVR系列單片機(jī)進(jìn)行產(chǎn)品開發(fā),需要安裝Atmel公司的開發(fā)環(huán)境AtmelStudio,我們可以從其網(wǎng)站上直接下載如圖1-15所示。圖1-17AVR單片機(jī)燒寫軟件PROGISP推薦使用程序燒寫軟件PROGISP,用于將計(jì)算機(jī)上的程序文件(準(zhǔn)確的說是編譯后的映像文件)燒寫到單片機(jī)內(nèi)部圖1-19AVRISP下載器圖1-18AVRJTAGICE仿真器硬件開發(fā)工具

5實(shí)現(xiàn)會(huì)唱歌的“音樂盒”圖1-20使用的教學(xué)開發(fā)板

硬件資源豐富AVRWARE++是一套開源的基于層次化軟件設(shè)計(jì)思想的,用于ATMEL公司AVR系列單片機(jī)開發(fā)的軟件架構(gòu)。相比較其它的軟件架構(gòu),其具有的特點(diǎn)在于:

1采用層次化軟件設(shè)計(jì)思想進(jìn)行單片機(jī)程序設(shè)計(jì);

2完備的單片機(jī)內(nèi)部外設(shè)驅(qū)動(dòng)程序庫;

3可擴(kuò)展的單片機(jī)外部芯片(模塊)驅(qū)動(dòng)程序庫;

4提供硬件映射層,使得用戶邏輯與硬件驅(qū)動(dòng)分開,增加了系統(tǒng)的可讀性、可擴(kuò)展性、可移植性并有利于單片機(jī)程序設(shè)計(jì)的多人協(xié)作。

5與MSP430WARE++(一款基于TI公司MSP430系列單片機(jī)的程序架構(gòu))在架構(gòu)上完全兼容,可以相互移植,混合開發(fā)。一、打開AVRWARE++例程模版,開始項(xiàng)目設(shè)計(jì)圖1-21打開LC01工程步驟一圖1-22解決方案瀏覽器面板步驟二步驟三【程序1-1】//加入包含文件#include"../include.h"http://主程序intmain(void){ //定義變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init(); //全局變量初始化

//在上電時(shí),執(zhí)行的相應(yīng)操作

//后臺(tái)主循環(huán)

while(1) { //在這里完成自己的項(xiàng)目邏輯

//喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除

#ifWDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}步驟四【程序1-2】//加入包含文件#include"../include.h"http://主程序intmain(void){ //定義變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init(); //全局變量初始化

//在上電時(shí),執(zhí)行的相應(yīng)操作

//后臺(tái)主循環(huán) while(1) { //在這里完成自己的項(xiàng)目邏輯

PlayMusic("HappyBirthDay"); //播放歌曲:生日快樂

PlayMusic("TwoTigers"); //播放歌曲:兩只老虎

PlayMusic("HappyNewYear"); //播放歌曲:新年好

PlayMusic("GotoSchool"); //播放歌曲:上學(xué)歌

PlayMusic("Spring"); //播放歌曲:春天在哪里 //喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除 #ifWDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}二、編譯和下載圖1-23單擊保存圖標(biāo)進(jìn)行代碼保存

步驟1:C程序?qū)懲旰?,我們首先要進(jìn)行代碼的保存,其圖標(biāo)如圖1-23所示,單擊即可圖1-24單擊生成圖標(biāo)建立可執(zhí)行文件

步驟2:我們就要生成可執(zhí)行程序了(包括編譯和鏈接同時(shí)完成),其圖標(biāo)如圖1-24所示

步驟3:如果程序在書寫上沒有語法錯(cuò)誤,生成后我們會(huì)在輸出對(duì)話框看到,如圖1-25所示的內(nèi)容,表示程序生成正確,否則需要根據(jù)提示的內(nèi)容更正程序中的相應(yīng)代碼。圖1-25在輸出對(duì)話框查看程序的生成情況圖1-26下載軟件PROGISP啟動(dòng)界面步驟4:我們就可以將生成的可執(zhí)行程序下載教學(xué)開發(fā)板中了,如圖1-26所示,打開下載軟件PROGISP圖1-27調(diào)入生成的程序文件步驟5:選擇芯片類型為ATmega168PA,將“比較識(shí)別字”、“芯片擦除”、“編程FLASH”、“數(shù)據(jù)自動(dòng)重載”、“校驗(yàn)FLASH”等選項(xiàng)勾選。步驟6:點(diǎn)擊“調(diào)入Flash”按鈕,打開先前生成的程序,如圖1-25所示,其位置在程序文件夾下的Program-Release文件夾下,文件名為Program.hex。步驟7:現(xiàn)在我們將下載器連接到計(jì)算機(jī)的USB口上,另一端接在教學(xué)開發(fā)板的程序下載口上,由于下載器可以直接給教學(xué)開發(fā)板供電,所以此時(shí)不需要單獨(dú)給教學(xué)開發(fā)板供電。步驟8:點(diǎn)擊PROGISP軟件界面上的“自動(dòng)”按鈕圖標(biāo),如圖1-24所示,程序便會(huì)下載到目標(biāo)開發(fā)板。步驟9:斷掉下載器,使用USB線給教學(xué)開發(fā)板供電,一切順利的話,我們現(xiàn)在就可以欣賞我們的作品了——會(huì)唱歌的“音樂盒”。1認(rèn)知智能電子產(chǎn)品的構(gòu)成

智能電子產(chǎn)品:從廣義上講,是指能自動(dòng)進(jìn)行一定人類邏輯思維能力判斷的電子設(shè)備;從狹義上講是指能夠通過軟件編程實(shí)現(xiàn)一定邏輯控制的電子設(shè)備。圖1-1智能電子產(chǎn)品硬件:

計(jì)算機(jī)系統(tǒng)中由電子,機(jī)械和光電元件等組成的各種物理裝置的總稱。這些物理裝置按系統(tǒng)結(jié)構(gòu)的要求構(gòu)成一個(gè)有機(jī)整體為計(jì)算機(jī)軟件運(yùn)行提供物質(zhì)基礎(chǔ)。軟件:

一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。一般來講軟件被劃分為系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件。軟件并不只是包括可以在計(jì)算機(jī)(這里的計(jì)算機(jī)是指廣義的計(jì)算機(jī))上運(yùn)行的電腦程序,與這些電腦程序相關(guān)的文檔一般也被認(rèn)為是軟件的一部分。簡單的說軟件就是程序加文檔的集合體。圖1-2MP4效果圖MP4:全稱MPEG-4,是一種使用MPEG-4的多媒體電腦檔案格式,簡稱為mp4,以儲(chǔ)存數(shù)碼音訊及數(shù)碼視訊為主?,F(xiàn)在,MP4又可理解為MP4播放器(包括軟件和硬件),MP4播放器是一種集音頻、視頻、圖片瀏覽、電子書、收音機(jī)等于一體的多功能播放器。圖1-3MP4內(nèi)部整體結(jié)構(gòu)圖1-4MP4PCB板上的主要核心部件圖1-5MP4PCB板上的主控芯片RK2705DRAM(DynamicRandomAccessMemory),即動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,是最為常見的系統(tǒng)內(nèi)存。DRAM只能將數(shù)據(jù)保持很短的時(shí)間。為了保持?jǐn)?shù)據(jù),DRAM使用電容存儲(chǔ),所以必須隔一段時(shí)間刷新一次,如果存儲(chǔ)單元沒有被刷新,存儲(chǔ)的信息就會(huì)丟失,所以DRAM斷電后,里面存儲(chǔ)的信息會(huì)全部丟失。圖1-6MP4PCB板上的DRAM芯片HY57V281620圖1-7MP4PCB板上的FLASH芯片K9LBG08U0MFLASH存儲(chǔ)器簡稱為閃存,是一種長壽命的非易失性(在斷電情況下仍能保持所存儲(chǔ)的數(shù)據(jù)信息)的存儲(chǔ)器,由于其斷電時(shí)仍能保存數(shù)據(jù),閃存通常被用來保存設(shè)置信息,如在電腦的BIOS(基本輸入輸出程序)、PDA(個(gè)人數(shù)字助理)、數(shù)碼相機(jī)中保存資料等。圖1-8MP4PCB板上的收音機(jī)芯片TEA5767圖1-9MP4PCB板上的功放芯片LN4890圖1-10MP4PCB板上的LCD連接線2認(rèn)知馮諾依曼思想圖1-11世界上第1臺(tái)數(shù)字電子計(jì)算機(jī)世界上第1臺(tái)數(shù)字電子計(jì)算機(jī)誕生于1946年2月14日美國賓夕法尼亞大學(xué)

模擬信號(hào)是指信息參數(shù)在給定范圍內(nèi)表現(xiàn)為連續(xù)的信號(hào),或在一段連續(xù)的時(shí)間間隔內(nèi),其代表信息的特征量可以在任意瞬間呈現(xiàn)為任意數(shù)值的信號(hào),其主要特征是連續(xù)可變,圖1-12顯示了回流焊設(shè)備的溫度曲線圖,就是典型的模擬信號(hào)。圖1-12回流焊設(shè)備的溫度曲線圖圖1-13IIC總線時(shí)序圖數(shù)字信號(hào):是指自變量是離散的、因變量也是離散的信號(hào),其用0和1來表達(dá)自然界的物理狀態(tài),其主要特征是階躍可變,圖1-13顯示了數(shù)字信號(hào)中一種非常常用的同步串行總線——IIC總線,就是典型的數(shù)字信號(hào)。圖1-14基于馮.諾依曼思想的現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)圖馮.諾依曼思想主要包括2部分內(nèi)容:(1)計(jì)算機(jī)硬件設(shè)備由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備5部分組成;(2)存儲(chǔ)程序思想:把計(jì)算過程描述為由許多命令按一定順序組成的程序,然后把程序和數(shù)據(jù)一起輸入計(jì)算機(jī),計(jì)算機(jī)對(duì)已存入的程序和數(shù)據(jù)處理后,輸出結(jié)果。表1-1MP4內(nèi)部結(jié)構(gòu)原理性框圖與現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)圖之間的聯(lián)系現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)圖MP4內(nèi)部結(jié)構(gòu)原理性框圖CPU(運(yùn)算器+控制器)主控芯片RK2705存儲(chǔ)器DRAM芯片HY57V281620FLASH芯片K9LBG08U0M輸入設(shè)備收音機(jī)芯片TEA5767MIC輸入電路按鍵電路輸出電路功放芯片LN4890LCD液晶顯示器3認(rèn)知單片機(jī)

單片機(jī)(SingleChipMicrocomputer)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。圖1-15ATmega168PA內(nèi)部結(jié)構(gòu)圖4構(gòu)建單片機(jī)開發(fā)環(huán)境圖1-16Atmel公司官方網(wǎng)站

使用AVR系列單片機(jī)進(jìn)行產(chǎn)品開發(fā),需要安裝Atmel公司的開發(fā)環(huán)境AtmelStudio,我們可以從其網(wǎng)站上直接下載如圖1-15所示。圖1-17AVR單片機(jī)燒寫軟件PROGISP推薦使用程序燒寫軟件PROGISP,用于將計(jì)算機(jī)上的程序文件(準(zhǔn)確的說是編譯后的映像文件)燒寫到單片機(jī)內(nèi)部圖1-19AVRISP下載器圖1-18AVRJTAGICE仿真器硬件開發(fā)工具

5實(shí)現(xiàn)會(huì)唱歌的“音樂盒”圖1-20使用的教學(xué)開發(fā)板

硬件資源豐富AVRWARE++是一套開源的基于層次化軟件設(shè)計(jì)思想的,用于ATMEL公司AVR系列單片機(jī)開發(fā)的軟件架構(gòu)。相比較其它的軟件架構(gòu),其具有的特點(diǎn)在于:

1采用層次化軟件設(shè)計(jì)思想進(jìn)行單片機(jī)程序設(shè)計(jì);

2完備的單片機(jī)內(nèi)部外設(shè)驅(qū)動(dòng)程序庫;

3可擴(kuò)展的單片機(jī)外部芯片(模塊)驅(qū)動(dòng)程序庫;

4提供硬件映射層,使得用戶邏輯與硬件驅(qū)動(dòng)分開,增加了系統(tǒng)的可讀性、可擴(kuò)展性、可移植性并有利于單片機(jī)程序設(shè)計(jì)的多人協(xié)作。

5與MSP430WARE++(一款基于TI公司MSP430系列單片機(jī)的程序架構(gòu))在架構(gòu)上完全兼容,可以相互移植,混合開發(fā)。一、打開AVRWARE++例程模版,開始項(xiàng)目設(shè)計(jì)圖1-21打開LC01工程步驟1圖1-22解決方案瀏覽器面板步驟2步驟3【程序1-1】//加入包含文件#include"../include.h"http://主程序intmain(void){ //定義變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init(); //全局變量初始化

//在上電時(shí),執(zhí)行的相應(yīng)操作

//后臺(tái)主循環(huán)

while(1) { //在這里完成自己的項(xiàng)目邏輯

//喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除

#ifWDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}步驟4【程序1-2】//加入包含文件#include"../include.h"http://主程序intmain(void){ //定義變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init(); //全局變量初始化

//在上電時(shí),執(zhí)行的相應(yīng)操作

//后臺(tái)主循環(huán) while(1) { //在這里完成自己的項(xiàng)目邏輯

PlayMusic("HappyBirthDay"); //播放歌曲:生日快樂

PlayMusic("TwoTigers"); //播放歌曲:兩只老虎

PlayMusic("HappyNewYear"); //播放歌曲:新年好

PlayMusic("GotoSchool"); //播放歌曲:上學(xué)歌

PlayMusic("Spring"); //播放歌曲:春天在哪里 //喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除 #ifWDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}二、編譯和下載圖1-23單擊保存圖標(biāo)進(jìn)行代碼保存

步驟1:C程序?qū)懲旰?,我們首先要進(jìn)行代碼的保存,其圖標(biāo)如圖1-23所示,單擊即可圖1-24單擊生成圖標(biāo)建立可執(zhí)行文件

步驟2:我們就要生成可執(zhí)行程序了(包括編譯和鏈接同時(shí)完成),其圖標(biāo)如圖1-24所示

步驟3:如果程序在書寫上沒有語法錯(cuò)誤,生成后我們會(huì)在輸出對(duì)話框看到,如圖1-25所示的內(nèi)容,表示程序生成正確,否則需要根據(jù)提示的內(nèi)容更正程序中的相應(yīng)代碼。圖1-25在輸出對(duì)話框查看程序的生成情況圖1-26下載軟件PROGISP啟動(dòng)界面步驟4:我們就可以將生成的可執(zhí)行程序下載教學(xué)開發(fā)板中了,如圖1-26所示,打開下載軟件PROGISP圖1-27調(diào)入生成的程序文件步驟5:選擇芯片類型為ATmega168PA,將“比較識(shí)別字”、“芯片擦除”、“編程FLASH”、“數(shù)據(jù)自動(dòng)重載”、“校驗(yàn)FLASH”等選項(xiàng)勾選。步驟6:點(diǎn)擊“調(diào)入Flash”按鈕,打開先前生成的程序,如圖1-25所示,其位置在程序文件夾下的Program-Release文件夾下,文件名為Program.hex。步驟7:現(xiàn)在我們將下載器連接到計(jì)算機(jī)的USB口上,另一端接在教學(xué)開發(fā)板的程序下載口上,由于下載器可以直接給教學(xué)開發(fā)板供電,所以此時(shí)不需要單獨(dú)給教學(xué)開發(fā)板供電。步驟8:點(diǎn)擊PROGISP軟件界面上的“自動(dòng)”按鈕圖標(biāo),如圖1-24所示,程序便會(huì)下載到目標(biāo)開發(fā)板。步驟9:斷掉下載器,使用USB線給教學(xué)開發(fā)板供電,一切順利的話,我們現(xiàn)在就可以欣賞我們的作品了——會(huì)唱歌的“音樂盒”。山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目2:初識(shí)層次化軟件設(shè)計(jì)思想——點(diǎn)亮你的LED1

初步認(rèn)識(shí)LED2單片機(jī)控制LED原理3位寄存器DDRx和PORTx用法4C語言的位操作5C語言中的宏6

層次化軟件設(shè)計(jì)思想1初步認(rèn)識(shí)LED圖2-1北京奧運(yùn)會(huì)流光溢彩的開幕式場景圖2-3LED的結(jié)構(gòu)組成LED是特殊的二極管,半導(dǎo)體芯片是LED的核心,附著在基底上,直接連接負(fù)極,正極則由導(dǎo)線連接陽極接柱,由反射碗增強(qiáng)芯片的照明效果,整個(gè)芯片被環(huán)氧樹脂封裝起來。圖2-4LED的結(jié)構(gòu)組成LED兩端加上電壓(P區(qū)加正電壓,N區(qū)加負(fù)電壓),則會(huì)在LED中形成電場,當(dāng)電場能量越過“費(fèi)米能級(jí)(FermiLevel)”時(shí),電子便會(huì)穿過“禁帶(bandgap)”到達(dá)“空穴”區(qū),從而形成電流。電子和空穴會(huì)相互結(jié)合會(huì)釋放能量,從而發(fā)出可見光。圖2-5LED的常見發(fā)光顏色根據(jù)“三基色原理”,可以應(yīng)用綠色LED、藍(lán)色LED、紅色LED發(fā)出自然界中的各種可見光。山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目2:初識(shí)層次化軟件設(shè)計(jì)思想——點(diǎn)亮你的LED1

初步認(rèn)識(shí)LED2單片機(jī)控制LED原理3位寄存器DDRx和PORTx用法4C語言的位操作5C語言中的宏6

層次化軟件設(shè)計(jì)思想2單片機(jī)控制LED原理單片機(jī)用于實(shí)現(xiàn)數(shù)據(jù)并行輸入和輸出的引腳集合,其所包含的數(shù)量與單片機(jī)的位數(shù)相關(guān)。例如:8位單片機(jī)每個(gè)端口包含8個(gè)引腳,16位單片機(jī)每個(gè)端口包含16個(gè)引腳,32位單片機(jī)每個(gè)端口包含32個(gè)引腳。由于我們使用的單片機(jī)為8位單片機(jī),所以從圖2-6可以看出,每個(gè)端口最多包含8個(gè)引腳,整個(gè)單片機(jī)包含3個(gè)端口,分別為PORTB、PORTC和PORTD。一、端口(PORT)圖2-6含有LED控制電路的單片機(jī)最小系統(tǒng)圖單向?qū)щ?,?dǎo)通電壓比普通二極管高許多,并隨著顏色的不同而不同,一般紅色發(fā)光二極管的導(dǎo)通電壓在1.8V左右。正極與高電平相連接,負(fù)極應(yīng)與低電平相連接,這樣才能保證電流流過LED,從而使LED發(fā)光。且LED的發(fā)光強(qiáng)度與流過的電流相關(guān),電流越大,LED越亮;反之,電流越小,LED越暗。二、發(fā)光二極管特性

三、LED亮度控制山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目2:初識(shí)層次化軟件設(shè)計(jì)思想——點(diǎn)亮你的LED1

初步認(rèn)識(shí)LED2單片機(jī)控制LED原理3位寄存器DDRx和PORTx用法4C語言的位操作5C語言中的宏6

層次化軟件設(shè)計(jì)思想3位寄存器DDRx和PORTx用法一、寄存器知識(shí)寄存器(register):是在單片機(jī)設(shè)計(jì)時(shí)就已經(jīng)定義功能的,離單片機(jī)內(nèi)部CPU最近的存儲(chǔ)單元,操縱寄存器可以使單片機(jī)完成指定的功能,寄存器中的數(shù)據(jù)在單片機(jī)掉電后會(huì)消失。單片機(jī)的功能不同,其在寄存器的定義上也不僅相同。位數(shù)越高寄存器功能越復(fù)雜。也正是基于上述原因,使得直接操縱寄存器的程序,不具可移植性。寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0引腳PIN7PIN6PIN5PIN4PIN3PIN2PIN1PIN0表2-1寄存器與引腳對(duì)照表1、DDRX寄存器用法寄存器DDRx的每位表示對(duì)應(yīng)引腳的方向,單片機(jī)引腳的方向有輸出和輸入之分。DDRx寄存器的相應(yīng)位置成1,則對(duì)應(yīng)的引腳方向位輸出;DDRx寄存器的相應(yīng)位置成0,則對(duì)應(yīng)的引腳方向?yàn)檩斎?。注意:程序?yīng)當(dāng)將PC2引腳置成輸出方向,才能控制LED的亮滅,也就是應(yīng)當(dāng)在程序中將DDRC的BIT2置成1。2、PORTX寄存器用法PORTx寄存器的每位表示表示輸出電平的高或者低。PORTx寄存器的相應(yīng)位置成1,則對(duì)應(yīng)的引腳輸出高電平,也就是電源VCC電壓。PORTx寄存器的相應(yīng)位置成0,則對(duì)應(yīng)的引腳輸出低電平,也就是地GND。二、程序調(diào)試圖2-7在SolutionExplorer面板中打開main.c文件(1)啟動(dòng)AtmelStudio軟件,并打開隨書光盤的“模板”例程(該例程是一個(gè)具有完整程序框架,但不針對(duì)任何用戶邏輯的空白例程,我們可以應(yīng)用這個(gè)例程進(jìn)行本書所有的程序開發(fā))。(2)在屏幕右面的SolutionExplorer面板中找到main.c文件,雙擊打開,如圖2-7所示。(3)在程序中找到main函數(shù),如果對(duì)這個(gè)函數(shù)中的內(nèi)容還有什么不理解,我們可以重新再看一下項(xiàng)目1中的相關(guān)內(nèi)容。(4)輸入如程序2-1所示的程序。

(5)根據(jù)項(xiàng)目1中所示的方法對(duì)程序進(jìn)行編譯。(6)使用杜邦線將教學(xué)開發(fā)板上的LED模塊部分的LED0與單片機(jī)的PC2引腳相連接。(7)根據(jù)項(xiàng)目1中所示的方法將二進(jìn)制文件下載到單片機(jī)中。(8)給教學(xué)開發(fā)板供電,如果一切正確的話,我們可以看到開發(fā)板上的LED0以1秒為間隔閃爍。

1、步驟2、流程圖圖2-8直接使用寄存器使LED以1秒為間隔閃爍流程圖【程序2-1】//加入包含文件#include"../include.h"

//定義系統(tǒng)常量

//定義全局變量

//主程序intmain(void){

//定義局部變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init();

//初始化全局變量

//在上電時(shí),執(zhí)行的相應(yīng)操作

DDRC=0xFF;

//后臺(tái)主循環(huán)

3、程序

//后臺(tái)主循環(huán) while(1) {//在這里完成自己的項(xiàng)目邏輯

PORTC=0x00;

TARGET_Delayms(1000,1); PORTC=0xFF;

TARGET_Delayms(1000,1);

//喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除

#ifINTERNAL_PERIPHERAL_WDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}

P7將PORTB的引腳引出,共6個(gè)引腳分別為PB0-PB5,PB6和PB7在電路中復(fù)用引腳功能為連接外部晶振,所以沒有引出。P9將PORTC的引腳引出,共6個(gè)引腳分別為PC0-PC5,PC6在電路中復(fù)用引腳功能為連接復(fù)位電路,所以沒有引出,PC7引腳在封裝時(shí)就沒有引出。P10端口將PORTD的引腳全部引出,分別為PD0-PD7。P7、P9和P10的9、10引腳均連接VCC電源(5V)。三、AVR系列PORTB、PORTC和PORTD端口圖2-10ATmega168PA引腳接口電路圖P9端口與P4端口相連PC0-->LED0PC1->LED1PC2-->LED2PC3-->LED3PC4-->LED4PC5-->LED5空->LED6空-->LED7注意:P9沒有PC6和PC7,所以無法控制LED6和LED7。LED0-LED5為什么同時(shí)閃爍呢?山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目2:初識(shí)層次化軟件設(shè)計(jì)思想——點(diǎn)亮你的LED1

初步認(rèn)識(shí)LED2單片機(jī)控制LED原理3位寄存器DDRx和PORTx用法4C語言的位操作5C語言中的宏6

層次化軟件設(shè)計(jì)思想4C語言中的位操作運(yùn)算符含義描述&按位與如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0|按位或兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1^按位異或若參加運(yùn)算的兩個(gè)二進(jìn)制位值相同則為0,否則為1~取反一元運(yùn)算符,用來對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0<<

左移用來將一個(gè)數(shù)的各二進(jìn)制位全部左移N位,右補(bǔ)0>>

右移將一個(gè)數(shù)的各二進(jìn)制位右移N位,移到右端的低位被舍棄,對(duì)于無符號(hào)數(shù),高位補(bǔ)0表2-3C語言中的位運(yùn)算符一、位邏輯運(yùn)算與表達(dá)式

例2-5:試計(jì)算3&5的運(yùn)行結(jié)果

解: 00000011<-0x03 & 00000101<-0x05 ----------- 00000001->0x01

例2-6:試計(jì)算3|5的運(yùn)行結(jié)果

解: 00000011<-0x03 |00000101<-0x05 ----------- 00000111->0x07

例2-7:試計(jì)算3^5的運(yùn)行結(jié)果

解: 00000011<-0x03 ^00000101<-0x05 ----------- 00000110->0x06

例2-8:試計(jì)算~5的運(yùn)行結(jié)果

解: ~00000101<-0x05 ----------- 11111010->0xFA

例2-9:試計(jì)算5<<3的運(yùn)行結(jié)果

解: 00000101<-0x05<<3 ----------- 00101000->0x28

例2-10:試計(jì)算5>>1的運(yùn)行結(jié)果

解: 00000101<-0x05>>1 ----------- 00000010->0x02例2-11:寫出表達(dá)式,使得將給定字節(jié)x通過該表達(dá)式運(yùn)算后,僅第4位置成1,其余位保持不變。

大家仔細(xì)思考后,可以得到如下答案:

XXXXXXXX |00010000 ----------- XXX1XXXX

所以表達(dá)式為:x=x|0x10。

是否可以讓該表達(dá)式再形象一些,即讓0x10與4(第4位)產(chǎn)生聯(lián)系,大家仔細(xì)思考后,可知0x10=1<<4,所以可以得到最終的表達(dá)式:x=x|(1<<4),或者表達(dá)式為x|=(1<<4)。例2-12:寫出表達(dá)式,使得將給定字節(jié)x通過該表達(dá)式運(yùn)算后,僅第4位置成0,其余位保持不變大家仔細(xì)思考后,可以得到如下答案:

XXXXXXXX &11101111 ----------- XXX0XXXX

所以表達(dá)式為:x=x&0xEF。因?yàn)?xEF=~(1<<4),所以可以得到最終的表達(dá)式:x=x&~(1<<4),或者表達(dá)式為x&=~(1<<4)。操作字節(jié)中某一位的方法,我們用x表示字節(jié),y表示需要置高或置低的位,可以得到表達(dá)式:

置高x字節(jié)的第y位:x|=(1<<y)

置低x字節(jié)的第y位:x&=~(1<<y)

反轉(zhuǎn)x字節(jié)的第y位:x^=(1<<y)結(jié)論二、程序調(diào)試【程序2-3】//加入包含文件#include"../include.h"

//定義系統(tǒng)常量

//定義全局變量

//主程序intmain(void){

//定義局部變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init();

//初始化全局變量

//在上電時(shí),執(zhí)行的相應(yīng)操作

DDRC|=(1<<2);

//后臺(tái)主循環(huán) while(1) {

//在這里完成自己的項(xiàng)目邏輯

PORTC&=~(1<<2);

TARGET_Delayms(1000,1); PORTC|=(1<<2);

TARGET_Delayms(1000,1);

//喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除

#ifINTERNAL_PERIPHERAL_WDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}按照前面所述的方法對(duì)這段程序進(jìn)行編譯并下載到教學(xué)開發(fā)板中,我們可以觀察到,只有LED2以1秒為間隔閃爍,其余LED會(huì)保持原先的狀態(tài)達(dá)到了我們想要的效果。山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目2:初識(shí)層次化軟件設(shè)計(jì)思想——點(diǎn)亮你的LED1

初步認(rèn)識(shí)LED2單片機(jī)控制LED原理3位寄存器DDRx和PORTx用法4C語言的位操作5C語言中的宏6

層次化軟件設(shè)計(jì)思想5C語言中的宏作用:增強(qiáng)程序的可讀性宏定義命名及使用規(guī)則:a、#號(hào)與define之間一般不留空格;但宏名左右兩邊必須至少一個(gè)空格分隔。b、宏名的有效范圍為定義之后到本源文件結(jié)束。c、允許#define命令出現(xiàn)在程序中的任何位置。d、一個(gè)經(jīng)#define定義的宏名,也可在程序中通過#undef終止其作用域。e、在一個(gè)宏定義中,允許出現(xiàn)已存在的宏名。一、宏定義(1)無參宏定義無參宏定義的一般格式: #define標(biāo)識(shí)符一串字符標(biāo)識(shí)符被定義為代表一串字符的宏名。例如:#defineE2.17828(2)帶參宏定義在程序設(shè)計(jì)中,宏定義除了定義符號(hào)常量外,還經(jīng)常用于定義帶參數(shù)的宏。帶參宏定義的一般格式為: #define宏名(參數(shù)表)一串字符例如: #defineSUM(a,b)a+b二、置高、置低和反轉(zhuǎn)功能宏1、置高置高表達(dá)式:x|=(1<<y)先對(duì)(1<<y)進(jìn)行帶參宏定義:#defineBIT(x)(1<<x)則第0位至第7位的宏定義,如下所示:#defineBIT0BIT(0)……#defineBIT6BIT(6)#defineBIT7BIT(7)接著,我們定義置高功能宏,如下所示:#defineSETBIT(x,y)x|=y如果希望將PC2引腳置成高電平,可以直接應(yīng)用宏定義SETBIT完成,如下所示:SETBIT(PORTC,BIT2)

2、置低置低功能宏的宏定義,如下所示:#defineCLRBIT(x,y)x&=~y

如果希望將PORTC寄存器的第2位置成低電平,我們可以這樣完成CLRBIT(PORTC,BIT2)3、反轉(zhuǎn)反轉(zhuǎn)功能的宏定義,如下所示:#defineCPLBIT(x,y)x^=y三、程序調(diào)試【程序2-7】//加入包含文件#include"../include.h"

//定義系統(tǒng)常量

//定義全局變量

//主程序intmain(void){

//定義局部變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init();

//初始化全局變量

//在上電時(shí),執(zhí)行的相應(yīng)操作

SETBIT(DDRC,BIT2);

//后臺(tái)主循環(huán) while(1) {

//在這里完成自己的項(xiàng)目邏輯

//在這里完成自己的項(xiàng)目邏輯

CLRBIT(PORTC,BIT2);

TARGET_Delayms(1000,1); SETBIT(PORTC,BIT2);

TARGET_Delayms(1000,1);

//喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除

#ifINTERNAL_PERIPHERAL_WDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}原則:先定義后使用四、宏定義頭文件圖2-12DataType.h頭文件【程序2-8】//功能宏,以下內(nèi)容與移植不相關(guān)#defineSETBIT(x,y) (x|=y)#defineCLRBIT(x,y)(x&=~y)#defineCPLBIT(x,y) (x^=y)#defineCHKBIT(x,y)(x&y)

#defineBIT(x) (1<<x)#defineBIT0 BIT(0)#defineBIT1 BIT(1)#defineBIT2 BIT(2)#defineBIT3 BIT(3)#defineBIT4 BIT(4)#defineBIT5 BIT(5)#defineBIT6 BIT(6)#defineBIT7 BIT(7)#defineBIT8 BIT(8)#defineBIT9 BIT(9)#defineBITA BIT(10)#defineBITB BIT(11)#defineBITC BIT(12)#defineBITD BIT(13)#defineBITE BIT(14)#defineBITF BIT(15)山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目2:初識(shí)層次化軟件設(shè)計(jì)思想——點(diǎn)亮你的LED1

初步認(rèn)識(shí)LED2單片機(jī)控制LED原理3位寄存器DDRx和PORTx用法4C語言的位操作5C語言中的宏6

層次化軟件設(shè)計(jì)思想6層次化軟件設(shè)計(jì)思想追求“可讀性強(qiáng)、可代碼復(fù)用、可多人協(xié)作和可跨CPU移植”是我們編寫程序的終極目標(biāo)一、層次化軟件設(shè)計(jì)思想圖2-15計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖圖2-13層次化軟件設(shè)計(jì)思想

圖2-14層次化軟件設(shè)計(jì)思想在AtmelStudio中的架構(gòu)圖2-13示出了在單片機(jī)上實(shí)現(xiàn)層次化軟件設(shè)計(jì)思想的架構(gòu)方式,軟件上共分為6層,由下向上分別為:InternalPeripheralLayer(內(nèi)部外設(shè)層)、MiddleLayer(中間層)、ExternalModuleLayer(外部模塊層)、ProtocolLayer(協(xié)議層)、AbstractionLayer(映射層)和LogicLayer(邏輯層),在AtmelStudio中的架構(gòu)如圖2-14所示。映射層就是原理圖的直譯二、映射層設(shè)計(jì)圖2-16映射層文件HAL.h(1)IO_PD_DIR:使用此功能宏定義PORTD引腳的方向,0為輸入,1為輸出。0b表示二進(jìn)制,默認(rèn)對(duì)應(yīng)0b00000000,表示PORTD下8個(gè)引腳的方向都為輸入。如果我們僅希望控制LED2,則只需將PD2置成輸出,可以這樣寫該功能宏:#defineIO_PD_DIR0b00000100(2)IO_PD_OUT:使用此功能宏定義PORTD輸出引腳在上電時(shí)的初始狀態(tài),0表示上電時(shí)輸出低電平,1表示上電時(shí)輸出高電平,如果我們希望LED2在上電時(shí)是點(diǎn)亮狀態(tài),其它LED是熄滅狀態(tài),則應(yīng)這樣定義該功能宏:#defineIO_PD_OUT0b111110111、端口方向及上電初狀態(tài)2、LED燈的狀態(tài)圖2-10ATmega168PA引腳接口電路圖圖2-11LED模塊電路圖點(diǎn)亮操作:#defineLED0_OPENCLRBIT(PORTD,LED0)熄滅操作:#defineLED0_SHUTSETBIT(PORTD,LED0)

上述工作完成后,我們可以仿照LED0完成LED1-LED7的代碼。

接下來,我們還需完成對(duì)所有LED的整體操作,功能宏定義如下:點(diǎn)亮操作:#defineALL_LED_OPENPORTD=0x00熄滅操作:#defineALL_LED_SHUTPORTD=0xFF3、映射層文件【程序2-9】#ifndefHAL_H_#defineHAL_H_

//引腳定義//PortB#defineIO_PB_DIR 0b00000000#defineIO_PB_OUT 0b00000000 /////////////////////////////////////////////////////////////////////

//PortC#defineIO_PC_DIR 0b00000000#defineIO_PC_OUT 0b00000000 /////////////////////////////////////////////////////////////////////

//PortD#defineIO_PD_DIR 0b11111111#defineIO_PD_OUT 0b11111111/////////////////////////////////////////////////////////////////////#defineLED0BIT0#defineLED1BIT1#defineLED2BIT2#defineLED3BIT3#defineLED4BIT4#defineLED5BIT5#defineLED6BIT6#defineLED7BIT7

#defineLED0_OPENCLRBIT(PORTD,LED0)#defineLED0_SHUTSETBIT(PORTD,LED0)#defineLED1_OPENCLRBIT(PORTD,LED1)#defineLED1_SHUTSETBIT(PORTD,LED1)#defineLED2_OPENCLRBIT(PORTD,LED2)#defineLED2_SHUTSETBIT(PORTD,LED2)#defineLED3_OPENCLRBIT(PORTD,LED3)#defineLED3_SHUTSETBIT(PORTD,LED3)#defineLED4_OPENCLRBIT(PORTD,LED4)#defineLED4_SHUTSETBIT(PORTD,LED4)#defineLED5_OPENCLRBIT(PORTD,LED5)#defineLED5_SHUTSETBIT(PORTD,LED5)#defineLED6_OPENCLRBIT(PORTD,LED6)#defineLED6_SHUTSETBIT(PORTD,LED6)#defineLED7_OPENCLRBIT(PORTD,LED7)#defineLED7_SHUTSETBIT(PORTD,LED8)

#defineALL_LED_OPENPORTD=0x00#defineALL_LED_SHUTPORTD=0xff//函數(shù)原型聲明

#endif

/*HAL_H_*/三、邏輯層設(shè)計(jì)圖2-17多路LED閃爍流程圖【程序2-9】intmain(void){

//定義局部變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init();

//初始化全局變量

//在上電時(shí),執(zhí)行的相應(yīng)操作

//后臺(tái)主循環(huán) while(1) {

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

在這里完成自己的項(xiàng)目邏輯 ********************************** */ LED0_OPEN; LED7_OPEN; TARGET_Delayms(200,1); LED1_OPEN; LED6_OPEN; TARGET_Delayms(200,1);

LED2_OPEN; LED5_OPEN;

TARGET_Delayms(200,1); LED3_OPEN; LED4_OPEN;

TARGET_Delayms(200,1); ALL_LED_SHUT;

TARGET_Delayms(200,1);

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

喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除 ********************************** */

#ifINTERNAL_PERIPHERAL_WDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目3:串轉(zhuǎn)并的方法——控制更多的LED1

單片機(jī)最小系統(tǒng)目錄2認(rèn)識(shí)74HC595芯片374HC595芯片的配置文件4數(shù)字字模構(gòu)建5倒計(jì)時(shí)程序的實(shí)現(xiàn)1單片機(jī)最小系統(tǒng)圖3-4ATmega168PA單片機(jī)最小系統(tǒng)(1)數(shù)字電源電路(2)模擬電源電路(3)復(fù)位電路(4)時(shí)鐘電路(5)下載電路1、數(shù)字電源電路由引腳6、4、3、5組成數(shù)字電源電路,其中引腳6和4為電源,在原理圖中用VCC表示,引腳3和5為數(shù)字地,在原理圖中用GND表示。數(shù)字電源為ATmeag168PA單片機(jī)內(nèi)部的數(shù)字部分供給1.8V至5.5V工作電壓,其供電范圍非常廣,可以適用與各種不同的運(yùn)行環(huán)境與場所。在這里我們需要注意的是其最大供電電壓為6.0V,電源電壓超過這個(gè)數(shù)值,有可能損毀單片機(jī)。2、模擬電源電路引腳18、20、21構(gòu)成模擬電源電路,引腳18為模擬電源,在原理圖中用AVCC標(biāo)識(shí),引腳20位模擬參考電壓,用AREF標(biāo)識(shí),引腳21為模擬地,應(yīng)用AGND標(biāo)識(shí),但在ATmega168PA中未做區(qū)分,與數(shù)字地一樣用GND標(biāo)識(shí)。圖3-5模擬電源與數(shù)字電源單點(diǎn)接地示意圖3、復(fù)位電路復(fù)位是單片機(jī)的初始化操作,其目的是使單片機(jī)內(nèi)部CPU及其寄存器處于一個(gè)確定的初始化狀態(tài)。除了系統(tǒng)的正常開機(jī)(上電)復(fù)位外,當(dāng)程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于不正常狀態(tài)時(shí),為擺脫困境,也需要復(fù)位以使其恢復(fù)正常工作狀態(tài)。ATmega168PA的第26引腳為復(fù)位引腳,外接電阻R62和電容C15構(gòu)成低電平復(fù)位的RC電路。4、時(shí)鐘電路

5、下載電路完成C程序的設(shè)計(jì)后,需經(jīng)過編譯和鏈接將其轉(zhuǎn)換為機(jī)器碼,然后在通過下載器下載到單片機(jī)中,下載器與單片機(jī)相連的端口,就是圖3-4所示的P6。這種下載方式的學(xué)名為在ISP(在系統(tǒng)可編程。對(duì)于ATmega168PA單片機(jī)由于其下載方式使用串行模式,因此也成為串行下載。山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目3:串轉(zhuǎn)并的方法——控制更多的LED1

單片機(jī)最小系統(tǒng)目錄2認(rèn)識(shí)74HC595芯片374HC595芯片的配置文件4數(shù)字字模構(gòu)建5倒計(jì)時(shí)程序的實(shí)現(xiàn)2認(rèn)識(shí)74HC595芯片圖3-624路LED模塊電路原理圖利用74HC595進(jìn)行串并轉(zhuǎn)換用以控制更多的LED序號(hào)引腳標(biāo)識(shí)說明16VCC電源,本例中通過軟排線與教學(xué)開發(fā)板的VCC相連接,使用了一個(gè)104電容用作去耦。8GND地13E輸出使能控制線(低有效),本例中直接接地,表示輸出一直有效。10SRCLR移位寄存器清零端(低有效),本例中直接接VCC,表示一直無效,即不清零。14SER串行數(shù)據(jù)輸入端,本例中此引腳通過軟排線與單片機(jī)相連接,用于將單片機(jī)欲發(fā)送的數(shù)據(jù)送入74HC595。11SRCLK數(shù)據(jù)輸入時(shí)鐘線,本例中此引腳通過軟排線與單片機(jī)相連接,單片機(jī)通過控制該引腳的高低操作,達(dá)到使得74HC595進(jìn)行移位的作用。12RCLK輸出存儲(chǔ)器鎖存時(shí)鐘線,本例中此引腳通過軟排線與單片機(jī)相連接,單片機(jī)使用此引腳控制74HC595引腳的輸出。15、1、2、3、4、5、6、7O0-O7三態(tài)輸出引腳,用于控制LED,此8個(gè)引腳漏極開路輸出,低電平有效,不可直接通過高電平控制LED。9Q7串行數(shù)據(jù)輸出引腳,當(dāng)時(shí)鐘發(fā)生,74HC595內(nèi)部移位寄存器進(jìn)行移位時(shí),最高位的數(shù)據(jù)將從此引腳移出,從圖3-6可以看出,此引腳與下一級(jí)74HC595的串行數(shù)據(jù)輸入端相連接,也就是說此位數(shù)據(jù)移入下一級(jí)74HC595的內(nèi)部移位寄存器的最低端。表3-174HC595引腳說明圖3-774HC595內(nèi)部原理形象理解圖二進(jìn)制數(shù)據(jù)從SER引腳輸入內(nèi)部移位寄存器,從Q7引腳輸出內(nèi)部移位寄存器。內(nèi)部移位寄存器在時(shí)鐘引腳SRCLK的控制下工作,RCLK負(fù)責(zé)控制三態(tài)門的通與斷,用于選擇合適時(shí)機(jī)將內(nèi)部移位寄存器中的數(shù)據(jù)輸出到輸出寄存器中,數(shù)據(jù)一旦到達(dá)輸出寄存器,即在相應(yīng)引腳上呈現(xiàn)相應(yīng)的高低電平。圖3-874HC595控制方法流程圖圖3-924路LED模塊電路整體工作原理示意圖

假設(shè)P3端口通過軟排線與P9端口相連接,即使用單片機(jī)的PROTC控制24路LED。則我們可以得到如下對(duì)應(yīng)關(guān)系:PC0-->RCLKPC1->SRCLKPC2-->SER圖3-1024路LED模塊電路整體控制流程圖山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目3:串轉(zhuǎn)并的方法——控制更多的LED1

單片機(jī)最小系統(tǒng)目錄2認(rèn)識(shí)74HC595芯片374HC595芯片的配置文件4數(shù)字字模構(gòu)建5倒計(jì)時(shí)程序的實(shí)現(xiàn)374HC595芯片的配置文件一、config.h文件的使用圖3-11在邏輯層中包含config.h和main.c兩個(gè)文件config.h是整個(gè)工程項(xiàng)目的配置文件,我們?cè)陂_始一個(gè)新的工程的時(shí)候,首先就需對(duì)該文件進(jìn)行相應(yīng)的設(shè)置,以完成對(duì)整個(gè)工程的配置操作.文件組成調(diào)試狀態(tài)選擇、AVR器件選擇、內(nèi)部外設(shè)層配置、外部模塊層配置和協(xié)議層配置。(1)調(diào)試狀態(tài)選擇

此部分主要是定義了一個(gè)調(diào)試狀態(tài)宏:DEBUG,我們可以利用這個(gè)調(diào)試狀態(tài)宏將應(yīng)用程序分為調(diào)試狀態(tài)和運(yùn)行狀態(tài)?!境绦?-1】#ifDEBUG==1 Uart0_SendString("Thevalueisnotexisting,errornumberis#8");#endif (2)AVR器件選擇

本書配套的AVRWARE++體系架構(gòu)僅支持ATmega48_88_168_328系列單片機(jī)。(3)內(nèi)部外設(shè)層配置

內(nèi)部外設(shè)層是指單片機(jī)內(nèi)部外設(shè)的驅(qū)動(dòng)程序?qū)?,通過這部分內(nèi)容對(duì)單片機(jī)內(nèi)部外設(shè)的使用情況進(jìn)行相應(yīng)的配置?!境绦?-2】#ifINTERNAL_PERIPHERAL_WDT_MODE!=0TARGET_WatchDogReset();#endif(4)外部模塊層配置線路板上與單片機(jī)相連接的芯片或模塊的驅(qū)動(dòng)層。通過這部分內(nèi)容對(duì)單片機(jī)外部的芯片或模塊的使用情況進(jìn)行相應(yīng)的配置?!境绦?-4】#defineEXTERNAL_MODULE_HC595_MODE 1//0: 沒有使用HC595芯片//1: 使用HC595芯片,其引腳配置在相應(yīng)的config文件中進(jìn)行設(shè)置//2: 使用HC595芯片,其引腳配置在相應(yīng)的config文件中進(jìn)行設(shè)置,三個(gè)引腳可以使用不同的端口(5)協(xié)議層配置項(xiàng)目2中對(duì)協(xié)議層進(jìn)行了簡單的介紹,指出它的主要功能是引進(jìn)現(xiàn)在已公認(rèn)完善的、開源的協(xié)議代碼。因?yàn)楸纠龥]有具體的使用到該層的信息,其相應(yīng)的使用方法,我們?cè)诤罄m(xù)的內(nèi)容進(jìn)行介紹。二、74HC595配置文件的使用圖3-12對(duì)74HC595的硬件連接情況進(jìn)行配置內(nèi)容包括AVRWARE++體系架構(gòu),

74HC595具體的使用情況,包括74HC595的控制引腳連接到單片機(jī)的哪個(gè)端口和哪個(gè)引腳上。

假定我們使用軟排線將P3端口與P9端口相連接,則74HC595引腳與單片機(jī)引腳的對(duì)應(yīng)關(guān)系如下:PC0-->RCLKPC1->SRCLKPC2-->SER【程序3-6】#ifndefHC595_01_CONFIG_H_#defineHC595_01_CONFIG_H_

#defineHC595_PORT PORTC#defineHC595_DDR DDRC#defineHC595_CLOCK BIT1#defineHC595_CS BIT0#defineHC595_MOSI BIT2

#endif/*HC595_01_CONFIG_H_*/三、程序調(diào)試—顯示數(shù)字“0”行

列21000001010201030104010501060007111【程序3-9】//加入包含文件#include"../include.h"

//定義系統(tǒng)常量

//定義全局變量

//主程序intmain(void){

//定義局部變量

//目標(biāo)板初始化,該函數(shù)會(huì)自動(dòng)初始化相應(yīng)的外設(shè)文件

TARGET_Init();

//初始化全局變量

//在上電時(shí),執(zhí)行的相應(yīng)操作

//后臺(tái)主循環(huán) while(1) {

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

在這里完成自己的項(xiàng)目邏輯 **********************************

*/

HC595_WriteByte(0x80); HC595_WriteByte(0xBE); HC595_WriteByte(0x80); HC595_SELECT;

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

喂狗語句,大部分工程項(xiàng)目都不應(yīng)去除 ********************************** */ #ifINTERNAL_PERIPHERAL_WDT_MODE!=0

TARGET_WatchDogReset(); #endif } return0; //永不執(zhí)行}

上述代碼編寫完成后,我們按照前面的方法對(duì)該代碼進(jìn)行編譯,讓后通過下載程序,將映像文件下載到單片機(jī)中。使用軟排線將教學(xué)開發(fā)板上的P3端口與P9端口相連接,再次上電,我們就可以看到24路LED模塊顯示數(shù)字“0”了。山東電子職業(yè)技術(shù)學(xué)院電子工程系單片機(jī)程序設(shè)計(jì)與應(yīng)用課程組項(xiàng)目3:串轉(zhuǎn)并的方法——控制更多的LED1

單片機(jī)最小系統(tǒng)目錄2認(rèn)識(shí)74HC595芯片374HC595芯片的配置文件4數(shù)字字模構(gòu)建5倒計(jì)時(shí)程序的實(shí)現(xiàn)4數(shù)字字模構(gòu)建行

列21001011101210131014101510161017111(1)數(shù)字“1”字模的構(gòu)建順序?qū)懭?4HC595的字節(jié)是:0xFF、0x80、0xFF。(2)數(shù)字“2”字模的構(gòu)建順序?qū)懭?4HC595的字節(jié)是:0x86、0xB6、0xB0。行

列21000001110211030004011501160007111(3)數(shù)字“3”字模的構(gòu)建順序?qū)懭?4HC595的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論