單片機(jī)入門基礎(chǔ)知識(shí)大全免費(fèi)下載 單片機(jī)第八課(尋址方式與指令系統(tǒng)) 通過(guò)前面的學(xué)習(xí),我們已經(jīng)了解了單片機(jī)內(nèi)部的結(jié)構(gòu),并且也已經(jīng)知道,要控制單片機(jī),讓它為我們干學(xué),要用指令,我們已學(xué)了幾條指令,但很零散,從現(xiàn)在開(kāi)始,我們將要系統(tǒng)地學(xué)習(xí)8051的指令部份。 一、概述 1、指令的格式 我們已知,要讓計(jì)算機(jī)做事,就得給計(jì)算機(jī)以指令,并且我們已知,計(jì)算機(jī)很“笨”,只能懂得數(shù)字,如前面我們寫(xiě)進(jìn)機(jī)器的75H,90H,00H等等,所以指令的第一種格式就是機(jī)器碼格式,也說(shuō)是數(shù)字的形式。但這種形式實(shí)在是為難我們?nèi)肆耍y記了,于是有另一種格式,助記符格式,如MOV P1,#0FFH,這樣就好記了。 這兩種格式之間的關(guān)系呢,我們不難理解,本質(zhì)上它們完全等價(jià),只是形式不一樣而已。 2、匯編 我們寫(xiě)指令使用匯編格式,而計(jì)算機(jī)只懂機(jī)器碼格式,所以要將我們寫(xiě)的匯編格式的指令轉(zhuǎn)換為機(jī)器碼格式,這種轉(zhuǎn)換有兩種方法:手工匯編和機(jī)器匯編。手工匯編實(shí)際上就是查表,因?yàn)檫@兩種格式純粹是格式不同,所以是一一對(duì)應(yīng)的,查一張表格就行了。不過(guò)手工查表總是嫌麻煩,所以就有了計(jì)算機(jī)軟件,用計(jì)算機(jī)軟件來(lái)替代手工查表,這就是機(jī)器匯編。 二、尋址 讓我們先來(lái)復(fù)習(xí)一下我們學(xué)過(guò)的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數(shù)據(jù)送到相應(yīng)的位置中去,為什么要送數(shù)據(jù)呢?第一個(gè)因?yàn)樗腿氲臄?shù)可以讓燈全滅掉,第二個(gè)是為了要實(shí)現(xiàn)延時(shí),從這里我們可以看出來(lái),在用單片機(jī)的編程語(yǔ)言編程時(shí),經(jīng)常要用到數(shù)據(jù)的傳遞,事實(shí)上數(shù)據(jù)傳遞是單片機(jī)編程時(shí)的一項(xiàng)重要工作,一共有28條指令(單片機(jī)共111條指令)。下面我們就從數(shù)據(jù)傳遞類指令開(kāi)始吧。 分析一下MOV P1,#0FFH這條指令,我們不難得出結(jié)論,第一個(gè)詞MOV是命令動(dòng)詞,也就是決定做什么事情的,MOV是MOVE少寫(xiě)了一個(gè)E,所以就是“傳遞”,這就是指令,規(guī)定做什么事情,后面還有一些參數(shù),分析一下,數(shù)據(jù)傳遞必須要有一個(gè)“源”也就是你要送什么數(shù),必須要有一個(gè)“目的”,也就是你這個(gè)數(shù)要送到什么地方去,顯然在上面那條指令中,要送的數(shù)(源)就是0FFH,而要送達(dá)的地方(目的地)就是P1這個(gè)寄存器。在數(shù)據(jù)傳遞類指令中,均將目的地寫(xiě)在指令的后面,而將源寫(xiě)在最后。 這條指令中,送給P1是這個(gè)數(shù)本身,換言之,做完這條指令后,我們可以明確地知道,P1中的值是0FFH,但是并不是任何時(shí)候都可以直接給出數(shù)本身的。例如,在我們前面給出的延時(shí)程序例是這樣寫(xiě)的: MAIN: SETB P1.0 ;(1) LCALL DELAY ;(2) CLR P1.0 ;(3) LCALL DELAY ;(4) AJMP MAIN ;(5) ;以下子程序 DELAY: MOV R7,#250 ;(6) D1: MOV R6,#250 ;(7) D2: DJNZ R6,D2 ;(8) DJNZ R7,D1 ;(9) RET ;(10) END ;(11) 表1 MAIN: SETB P1.0 ;(1) MOV 30H,#255 LCALL DELAY ; CLR P1.0 ;(3) MOV 30H,#200 LCALL DELAY ;(4) AJMP MAIN ;(5) ;以下子程序 DELAY: MOV R7,30H ;(6) D1: MOV R6,#250 ;(7) D2: DJNZ R6,D2 ;(8) DJNZ R7,D1 ;(9) RET ;(10) END ;(11) 表2 這樣一來(lái),我每次調(diào)用延時(shí)程序延時(shí)的時(shí)間都是相同的(大致都是0.13S),如果我提出這樣的要求:燈亮后延時(shí)時(shí)間為0.13S燈滅,燈滅后延時(shí)0.1秒燈亮,如此循環(huán),這樣的程序還能滿足要求嗎?不能,怎么辦?我們可以把延時(shí)程序改成這樣(見(jiàn)表2):調(diào)用則見(jiàn)表2中的主程,也就是先把一個(gè)數(shù)送入30H,在子程序中R7中的值并不固定,而是根據(jù)30H單元中傳過(guò)來(lái)的數(shù)確定。這樣就可以滿足要求。 從這里我們可以得出結(jié)論,在數(shù)據(jù)傳遞中要找到被傳遞的數(shù),很多時(shí)候,這個(gè)數(shù)并不能直接給出,需要變化,這就引出了一個(gè)概念:如何尋找操作數(shù),我們把尋找操作數(shù)所在單元的地址稱之為尋址。在這里我們直接使用數(shù)所在單元的地址找到了操作數(shù),所以稱這種方法為直接尋址。除了這種方法之外,還有一種,如果我們把數(shù)放在工作寄存器中,從工作寄存器中尋找數(shù)據(jù),則稱之為寄存器尋址。例:MOV A,R0就是將R0工作寄存器中的數(shù)據(jù)送到累加器A中去。提一個(gè)問(wèn)題:我們知道,工作寄存器就是內(nèi)存單元的一部份,如果我們選擇工作寄存器組0,則R0就是RAM的00H單元,那么這樣一來(lái),MOV A,00H,和MOV A,R0不就沒(méi)什么區(qū)別了嗎?為什么要加以區(qū)分呢?的確,這兩條指令執(zhí)行的結(jié)果是完全相同的,都是將00H單元中的內(nèi)容送到A中去,但是執(zhí)行的過(guò)程不同,執(zhí)行第一條指令需要2個(gè)周期,而第二條則只需要1個(gè)周期,第一條指令變成最終的目標(biāo)碼要兩個(gè)字節(jié)(E5H 00H),而第二條則只要一個(gè)字節(jié)(E8h)就可以了。 這么斤斤計(jì)較!不就差了一個(gè)周期嗎,如果是12M的晶振的話,也就1個(gè)微秒時(shí)間了,一個(gè)字節(jié)又能有多少? 不對(duì),如果這條指令只執(zhí)行一次,也許無(wú)所謂,但一條指令如果執(zhí)行上1000次,就是1毫秒,如果要執(zhí)行1000000萬(wàn)次,就是1S的誤差,這就很可觀了,單片機(jī)做的是實(shí)時(shí)控制的事,所以必須如此“斤斤計(jì)較”。字節(jié)數(shù)同樣如此。 再來(lái)提一個(gè)問(wèn)題,現(xiàn)在我們已知,尋找操作數(shù)可以通過(guò)直接給的方式(立即尋址)和直接給出數(shù)所在單元地址的方式(直接尋址),這就夠了嗎? 看這個(gè)問(wèn)題,要求從30H單元開(kāi)始,取20個(gè)數(shù),分別送入A累加器。 就我們目前掌握的辦法而言,要從30H單元取數(shù),就用MOV A,30H,那么下一個(gè)數(shù)呢?是31H單元的,怎么取呢?還是只能用MOV A,31H,那么20個(gè)數(shù),不是得20條指令才能寫(xiě)完嗎?這里只有20個(gè)數(shù),如果要送200個(gè)或2000個(gè)數(shù),那豈不要寫(xiě)上200條或2000條命令?這未免太笨了吧。為什么會(huì)出現(xiàn)這樣的狀況?是因?yàn)槲覀冎粫?huì)把地址寫(xiě)在指令中,所以就沒(méi)辦法了,如果我們不是把地址直接寫(xiě)在指令中,而是把地址放在另外一個(gè)寄存器單元中,根據(jù)這個(gè)寄存器單元中的數(shù)值決定該到哪個(gè)單元中取數(shù)據(jù),比如,當(dāng)前這個(gè)寄存器中的值是30H,那么就到30H單元中去取,如果是31H就到31H單元中去取,就可以解決這個(gè)問(wèn)題了。怎么個(gè)解決法呢?既然是看的寄存器中的值,那么我們就可以通過(guò)一定的方法讓這里面的值發(fā)生變化,比如取完一個(gè)數(shù)后,將這個(gè)寄存器單元中的值加1,還是執(zhí)行同一條指令,可是取數(shù)的對(duì)象卻不一樣了,不是嗎。通過(guò)例子來(lái)說(shuō)明吧。 MOV R7,#20 MOV R0,#30H LOOP:MOV A,@R0 INC R0 DJNZ R7,LOOP 這個(gè)例子中大部份指令我們是能看懂的,第一句,是將立即數(shù)20送到R7中,執(zhí)行完后R7中的值應(yīng)當(dāng)是20。第二句是將立即數(shù)30H送入R0工作寄存器中,所以執(zhí)行完后,R0單元中的值是30H,第三句,這是看一下R0單元中是什么值,把這個(gè)值作為地址,取這個(gè)地址單元的內(nèi)容送入A中,此時(shí),執(zhí)行這條指令的結(jié)果就相當(dāng)于MOV A,30H。第四句,沒(méi)學(xué)過(guò),就是把R0中的值加1,因此執(zhí)行完后,R0中的值就是31H,第五句,學(xué)過(guò),將R7中的值減1,看是否等于0,不等于0,則轉(zhuǎn)到標(biāo)號(hào)LOOP處繼續(xù)執(zhí)行,因此,執(zhí)行完這句后,將轉(zhuǎn)去執(zhí)行MOV A,@R0這句話,此時(shí)相當(dāng)于執(zhí)行了MOV A,31H(因?yàn)榇藭r(shí)的R0中的值已是31H了),如此,直到R7中的值逐次相減等于0,也就是循環(huán)20次為止,就實(shí)現(xiàn)了我們的要求:從30H單元開(kāi)始將20個(gè)數(shù)據(jù)送入A中。 這也是一種尋找數(shù)據(jù)的方法,由于數(shù)據(jù)是間接地被找到的,所以就稱之為間址尋址。注意,在間址尋址中,只能用R0或R1存放等尋找的數(shù)據(jù)。 二、指令 數(shù)據(jù)傳遞類指令 1) 以累加器為目的操作數(shù)的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一條指令中,Rn代表的是R0-R7。第二條指令中,direct就是指的直接地址,而第三條指令中,就是我們剛才講過(guò)的。第四條指令是將立即數(shù)data送到A中。 下面我們通過(guò)一些例子加以說(shuō)明: MOV A,R1 ;將工作寄存器R1中的值送入A,R1中的值保持不變。 MOV A,30H ;將內(nèi)存30H單元中的值送入A,30H單元中的值保持不變。 MOV A,@R1 ;先看R1中是什么值,把這個(gè)值作為地址,并將這個(gè)地址單元中的值送入A中。如執(zhí)行命令前R1中的值為20H,則是將20H單元中的值送入A中。 MOV A,#34H ;將立即數(shù)34H送入A中,執(zhí)行完本條指令后,A中的值是34H。 2)以寄存器Rn為目的操作的指令 MOV Rn,A MOV Rn,direct MOV Rn,#data 這組指令功能是把源地址單元中的內(nèi)容送入工作寄存器,源操作數(shù)不變。
標(biāo)簽: 單片機(jī) 免費(fèi)下載 基礎(chǔ)知識(shí)
上傳時(shí)間: 2013-10-13
上傳用戶:3294322651
4.1 編程的步驟、方法和技巧4.1.2 編程的方法和技巧 4.1.3 匯編語(yǔ)言程序的基本結(jié)構(gòu) 4.2 匯編語(yǔ)言源程序的編輯和匯編 4.2.1 源程序編輯 4.2.2 源程序的匯編 4.2.3 偽指令 計(jì)算機(jī)在完成一項(xiàng)工作時(shí),必須按順序執(zhí)行各種操作。這些操作是程序設(shè)計(jì)人員用計(jì)算機(jī)所能接受的語(yǔ)言把解決問(wèn)題的步驟事先描述好的,也就是事先編好計(jì)算機(jī)程序,再由計(jì)算機(jī)去執(zhí)行。匯編語(yǔ)言程序設(shè)計(jì),要求設(shè)計(jì)人員對(duì)單片機(jī)的硬件結(jié)構(gòu)有較詳細(xì)的了解。編程時(shí),對(duì)數(shù)據(jù)的存放、寄存器和工作單元的使用等要由設(shè)計(jì)者安排;而高語(yǔ)言程序設(shè)計(jì)時(shí),這些工作是由計(jì)算機(jī)軟件完成的,程序設(shè)計(jì)人員不必考慮。 4.1.1 編程步驟 一、分析問(wèn)題 首先,要對(duì)需要解決的問(wèn)題進(jìn)行分析,以求對(duì)問(wèn)題有正確的理解。例如,解決問(wèn)題的任務(wù)是什么?工作過(guò)程是什么?現(xiàn)有的條件,已知的數(shù)據(jù),對(duì)運(yùn)算的精確和速度方面的要求是什么?設(shè)計(jì)的硬件結(jié)構(gòu)是否方便編程等等。 二、確定算法 算法就是如何將實(shí)際問(wèn)題轉(zhuǎn)化成程序模塊來(lái)處理。 解決一個(gè)問(wèn)題,常常有幾種可選擇的方法。從數(shù)學(xué)角度來(lái)描述,可能有幾種不同的算法。在編制程序以前,先要對(duì)不同的算法進(jìn)行分析、比較,找出最適宜的算法。 ? 三、畫(huà)程序流程圖 程序流程圖是使用各種圖形、符號(hào)、有向線段等來(lái)說(shuō)明程序設(shè)計(jì)過(guò)程的一種直觀的表示,常采用以下圖形及符號(hào):橢圓框( )或桶行框( )表示程序的開(kāi)始或結(jié)束。 矩形框( )表示要進(jìn)行的工作。 菱形框( )表示要判斷的事情,菱形框內(nèi)的表達(dá)式表示要判斷的內(nèi)容。 圓圈( )表示連接點(diǎn)。 指向線(→)表示程序的流向。 流程圖步驟分得越細(xì)致,編寫(xiě)程序時(shí)也就越方便。
標(biāo)簽: 匯編語(yǔ)言 程序設(shè)計(jì)
上傳時(shí)間: 2013-10-10
上傳用戶:18888888888
設(shè)計(jì)了一種以AT89C51 為核心的腰椎牽引儀。系統(tǒng)具有牽引力檢測(cè)、牽引力控制、牽引力及牽引時(shí)間顯示和超荷報(bào)警等功能。系統(tǒng)采用拉式負(fù)荷傳感器檢測(cè)牽引力度,用電容運(yùn)轉(zhuǎn)式異步電機(jī)及其配套裝置來(lái)控制牽引力度。牽引力檢測(cè)與控制等性能穩(wěn)定可靠,同時(shí)該系統(tǒng)還為用戶提供了智能、友好的用戶界面。
上傳時(shí)間: 2013-10-15
上傳用戶:cxl274287265
EDA9060開(kāi)關(guān)量I/O 模塊在電氣控制柜中的典型應(yīng)用—— EDA9060結(jié)合交流接觸器實(shí)現(xiàn)遠(yuǎn)程控制EDA9060開(kāi)關(guān)量I/O模塊是山東力創(chuàng)科技自主研發(fā)的一款分布式DI/DO工控模塊,主要功能特點(diǎn):◎4路開(kāi)關(guān)量輸入,4路繼電器輸出。繼電器兩組常開(kāi)2觸點(diǎn),兩組常開(kāi)常閉3觸點(diǎn)。輸出觸點(diǎn)容量為8A 125VAC(5A 250VAC5A30VDC),由于觸點(diǎn)容量較大,可以直接用在很多的常見(jiàn)電氣控制電路中。輸出有兩種方式,一種電平式,一種脈沖式,可以靈活配置。◎標(biāo)準(zhǔn)的RS485接口,方便組網(wǎng),結(jié)合GPRS DTU無(wú)線模塊可以實(shí)現(xiàn)無(wú)線遠(yuǎn)程控制功能。◎靈活的協(xié)議,兼容研華協(xié)議,支持標(biāo)準(zhǔn)MODBUS RTU協(xié)議,方便上位機(jī)的系統(tǒng)組建。EDA9060在電氣控制柜中有著廣泛的應(yīng)用,通過(guò)增加EDA9060遠(yuǎn)程控制線路,改變了原來(lái)必須依靠人工到現(xiàn)場(chǎng)啟停電氣線路的狀況,實(shí)現(xiàn)無(wú)人值守,節(jié)省資源。線路改造主要通過(guò)EDA9060的繼電器輸出控制交流接觸器,從而實(shí)現(xiàn)遠(yuǎn)程控制現(xiàn)場(chǎng)用電設(shè)備(如常見(jiàn)的工業(yè)泵)的啟停。同時(shí)增加一個(gè)轉(zhuǎn)換開(kāi)關(guān),將手動(dòng)控制線路和EDA9060遠(yuǎn)程控制線路隔離開(kāi),以保證現(xiàn)場(chǎng)操作優(yōu)先的要求,同時(shí)增強(qiáng)操作的可靠性。下面以交流接觸器控制線路在220V電壓等級(jí)以內(nèi)的常見(jiàn)控制電路為例,簡(jiǎn)要說(shuō)明其控制過(guò)程,線路容量大的情況只需要通過(guò)增加合適容量的中間繼電器,擴(kuò)大EDA9060的觸點(diǎn)容量即可解決,示意圖:
標(biāo)簽: 9060 EDA 開(kāi)關(guān)量 典型
上傳時(shí)間: 2013-11-15
上傳用戶:robter
世界著名廠家單片機(jī)簡(jiǎn)介1.Motorola 單片機(jī):Motorola是世界上最大的單片機(jī)廠商,品種全,選擇余地大,新產(chǎn)品多,在8位機(jī)方面有68HC05和升級(jí)產(chǎn)品68HC08,68HC05有30多個(gè)系列200多個(gè)品種,產(chǎn)量超過(guò)20億片.8位增強(qiáng)型單片機(jī)68HC11也有30多個(gè)品種,年產(chǎn)量1億片以上,升級(jí)產(chǎn)品有68HC12.16位單片機(jī)68HC16也有十多個(gè)品種.32位單片機(jī)683XX系列也有幾十個(gè)品種.近年來(lái)以PowerPC,Codfire,M.CORE等作為CPU,用DSP作為輔助模塊集成的單片機(jī)也紛紛推出,目前仍是單片機(jī)的首選品牌.Motorola單片機(jī)特點(diǎn)之一是在同樣的速度下所用的時(shí)鐘較Intel類單片機(jī)低的多因而使得高頻噪聲低,抗干擾能力強(qiáng),更適合用于工控領(lǐng)域以及惡劣環(huán)境.Motorola 8位單片機(jī)過(guò)去策略是掩膜為主,最近推出OTP計(jì)劃以適應(yīng)單片機(jī)的發(fā)展,在32位機(jī)上,M.CORE在性能和功耗上都勝過(guò)ARM7.2.Microchip 單片機(jī):Microchip 單片機(jī)是市場(chǎng)份額增長(zhǎng)最快的單片機(jī).他的主要產(chǎn)品是16C系列8位單片機(jī),CPU采用RISC結(jié)構(gòu),僅33條指令,運(yùn)行速度快,且以低價(jià)位著稱,一般單片機(jī)價(jià)格都在1美元以下.Microchip 單片機(jī)沒(méi)有掩膜產(chǎn)品,全部都是OTP器件(現(xiàn)已推出FLASH型單片機(jī)).Microchip強(qiáng)調(diào)節(jié)約成本的最優(yōu)化設(shè)計(jì),是使用量大,檔次低,價(jià)格敏感的產(chǎn)品.3.Scenix單片機(jī):Scenix單片機(jī)的I/O模塊最有創(chuàng)意.I/O模塊的集成與組合技術(shù)是單片機(jī)技術(shù)不可缺少的重要方面.除傳統(tǒng)的I/O功能模塊如并行I/O,URT,SPI,I2C,A/D,PWM,PLL,DTMF等,新的I/O模塊不斷出現(xiàn),如USB,CAN,J1850,最具代表的是Motorola 32位單片機(jī),它集成了包括各種通信協(xié)議在內(nèi)的I/O模塊,而Scenix單片機(jī)在I/O模塊的處理上引入了虛擬I/O的概念. Scenix單片機(jī)采用了RISC結(jié)構(gòu)的CPU,使CPU最高工作頻率達(dá)50MHz.運(yùn)算速度接近50MIPS.有了強(qiáng)有力的CPU,各種I/O功能便可以用軟件的辦法模擬.單片機(jī)的封裝采用20/28引腳.公司提供各種I/O的庫(kù)函數(shù),用于實(shí)現(xiàn)各種I/O模塊的功能.這些軟件完成的模塊包括多路UART,多種A/D,PWM,SPI,DTMF,FSK,LCD驅(qū)動(dòng)等,這些都是通常用硬件實(shí)現(xiàn)起來(lái)相當(dāng)復(fù)雜的模塊.4.NEC單片機(jī):NEC單片機(jī)自成體系,以8位機(jī)78K系列產(chǎn)量最高,也有16位,32位單片機(jī).16位單片機(jī)采用內(nèi)部倍頻技術(shù),以降低外時(shí)鐘頻率.有的單片機(jī)采用內(nèi)置操作系統(tǒng).NEC的銷售策略注重服務(wù)大客戶,并投入相當(dāng)大的技術(shù)力量幫助大客戶開(kāi)發(fā)新產(chǎn)品.5.東芝單片機(jī):東芝單片機(jī)從4位倒64位,門類齊全.4位機(jī)在家電領(lǐng)域仍有較大市場(chǎng).8位機(jī)主要有870系列,90系列等.該類單片機(jī)允許使用慢模式,采用32KHz時(shí)鐘功耗低至10uA數(shù)量級(jí).CPU內(nèi)部多組寄存器的使用,使得中斷響應(yīng)與處理更加快捷.東芝公司的32位機(jī)采用MIPS3000 ARISC的CPU結(jié)構(gòu),面向VCD,數(shù)字相機(jī),圖象處理市場(chǎng).6.富士通單片機(jī):富士通也有8位,16位和32位單片機(jī),但是8位機(jī)使用的是16位的CPU內(nèi)核.也就是說(shuō)8位機(jī)與16位機(jī)指令相同,使得開(kāi)發(fā)比較容易.8位機(jī)有名是MB8900系列,16位機(jī)有MB90系列.富士通注重服務(wù)大公司,大客戶,幫助大客戶開(kāi)發(fā)產(chǎn)品.7.Epson 單片機(jī):Epson公司以擅長(zhǎng)制造液晶顯示器著稱,故Epson單片機(jī)主要為該公司生產(chǎn)的LCD配套.其單片機(jī)的LCD驅(qū)動(dòng)做的特別好.在低電壓,低功耗方面也很有特色.目前0.9V供電的單片機(jī)已經(jīng)上市,不久LCD顯示手表將使用0.5V供電.
上傳時(shí)間: 2014-12-28
上傳用戶:leyesome
利用TPM2定時(shí)器產(chǎn)生一通道語(yǔ)音信號(hào)輸出,語(yǔ)音數(shù)據(jù)為PCM格式:PCM的概念脈沖編碼調(diào)制(Pulse Code Modulation,PCM)是概念上最簡(jiǎn)單、理論上最完善的編碼系統(tǒng),是最早研制成功、使用最為廣泛的編碼系統(tǒng),但也是數(shù)據(jù)量最大的編碼系統(tǒng)。PCM的編碼原理比較直觀和簡(jiǎn)單,它的原理框圖如圖1-1所示。在這個(gè)編碼框圖中,它的輸入是模擬聲音信號(hào),它的輸出是PCM樣本。圖中的“防失真濾波器”是一個(gè)低通濾波器,用來(lái)濾除聲音頻帶以外的信號(hào);“波形編碼器”可暫時(shí)理解為“采樣器”,“量化器”可理解為“量化階大小(step-size)”生成器或者稱為“量化間隔”生成器。
標(biāo)簽: TPM2 PCM 定時(shí)器 語(yǔ)音信號(hào)
上傳時(shí)間: 2013-11-21
上傳用戶:DXM35
本文列舉了單片機(jī)在熱處理爐中的一個(gè)實(shí)際應(yīng)用,并對(duì)設(shè)計(jì)的WDY-1 溫控儀的組成及主要電路的作用進(jìn)行了詳細(xì)的介紹。關(guān)鍵詞:?jiǎn)纹瑱C(jī);控制;溫度。單片微型計(jì)算機(jī)是隨著超大規(guī)模集成電路技術(shù)的發(fā)展而誕生的,由于它具有體積小、功能強(qiáng)、性價(jià)比高等特點(diǎn),所以廣泛應(yīng)用于電子儀表、家用電器、節(jié)能裝置、軍事裝置、機(jī)器人、工業(yè)控制等諸多領(lǐng)域,使產(chǎn)品小型化、智能化,既提高了產(chǎn)品的功能和質(zhì)量,又降低了成本,簡(jiǎn)化了設(shè)計(jì)。本文主要介紹單片機(jī)在溫度控制中的應(yīng)用。東風(fēng)汽車公司變速箱廠熱工科無(wú)罐爐,主要用于變速箱齒輪、軸類零件的滲碳熱處理工序。原來(lái)用XWB 型自動(dòng)平衡記錄儀控制溫度,二位式控溫方式,使得具有大慣量性的無(wú)罐爐溫度波動(dòng)大,誤差達(dá)±10℃左右。并且儀表使用環(huán)境教惡劣,油煙、灰塵常使儀表的機(jī)械傳動(dòng)部分卡死,不但維修工作量大,而且產(chǎn)品質(zhì)量不易保證。隨著國(guó)民經(jīng)濟(jì)的發(fā)展,汽車工業(yè)不斷壯大,產(chǎn)品市場(chǎng)競(jìng)爭(zhēng)激烈,優(yōu)勝劣汰。由此,我們經(jīng)過(guò)認(rèn)真的調(diào)研和設(shè)計(jì),尋求了一種更好的控溫方法,亦即本文介紹的WDY-1 溫控儀取代XWB 型自動(dòng)平衡記錄儀。
標(biāo)簽: 單片機(jī) 中的應(yīng)用 溫度控制
上傳時(shí)間: 2013-10-13
上傳用戶:panpanpan
本文簡(jiǎn)單介紹了MCGS 組態(tài)軟件和SPCE061A 單片機(jī)的特點(diǎn),即北京昆侖通態(tài)自動(dòng)化軟件科技有限公司的工控組態(tài)軟件MCGS(Monitor and Control Generated System )和臺(tái)灣凌陽(yáng)科技推出的16 位微控制器SPCE061A,重點(diǎn)介紹了如何一步步開(kāi)發(fā)SPCE061A 單片機(jī)的驅(qū)動(dòng)程序,并簡(jiǎn)單介紹了下位機(jī)程序的設(shè)計(jì),最后給出了測(cè)試情況。計(jì)算機(jī)技術(shù)的飛速發(fā)展為工業(yè)自動(dòng)化開(kāi)辟了廣闊的發(fā)展空間,人們可以快捷地開(kāi)發(fā)和組建高效的控制系統(tǒng)。筆者設(shè)計(jì)的液體點(diǎn)滴監(jiān)控模型,可以對(duì)液體點(diǎn)滴情況實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和現(xiàn)場(chǎng)監(jiān)控,終端和上位機(jī)均可人工設(shè)定所需的液體點(diǎn)滴速度并動(dòng)態(tài)顯示。在這方面,MCGS 工控組態(tài)軟件提供了強(qiáng)有力的支持,它是一套Windows 環(huán)境下快速構(gòu)造和生成上位機(jī)監(jiān)控系統(tǒng)的組態(tài)軟件系統(tǒng),可快速構(gòu)造和生成數(shù)據(jù)采集、報(bào)警處理、流程控制、動(dòng)畫(huà)顯示、報(bào)表輸出等界面,實(shí)現(xiàn)各種工程曲線的繪制、報(bào)表輸出、遠(yuǎn)程通信等功能 [1]。MCGS 作為一種方便有效的通用工控軟件,它提供了國(guó)內(nèi)外各種常用的工控設(shè)備的驅(qū)動(dòng)程序。但在實(shí)際應(yīng)用中,因?yàn)樗迷O(shè)備的特殊性,允許用戶根據(jù)需要來(lái)定制設(shè)備驅(qū)動(dòng)程序。MCGS 用Active DLL 構(gòu)件實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)程序,通過(guò)規(guī)范的OLE 接口掛接到MCGS 中,使其構(gòu)成一個(gè)整體。鑒于Visual Basic 語(yǔ)言的通用性和簡(jiǎn)單性,使用VB 來(lái)開(kāi)發(fā)單片機(jī)驅(qū)動(dòng),MCGS 的實(shí)現(xiàn)方法和原理與標(biāo)準(zhǔn)的Active DLL 完全一致,但MCGS 規(guī)定了一套接口規(guī)范,只有遵守這些接口規(guī)范的Active DLL 才能用作MCGS 的設(shè)備驅(qū)動(dòng)構(gòu)件。利用具有語(yǔ)音和 DSP 功能的SPCE061A 單片機(jī)作為液體點(diǎn)滴監(jiān)控模型的核心控制器,SPCE061A 是臺(tái)灣凌陽(yáng)科技推出的16 位微控制器,提供了豐富的軟、硬件資源,開(kāi)發(fā)靈活方便。除此之外SPCE061A 的最高時(shí)鐘頻率可達(dá)到49MHz,具有運(yùn)算速度高的優(yōu)勢(shì),這為語(yǔ)音的錄制和播放提供了條件[4]。
標(biāo)簽: MCGS 凌陽(yáng)單片機(jī) 驅(qū)動(dòng)程序
上傳時(shí)間: 2013-12-19
上傳用戶:leesuper
這一顆,我們學(xué)習(xí)如何讓跑馬燈自動(dòng)按照我們預(yù)定的順序進(jìn)行。這種控制在工控場(chǎng)合經(jīng)常用到。這個(gè)程序里,我們預(yù)先定義了一個(gè)變化的順序speedcode,每跑一圈燈就根據(jù)預(yù)定設(shè)置的表格數(shù)據(jù)來(lái)決定下一圈的跑馬速度。這樣我們就實(shí)現(xiàn)了按照預(yù)定的順序自動(dòng)變化運(yùn)行。請(qǐng)看代碼:-----------------------------------#define uchar unsigned char //定義一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一個(gè)52 標(biāo)準(zhǔn)內(nèi)核的頭文件sbit P10 = P1^0; //頭文件中沒(méi)有定義的IO 就要自己來(lái)定義了sbit P11 = P1^1;sbit P12 = P1^2;sbit P13 = P1^3;bit ldelay=0; //長(zhǎng)定時(shí)溢出標(biāo)記,預(yù)置是0uchar speed=10; //設(shè)置一個(gè)變量保存跑馬燈的移動(dòng)速度uchar code speedcode[10]={3,1,5,12,3,20,2,10,1,4}; //10 個(gè)預(yù)定義的速度char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的//可編程自動(dòng)控制跑馬燈void main(void) // 主程序{uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預(yù)定的寫(xiě)入P1 的值uchar ledi; //用來(lái)指示顯示順序uchar i;RCAP2H =0x10; //賦T2 的預(yù)置值0x1000,溢出30 次就是1 秒鐘RCAP2L =0x00;TR2=1; //啟動(dòng)定時(shí)器ET2=1; //打開(kāi)定時(shí)器2 中斷EA=1; //打開(kāi)總中斷
標(biāo)簽: 可編程 自動(dòng)控制 控制 跑馬燈
上傳時(shí)間: 2013-11-20
上傳用戶:ming529
PC機(jī)之間串口通信的實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?nbsp;1.熟悉微機(jī)接口實(shí)驗(yàn)裝置的結(jié)構(gòu)和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.學(xué)會(huì)串行通信程序的編制方法。 二、實(shí)驗(yàn)內(nèi)容與要求 1.基本要求主機(jī)接收開(kāi)關(guān)量輸入的數(shù)據(jù)(二進(jìn)制或十六進(jìn)制),從鍵盤(pán)上按“傳輸”鍵(可自行定義),就將該數(shù)據(jù)通過(guò)8251A傳輸出去。終端接收后在顯示器上顯示數(shù)據(jù)。具體操作說(shuō)明如下:(1)出現(xiàn)提示信息“start with R in the board!”,通過(guò)調(diào)整乒乓開(kāi)關(guān)的狀態(tài),設(shè)置8位數(shù)據(jù);(2)在小鍵盤(pán)上按“R”鍵,系統(tǒng)將此時(shí)乒乓開(kāi)關(guān)的狀態(tài)讀入計(jì)算機(jī)I中,并顯示出來(lái),同時(shí)顯示經(jīng)串行通訊后,計(jì)算機(jī)II接收到的數(shù)據(jù);(3)完成后,系統(tǒng)提示“do you want to send another data? Y/N”,根據(jù)用戶需要,在鍵盤(pán)按下“Y”鍵,則重復(fù)步驟(1),進(jìn)行另一數(shù)據(jù)的通訊;在鍵盤(pán)按除“Y”鍵外的任意鍵,將退出本程序。2.提高要求 能夠進(jìn)行出錯(cuò)處理,例如采用奇偶校驗(yàn),出錯(cuò)重傳或者采用接收方回傳和發(fā)送方確認(rèn)來(lái)保證發(fā)送和接收正確。 三、設(shè)計(jì)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡(jiǎn)要說(shuō)明 4.軟件設(shè)計(jì)框圖及程序清單5.設(shè)計(jì)結(jié)果和體會(huì)(包括遇到的問(wèn)題及解決的方法) 四、8251A通用串行輸入/輸出接口芯片由于CPU與接口之間按并行方式傳輸,接口與外設(shè)之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發(fā)送移位寄存器”(并→串)。能夠完成上述“串←→并”轉(zhuǎn)換功能的電路,通常稱為“通用異步收發(fā)器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A異步工作方式:如果8251A編程為異步方式,在需要發(fā)送字符時(shí),必須首先設(shè)置TXEN和CTS#為有效狀態(tài),TXEN(Transmitter Enable)是允許發(fā)送信號(hào),是命令寄存器中的一位;CTS#(Clear To Send)是由外設(shè)發(fā)來(lái)的對(duì)CPU請(qǐng)求發(fā)送信號(hào)的響應(yīng)信號(hào)。然后就開(kāi)始發(fā)送過(guò)程。在發(fā)送時(shí),每當(dāng)CPU送往發(fā)送緩沖器一個(gè)字符,發(fā)送器自動(dòng)為這個(gè)字符加上1個(gè)起始位,并且按照編程要求加上奇/偶校驗(yàn)位以及1個(gè)、1.5個(gè)或者2個(gè)停止位。串行數(shù)據(jù)以起始位開(kāi)始,接著是最低有效數(shù)據(jù)位,最高有效位的后面是奇/偶校驗(yàn)位,然后是停止位。按位發(fā)送的數(shù)據(jù)是以發(fā)送時(shí)鐘TXC的下降沿同步的,也就是說(shuō)這些數(shù)據(jù)總是在發(fā)送時(shí)鐘TXC的下降沿從8251A發(fā)出。數(shù)據(jù)傳輸?shù)牟ㄌ芈嗜Q于編程時(shí)指定的波特率因子,為發(fā)送器時(shí)鐘頻率的1、1/16或1/64。當(dāng)波特率指定為16時(shí),數(shù)據(jù)傳輸?shù)牟ㄌ芈示褪前l(fā)送器時(shí)鐘頻率的1/16。CPU通過(guò)數(shù)據(jù)總線將數(shù)據(jù)送到8251A的數(shù)據(jù)輸出緩沖寄存器以后,再傳輸?shù)桨l(fā)送緩沖器,經(jīng)移位寄存器移位,將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),從TxD端送往外部設(shè)備。在8251A接收字符時(shí),命令寄存器的接收允許位RxE(Receiver Enable)必須為1。8251A通過(guò)檢測(cè)RxD引腳上的低電平來(lái)準(zhǔn)備接收字符,在沒(méi)有字符傳送時(shí)RxD端為高電平。8251A不斷地檢測(cè)RxD引腳,從RxD端上檢測(cè)到低電平以后,便認(rèn)為是串行數(shù)據(jù)的起始位,并且啟動(dòng)接收控制電路中的一個(gè)計(jì)數(shù)器來(lái)進(jìn)行計(jì)數(shù),計(jì)數(shù)器的頻率等于接收器時(shí)鐘頻率。計(jì)數(shù)器是作為接收器采樣定時(shí),當(dāng)計(jì)數(shù)到相當(dāng)于半個(gè)數(shù)位的傳輸時(shí)間時(shí)再次對(duì)RxD端進(jìn)行采樣,如果仍為低電平,則確認(rèn)該數(shù)位是一個(gè)有效的起始位。若傳輸一個(gè)字符需要16個(gè)時(shí)鐘,那么就是要在計(jì)數(shù)8個(gè)時(shí)鐘后采樣到低電平。之后,8251A每隔一個(gè)數(shù)位的傳輸時(shí)間對(duì)RxD端采樣一次,依次確定串行數(shù)據(jù)位的值。串行數(shù)據(jù)位順序進(jìn)入接收移位寄存器,通過(guò)校驗(yàn)并除去停止位,變成并行數(shù)據(jù)以后通過(guò)內(nèi)部數(shù)據(jù)總線送入接收緩沖器,此時(shí)發(fā)出有效狀態(tài)的RxRDY信號(hào)通知CPU,通知CPU8251A已經(jīng)收到一個(gè)有效的數(shù)據(jù)。一個(gè)字符對(duì)應(yīng)的數(shù)據(jù)可以是5~8位。如果一個(gè)字符對(duì)應(yīng)的數(shù)據(jù)不到8位,8251A會(huì)在移位轉(zhuǎn)換成并行數(shù)據(jù)的時(shí)候,自動(dòng)把他們的高位補(bǔ)成0。 五、系統(tǒng)總體設(shè)計(jì)方案根據(jù)系統(tǒng)設(shè)計(jì)的要求,對(duì)系統(tǒng)設(shè)計(jì)的總體方案進(jìn)行論證分析如下:1.獲取8位開(kāi)關(guān)量可使用實(shí)驗(yàn)臺(tái)上的8255A可編程并行接口芯片,因?yàn)橹灰@取8位數(shù)據(jù)量,只需使用基本輸入和8位數(shù)據(jù)線,所以將8255A工作在方式0,PA0-PA7接實(shí)驗(yàn)臺(tái)上的8位開(kāi)關(guān)量。2.當(dāng)使用串口進(jìn)行數(shù)據(jù)傳送時(shí),雖然同步通信速度遠(yuǎn)遠(yuǎn)高于異步通信,可達(dá)500kbit/s,但由于其需要有一個(gè)時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收端之間的同步,硬件電路復(fù)雜,通常計(jì)算機(jī)之間的通信只采用異步通信。3.由于8251A本身沒(méi)有時(shí)鐘,需要外部提供,所以本設(shè)計(jì)中使用實(shí)驗(yàn)臺(tái)上的8253芯片的計(jì)數(shù)器2來(lái)實(shí)現(xiàn)。4:顯示和鍵盤(pán)輸入均使用DOS功能調(diào)用來(lái)實(shí)現(xiàn)。設(shè)計(jì)思路框圖,如下圖所示: 六、硬件設(shè)計(jì)硬件電路主要分為8位開(kāi)關(guān)量數(shù)據(jù)獲取電路,串行通信數(shù)據(jù)發(fā)送電路,串行通信數(shù)據(jù)接收電路三個(gè)部分。1.8位開(kāi)關(guān)量數(shù)據(jù)獲取電路該電路主要是利用8255并行接口讀取8位乒乓開(kāi)關(guān)的數(shù)據(jù)。此次設(shè)計(jì)在獲取8位開(kāi)關(guān)數(shù)據(jù)量時(shí)采用8255令其工作在方式0,A口輸入8位數(shù)據(jù),CS#接實(shí)驗(yàn)臺(tái)上CS1口,對(duì)應(yīng)端口為280H-283H,PA0-PA7接8個(gè)開(kāi)關(guān)。2.串行通信電路串行通信電路本設(shè)計(jì)中8253主要為8251充當(dāng)頻率發(fā)生器,接線如下圖所示。
上傳時(shí)間: 2013-12-19
上傳用戶:小火車?yán)怖怖?/p>
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1