單片機(jī)控制LED燈簡易優(yōu)化教程C語言_第1頁
單片機(jī)控制LED燈簡易優(yōu)化教程C語言_第2頁
單片機(jī)控制LED燈簡易優(yōu)化教程C語言_第3頁
單片機(jī)控制LED燈簡易優(yōu)化教程C語言_第4頁
單片機(jī)控制LED燈簡易優(yōu)化教程C語言_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)控LED燈本文為前一版本的修改版,更正了一些亢雜錯誤,更注重對內(nèi)容解釋,更加適合初學(xué)者。主要內(nèi)容一、點(diǎn)亮板子上的第一個燈D0二、點(diǎn)亮板子上的D0、D2、D4、D6燈,與D1、D3、D5、D7燈交替閃爍三、流水燈:從D0---D7依次點(diǎn)亮一、點(diǎn)亮板子上的第一個燈D01)目標(biāo)了解單片機(jī)的基本設(shè)計(jì)思路和編程方法,和單片機(jī)的最小系統(tǒng)。2)分析利用單片機(jī)的一個輸入/輸出口來控制一盞發(fā)光二極管點(diǎn)亮。引腳:1)4個I/O口占了32個引腳2)電源和接地又占了2個引腳3)剩下的6個引腳是時鐘引腳和控制引腳硬件說明使用單片機(jī)的P1口來驅(qū)動8個LED,發(fā)光二極管的陽極接高電平,故P1口為低電平時,就可以驅(qū)動其點(diǎn)亮D0與P1.0口是相連的,P1.0(P1.1表示最高位)用來表示P1口的最低位;本任務(wù)中給單片機(jī)的P1.0口一個低電平信號即可完成控制。所以,只需給P1.0低電平信號,其他引腳均為高電平。點(diǎn)亮D0燈:1表示高電位(熄滅),0表示低電位(發(fā)光)D7D6D5D4D3D2D1D011111110從二進(jìn)制轉(zhuǎn)化為十六進(jìn)制:11111110B=0xfeKeil的使用掌握Keil工程的建立和軟件的開發(fā);點(diǎn)擊跳過如果有硬件的,可以嘗試,否則,建議跳過,先學(xué)習(xí)C語言在單片機(jī)中的簡單用法。1.啟動

Vision

Vision2是一個標(biāo)準(zhǔn)的Windows應(yīng)用程序,雙擊KeilVision2圖標(biāo)即可啟動,也可以選擇“開始”→“程序”KeilVision2”命令來啟動運(yùn)行。其主界面如圖1-28所示。2.創(chuàng)建一個項(xiàng)目并選擇單片機(jī)選擇“Project”(項(xiàng)目)→“NewProject”(新建項(xiàng)目)命令,如圖1-29所示,將彈出“GreateNewProject”(新建項(xiàng)目)對話框隨后會彈出一個對話框,要求選擇單片機(jī)的型號。在該對話框中顯示了

