




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)控LED燈本文為前一版本的修改版,更正了一些亢雜錯(cuò)誤,更注重對(duì)內(nèi)容解釋,更加適合初學(xué)者。主要內(nèi)容一、點(diǎn)亮板子上的第一個(gè)燈D0二、點(diǎn)亮板子上的D0、D2、D4、D6燈,與D1、D3、D5、D7燈交替閃爍三、流水燈:從D0---D7依次點(diǎn)亮一、點(diǎn)亮板子上的第一個(gè)燈D01)目標(biāo)了解單片機(jī)的基本設(shè)計(jì)思路和編程方法,和單片機(jī)的最小系統(tǒng)。2)分析利用單片機(jī)的一個(gè)輸入/輸出口來控制一盞發(fā)光二極管點(diǎn)亮。引腳:1)4個(gè)I/O口占了32個(gè)引腳2)電源和接地又占了2個(gè)引腳3)剩下的6個(gè)引腳是時(shí)鐘引腳和控制引腳硬件說明使用單片機(jī)的P1口來驅(qū)動(dòng)8個(gè)LED,發(fā)光二極管的陽極接高電平,故P1口為低電平時(shí),就可以驅(qū)動(dòng)其點(diǎn)亮D0與P1.0口是相連的,P1.0(P1.1表示最高位)用來表示P1口的最低位;本任務(wù)中給單片機(jī)的P1.0口一個(gè)低電平信號(hào)即可完成控制。所以,只需給P1.0低電平信號(hào),其他引腳均為高電平。點(diǎn)亮D0燈:1表示高電位(熄滅),0表示低電位(發(fā)光)D7D6D5D4D3D2D1D011111110從二進(jìn)制轉(zhuǎn)化為十六進(jìn)制:11111110B=0xfeKeil的使用掌握Keil工程的建立和軟件的開發(fā);點(diǎn)擊跳過如果有硬件的,可以嘗試,否則,建議跳過,先學(xué)習(xí)C語言在單片機(jī)中的簡單用法。1.啟動(dòng)
Vision
Vision2是一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序,雙擊KeilVision2圖標(biāo)即可啟動(dòng),也可以選擇“開始”→“程序”KeilVision2”命令來啟動(dòng)運(yùn)行。其主界面如圖1-28所示。2.創(chuàng)建一個(gè)項(xiàng)目并選擇單片機(jī)選擇“Project”(項(xiàng)目)→“NewProject”(新建項(xiàng)目)命令,如圖1-29所示,將彈出“GreateNewProject”(新建項(xiàng)目)對(duì)話框隨后會(huì)彈出一個(gè)對(duì)話框,要求選擇單片機(jī)的型號(hào)。在該對(duì)話框中顯示了
Vision2的器件數(shù)據(jù)庫,從中可以根據(jù)使用的單片機(jī)來選擇。AT89S528051basedFullStaticCMOScontrollerwithThree-LevelProgramMemoryLock,32I/Olines,3Timers/Counters,8InterruptsSources,WatchdogTimer,2DPTRs(DATAPOINTERREGISTERS),8KFlashMemory,256BytesOn-chipRAM基于8051全靜態(tài)CMOS控制器、三級(jí)加密程序存儲(chǔ)器、32個(gè)I/O口、三個(gè)定時(shí)器/計(jì)數(shù)器、八個(gè)中斷源、看門狗定時(shí)器、2個(gè)數(shù)據(jù)指針寄存器、8k字節(jié)Flash,256字節(jié)片內(nèi)RAM3.創(chuàng)建一個(gè)新的源程序文件,并把這個(gè)源文件添加到項(xiàng)目中單擊工具欄中的新建文件圖標(biāo)(或選擇“File”(文件)→“New”(新建)命令),文件操作窗口即可出現(xiàn)新建文件。保存該空白文件,單擊工具欄中的保存圖標(biāo)(或選擇“File”(文件)→“Save”(保存)命令),彈出如圖1-32所示的“Saveas”(保存為)對(duì)話框,在“文件名”文本框中輸入欲保存的文件名,保存時(shí)注意加上正確的后綴名。單擊Target1前面的+號(hào),然后在SourceGroup1上單擊鼠標(biāo)右鍵,彈出快捷菜單。選擇“AddFilestoGroup’SourceGroup1’”(添加文件到項(xiàng)目)命令,彈出如圖1-34所示的對(duì)話框。選中文件(注意選擇文件類型),然后單擊“Add”(添加)按鈕,即可添加選中文件到項(xiàng)目中。4.輸入源程序:此時(shí)就可以輸入源程序了。5.設(shè)置目標(biāo)硬件的工具選項(xiàng)程序編寫完成后,還要對(duì)項(xiàng)目進(jìn)行進(jìn)一步的設(shè)置,以滿足要求?!癘utput”選項(xiàng)卡如圖所示,其中有多個(gè)選項(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)分別是:編譯、編譯連接、全部重建、停止編譯和對(duì)工程進(jìn)行設(shè)置。對(duì)源程序編寫之后編譯,最終要得到結(jié)果,提示0個(gè)錯(cuò)誤,0個(gè)警告。同時(shí)還可看到,該程序的內(nèi)部RAM的使用量(data=8.0),外部RAM的使用量(xdata=0),代碼量(code=18)等一些信息。7.將生成的hex文件,通過ISP下載到板子中。請(qǐng)觀察現(xiàn)象!源程序#include<reg51.h>voidmain(){ P1=0xfd;//P1=11111110B}C語言復(fù)習(xí)Main函數(shù)
格式:voidmain()
特點(diǎn):無返回值,無參。
任何一個(gè)C程序有且僅有一個(gè)main函數(shù),它是整個(gè)程序開始執(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ī)律:一般把四個(gè)二進(jìn)制數(shù)放在一起轉(zhuǎn)換成一個(gè)十六進(jìn)制數(shù),轉(zhuǎn)換時(shí)先把二進(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)位制的對(duì)應(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號(hào)燈亮) delay();//函數(shù)調(diào)用 P1=0x55;//P1=01010101B(僅1,3,5,7號(hào)燈亮) delay();//函數(shù)調(diào)用 }}voiddelay(){ uintx,y;//定義unsignedint(無符號(hào)整數(shù)型)型變量 for(x=100;x>0;x--) for(y=600;y>0;y--); //空語句,不能省略“;”}1)宏定義//此處雞肋+無聊#defineuintunsignedint#defineucharunsignedchar#define標(biāo)識(shí)符字符串C語言中的例子:#definePI3.14159262)函數(shù)聲明函數(shù)聲明是指函數(shù)的定義在后面,而前面需要對(duì)它進(jìn)行調(diào)用,這樣就需要預(yù)先作聲明,一般來說函數(shù)的聲明只是函數(shù)首部加上分號(hào)即可。3)數(shù)據(jù)類型Intsignedint范圍是多少?unsignedint范圍是多少?char可以表示小整數(shù)或者單個(gè)字符。當(dāng)char表示整數(shù)時(shí),signedchar的范圍是多少?unsignedchar的范圍是多少?C-51的數(shù)據(jù)類型基本數(shù)據(jù)類型類型符號(hào)關(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!注意:此處范圍僅是對(duì)于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ì)退出,也稱為死循環(huán)。(應(yīng)該靈活應(yīng)用)5)delay()函數(shù)是一個(gè)延時(shí)函數(shù)。兩個(gè)for語句,構(gòu)成了循環(huán)嵌套。用數(shù)數(shù)的方式消耗時(shí)間產(chǎn)生延遲效果。具體延遲多久取決于若干因素,以后再討論。voiddelay(){ uintx,y; for(x=100;x>0;x--) for(y=600;y>0;y--);}注意:第二個(gè)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)把第一個(gè)值賦給P1口,然后延時(shí)一段時(shí)間;2)把第二個(gè)值賦給P1口,然后延時(shí)一段時(shí)間;……8)把第八個(gè)值賦給P1口,然后延時(shí)一段時(shí)間;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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025貴陽康養(yǎng)職業(yè)大學(xué)輔導(dǎo)員考試試題及答案
- 2025甘肅財(cái)貿(mào)職業(yè)學(xué)院輔導(dǎo)員考試試題及答案
- 新生兒黃疸診療與護(hù)理規(guī)范
- 初中數(shù)學(xué)節(jié)趣味活動(dòng)
- 安全人機(jī)照明設(shè)計(jì)
- 顱腦疾病的診治
- 2025年音樂教育專業(yè)教師資格考試試題及答案
- 2025年網(wǎng)絡(luò)工程師考試題及答案
- 2025年設(shè)施管理專業(yè)考試試題及答案
- 2025年人機(jī)交互設(shè)計(jì)專業(yè)畢業(yè)考試試題及答案
- 中職英語基礎(chǔ)模塊1Unit-7-The-Internet閱讀課
- 新生兒期保健-新生兒早期基本保健(EENC)(兒童保?。?/a>
- 《新聞采訪與寫作》(第三版)目錄(丁柏銓高等教育出版社)
- 沉淀資金管理辦法
- 雇工合同書(2024版)
- GB/T 4706.7-2024家用和類似用途電器的安全第7部分:真空吸塵器和吸水式清潔器具的特殊要求
- 泄洪洞工程金屬結(jié)構(gòu)制作和安裝施工方案66
- 廣東省市政基礎(chǔ)設(shè)施工程竣工驗(yàn)收技術(shù)資料統(tǒng)一用表(2019版)(上冊(cè))
- 四年級(jí)下冊(cè)英語教案-Unit 4 There are seven days in a week Lesson 22 |人教精通版
- 四川省南充市2022-2023學(xué)年六年級(jí)下學(xué)期期末英語試卷
- SF-36生活質(zhì)量調(diào)查表(SF-36-含評(píng)分細(xì)則)
評(píng)論
0/150
提交評(píng)論