傳感器與綜合控制技術(shù)課件第3章:使用C語言控制核心系統(tǒng)_第1頁
傳感器與綜合控制技術(shù)課件第3章:使用C語言控制核心系統(tǒng)_第2頁
傳感器與綜合控制技術(shù)課件第3章:使用C語言控制核心系統(tǒng)_第3頁
傳感器與綜合控制技術(shù)課件第3章:使用C語言控制核心系統(tǒng)_第4頁
傳感器與綜合控制技術(shù)課件第3章:使用C語言控制核心系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章:使用C語言控制核心系統(tǒng)Introduction絕大多數(shù)程序設(shè)計(jì)初學(xué)者忽視算法的重要性。實(shí)際上,沒有正確的算法就沒有正確的程序。通常程序設(shè)計(jì)在嵌入式系統(tǒng)中是實(shí)現(xiàn)測(cè)量與控制的關(guān)鍵因素。本章將說明如何使用算法設(shè)計(jì)、翻譯成C語言、再對(duì)核心控制系統(tǒng)進(jìn)行操作這三個(gè)步驟來解釋本章的主要內(nèi)容。計(jì)算機(jī)語言(例如C語言)需要控制硬件工作,算法是語言編寫過程中的關(guān)鍵問題。本章要點(diǎn)本章需要掌握的要點(diǎn)如下:

·集成開發(fā)環(huán)境的搭建(工程建立、工程配置、HEX文件生成)

·使用ISP軟件下載可執(zhí)行文件到核心硬件

·使用語言初步驅(qū)動(dòng)硬件工作本章需要了解的要點(diǎn)如下:

·算法設(shè)計(jì)的思想

·算法翻譯成程序的方法

·語言控制硬件初步體會(huì)

目錄3.1算法概述3.2軟件環(huán)境搭建3.3計(jì)算機(jī)語言與算法的配合3.4程序設(shè)計(jì)語言C語言與單片機(jī)3.1算法概述算法通常被定義為“解題方案的準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制”。簡(jiǎn)單理解算法:算法就是為了能夠使用計(jì)算機(jī)語言編程來解決問題的步驟。算法在實(shí)際應(yīng)用上有如下幾個(gè)關(guān)鍵特征:

(1)必須保證能夠解決問題

(2)必須是一系列步驟

(3)必須能夠通過某種方式轉(zhuǎn)變?yōu)橛?jì)算機(jī)程序3.1算法概述3.1.1簡(jiǎn)單算法設(shè)計(jì)思路

是否能夠正確編寫一個(gè)算法,決定了后面編寫的程序是否正確。但是掌握算法的設(shè)計(jì)相對(duì)比較難,這是由于算法設(shè)計(jì)需要兩方面的知識(shí):

第一方面是能夠找到一個(gè)解決問題的方法

第二方面是該方法能夠使用計(jì)算機(jī)語言描述。3.1算法概述3.1.1簡(jiǎn)單算法設(shè)計(jì)思路問題:求園的面積初步分析:實(shí)際上,要求計(jì)算機(jī)幫助我們解決問題的時(shí)候,首先需要考慮到計(jì)算機(jī)的特性:事情是一步一步來完成的(即程序是一條一條執(zhí)行的)。3.1算法概述3.1.1簡(jiǎn)單算法設(shè)計(jì)思路常見錯(cuò)誤第一步:計(jì)算

第二步:輸入r值第三步:輸出結(jié)果第一步:輸入r值第二步:輸出結(jié)果第三步:計(jì)算

3.1算法概述3.1.1簡(jiǎn)單算法設(shè)計(jì)思路最終算法第一步:提示用戶輸入半徑r第二步:從鍵盤輸入半徑r第三步:計(jì)算

,并保存結(jié)果第四步:顯示該結(jié)果3.1算法概述3.1.2算法實(shí)現(xiàn)C語言程序框架包含與定義部分;