Vision2的器件數(shù)據(jù)庫,從中可以根據(jù)使用的單片機(jī)來選擇。AT89S528051basedFullStaticCMOScontrollerwithThree-LevelProgramMemoryLock,32I/Olines,3Timers/Counters,8InterruptsSources,WatchdogTimer,2DPTRs(DATAPOINTERREGISTERS),8KFlashMemory,256BytesOn-chipRAM基于8051全靜態(tài)CMOS控制器、三級加密程序存儲器、32個I/O口、三個定時器/計(jì)數(shù)器、八個中斷源、看門狗定時器、2個數(shù)據(jù)指針寄存器、8k字節(jié)Flash,256字節(jié)片內(nèi)RAM3.創(chuàng)建一個新的源程序文件,并把這個源文件添加到項(xiàng)目中單擊工具欄中的新建文件圖標(biāo)(或選擇“File”(文件)→“New”(新建)命令),文件操作窗口即可出現(xiàn)新建文件。保存該空白文件,單擊工具欄中的保存圖標(biāo)(或選擇“File”(文件)→“Save”(保存)命令),彈出如圖1-32所示的“Saveas”(保存為)對話框,在“文件名”文本框中輸入欲保存的文件名,保存時注意加上正確的后綴名。單擊Target1前面的+號,然后在SourceGroup1上單擊鼠標(biāo)右鍵,彈出快捷菜單。選擇“AddFilestoGroup’SourceGroup1’”(添加文件到項(xiàng)目)命令,彈出如圖1-34所示的對話框。選中文件(注意選擇文件類型),然后單擊“Add”(添加)按鈕,即可添加選中文件到項(xiàng)目中。4.輸入源程序:此時就可以輸入源程序了。5.設(shè)置目標(biāo)硬件的工具選項(xiàng)程序編寫完成后,還要對項(xiàng)目進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。“Output”選項(xiàng)卡如圖所示,其中有多個選項(xiàng),此處選擇“CreateHEXFile”復(fù)選框用于生成可執(zhí)行代碼文件,該文件可以用編程器寫入單片機(jī)芯片,文件的擴(kuò)展名為.HEX,默認(rèn)情況下該項(xiàng)未被選中,如果要寫芯片做硬件實(shí)驗(yàn),就必須選中該項(xiàng)。其余選項(xiàng)均取默認(rèn)值,不做任何修改。6.編譯項(xiàng)目并創(chuàng)建HEX文件可以通過工具欄中的圖標(biāo)直接進(jìn)行。從左到右的圖標(biāo)分別是:編譯、編譯連接、全部重建、停止編譯和對工程進(jìn)行設(shè)置。對源程序編寫之后編譯,最終要得到結(jié)果,提示0個錯誤,0個警告。同時還可看到,該程序的內(nèi)部RAM的使用量(data=8.0),外部RAM的使用量(xdata=0),代碼量(code=18)等一些信息。7.將生成的hex文件,通過ISP下載到板子中。請觀察現(xiàn)象!源程序#include<reg51.h>voidmain(){ P1=0xfd;//P1=11111110B}C語言復(fù)習(xí)Main函數(shù)

格式:voidmain()

特點(diǎn):無返回值,無參。

任何一個C程序有且僅有一個main函數(shù),它是整個程序開始執(zhí)行的入口。

例:voidmain()

{

總程序從這里開始執(zhí)行;

其他語句;

}C語言-51單片機(jī)的頭文件通常有:reg51.hreg52.hmath.hctype.hstdio.hstdlib.habsacc.h常用有:reg51.hreg52.h(定義特殊功能寄存器和位寄存器);math.h

(定義常用數(shù)學(xué)運(yùn)算);十六進(jìn)制是二進(jìn)制的簡短表示形式。十進(jìn)制中的0-15分別表示為十六進(jìn)制的0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F熟練掌握二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換。規(guī)律:一般把四個二進(jìn)制數(shù)放在一起轉(zhuǎn)換成一個十六進(jìn)制數(shù),轉(zhuǎn)換時先把二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),再把十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)。二進(jìn)制和十六進(jìn)制的轉(zhuǎn)換如:0001B->1HB表示為二進(jìn)制,H為十六進(jìn)制

1001B->9H1010B->AH00101100->2CH11111110->FEH在C語言編程中是不能用H的.十六進(jìn)制整常數(shù)的前綴為0X或0x。

十六進(jìn)制整常數(shù)十六進(jìn)制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為0~9,A~F或a~f。以下各數(shù)是合法的十六進(jìn)制整常數(shù):0X2A(十進(jìn)制為42)0XA0(十進(jìn)制為160)0XFFFF(十進(jìn)制為65535)以下各數(shù)不是合法的十六進(jìn)制整常數(shù):5A(無前綴0X)0X3H(含有非十六進(jìn)制數(shù)碼)

