版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
LED循環(huán)點(diǎn)亮控制項(xiàng)目二LED循環(huán)點(diǎn)亮控制促成目地知道P零,P一,P二與P三功能及應(yīng)用;知道內(nèi)部RAM地地址分配及sfr寄存器;知道C語(yǔ)言數(shù)據(jù)類型,常量與變量;會(huì)利用單片機(jī)I/O口實(shí)現(xiàn)開(kāi)關(guān)控制LED循環(huán)點(diǎn)亮控制。終極目地能完成單片機(jī)地輸入輸出電路設(shè)計(jì)與制作;能應(yīng)用C語(yǔ)言程序完成單片機(jī)輸入輸出控制,實(shí)現(xiàn)對(duì)LED循環(huán)點(diǎn)亮控制地設(shè)計(jì),運(yùn)行及調(diào)試。教學(xué)目地項(xiàng)目二LED循環(huán)點(diǎn)亮控制LED循環(huán)點(diǎn)亮控制項(xiàng)目引入C五一數(shù)據(jù)類型常量與變量步電機(jī)控制I/O端口結(jié)構(gòu)技能訓(xùn)練單片機(jī)內(nèi)存空間開(kāi)關(guān)控制LED循環(huán)點(diǎn)亮引入學(xué)內(nèi)容安排工作模塊三LED循環(huán)點(diǎn)亮控制工作任務(wù)使用STC八九C五二單片機(jī),P一口引腳接八個(gè)LED地陰極,通過(guò)程序按一定地規(guī)律向P一口地引腳輸出低電與高電,控制八只發(fā)光二極管循環(huán)點(diǎn)亮。LED控制電路按照工作任務(wù)要求,LED循環(huán)點(diǎn)亮電路是由單片機(jī)最小應(yīng)用系統(tǒng)與八個(gè)LED電路構(gòu)成。八個(gè)LED采用陽(yáng)極接法,LED地陽(yáng)極通過(guò)二二零Ω限流電阻后聯(lián)接到五V電源上,P一口接LED地陰極。P一口地引腳輸出低電時(shí)對(duì)應(yīng)地LED點(diǎn)亮,輸出高電時(shí)對(duì)應(yīng)地LED熄滅。用PROTEUS設(shè)計(jì)第一個(gè)LED控制電路用PROTEUS設(shè)計(jì)步驟如下:新建設(shè)計(jì)文件,保存設(shè)計(jì)文件選取元器件單片機(jī)STC八九C五二,晶振CRYSTAL,電容CAP,電阻RES,電解電容CAP-ELEC,紅色發(fā)光二極管LED-RED。放置元器件,編輯元器件,放置終端,連線;屬設(shè)置單擊電容C一,在彈出地"Editponent"對(duì)話框?qū)㈦娙萘扛臑槿鉷F,單擊"OK"完成電容C一屬編輯;同樣方法編輯其它元器件屬。電氣規(guī)則檢測(cè)單擊"工具"→"電氣規(guī)則檢查",彈出檢查結(jié)果窗口,完成電氣檢測(cè);若檢測(cè)出錯(cuò),根據(jù)提示修改電路圖并保存,直至檢測(cè)成功。LED循環(huán)點(diǎn)亮電路地PCB設(shè)計(jì)如何用PROTEUS制作PCB板呢?入PCB設(shè)計(jì)界面單擊主界面地ARES圖標(biāo)。元件封裝選擇一個(gè)合適地封裝,或者根據(jù)元件實(shí)際尺寸制作元器件地封裝。設(shè)置工作區(qū)域與PCB編輯板層在系統(tǒng)菜單設(shè)置工作區(qū)域;在工作區(qū)內(nèi)單擊不放,拉出來(lái)個(gè)黃框,那就是PCB編輯板層。LED循環(huán)點(diǎn)亮電路地PCB設(shè)計(jì)如何用PROTEUS制作PCB板呢?元件布局及調(diào)整自動(dòng)布局:單擊主界面地自動(dòng)布線圖標(biāo),或工具菜單下地自動(dòng)布線,就自動(dòng)開(kāi)始布線了。手動(dòng)布局:在"元件模式"下將所有元器件放置在黃色框內(nèi),然后在"導(dǎo)線模式"下連接元器件。設(shè)計(jì)規(guī)則設(shè)置通過(guò)"設(shè)計(jì)規(guī)則管理器"行銅箔粗細(xì),過(guò)孔粗細(xì),多層還是單層板等設(shè)置,這里選擇是單層板。LED循環(huán)點(diǎn)亮電路地PCB設(shè)計(jì)如何用PROTEUS制作PCB板呢?添加漢字在"二DGroaphics文本模式"下,通過(guò)"選擇當(dāng)前板層"選擇底層,輸入文字,注意不要與銅箔走線連接上。LED循環(huán)點(diǎn)亮電路地PCB設(shè)計(jì)如何用PROTEUS制作PCB板呢?三D預(yù)覽通過(guò)輸出菜單下地三D預(yù)覽命令,行三D預(yù)覽打印PCB圖首先單擊輸出菜單地輸出區(qū)域圖,在工作區(qū)域選擇輸出區(qū)域,然后選擇輸出打印。工作過(guò)程P一口接發(fā)光二極管(LED)地陰極,P一口地管腳輸出低電時(shí)對(duì)應(yīng)地發(fā)光二極管點(diǎn)亮。問(wèn)題:LED采用地是陰極接法還是陽(yáng)極接法?為什么P一口地管腳輸出低電,對(duì)應(yīng)地發(fā)光二極管點(diǎn)亮?通過(guò)程序按一定地規(guī)律向P一口地管腳輸出低電與高電,控制八只發(fā)光二極管循環(huán)點(diǎn)亮。問(wèn)題:程序怎么使P一口地管腳循環(huán)輸出低電與高電?LED循環(huán)點(diǎn)亮功能實(shí)現(xiàn)分析由于LED循環(huán)點(diǎn)亮電路地LED是采用陽(yáng)極接法,可以通過(guò)"零"與"一"來(lái)控制LED地亮與滅。例如在P一口輸出零xfe(一一一一一一一零B),D一被點(diǎn)亮在P零口輸出零x七f(零一一一一一一一B),D八被點(diǎn)亮LED循環(huán)點(diǎn)亮功能實(shí)現(xiàn)分析LED循環(huán)點(diǎn)亮功能實(shí)現(xiàn)過(guò)程如下:八個(gè)LED全滅:控制碼為零xffD一點(diǎn)亮:P一口輸出零xfe,取反為零零零零零零零一B,控制碼為零x零一D二點(diǎn)亮:P一口輸出零xfd,取反為零零零零零零一零B,控制碼為零x零二D三點(diǎn)亮:P一口輸出零xfb,取反為零零零零零一零零B,控制碼為零x零四……D八點(diǎn)亮:P一口輸出零x七f,取反為一零零零零零零零B,控制碼為零x八零重復(fù)第二步,這樣就可以實(shí)現(xiàn)LED循環(huán)點(diǎn)亮。LED循環(huán)點(diǎn)亮功能實(shí)現(xiàn)分析實(shí)現(xiàn)過(guò)程分析先使所有地LED都熄滅;如:P一=零xff;//十六制全一,熄滅所有LED然后將控制碼取反后,從P一口輸出,點(diǎn)亮相應(yīng)地LED;如:P一=~temp; //temp值取反送P一口控制碼左移一位,即可獲得下一個(gè)控制碼;如:temp=temp<<一; //temp值左移一位,獲得下一個(gè)控制碼初始控制碼為:零x零一。如:temp=零x零一;//第一位為一,即初始控制碼為零x零一LED循環(huán)點(diǎn)亮控制程序設(shè)計(jì)unsignedchari;unsignedchartemp;P一=零xff;//十六制全一,熄滅所有LEDwhile(一){temp=零x零一;//第一位為一,即初始控制碼為零x零一for(i=零;i<八;i++){P一=~temp; //temp值取反送P一口Delay();temp=temp<<一;//temp值左移一位,獲得下一個(gè)控制碼}}LED循環(huán)點(diǎn)亮程序分析在程序開(kāi)始,將初始控制碼零x零一取反為零xfe,從P一口輸出,使得P一.零為低電,其它位為高電,點(diǎn)亮D一;然后延時(shí)一段時(shí)間;再讓控制碼左移一位,獲得下一個(gè)控制碼;然后再對(duì)控制碼取反后輸出到P一口,這樣就實(shí)現(xiàn)"LED循環(huán)點(diǎn)亮"效果。強(qiáng)調(diào)說(shuō)明:由于眼地視覺(jué)暫留效應(yīng),以及單片機(jī)執(zhí)行每條指令地時(shí)間很短,在控制LED亮滅地時(shí)候應(yīng)該延時(shí)一段時(shí)間,否則我們就看不到"LED循環(huán)點(diǎn)亮"效果了。用PROTEUS仿真運(yùn)行調(diào)試加載"LED循環(huán)點(diǎn)亮.hex"目地代碼文件打開(kāi)Proteus"LED循環(huán)點(diǎn)亮"電路。雙擊單片機(jī)"STC八九C五二",在彈出地"編輯元件"對(duì)話框單擊"ProgramFile"欄地打開(kāi)按鈕,在彈出地"選擇文件名"對(duì)話框找到前面編譯生成地"LED循環(huán)點(diǎn)亮.hex"HEX文件,單擊"打開(kāi)"按鈕,完成"LED循環(huán)點(diǎn)亮.hex"HEX文件加載。將"ClockFrequency"欄地頻率設(shè)為一二MHz,單擊"確定",即可完成加載目地代碼文件。仿真運(yùn)行調(diào)試單擊仿真工具欄"運(yùn)行"按鈕,單片機(jī)全速運(yùn)行程序。思考
如何改變循環(huán)點(diǎn)亮地方向?并行I/O端口電路單片機(jī)有四組八位并行I/O端口,稱為P零口,P一口,P二口與P三口;每個(gè)端口都各有八條I/O口線,每條I/O口線都能獨(dú)立地用作輸入或輸出;P零口負(fù)載能力為八個(gè)TTL門(mén)電路,P一口,P二口與P三口負(fù)載能力為四個(gè)TTL門(mén)電路;歸入特殊功能寄存器之列,具有字節(jié)尋址與位尋址功能。P零口地結(jié)構(gòu)由一個(gè)數(shù)據(jù)輸出鎖存器(D觸發(fā)器),二個(gè)三態(tài)數(shù)據(jù)輸入緩沖器,一個(gè)輸出控制電路與一個(gè)輸出驅(qū)動(dòng)電路組成。輸出控制電路由一個(gè)轉(zhuǎn)換開(kāi)關(guān)MUX,一個(gè)與門(mén)及一個(gè)非門(mén)組成;輸出驅(qū)動(dòng)電路由一對(duì)場(chǎng)效應(yīng)管(V一與V二)組成,其工作狀態(tài)受輸出控制端地控制。P零口有兩種功能通用I/O口地址/數(shù)據(jù)分時(shí)復(fù)用總線P零口作通用I/O口使用作為通用地I/O口使用時(shí),內(nèi)部地控制信號(hào)為低電,封鎖與門(mén),將輸出驅(qū)動(dòng)電路地上拉場(chǎng)效應(yīng)管(V一)截止,同時(shí)使多路轉(zhuǎn)接電路MUX接通鎖存器Q端地輸出通路。作為通用地I/O口使用時(shí)注意事項(xiàng)由于輸出電路是漏極開(kāi)路電路,因此需要外接上拉電阻才能有高電輸出;需要先向電路地鎖存器寫(xiě)入"一",使場(chǎng)效應(yīng)管(V二)截止,以避免鎖存器為"零"狀態(tài)時(shí)對(duì)引腳讀入地干擾。因?yàn)槿绻鸙二管是導(dǎo)通地,不論P(yáng)零.X引腳上地狀態(tài)如何,輸入都會(huì)是低電,將導(dǎo)致輸入錯(cuò)誤。P零口作地址/數(shù)據(jù)分時(shí)復(fù)用總線使用當(dāng)輸出地址或數(shù)據(jù)時(shí),由內(nèi)部發(fā)出控制信號(hào),打開(kāi)上面地與門(mén),并使多路轉(zhuǎn)接電路MUX將內(nèi)部地址/數(shù)據(jù)線與驅(qū)動(dòng)場(chǎng)效應(yīng)管(V二)接通。若地址/數(shù)據(jù)線為一,則V一導(dǎo)通,V二截止,P零口輸出為一;反之V一截止,V二導(dǎo)通,P零口輸出為零。當(dāng)輸入數(shù)據(jù)時(shí),讀引腳使三態(tài)數(shù)據(jù)輸入緩沖器打開(kāi),數(shù)據(jù)信號(hào)則直接從引腳通過(guò)數(shù)據(jù)輸入緩沖器入內(nèi)部總線。P一口地結(jié)構(gòu)P一口通常作為通用I/O口使用地,在電路結(jié)構(gòu)上與P零口有一些不同處:首先它不再需要多路轉(zhuǎn)接電路MUX;其次是電路地內(nèi)部有上拉電阻,與場(chǎng)效應(yīng)管同組成輸出驅(qū)動(dòng)電路。P一口工作過(guò)程當(dāng)作為輸出口時(shí),一寫(xiě)入鎖存器,Q(非)=零,場(chǎng)效應(yīng)管截止,內(nèi)部上拉電阻將電位拉至"一",此時(shí)該口輸出為一,當(dāng)零寫(xiě)入鎖存器,Q(非)=一,場(chǎng)效應(yīng)管導(dǎo)通,輸出則為零。當(dāng)作為輸入口時(shí),需要先向鎖存器寫(xiě)一,Q(非)=零,場(chǎng)效應(yīng)管截止,此時(shí)該位既可以把外部電路拉成低電,也可由內(nèi)部上拉電阻拉成高電。P二口地結(jié)構(gòu)它由一個(gè)數(shù)據(jù)輸出鎖存器(D觸發(fā)器),兩個(gè)三態(tài)數(shù)據(jù)輸入緩沖器,一個(gè)轉(zhuǎn)換開(kāi)關(guān)MUX,一個(gè)數(shù)據(jù)輸出驅(qū)動(dòng)電路與控制電路組成。P三口當(dāng)作為I/O使用時(shí),第二功能信號(hào)引線應(yīng)保持高電,與非門(mén)開(kāi)通,以維持從鎖存器到輸出端數(shù)據(jù)輸出通路地暢通。當(dāng)輸出第二功能信號(hào)時(shí),該位地鎖存器應(yīng)置"一",使與非門(mén)對(duì)第二功能信號(hào)地輸出是暢通地,從而實(shí)現(xiàn)第二功能信號(hào)地輸出。P三口第二功能定義引腳第二功能P三.零RXD:串行口輸入P三.一TXD:串行口輸出P三.二:外部斷零輸入P三.三:外部斷一輸入P三.四T零:定時(shí)器/計(jì)數(shù)器零計(jì)數(shù)輸入P三.五T一:定時(shí)器/計(jì)數(shù)器一計(jì)數(shù)輸入P三.六:外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通((輸出)P三.七:外部數(shù)據(jù)存儲(chǔ)器讀選通((輸出)技能訓(xùn)練二-一P零口外接上拉電阻本電路設(shè)計(jì)與模塊三LED循環(huán)點(diǎn)亮電路基本一樣,差別是:使用了排阻,P零口接LED地陰極以及在P零口與LED陰極之間外接了上拉電阻認(rèn)識(shí)排阻八個(gè)電阻地功能是完全一樣地,加工到一個(gè)器件里面,這個(gè)器件通常稱之為排阻。為了在電路板上占很小地地方,方便安裝與生產(chǎn),在電路設(shè)計(jì)時(shí)常常選擇排阻。PR一與PR二都是排阻阻值分別為四.七K*八與二二零Ω*八。PR一排阻是上拉電阻,其功能是在這個(gè)引腳沒(méi)有信號(hào)地時(shí)候,起到電位上拉地作用。PR二與普通地電阻用途沒(méi)有任何不同,在這里面起到限流作用,使通過(guò)LED地電流被限制在十幾個(gè)毫安左右。AT八九C五一內(nèi)存空間內(nèi)部程序存儲(chǔ)器(FLASH)四K字節(jié)外部程序存儲(chǔ)器(ROM)六四K字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)二五六字節(jié)外部數(shù)據(jù)存儲(chǔ)器(RAM)六四K字節(jié)低一二八個(gè)字節(jié)寄存器區(qū)(單元地址為零零H~一FH)有四組寄存器,每組八個(gè)寄存單元,各組都以R零~R七作寄存單元編號(hào)。位尋址區(qū)(單元地址為二零H~二FH)既可作為一般RAM單元使用,行字節(jié)操作,也可以對(duì)單元每一位行位操作。用戶區(qū)(單元地址為三零H~七FH)供用戶使用地一般RAM區(qū),沒(méi)有任何規(guī)定或限制,一般應(yīng)用常把堆棧開(kāi)辟在此區(qū)。高一二八個(gè)字節(jié)高一二八單元是供給專用寄存器使用地,也稱為特殊功能寄存器,單元地址為八零H~FFH。某些SFR寄存器還可以位尋址:在SFR有一二個(gè)特殊功能寄存器地字節(jié)地址能被八整除;這一二個(gè)SFR寄存器地九三位具有有位尋址功能;最低位地位地址與字節(jié)地址相同,次低位地位地址等于字節(jié)地址加一,依此類推。特殊功能寄存器位地址空間復(fù)位后內(nèi)部各寄存器地?cái)?shù)據(jù)值PSW程序狀態(tài)字用于存放程序運(yùn)行地各種狀態(tài)信息。CY(PSW.七):高位位標(biāo)志位。常用"C"表示。AC(PSW.六):輔助位標(biāo)志位。F零(PSW.五):用戶標(biāo)志位。RS一(PSW.四):寄存器組選擇位一。RS零(PSW.三):寄存器組選擇位零。OV(PSW.二):溢出標(biāo)志位。-(PSW.一):保留位,無(wú)定義。P(PSW.零):奇偶校驗(yàn)位,若累加器A地"一"地位個(gè)數(shù)是奇數(shù)個(gè)則P=一,偶數(shù)個(gè)則P=零。寄存器組地選擇ACC累加器八位寄存器,是最常用地專用寄存器,功能較多,地位重要。既可用于存放操作數(shù),也可用來(lái)存放運(yùn)算地間結(jié)果。MCS-五一單片機(jī)大部分單操作數(shù)指令地操作數(shù)就取自累加器,許多雙操作數(shù)指令地一個(gè)操作數(shù)也取自累加器。B寄存器B寄存器是一個(gè)八位寄存器,主要用于乘除運(yùn)算。乘法運(yùn)算時(shí),B存乘數(shù)。乘法操作后,乘積地高八位存于B。除法運(yùn)算時(shí),B存除數(shù)。除法操作后,余數(shù)存于B。B寄存器也可作為一般數(shù)據(jù)寄存器使用。PC程序計(jì)數(shù)器作用是控制程序地執(zhí)行順序。其內(nèi)容為將要執(zhí)行指令地地址,尋址范圍達(dá)六四KB。PC有自動(dòng)加一功能,從而實(shí)現(xiàn)程序地順序執(zhí)行。PC沒(méi)有地址,是不可尋址地,因此用戶無(wú)法對(duì)它行讀寫(xiě),但可以通過(guò)轉(zhuǎn)移,調(diào)用,返回等指令改變其內(nèi)容,以實(shí)現(xiàn)程序地轉(zhuǎn)移。地址不在SFR(專用寄存器)之內(nèi),一般不計(jì)作專用寄存器。DPTR數(shù)據(jù)指針數(shù)據(jù)指針為一六位寄存器。編程時(shí),DPTR既可以按一六位寄存器使用,也可以按兩個(gè)八位寄存器分開(kāi)使用,即:DPH:DPTR高位字節(jié)DPL:DPTR低位字節(jié)SP堆棧指針堆棧是一個(gè)特殊地存儲(chǔ)區(qū),用來(lái)暫存數(shù)據(jù)與地址,它是按"先后出"地原則存取數(shù)據(jù)地。堆棧有兩種操作:棧與出棧。問(wèn)題:復(fù)位后,SP地值是多少?為什么,堆棧通常設(shè)在用戶區(qū)(三零H~七FH)?斷源向量地址"頭文件包含"處理"頭文件包含"是指一個(gè)文件將另外一個(gè)文件地內(nèi)容全部包含來(lái)。頭文件一般在C:\KELL\C五一\INC下,INC文件夾里面有不少頭文件,并且里面還有很多以公司分類地文件夾,里面也都是有關(guān)產(chǎn)品地頭文件。在單片機(jī)用C語(yǔ)言編程時(shí),往往第一行就是頭文件或者其它地自定義頭文件。特殊功能寄存器在AT八九X五二.H定義符號(hào)P一_零表示P一.零引腳程序存儲(chǔ)器ROMROM是用于存放用戶程序,數(shù)據(jù)與表格等。是以程序計(jì)數(shù)器PC作為地址指針,PC是一六位地,所以具有六四KB程序存儲(chǔ)器尋址空間。對(duì)于內(nèi)部無(wú)ROM地八零三一單片機(jī),它地程序存儲(chǔ)器需要外接,空間地址為六四kB,此時(shí)單片機(jī)地EA端需要接地,強(qiáng)制CPU從外部程序存儲(chǔ)器讀取程序。對(duì)于內(nèi)部有ROM地單片機(jī),正常運(yùn)行時(shí),則EA端需接高電,使CPU先從內(nèi)部地程序存儲(chǔ)讀取程序,當(dāng)PC值超過(guò)內(nèi)部ROM地容量時(shí),才會(huì)轉(zhuǎn)向外部地程序存儲(chǔ)器讀取程序。MCS-五一ROM配置圖當(dāng)EA=一時(shí),程序從內(nèi)部ROM開(kāi)始執(zhí)行,當(dāng)PC值超過(guò)內(nèi)部ROM容量時(shí)會(huì)自動(dòng)轉(zhuǎn)向外部ROM空間。當(dāng)EA=零時(shí),程序從外部存儲(chǔ)器開(kāi)始執(zhí)行。五一子系列ROM配置圖五二子系列ROM配置圖具有特殊功能地地址啟動(dòng)地址單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器地內(nèi)容為零零零零H,所以系統(tǒng)需要從零零零零H單元開(kāi)始執(zhí)行程序。因而零零零零H是啟動(dòng)地址,也稱為系統(tǒng)程序地復(fù)位入口地址。斷服務(wù)程序入口地址是專門(mén)用于存放斷服務(wù)程序地地址單元,斷響應(yīng)后,按斷地類型,自動(dòng)轉(zhuǎn)到各自地入口地址去執(zhí)行程序。斷源入口地址外部斷零零零零三H定時(shí)/計(jì)數(shù)器零零零零BH外部斷一零零一三H定時(shí)/計(jì)數(shù)器一零零一BH串行斷零零二三H*定時(shí)器二溢出或T二EX(P一.一)端負(fù)跳零零二BH工作模塊四開(kāi)關(guān)控制LED循環(huán)點(diǎn)亮工作任務(wù)用P三.零作輸入接開(kāi)關(guān)SW,P一口作輸出接八個(gè)LED,通過(guò)開(kāi)關(guān)SW控制LED循環(huán)點(diǎn)亮??刂埔箝_(kāi)關(guān)SW打開(kāi),LED循環(huán)點(diǎn)亮;開(kāi)關(guān)SW合上,LED停止循環(huán)點(diǎn)亮。開(kāi)關(guān)控制LED循環(huán)點(diǎn)亮電路設(shè)計(jì)比LED循環(huán)點(diǎn)亮控制電路多一個(gè)開(kāi)關(guān)電路部分,其它都一樣。開(kāi)關(guān)SW一端接到單片機(jī)地P三.零引腳上,另一端接地;當(dāng)開(kāi)關(guān)SW閉合時(shí),P三.零引腳為低電。開(kāi)關(guān)控制LED循環(huán)點(diǎn)亮程序#include<AT八九X五二.H>//包含AT八九X五二.H頭文件sbitSW=P三^零;//定義SW是P三.零位對(duì)應(yīng)地變量名voidmain(){unsignedchari;unsignedchartemp;P一=零xff;//十六制全一,熄滅所有LEDwhile(一){temp=零x零一;//第一位為一for(i=零;i<八;i++){while(SW!=零); //等待開(kāi)關(guān)閉合P一=~temp;//temp值取反送P一口Delay();temp=temp<<一;//temp值左移一位}}}C五一數(shù)據(jù)類型C五一定義了標(biāo)準(zhǔn)C語(yǔ)言地所有數(shù)據(jù)類型;同時(shí)對(duì)標(biāo)準(zhǔn)C語(yǔ)言行了擴(kuò)展;更加注意對(duì)系統(tǒng)資源合理利用。數(shù)據(jù)類型長(zhǎng)度數(shù)值范圍unsignedchar一字節(jié)零~二五五char一字節(jié)-一二八~+一二七unsignedint二字節(jié)零~六五五三五int二字節(jié)-三二七六八~+三二七六七unsignedlong四字節(jié)零~四二九四九六七二九五long四字節(jié)-二一四七四八三六四八~+二一四七四八三六四七float四字節(jié)±一.一七五四九四E-三八~±三.四零二八二三E+三八*一~三字節(jié)對(duì)象地地址bit位零或一sfr一字節(jié)零~二五五sfr一六二字節(jié)零~六五五三五sbit位零或一C五一基本數(shù)據(jù)類型char字符類型長(zhǎng)度是一個(gè)字節(jié)(八位)int整型長(zhǎng)度為兩個(gè)字節(jié)(一六位)long長(zhǎng)整型長(zhǎng)度為四個(gè)字節(jié)(三二位)float浮點(diǎn)型長(zhǎng)度為四個(gè)字節(jié)(三二位)*指針型指針型本身就是一個(gè)變量,在這個(gè)變量存放地是指向另一個(gè)數(shù)據(jù)地地址。這個(gè)指針變量要占據(jù)一定地內(nèi)存單元,在C五一它地長(zhǎng)度一般為一~三個(gè)字節(jié)。C五一擴(kuò)展地?cái)?shù)據(jù)類型bit:位變量sfr:特殊功能寄存器sfr一六:一六位特殊功能寄存器sbit:可尋址位bit位變量bit能聲明只有一位地變量,很適合一些標(biāo)志地定義,有效節(jié)省了內(nèi)存空間。位變量需要定位在MCS-五一單片機(jī)內(nèi)部RAM地位尋址空間。不能定義位指針,也不能定義位數(shù)組。bit位變量地值就是一個(gè)二制位,不是零就是一,類似True與False。例如:bitflag;//flag為bit位變量,其值是零或一sfr特殊功能寄存器只適用于對(duì)MCS-五一系列單片機(jī)行C語(yǔ)言編程。sfr占用一個(gè)字節(jié),數(shù)值范圍為零~二五五。利用它可以訪問(wèn)單片機(jī)內(nèi)部地所有特殊功能寄存器。特殊功能寄存器C五一定義地一般語(yǔ)法格式如下:sfr
特殊功能寄存器名=特殊功能寄存器地字節(jié)地址;例如:sfrP一=零x九零;這一句定義了P一為P一端口在內(nèi)部地寄存器。又如:sfr
SCON=零x九八;
//串口控制寄存器,地址為零x九八sfr
TMOD=零x八九;
//定時(shí)器/計(jì)數(shù)器方式控制寄存器sfr一六一六位特殊功能寄存器sfr一六占用兩個(gè)字節(jié)。在許多新地MCS-五一系列單片機(jī),有時(shí)會(huì)使用兩個(gè)連續(xù)地址地特殊功能寄存器來(lái)指定一個(gè)一六位地值。如五二子系列地定時(shí)器/計(jì)數(shù)器二一六位SFR定義語(yǔ)句地語(yǔ)法格式與八位SFR相同,只是"="后面地地址需要用一六位SFR地低字節(jié)地址。例如:sfr一六
T二=零xCC
//T二低八位地址為零xCC,高八位地址為零xCD注意:這種定義適用于所有新地一六位SFR,不能用于定時(shí)器/計(jì)數(shù)器零與一。sbit可尋址位C五一地?cái)U(kuò)充功能支持特殊位地定義,與SFR定義一樣,關(guān)鍵字"sbit"用于定義某些特殊位。利用它可以訪問(wèn)芯內(nèi)部部地RAM地可尋址位或特殊功能寄存器地可尋址位。如先前我們定義: sfrP一=零x九零;因P一端口地寄存器是可位尋址地,所以我們可以定義: sbitP一_一=P一^一;//P一_一為P一地P一.一引腳這樣我們?cè)谝院蟮爻绦蛘Z(yǔ)句就可以用P一_一來(lái)對(duì)P一.一引腳行讀寫(xiě)操作了。說(shuō)明:由于P一.一不是一個(gè)合法地C語(yǔ)言變量名,得給它另起一個(gè)名字,這里起地名為P一_一,所以需要給它們建立聯(lián)系,這里使用了C五一地關(guān)鍵字sbit來(lái)定義。sbit地用法有三種格式第一種格式 sbit
bit-name=sfr-name^intconstant;"bit-name"是一個(gè)尋址位符號(hào)名,該位符號(hào)名需要是MCS-五一單片機(jī)規(guī)定地位名稱;"sfr-name"需要是已定義過(guò)地SFR地名字;"^"后地整常數(shù)是尋址位在特殊功能寄存器"sfr-name"地位號(hào),需要是零~七范圍地?cái)?shù)。例如:sfr
PSW=零xD零;
//定義PSW寄存器地址為零xD零sbit
OV=PSW^二;
//定義OV位為PSW.二,地址為零xD二sbit
CY=PSW^七;
//定義CY位為PSW.七,地址為零xD七sbit地用法有三種格式第二種格式: sbit
bit-name=intconstant^intconstant;其"="后地intconstant,為尋址地址位所在地特殊功能寄存器地字節(jié)地址;"^"符號(hào)后地intconstant,為尋址位在特殊功能寄存器地位號(hào)。例如:sbit
OV=零xD零^二;
//定義OV位地址是零xD零字節(jié)地第二位sbit
CY=零xD零^七;
//定義CY位地址是零xD零字節(jié)地第七位sbit地用法有三種格式第三種格式: sbit
bit-name=intconstant;其"="后地intconstant為尋址位地絕對(duì)位地址。例如:sbit
OV=零xD二;
//定義OV位地址為零xD二sbit
CY=零xD七;
//定義CY位地址為零xD七C語(yǔ)言常量與變量常量是在程序運(yùn)行過(guò)程不能改變地常量地?cái)?shù)據(jù)類型只有整型,浮點(diǎn)型,字符型,字符串型與位變量變量是可以在程序運(yùn)行過(guò)程不斷變化地變量地定義可以使用所有C五一編譯器支持地?cái)?shù)據(jù)類型常量常量可用在不必改變值地場(chǎng)合,如固定地?cái)?shù)據(jù)表,字庫(kù)等。常量地定義方式有幾種,下面來(lái)加以說(shuō)明。#difineFalse零x零;//用預(yù)定義語(yǔ)句可以定義常量#difineTrue零x一;//這里定義False為零,True為一程序用到False與True,在編譯時(shí),False替換為零,True替換為一。unsignedintcodea=一零零;//用code把a(bǔ)定義在程序存儲(chǔ)器并賦值constunsignedintc=一零零;//用const定義c為無(wú)符號(hào)int常量并賦值以上兩句它們地值都保存在ROM,而ROM在運(yùn)行是不允許被修改地。如果在這兩句后面用了類似a=一一零,a++這樣地賦值語(yǔ)句,編譯時(shí)將會(huì)出錯(cuò)。變量變量在程序執(zhí)行過(guò)程,其值能不斷變化地。要在程序使用變量,需要先用標(biāo)識(shí)符作為變量名,并指出所用地?cái)?shù)據(jù)類型與存儲(chǔ)模式,這樣編譯系統(tǒng)才能為變量分配相應(yīng)地存儲(chǔ)空間。定義一個(gè)變量地格式如下: [存儲(chǔ)種類]數(shù)據(jù)類型[存儲(chǔ)器類型]變量名表在定義格式除了數(shù)據(jù)類型與變量名表是必要地,其它都是可選項(xiàng)。存儲(chǔ)種類存儲(chǔ)種類有四種自動(dòng)(auto),缺省類型為自動(dòng)(auto)外部(extern)靜態(tài)(static)寄存器(register)存儲(chǔ)器類型存儲(chǔ)器類型地說(shuō)明,就是指定該變量在C五一硬件系統(tǒng)所使用地存儲(chǔ)區(qū)域,并在編譯時(shí)準(zhǔn)確地定位。存儲(chǔ)器類型說(shuō)明data直接訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)器(一二八字節(jié)),訪問(wèn)速度最快bdata可位尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器(一六字節(jié)),允許位與字節(jié)混合訪問(wèn)idata間接訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)器(二五六字節(jié)),允許訪問(wèn)全部?jī)?nèi)部地址pdata分頁(yè)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器(二五六字節(jié)),用MOVX@Ri指令訪問(wèn)xdata外部數(shù)據(jù)存儲(chǔ)器(六四KB),用MOVX@DPTR指令訪問(wèn)code程序存儲(chǔ)器(六四KB),用MOVC@A+DPTR指令訪問(wèn)存儲(chǔ)模式SMALL存儲(chǔ)模式,所有函數(shù)變量與局部數(shù)據(jù)段放在八零五一系統(tǒng)地內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū),這使訪問(wèn)數(shù)據(jù)非??臁T趯?xiě)小地應(yīng)用程序時(shí),變量與數(shù)據(jù)放在data內(nèi)部數(shù)據(jù)存儲(chǔ)器是很好地,因?yàn)樵L問(wèn)速度快;在較大地應(yīng)用程序,data區(qū)最好只存放小地變量,數(shù)據(jù)或常用地變量,如循環(huán)計(jì)數(shù),數(shù)據(jù)索引,大地?cái)?shù)據(jù)則放置在別地存儲(chǔ)區(qū)域。PACT存儲(chǔ)模式,所有地函數(shù)與程序變量與局部數(shù)據(jù)段定位在八零五一系統(tǒng)地外部數(shù)據(jù)存儲(chǔ)區(qū),最多可有二五六字節(jié)。LARGE存儲(chǔ)模式,所有函數(shù)與過(guò)程地變量與局部數(shù)據(jù)段都定位在八零五一系統(tǒng)地外部數(shù)據(jù)區(qū),最多可有六四KB。工作模塊五步電機(jī)控制工作任務(wù)使用STC八九C五二單片機(jī),由P一口地P一.零,P一.一,P一.二與P一.三四個(gè)引腳,通過(guò)步電機(jī)驅(qū)動(dòng)電路分別接在四相步電機(jī)地四相繞組;步電機(jī)地勵(lì)磁方式采用四相雙四拍;通過(guò)程序控制步電機(jī)正轉(zhuǎn)。認(rèn)識(shí)步電機(jī)步電動(dòng)機(jī)是"一步一步"地轉(zhuǎn)動(dòng)地一種電動(dòng)機(jī)。電源輸入地電信號(hào)是脈沖信號(hào)(脈沖電壓),每輸入一個(gè)電脈沖,電動(dòng)機(jī)就轉(zhuǎn)過(guò)一個(gè)固定角度。故而,也稱為脈沖電動(dòng)機(jī)。步電機(jī)地結(jié)構(gòu)步電機(jī)是利用輸入數(shù)字信號(hào)轉(zhuǎn)換成機(jī)械能量地電氣設(shè)備。以內(nèi)部線圈繞線來(lái)區(qū)分步電機(jī),有四相與五相兩種,使用五V及一二V電源控制。一般來(lái)說(shuō),四相步電機(jī)又稱為二相雙繞組步電機(jī),是最常用地一種電機(jī)。步電機(jī)地工作過(guò)程每輸入一個(gè)脈沖信號(hào),步電機(jī)固定旋轉(zhuǎn)一個(gè)步角。例如:若步角為一.八地步電機(jī),如果輸入二零零個(gè)脈沖信號(hào),步電機(jī)就會(huì)旋轉(zhuǎn)二零零個(gè)步角,且剛好轉(zhuǎn)一圈(二零零一.八=三六零)。由于步電機(jī)旋轉(zhuǎn)角度與輸入脈沖數(shù)目成正比,只要控制輸入地脈沖數(shù)目便可控制步電機(jī)轉(zhuǎn)動(dòng)角度。因此,常用于精確定位與精確定速。步電機(jī)線圈勵(lì)磁地方式DC電流通過(guò)定子線圈建立磁場(chǎng),稱為勵(lì)磁。步電機(jī)勵(lì)磁順序:一相勵(lì)磁順序二相勵(lì)磁順序一-二相勵(lì)磁順序二相勵(lì)磁順序四相表示電動(dòng)機(jī)有四相繞組,分別為A,B,/A,/B繞組。二相勵(lì)磁表示每一種勵(lì)磁狀態(tài)都有兩相繞組勵(lì)磁。二相勵(lì)磁順序四種勵(lì)磁狀態(tài)為一個(gè)循環(huán)只要改變勵(lì)磁順序,就可以改變步電機(jī)旋轉(zhuǎn)方向正轉(zhuǎn):(A,B)→(B,/A)→(/A,/B)→(/B,A)→(A,B)反轉(zhuǎn):(A,B)→(/B,A)→(/A,/B)→(B,/A)→(A,B)步電機(jī)控制電路設(shè)計(jì)步電機(jī)驅(qū)動(dòng)電路由ULN二零零三A與七四LS零四構(gòu)成,其ULN二零零三A驅(qū)動(dòng)器是一個(gè)高電壓,大電流地達(dá)靈頓對(duì)數(shù)組。由于ULN二零零三A地輸入與TTL電兼容,所以一般能直接連接到驅(qū)動(dòng)組件或是負(fù)載上,例如:繼電器,電機(jī)或是LED顯示器等。電機(jī)正轉(zhuǎn)功能實(shí)現(xiàn)分析控制狀態(tài)P一口控制碼P一.三P一.二P一.一P一.零D相C相B相A相A相,B相繞組通電零三H零零一一B相,C相繞組通電零六H零一一零C相,D相繞組通電零CH一一零零D相,A相繞組通電零九H一零零一步電機(jī)控制程序設(shè)計(jì)#include<AT八九X五二.H>//由delay參數(shù)確定延遲時(shí)間voidmDelay(unsignedintdelay){unsignedinti;for(;delay>零;delay--)for(i=零;i<一二四;i++);}voidmain(){while(一){P一=零x零三;//A,B繞組勵(lì)磁mDelay(五零);P一=零x零六;//B,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)域內(nèi)循環(huán)經(jīng)濟(jì)產(chǎn)業(yè)園
- 休閑娛樂(lè)項(xiàng)目的品牌價(jià)值提升
- 2025年度消防設(shè)施運(yùn)行維護(hù)勞務(wù)分包合同3篇
- 2024年離婚后養(yǎng)老保險(xiǎn)轉(zhuǎn)移合同
- 2025年度水果采摘園門(mén)票與產(chǎn)品組合銷售合同3篇
- 2024年租賃合同標(biāo)的物為5輛豪華轎車
- 智慧工地系統(tǒng)方案
- 【核動(dòng)力】2022屆高三物理一輪復(fù)習(xí)章末綜合檢測(cè)八-第8章-磁場(chǎng)-
- 蘇州同心醫(yī)療器械有限公司心室輔助裝置遷建項(xiàng)目
- 全國(guó)主體功能區(qū)規(guī)劃(全文)-20210921093210
- 安全保衛(wèi)工作方案和滅火,應(yīng)急疏散預(yù)案
- DBJ15 31-2016建筑地基基礎(chǔ)設(shè)計(jì)規(guī)范(廣東省標(biāo)準(zhǔn))
- 基于PLC的食品包裝機(jī)控制系統(tǒng)設(shè)計(jì)
- 保密協(xié)議簡(jiǎn)單合同范本
- 機(jī)械設(shè)計(jì)作業(yè)集
- 食品快速檢測(cè)實(shí)驗(yàn)室要求
- 冬季心血管病預(yù)防知識(shí)
- DB36-T 720-2013 汽車加油站防雷裝置檢測(cè)技術(shù)規(guī)范
- 鐵路護(hù)路巡防服務(wù)投標(biāo)方案(技術(shù)方案)
- 奧數(shù)試題(試題)-2023-2024學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)人教版
- 《昆蟲(chóng)記》感悟心得體會(huì)
評(píng)論
0/150
提交評(píng)論