傳感器與綜合控制技術(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ù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

·算法翻譯成程序的方法

·語言控制硬件初步體會

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

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

(2)必須是一系列步驟

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

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

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

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

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

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

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

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

變量聲明/定義部分;

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

#define常量名

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

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

,并保存結(jié)果

對應(yīng)翻譯:

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

對應(yīng)翻譯:

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

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

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

,并保存結(jié)果

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

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

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

第一步:新建一個工程文件夾

第二步:新建工程

第三步:選擇芯片型號

第四步:新建C文件

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

操作演示

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

選中目標

配置輸出

填寫代碼

編譯代碼

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

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

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

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

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

第1.1步

在P0.0線上點亮LED第1.2步

延時第1.3步

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

延時

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

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

溫馨提示

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

評論

0/150

提交評論