各種進(jìn)位制的對應(yīng)關(guān)系十進(jìn)制二進(jìn)制十六進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制000910019111101010A2102111011B3113121100C41004131101D51015141110E61106151111F71117161000010810008二、點(diǎn)亮板子上的0、2、4、6燈,與1、3、5、7燈交替閃爍點(diǎn)亮0、2、4、6燈:D7D6D5D4D3D2D1D010101010從二進(jìn)制轉(zhuǎn)化為十六進(jìn)制:10101010B=0xaa點(diǎn)亮1、3、5、7燈:D7D6D5D4D3D2D1D001010101從二進(jìn)制轉(zhuǎn)化為十六進(jìn)制:01010101B=0x55#include<reg51.h>#defineuintunsignedint//unit的功能相當(dāng)于unsignedint的功能voiddelay();//函數(shù)聲明voidmain(){while(1) { P1=0xaa;//P1=10101010B(僅0,2,4,6號燈亮) delay();//函數(shù)調(diào)用 P1=0x55;//P1=01010101B(僅1,3,5,7號燈亮) delay();//函數(shù)調(diào)用 }}voiddelay(){ uintx,y;//定義unsignedint(無符號整數(shù)型)型變量 for(x=100;x>0;x--) for(y=600;y>0;y--); //空語句,不能省略“;”}1)宏定義//此處雞肋+無聊#defineuintunsignedint#defineucharunsignedchar#define標(biāo)識符字符串C語言中的例子:#definePI3.14159262)函數(shù)聲明函數(shù)聲明是指函數(shù)的定義在后面,而前面需要對它進(jìn)行調(diào)用,這樣就需要預(yù)先作聲明,一般來說函數(shù)的聲明只是函數(shù)首部加上分號即可。3)數(shù)據(jù)類型Intsignedint范圍是多少?unsignedint范圍是多少?char可以表示小整數(shù)或者單個字符。當(dāng)char表示整數(shù)時,signedchar的范圍是多少?unsignedchar的范圍是多少?C-51的數(shù)據(jù)類型基本數(shù)據(jù)類型類型符號關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255!注意:此處范圍僅是對于16位編譯器來說的,有興趣的讀者可以去了解一下。4)While(表達(dá)式)

{語句(內(nèi)部也可為空)}

特點(diǎn):先判斷表達(dá)式,后執(zhí)行語句。

原則:若表達(dá)式不是0,即為真,那么執(zhí)行語句。否則跳出while語句。While(1){}while(1)就是while(true),條件判斷直接為true,循環(huán)永遠(yuǎn)不會退出,也稱為死循環(huán)。(應(yīng)該靈活應(yīng)用)5)delay()函數(shù)是一個延時函數(shù)。兩個for語句,構(gòu)成了循環(huán)嵌套。用數(shù)數(shù)的方式消耗時間產(chǎn)生延遲效果。具體延遲多久取決于若干因素,以后再討論。voiddelay(){ uintx,y; for(x=100;x>0;x--) for(y=600;y>0;y--);}注意:第二個for循環(huán)體是一條空語句。5)for循環(huán)for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

{語句(內(nèi)部可為空)}

執(zhí)行過程:

1.求解一次表達(dá)式1.

2.求解表達(dá)式2,若其值為真(非0即為真),則執(zhí)行for中語句。然后執(zhí)行第3步。否則(表達(dá)式2為假(0))結(jié)束for語句,直接跳出,不再執(zhí)行第3步。

3.求解表達(dá)式3.

4.跳到第2步重復(fù)執(zhí)行。三、流水燈:從D0---D7依次點(diǎn)亮分析:D0亮0xfe11111110BD1亮0xfd11111101BD2亮0xfb11111011BD3亮0xf711110111BD4亮0xef11101111BD5亮0xdf11011111BD6亮0xbf10111111BD7亮0x7f01111111B軟件分析:1)把第一個值賦給P1口,然后延時一段時間;2)把第二個值賦給P1口,然后延時一段時間;……8)把第八個值賦給P1口,然后延時一段時間;9)執(zhí)行第一步。#include<reg51.h>voidmain(){while(1) { P1=0xfe; delay(100);//此處delay函數(shù)可自定義,參照前面。 P1=0xfd; delay(100); P1=0xfb; delay(100); P1=0xf7; delay(100); P1=0xef; delay(100); P1=0xdf; delay(100); P1=0xbf; delay(100); P1=0x7f; delay(100); } }}2

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論