返回值main(參數(shù)表){

變量聲明/定義部分;

語句部分}#include<文件名.H> //include可能有多行或是#include“文件名.H”

#define常量名

常量值全局變量聲明/定義;函數(shù)聲明/定義;

3.1算法概述3.1.2算法實(shí)現(xiàn)對(duì)應(yīng)翻譯法:一個(gè)算法步驟翻譯成一個(gè)對(duì)應(yīng)的C語言語句第一步:提示用戶輸入半徑r 對(duì)應(yīng)翻譯: printf(“請(qǐng)輸入半徑r:”);第二步:從鍵盤輸入半徑r 對(duì)應(yīng)翻譯: scanf(“%f”,&r);第三步:計(jì)算

,并保存結(jié)果

對(duì)應(yīng)翻譯:

result=pi*r*r;第四步:顯示該結(jié)果

對(duì)應(yīng)翻譯:

printf(“\n園的面積等于-%f”,result);3.1算法概述3.1.2算法實(shí)現(xiàn)完整的程序請(qǐng)大家看正確算法與錯(cuò)誤算法的操作演示#include<stdio.h> //包含stdio.h庫文件是為了能使用printf、scanf等這種標(biāo)準(zhǔn)函數(shù)#definepi3.14159 //注意define語句最后不要加分號(hào),除非你有特殊用途voidmain(void){ //第一部分:變量定義部分 floatresult,r;

//第二部分:語句部分 //第一步:提示用戶輸入半徑r printf(“請(qǐng)輸入半徑r:”);

//第二步:從鍵盤輸入半徑r scanf(“%f”,&r); //第三步:計(jì)算

,并保存結(jié)果

result=pi*r*r; //第四步:顯示該結(jié)果

printf(“\n園的面積等于:%f”,result);}3.2軟件環(huán)境搭建

在工程應(yīng)用當(dāng)中,單片機(jī)級(jí)的嵌入式開發(fā)主要采用C語言來進(jìn)行設(shè)計(jì)。其軟件設(shè)計(jì)環(huán)境不使用VC6.0環(huán)境而使用keil環(huán)境。本教材采用支持的51單片機(jī)的環(huán)境keil2版本進(jìn)行介紹【注意】高版本的keil環(huán)境是MDK,例如:MDK4.72。并且注意到高版本的MDK也是可以用的3.2軟件環(huán)境搭建3.2.1Keil集成開發(fā)環(huán)境簡(jiǎn)介操作演示3.2軟件環(huán)境搭建3.2.2工程與配置(1)創(chuàng)建工程

第一步:新建一個(gè)工程文件夾

第二步:新建工程

第三步:選擇芯片型號(hào)

第四步:新建C文件

第五步:添加C文件到工程

操作演示

3.2軟件環(huán)境搭建3.2.2工程與配置第二步:配置工程:

選中目標(biāo)

配置輸出

填寫代碼

編譯代碼

檢查結(jié)果并生成HEX文件操作演示3.3計(jì)算機(jī)語言與算法的配合3.3.1問題提出【目標(biāo)】單片機(jī)主控板控制一個(gè)發(fā)光LED燈連續(xù)閃爍的問題,則面對(duì)該問題應(yīng)該如何做?問題1:程序設(shè)計(jì)者需要考慮硬件嗎?如果需要,需要考慮硬件什么內(nèi)容?問題2:軟件如何做?問題3:程序設(shè)計(jì)者需要做什么?3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)問題2中,提出了軟件需要如何做的問題,這里需要做的就是軟件的流程,我們考慮硬件的連接,假定單片機(jī)主控板硬件采用P0.0引腳來連接LED燈,具體連接電路如下3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)幾個(gè)問題需要考慮:(1)LED的響應(yīng)時(shí)間/速度如何?(2)如何操作LED?(3)達(dá)到LED閃爍的目標(biāo)流程是什么?3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)(1)LED的響應(yīng)時(shí)間/速度如何?

通過查閱資料了解到:LED點(diǎn)亮與熄滅所延遲的時(shí)間稱為響應(yīng)時(shí)間,通常為:10-6~10-7s。也就是點(diǎn)亮與熄滅延遲的時(shí)間很短。3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)(2)如何操作LED?

通過圖3.32可見,操作LED實(shí)際上就是操作單片機(jī)引腳P0.0。3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)(3)達(dá)到LED閃爍的目標(biāo)流程是什么?

由于無論如何LED閃爍的轉(zhuǎn)換期都是有時(shí)間延遲的(10-6~10-7s雖然很小但是仍然有響應(yīng)時(shí)間的問題,這個(gè)問題將轉(zhuǎn)換為反應(yīng)時(shí)間),所以必須考慮到延時(shí)的問題。3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)算法第一步:在P0.0線上點(diǎn)亮LED第二步:延時(shí)第三步:在P0.0線上熄滅LED第四步:延時(shí)第五步:跳轉(zhuǎn)到第一步

3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)最終算法與翻譯的C語言代碼第一步:在無限循環(huán)中做。

第1.1步

在P0.0線上點(diǎn)亮LED第1.2步

延時(shí)第1.3步

在P0.0線上熄滅LED第1.4步

延時(shí)

while(1){ P00=1; delay(time); P00=0; delay(time);}3.3計(jì)算機(jī)語言與算法的配合3.3.2算法設(shè)計(jì)與程序設(shè)計(jì)完整的C語言源程序操作演示#include<reg52.h> //注意:?jiǎn)纹瑱C(jī)C編程中頭文件名為:reg52.hsbitP00=P0^0; //sbit是單片機(jī)C編程的擴(kuò)展關(guān)鍵字,這一句的意思是:?jiǎn)纹瑱C(jī)的//P0.0口在程序中的名字是P00voiddelay(inttime); //聲明了一個(gè)延時(shí)函數(shù),注意:這里沒有寫全函數(shù)的內(nèi)容,但是//只要聲明了(說明了),后面可以再補(bǔ)全。voidmain(void) {

inttime=1000; //定義了一個(gè)變量,值是1000while(1) //在無限循環(huán)中做{ P00=1; // 在P0.0線上點(diǎn)亮LED delay(time); // 延時(shí) P00=0; // 在P0.0線上熄滅LED delay(time); // 延時(shí)}}voiddelay(inttime) //這里是延時(shí)函數(shù)的定義,上面沒有補(bǔ)全延時(shí)函數(shù)的內(nèi)容,這里{ //補(bǔ)上 inti; for(i=0;i<time;i++);}3.4程序設(shè)計(jì)語言C語言與單片機(jī)本節(jié)目標(biāo):實(shí)現(xiàn)上節(jié)的例子要點(diǎn):用KEIL軟件編譯后必須有生成.hex文件,該文件下載到單片機(jī),單片機(jī)才能依照用戶設(shè)計(jì)的代碼流程開始工作!3.4程序設(shè)計(jì)語言C語言與單片機(jī)3.4.1使用C語言控制單片機(jī)操作演示3.4程序設(shè)計(jì)語言C語言與單片機(jī)3.4.2使用ISP軟件下載從keil2中生成的HEX文件需要使用一個(gè)成為ISP的軟件來下載到單片機(jī)上運(yùn)行。本教材默認(rèn)使用STC12C5A60S2單片機(jī)。使用的下載軟件ISP的版本為:stc-isp-15xx-v6.63。下載HEX文件到單片機(jī)板遵循如下流程:(1)步驟一:連接5V直流電源到開發(fā)板,并關(guān)閉開發(fā)板電源開關(guān)。(2)步驟二:連接串口線(RS232線)到開發(fā)板,串口線的另外一頭連接到計(jì)算機(jī)的com口(3)步驟三:?jiǎn)?dòng)ISP軟件。(4)步驟四:在單片機(jī)型號(hào)下拉框選中對(duì)應(yīng)型號(hào)的單片機(jī)。(

溫馨提示

  • 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)論