版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機控制技術(shù)課程實驗指導(dǎo)書制訂教師:楊嘉林城市學(xué)院2014年1月目 錄預(yù)備知識一 Keil uVision軟件快速入門3預(yù)備知識二 Proteus軟件快速入門15實驗一 模擬量輸入接口- A/D轉(zhuǎn)換實驗26實驗二 模擬量輸出接口-D/A轉(zhuǎn)換實驗33實驗三 步進(jìn)電機控制實驗38預(yù)備知識一 Keil uVision軟件快速入門一、實驗?zāi)康呐c要求:1、認(rèn)識Keil uVision軟件;2、掌握用Keil uVision軟件建立工程;3、掌握用Keil uVision軟件進(jìn)行仿真調(diào)試;二、實驗場地、設(shè)備、儀器、工具:安裝有proteus和keil軟件的微機。三、實驗步驟:1、在proteus軟件中畫
2、原理圖;2、keil軟件下編寫源程序并編譯形成可執(zhí)行文件.hex;3、載源程序;4、仿真。四、實驗內(nèi)容:本實驗主要介紹用于單片機開發(fā)的常見編程語言和開發(fā)環(huán)境,重點介紹Keil uVision集成開發(fā)環(huán)境的使用。1、51語言編譯器介紹常見的MCS-51系列單片機編程語言有4種,匯編語言、C語言、BASIC語言和PL/M語言。目前最為常用的是匯編語言、C51語言,他們有良好的編譯器支持,使用較為廣泛。C51常用于編寫較為復(fù)雜的大型程序,匯編語言則用于對效率要求較高的場合,尤其是對底層函數(shù)的編寫,因此,一個好的單片機開發(fā)者,不僅要熟悉單片機內(nèi)部的體系結(jié)構(gòu),還要理解單片機內(nèi)部的工作過程,能熟練的使用匯
3、編語言和C51語言進(jìn)行單獨或聯(lián)合開發(fā)。C51語言的編譯器很多,各有各的特點,如表1.1所示。表1.1 C51編譯器及其比較類別特點American automation編譯器通過#asm 和endasm預(yù)處理支持匯編語言,編譯器速度慢,需通過匯編語言作為中間環(huán)節(jié)。archimedes兼容標(biāo)準(zhǔn)c,支持分組rank編譯,但需要一個比較復(fù)雜的link程序才能運行。Bso/tasking兼容x86系列匯編,c編譯器支持內(nèi)置函數(shù)并且允許調(diào)用MCS-51系列單片機的匯編指令。intermetrics需要大量的宏來支持編譯、匯編、鏈接。Microcomputer controls不支持浮點數(shù)、長整數(shù)、結(jié)構(gòu)和
4、多維數(shù)組,生成的源文件必須用intel或mcc的8051匯編其匯編。franklin該編譯器支持浮點數(shù)等類型,但不提供庫代碼,不能生成相應(yīng)的匯編代碼,只能生成混合代碼。keil最常用的編譯器,支持浮點數(shù)、多維數(shù)組,能生成對應(yīng)的匯編代碼,能直接編譯匯編代碼,內(nèi)嵌多種工具,可以很方便的鏈接生成可執(zhí)行文件。2、Keil uVision3集成開發(fā)環(huán)境uVision3 IDE是Keil software公司繼uVision2后的產(chǎn)品,它集項目管理、編譯工具、源代碼編寫工具、代碼調(diào)試以及完全仿真于一體,是目前市面上最流行的單片機開發(fā)軟件平臺。該軟件具有類似VC風(fēng)格的界面,提供了豐富的工具、命令和窗口,可以
5、使開發(fā)者在程序調(diào)試過程中隨時掌握代碼所實現(xiàn)的功能。本節(jié)通過CLR RAM實例,詳細(xì)敘述uVision3的使用方法。2.1 項目工程的建立(1) 建立工程文件在桌面上雙擊Keil uVision3圖標(biāo),啟動集成開發(fā)環(huán)境如圖1.1所示,該界面中最上面一行是菜單,菜單下面是各種工具按鈕,左邊的project workspace窗口為項目管理窗口(Project Window),最下面的為輸出窗口(Output Window),中間部分為工作去,通常我們所編的源程序、調(diào)試程序代碼窗口會出現(xiàn)在這里。圖1.1點擊Project菜單下的New Project命令,在出現(xiàn)的對話框中輸入項目名CLR RAM.U
6、v2,選擇合適的文件夾下建立新的工程項目CLR RAM.Uv2,點擊確定按鈕出現(xiàn)如圖1.2所示的Select Device For TargetTarget1對話框,在Date base下選擇Atmel,點開“+”號,選擇AT89C51器件,點擊確定按鈕。在project workspace下出現(xiàn)。圖1.2(2) 源程序文件的建立使用菜單File->New命令,彈出源程序編輯窗口,輸入以下程序:ORG 0030H MOV R0,#30 MOV R1,#40HCLEAR: CLR A MOV R1,A INC R1 DJNZ R0,CLEAR SJMP $ END點擊File->Sa
7、ve as命令,保存文件名為CLR_RAM.ASM。圖1.3(3)將文件加入到工程項目中 按圖1.3所示點擊Add File to Group Source Group1命令,然后選中CLR_RAM.ASM文件,點擊Add按鈕,將剛才編寫的源程序CLR_RAM.ASM加入項目中。如圖1.4所示:圖1.4注意:添加完文件后,該對話框并不消失,等待繼續(xù)加入其它文件,初學(xué)者常誤認(rèn)為添加文件不成功,其實已添加成功,只需點擊Close按鈕關(guān)閉對話框即可。2.2工程的詳細(xì)設(shè)置工程建立好后,要對工程進(jìn)行進(jìn)一步的設(shè)置,以滿足后續(xù)工作的要求。首先點擊左邊的Project窗口的Target1,然后使用菜單的菜單“
8、Project->Option for target target1”出現(xiàn)對工程設(shè)置的對話框,其中有8個頁面,這里絕大部分設(shè)置取默認(rèn)值就可以了。Target頁面如圖1.5所示:圖1.5Xtal后面的數(shù)值為晶振頻率值,默認(rèn)值為所選CPU的最高工作頻率,對AT89C51而言為24MHz,我們常選12MHz值,該值與最后產(chǎn)生的目標(biāo)代碼無關(guān),僅用于軟件仿真顯示程序執(zhí)行時間,一般于你的硬件所用頻率設(shè)為同一值我們將它設(shè)為12MHz。Memory Model用于設(shè)置RAM的使用情況,設(shè)置為small,Code Rom Size用于設(shè)置ROM的空間,設(shè)置為Large:64k,Operation用于選擇操
9、作系統(tǒng),一般不用操作系統(tǒng),選擇None,Use on-chip ROM用于是否進(jìn)使用片內(nèi)的ROM,在此設(shè)置如圖1.5所示。Off Chip Code memory用以確定系統(tǒng)擴展ROM的地址范圍,Off Chip xData memory組用于確定系統(tǒng)擴展RAM的地址范圍,這些需根據(jù)硬件來決定。設(shè)置對話框中的OutPut頁面,如圖1.6所示,這里也有多個選項,其中Creat Hex file用于聲稱可執(zhí)行代碼文件(可用編程器械如單片機芯片中執(zhí)行的HEX格式文件)默認(rèn)情況下該項未被選中,如果要寫片做硬件試驗,就必須選中該項,這一點要特別注意。Select Folder for opjects是用
10、于選擇最終生成目標(biāo)文件所在的文件夾,默認(rèn)是與工程文件在同一個文件夾中,Name of Executable用于指定最終生成的目標(biāo)文件的名字,默認(rèn)與工程的名字相同。圖1.6Debug頁面的設(shè)置,如果要進(jìn)行仿真的,選中Use Simulator,就可以進(jìn)行軟件仿真。其它所有頁面設(shè)置為默認(rèn)選擇即可,設(shè)置完后,按確認(rèn)鍵返回主界面,工程文件建立設(shè)置完畢。2.3編譯、連接設(shè)置好工程后,即可以進(jìn)行編譯、連接。選擇菜單Project->Build target,對當(dāng)前工程進(jìn)行連接,如果當(dāng)前文加以修改,會現(xiàn)對該文件按進(jìn)行編譯,然后再連接以產(chǎn)生目標(biāo)代碼,如果選擇Rebuild All target file
11、s將會對當(dāng)前工程中的所有文件重新編譯后再連接確保最終生成的目標(biāo)代碼是最新的。編譯過程中的信息將出現(xiàn)在輸出窗口中的Build頁中,如果源程序中有語法錯誤,會報告錯誤,雙擊該行,可以自動定位到出錯的位置。如果沒有出錯,最終會得到如圖所的結(jié)果,提示已生成.hex的文件。圖1.9 正確編譯、連接后的結(jié)果3 Keil uVision3仿真調(diào)試、在線匯編與斷點設(shè)置上一節(jié)我們學(xué)習(xí)了如何在建立工程文件、源程序以及編譯生成目標(biāo)代碼,這僅僅是語法上沒有錯誤,如果你的程序在邏輯上出現(xiàn)錯誤就必須通過調(diào)試來解決,實際上絕大部分的程序都必須經(jīng)過反復(fù)調(diào)試殘能得到正確的結(jié)果,調(diào)試是軟件開發(fā)中的一個重要環(huán)節(jié)。下面著重介紹常用的
12、調(diào)試命令、利用在線匯編設(shè)置斷電進(jìn)行調(diào)試的方法。3.1常用調(diào)試命令、窗口介紹Keil內(nèi)建了一個仿真CPU用來模擬執(zhí)行程序,可以在沒有硬件和仿真機的情況下進(jìn)行程序的調(diào)試。在對工程成功匯編、連接后,點擊菜單Debug->Start/Stop Debug Session或者按Ctrl+F5或者點擊工具按鈕即可進(jìn)入調(diào)試狀態(tài)。調(diào)試狀態(tài)和編輯狀態(tài)相比有比較明顯的變化,在Debug菜單中原來不能使用的命令現(xiàn)在都可以使用了,工具欄中多出了一個用于運行和調(diào)試的工具條。如圖1.7所示:圖1.7該工具條從左到右依次為復(fù)位、運行、暫停、單步、過程單步、執(zhí)行完當(dāng)前子程序、運行到當(dāng)前行、下一狀態(tài)、打開跟蹤、觀察跟蹤、
13、反匯編窗口、觀察窗口、代碼作用范圍分析等命令。學(xué)習(xí)程序調(diào)試必須先了解全速運行和單步運行的概念,全速運行即一次運行完成,可以看見程序運行的整體效果,但如果出錯則用這種方法很難查找到具體的出錯位置,必須借助于單步運行工具,單步執(zhí)行是每次執(zhí)行一行即停止,可以看見當(dāng)前程序運行的中間狀態(tài),兩種方式都經(jīng)常會用到。按下F11鍵或使用菜單STEP或相應(yīng)的命令按鈕可以單步執(zhí)行程序,使用STEP OVER或功能鍵F10可以進(jìn)行過程單步執(zhí)行,進(jìn)入如圖1.8所示的界面,可以看見在源程序窗口的左邊出現(xiàn)一個黃色的調(diào)試箭頭,每執(zhí)行單步一次,黃色箭頭向下移一行。通過單步執(zhí)行可以找出一些問題所在,但僅僅依靠單步執(zhí)行來差圖1.8
14、錯有時很困難,甚至有時效率會很低,有時通過過程單步執(zhí)行、斷點設(shè)置等幾種方法聯(lián)合調(diào)試來達(dá)到目的。另外在調(diào)試的過程中可以隨時監(jiān)視到各寄存器的狀態(tài),可以查看存儲器的值,還可通過設(shè)置變量在觀察窗口中觀看變量值的變化。各監(jiān)視窗口如圖1.9所示。 寄存器窗口 Watches、Memory窗口圖1.9在調(diào)試狀態(tài)下,點擊菜單Peripherals,可以打開彈片擊中的資源,包括中斷源、定時器計數(shù)器、串口以及P0、P1、P2、P3口的窗口一邊觀察它們的值。如圖1.10所示。圖1.103.2在線匯編技術(shù)在進(jìn)入Keil的調(diào)試環(huán)境后,如果發(fā)現(xiàn)程序有錯,可以直接修改源程序,但是要使修改后的程序代碼有效,必須先退出調(diào)試環(huán)境
15、,重新編譯連接后在進(jìn)入調(diào)試,但如果只是需要對某些程序行進(jìn)行測試,或僅需對原程序進(jìn)行臨時的修改,這樣的過程就顯得有些麻煩,為此Keil軟件提供了在線匯編的能力,將光標(biāo)定位于需要修改的程序行上,用菜單Debug->Inline Assambly即可出現(xiàn)如圖1.10所示的對話框。圖1.11在Enter New后面的編輯框內(nèi)直接輸入要更改的程序語句,輸入完后鍵入回車將自動指向下一條語句,可以繼續(xù)修改,如果不再需要修改,可以點擊右上角的關(guān)閉按鈕關(guān)閉窗口。3.3斷點設(shè)置程序調(diào)試時,一些程序行必須滿足一定的條件才能被執(zhí)行到(如程序中某變量達(dá)到一定的質(zhì)、按鍵被按下、串口接收到數(shù)據(jù)、有中斷產(chǎn)生等),這些條
16、件往往是異步發(fā)生或難以預(yù)先設(shè)定的,這類問題使用單步調(diào)試方法是很難調(diào)試的,這時就要使用到程序調(diào)試中的另一種非常重要的方法斷點設(shè)置。設(shè)置好斷點后可以全速運行程序,一旦運行遇到斷點就會停止運行,此時可以觀察有關(guān)變量的值,寄存器的值已確定問題所在。設(shè)置/移除斷點的方法是將光標(biāo)定位到需要設(shè)置斷點的程序行,使用菜單Debug->Insert/Remove BreakPoint設(shè)置或移除斷點,也可以用鼠標(biāo)在該行雙擊實現(xiàn)相同的功能;Debug->Enable/Disable BreakPoint是開啟或暫停光標(biāo)所在行的斷點功能;Debug->Disable All BreakPoint暫停所
17、有斷點;Debug->Kill All BreakPoint清除所有的斷點設(shè)置。這些功能也可以用工具條中相應(yīng)的快捷按鈕進(jìn)行設(shè)置。斷點調(diào)試窗口如圖1.11所示。圖1.12斷點設(shè)置工具條如圖所示。依次為設(shè)置/移除斷點、取消所有斷點、開啟/關(guān)閉斷點、關(guān)閉所有斷點。4 實例下面通過實例講解Keil軟件的編程調(diào)試全過程例:將片內(nèi)從40H開始的連續(xù)30個地址內(nèi)容清零。ORG 0030HMOV R0,#30HMOV R1,#40HCLEAR: CLR AMOV R1,AINC R1DJNZ R0,CLEARSJMP $END預(yù)備知識二 Proteus軟件快速入門一、實驗?zāi)康呐c要求:1、認(rèn)識Proteu
18、s軟件;2、掌握用Proteus軟件建立文件;3、掌握如何使用Proteus軟件元件庫;二、實驗場地、設(shè)備、儀器、工具:安裝有Proteus和Keil軟件的微機。三、實驗步驟:1、在Proteus軟件中畫原理圖;2、Keil軟件下編寫源程序并編譯形成可執(zhí)行文件.hex;3、載源程序;4、仿真。四、實驗內(nèi)容:1、 PROTUES ISIS設(shè)計與仿真平臺1.1 ISIS窗口介紹在計算機上啟動PROTUES ISIS后直接進(jìn)入ISIS窗口如圖2.1所示:器件選擇按鈕對象選擇器仿真按鈕編輯區(qū)對象預(yù)覽窗口工具欄菜單欄圖2.12.2 PROTUES 文件操作(1)文件的建立和保存如圖所示,可以通過點擊文件
19、菜單(File)或工具按鈕來新建、打開、保存設(shè)計文件。圖2.2選擇“File->New Design”菜單項,彈出如圖2.3所示的新建設(shè)計(Creat New Design)對話框,對話框中有多種可供選擇的模板,選擇所需模板,單擊“OK”按鈕即可建立一個新的空白文件。通常系統(tǒng)默認(rèn)模板為DEFAULT模板。如要保存設(shè)計文件,點擊“File->Save Design”命令,輸入文件名后點擊保存按鈕,注意保存的文件類型為Design File。圖2.3(2)打開已保存文件選擇“File->Load Design”菜單項或單擊工具圖標(biāo),彈出“Load ISIS Design File
20、”對話框如圖2.4所示,選擇所要打開的文件即可。注意打開的是.DNS設(shè)計文件。圖2.4(3) PROTUES文件類型PROTUES中的主要有以下文件類型設(shè)計文件(*.DSN),包含了一個電路所有的信息,最為常用。備份文件(*.DBK),保存覆蓋現(xiàn)有設(shè)計文件時會產(chǎn)生文件備份。局部文件(*.SEC),設(shè)計圖的一部分,可輸出為一個局部文件,以后可以導(dǎo)入到其他的圖中。在文件菜單中以導(dǎo)入(Import)導(dǎo)出(Export)命令來操作。模型文件(*.MOD)庫文件(*.LIB),元器件和庫。網(wǎng)表文件(*.SDF),當(dāng)輸出到PROSPICE and ARES時產(chǎn)生的網(wǎng)表文件,擴展名為.SDF。PROTEUS
21、 VSM中還有一些其他文件類型,可參看相關(guān)資料。2.3 PROTUES 庫PROTUES的庫相當(dāng)豐富,有系統(tǒng)符號庫和元件庫,系統(tǒng)符號庫有124個,其中有終端、模塊端口、器件陰交等符號,可直接放置到原理圖中,也可用來建立自己的元件模型,元件庫大約有30個,每個苦又有許多模型,總共有大約8000多個,元器件庫如圖2.5所示:未指定模擬集成電路電容CMOS400系列接插件數(shù)字轉(zhuǎn)換器調(diào)試工具二極管EL C10000系列電動機系列感應(yīng)器Laplace原型存儲器系列微處理器集成電路其他模型原型運放光電器件PLD FPGA電阻仿真原型喇叭音響開關(guān)繼電器開關(guān)熱離子真空管。圖2.5PROTUES后期的版本不斷的
22、有元件庫和模型庫增加,會越來越完善。PRIOTUES部分模型舉例:圖2.6 部分單片機模型圖2.7部分動態(tài)開關(guān)模型圖2.8部分動態(tài)顯示器模型2.4 單片機系統(tǒng)的PROTUES設(shè)計與仿真實例前面已對PROTUES軟件做了簡單的介紹,下面通過AT89C51單片機實例手把手的教你如何應(yīng)用PROTUES軟件對單片機系統(tǒng)進(jìn)行仿真。AT89C51單片機有4個I/O端口,其中P1口為準(zhǔn)雙向口,其每一位口線都可以獨立的作為輸入或輸出線使用,如圖2.9所示:圖2.9通過按鈕控制實現(xiàn)D1、D2二極管燈的亮和滅,要求按下P1時,接P1.1的燈亮,否則接P1.0的燈亮,應(yīng)用PROTUES對該電路進(jìn)行仿真實現(xiàn),具體實現(xiàn)
23、步驟如下:(1) 打開PROTUES軟件的ISIS Professional窗口,單擊菜單命令“File->New Design”,新建一個DEFAULT模板,并且保存文件名為“P1口的簡單應(yīng)用.DSN”。(2) 單擊器件選擇按鈕P,添加如下表2-1所列的元件。在ISIS編輯窗口中放置表2-1 P1口的簡單應(yīng)用所需元件單片機AT89C51電容CAP 30pF晶振CRYSTAL 12MHz電阻 RES按鈕BUTTON發(fā)光二極管LED-BIBY發(fā)光二極管LED-BIGY元器件,在單擊工具箱中的元件終端圖標(biāo),在對象選擇器中分別點擊“POWER”和“GROUND”添加電源和地。(3) 放置好元器
24、件到相應(yīng)位置,布好線并且對圖中的元件參數(shù)進(jìn)行修改設(shè)置如圖2.10所示。圖2.10(4) 編寫源程序在ISIS菜單中單擊Source(源程序),彈出下拉菜單,點擊“Add/Remove Source File”,彈出如圖2.11所示的對話框,選擇Code Generation Tool下拉菜單中的代碼生成工具ASEM51,然后點擊New按鈕,在“P1口簡單應(yīng)用文件夾”下新建start.asm文件,單擊是按鈕,新建的start.asm源程序文件就添加到“Source Code Filename”下方框中。然后重新點擊菜單“Source->start.asm”編寫如下源程序并保存。P1口簡單應(yīng)
25、用源程序清單:ORG 0030H MOV A,#0FFH MOV P1,A JNB P1.2,LOOP1LOOP: CLR P1.0 LCALL EXITLOOP1: CLR P1.1EXIT: NOP END圖2.11(5) 匯編編譯源程序、生成目標(biāo)代碼文件點擊“Source-Build All”菜單命令編譯源程序生成.HEX文件,如果有錯則需根據(jù)編譯提示來調(diào)試源程序,直到無錯為止。注意此處要設(shè)置好目標(biāo)代碼生成工具,點擊“Source-Define Code Generation Tool”設(shè)置如圖2.12所示,選擇好ASEM51的路徑。圖2.12(6) 加載目標(biāo)代碼文件、設(shè)置時鐘頻率在IS
26、IS編輯窗口中雙擊AT89C51單片機芯片,再彈出的對話框中點擊如圖2.13所示的按鈕,選擇前面所生成的start.hex代碼文件,再在Clock Frequency:欄中設(shè)置時鐘為12MHz,點擊“ok”即可。圖2.13(7) PROTUES交互仿真代碼裝載完畢后即可進(jìn)行仿真,只需點擊運行仿真按鈕,仿真運行結(jié)果如圖2.14所示。圖2.14實驗一 模擬量輸入接口- A/D轉(zhuǎn)換實驗一、實驗?zāi)康呐c要求:1、認(rèn)識Proteus軟件;2、掌握用Proteus軟件軟件建立文件;3、掌握如何使用Proteus軟件元件庫;二、實驗場地、設(shè)備、儀器、工具:安裝有Proteus和Keil軟件的微機。三、實驗步驟
27、:1、在Proteus軟件中畫原理圖;2、編寫源程序并編譯形成可執(zhí)行文件.hex;3、載源程序;4、仿真。四、實驗內(nèi)容:1、基本知識 ADC0808是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機直接接口。 (1)ADC0808的內(nèi)部邏輯結(jié)構(gòu) 圖1-1 ADC0808內(nèi)部邏輯結(jié)構(gòu)由上圖可知,ADC0809由一個8路模擬開關(guān)、一個地址鎖存與譯碼器、一個A/D轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8路模擬量分時輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時,
28、才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。(2)引腳結(jié)構(gòu) 圖1-2引腳結(jié)構(gòu)IN0IN7:8條模擬量輸入通道 ADC0809對輸入模擬量要求:信號單極性,電壓范圍是05V,若信號太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。 地址輸入和控制線:4條ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B和C為地址輸入線,用于選通IN0IN7上的一路模擬量輸入。通道選擇表如下表1-1所示。 表1-1 通道選擇表CBA選擇的通
29、道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7數(shù)字量輸出及控制線:11條 ST為轉(zhuǎn)換啟動信號。當(dāng)ST上跳沿時,所有內(nèi)部寄存器清零;下跳沿時,開始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,ST應(yīng)保持低電平。EOC為轉(zhuǎn)換結(jié)束信號。當(dāng)EOC為高電平時,表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE1,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7D0為數(shù)字量輸出線。 CLK為時鐘輸入信號線因ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHZ, V
30、REF(),VREF()為參考電壓輸入。2、ADC0808應(yīng)用說明 (1) ADC0808內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機直接相連。 (2) 初始化時,使ST和OE信號全為低電平。 (3) 送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。 (4) 在ST端給出一個至少有100ns寬的正脈沖信號。 (5) 是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號來判斷。 (6) 當(dāng)EOC變?yōu)楦唠娖綍r,若OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機了。 2、實驗任務(wù): 如圖1-3所示,從ADC0808的通道IN0輸入05V之間的模擬量,通過ADC0809轉(zhuǎn)換成數(shù)字量在四位(小數(shù)后三位)數(shù)碼管上以十進(jìn)制形成顯示出來。要
31、ADC0809的VREF接5V電壓。3、電路原理圖: 圖1-3電路原理圖4程序設(shè)計內(nèi)容: (1)進(jìn)行A/D轉(zhuǎn)換時,采用查詢EOC的標(biāo)志信號來檢測A/D轉(zhuǎn)換是否完畢,若完畢則把數(shù)據(jù)通過P0端口讀入,經(jīng)過數(shù)據(jù)處理之后在數(shù)碼管上顯示。 (2)進(jìn)行A/D轉(zhuǎn)換之前,要啟動轉(zhuǎn)換的方法: ABC000選擇第0通道 ST0,ST1,ST0產(chǎn)生啟動轉(zhuǎn)換的正脈沖信號 5、C51源程序#include <REGX52.H>unsigned char code dispbitcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned ch
32、ar getdata, dispbuf4;unsigned int i,j,temp;sbit ST=P30;sbit OE=P31;sbit EOC=P32;sbit CLK=P33;sbit P34=P34;sbit P35=P35;sbit P36=P36;sbit P20=P20;sbit P21=P21;sbit P22=P22;sbit P23=P23;sbit P17=P17;void TimeInitial();void Delay(unsigned int);void TimeInitial() TMOD=0x10;/定時方式1TH1=(65536-200)/256;/0.2
33、msTL1=(65536-200)%256;EA=1;ET1=1;TR1=1; void Delay(unsigned int i) for(;i>0;i-) for(j=0;j<125;j+); void Display() P1=dispbitcodedispbuf3;P20=0;P21=1; P22=1; P23=1; Delay(10); P1=0x00;P1=dispbitcodedispbuf2;P17=1;P20=1; P21=0; P22=1; P23=1;Delay(10); P1=0x00;P1=dispbitcodedispbuf1;P20=1;P21=1;P
34、22=0; P23=1;Delay(10); P1=0x00; P1=dispbitcodedispbuf0;P20=1;P21=1;P22=1;P23=0;Delay(10); P1=0x00;void main()TimeInitial();while(1)P34=0;P35=0;P36=0;ST=0; while(EOC=1);/查詢轉(zhuǎn)換結(jié)束OE=1;getdata=P0;OE=0;temp=getdata*1.0/255*500;dispbuf0=temp%10;dispbuf1=temp/10%10;dispbuf2=temp/100%10;dispbuf3=temp/1000;Di
35、splay();ST=0;OE=0;ST=1; void t1(void) interrupt 3 using 0 TH1=(65536-200)/256;TL1=(65536-200)%256;CLK=CLK; 實驗二 模擬量輸出接口-D/A轉(zhuǎn)換實驗一、實驗?zāi)康呐c要求:1、了解D/A轉(zhuǎn)換與單片機的接口方法;2、了解D/A轉(zhuǎn)換芯片0832的性能及編程方法.3、了解單片機系統(tǒng)中擴展D/A轉(zhuǎn)換芯片的基本方法;二、實驗場地、設(shè)備、儀器、工具:安裝有Proteus和Keil軟件的微機。三、實驗步驟:1、在Proteus軟件中畫原理圖;2、編寫源程序并編譯形成可執(zhí)行文件.hex;3、載源程序;4、仿真。
36、四、實驗內(nèi)容:1、基本知識DAC0832主要參數(shù)* 分辨率為8位;* 電流穩(wěn)定時間1us; * 可單緩沖、雙緩沖或直接數(shù)字輸入;* 只需在滿量程下調(diào)整其線性度;* 單一電源供電(+5V+15V);* 低功耗,20mW。DAC0832結(jié)構(gòu) 圖2-1 DAC0832引腳及外型圖2-2 DAC0832內(nèi)部邏輯結(jié)構(gòu)* D0D7:8位數(shù)據(jù)輸入線,* TTL電平,有效時間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會出錯);* ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效;* CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效;* WR1:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、
37、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時將輸入數(shù)據(jù)鎖存;* XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效;* WR2:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳變時將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。* IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;* IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);* RFB:反饋信號輸入線,改變Rf
38、b端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;* Vcc:電源輸入端,Vcc的范圍為+5V+15V;* VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V+10V;* AGND:模擬信號地;* DGND:數(shù)字信號地。1、實驗任務(wù) 利用DAC0832和AT89C51產(chǎn)生鋸齒波、三角波、矩形波。2、電路原理圖 圖2-3 電路原理圖3、程序設(shè)計內(nèi)容 可按波形變化規(guī)律反復(fù)給D/A轉(zhuǎn)換器送數(shù)字信號,要改變信號的頻率,只需改變數(shù)字信號送出后的延時時間即可。要產(chǎn)生電壓信號,必須外接運算放大器,電路如圖 2-3所示。4、匯編源程序(1)鋸齒波 ORG0100HSAWT:MOVDPTR,#7FFFH MOVA,#00HL
39、OOP:MOVXDPTR,A INCA LCALLDELAY AJMPLOOPDELAY:MOVR3,#6 D1:MOVR4,#6 D2:MOVR5,#6 D3:DJNZR5,D3 NOP DJNZR4,D2 DJNZR3,D1 RET END(2)三角波 ORG0100H TR:MOVDPTR,#7FFFH CLR A L1:MOVXDPTR,A LCALLDELAY INCA CJNE A,#0FFH,L1 L2:MOVXDPTR,A LCALLDELAY DECA JNZL2 AJMPL1DELAY:MOVR3,#6 D1:MOVR4,#6 D2:MOVR5,#6 D3:DJNZR5,D
40、3 NOP DJNZR4,D2 DJNZR3,D1 RET END(3)矩形波ORG0100HSQ:MOVDPTR,#7FFFHCLRALOOP:MOVXDPTR,ALCALLDELAYCPLAAJMPLOOPDELAY:MOVR3,#6D1:MOVR4,#6D2:MOVR5,#6D3:DJNZR5,D3NOPDJNZR4,D2DJNZR3,D1RETEND實驗三 步進(jìn)電機控制實驗一、實驗?zāi)康?掌握散轉(zhuǎn)程序的四種設(shè)計方法。2掌握用散轉(zhuǎn)程序編程控制步進(jìn)電機的方法。3. 掌握用Proteus調(diào)試匯編源程序的方法。二、實驗預(yù)備知識步進(jìn)電動機是“一步一步”的轉(zhuǎn)動的一種電動機,電源輸入的電信號是脈沖信號
41、(脈沖電壓),每輸入一個電脈沖,電動機就轉(zhuǎn)過一個固定角度,故而,也稱為脈沖電動機。1 基本概念拍:從一種通電狀態(tài)轉(zhuǎn)換到另一種通電狀態(tài),叫一拍。步距角b:每一拍轉(zhuǎn)子轉(zhuǎn)過的角度。2 步進(jìn)電動機的通電方式例如:四相雙四拍 四相:表示電動機有四相繞組,雙:表示每一種通電狀態(tài)都有兩相繞組通電 四拍:四種通電狀態(tài)為一個循環(huán)正轉(zhuǎn)時通電順序: ABBCCDDAABBCCDDAAB 反轉(zhuǎn)時通電順序: ABDACDBCABDACDBCAB 3. 計算公式 步距角b=360/mZ (度)電機轉(zhuǎn)速n=60f/mZ (轉(zhuǎn)/分鐘)上式中 f為脈沖頻率(Hz) ,m為拍數(shù),Z為轉(zhuǎn)子齒數(shù)4. 步進(jìn)電動機的特性靜態(tài)運行狀態(tài):步
42、進(jìn)電動機不改變通電的狀態(tài),一般用矩角特性M=f()來表示。步進(jìn)運行狀態(tài):脈沖頻率較低,下一個脈沖到來之前,轉(zhuǎn)子已完成一步,并且運動已經(jīng)停止。高頻恒速運行狀態(tài):脈沖頻率較高, 電機作勻速運動,頻率越高、速度越快。一般用矩頻特性來表示。 5步進(jìn)電動機的特點步進(jìn)電動機的步距(或轉(zhuǎn)速)與脈沖頻率成正比,它能按照控制脈沖的要求,立即啟動、停止、正反轉(zhuǎn)及變速,響應(yīng)性好。位移與輸入脈沖信號數(shù)相對應(yīng),在不丟步的情況下運行時,角位移的誤差不會長期積累,可以組成結(jié)構(gòu)較為簡單的開環(huán)控制系統(tǒng),也可在要求更高精度時組成閉環(huán)控制系統(tǒng)。步進(jìn)電動機無刷,本體部件少,可靠性高,停止時可有自鎖能力;步距角選擇范圍大,可在幾十分至
43、180°大范圍內(nèi)選擇。速度可在相當(dāng)寬的范圍內(nèi)平滑調(diào)節(jié),用一臺控制器控制幾臺步進(jìn)電機可使它們完全同步運行。步進(jìn)電動機帶慣性負(fù)載的能力較差,不能直接使用普通的交直流電源驅(qū)動。步進(jìn)電動機的應(yīng)用范圍廣泛,除數(shù)控、工業(yè)控制和計算機外部設(shè)備中大量使用外,在工業(yè)自動線、印刷機、遙控指示裝置、航空系統(tǒng)中,都在使用步進(jìn)電動機。三、實驗內(nèi)容P1口做輸出口控制四相步進(jìn)電動機的四相繞組,編寫程序,控制步進(jìn)電動機每2s正向轉(zhuǎn)動一步。晶振頻率6MHz。假設(shè)步進(jìn)電動機的通電方式為四相雙四拍,正轉(zhuǎn)時的通電順序是ABBCCDDA;反轉(zhuǎn)時的通電順序是ABDACDBC。用P3口做輸入口接兩只控制開關(guān)S1S2,S1控制電機
44、的速度,S2控制電機的方向, P1口做輸出口控制四相步進(jìn)電動機;利用RET指令編寫程序,使兩只控制開關(guān)控制步進(jìn)電動機以不同的方向和速度轉(zhuǎn)動。晶振6MHz??刂埔笕缦拢?P3.5=0 P3.4=0 時 步進(jìn)電動機高速正轉(zhuǎn),轉(zhuǎn)速n=300轉(zhuǎn)/分 P3.5=0 P3.4=1 時 步進(jìn)電動機高速反轉(zhuǎn),轉(zhuǎn)速n=300轉(zhuǎn)/分 P3.5=1 P3.4=0 時 步進(jìn)電動機低速正轉(zhuǎn),轉(zhuǎn)速n=60轉(zhuǎn)/分 P3.5=1 P3.4=1 時 步進(jìn)電動機低速反轉(zhuǎn),轉(zhuǎn)速n=60轉(zhuǎn)/分轉(zhuǎn)速n=60 r/min時,利用公式計算得f =20Hz,T=1/f =1/20=50ms轉(zhuǎn)速n=300 r/min時,利用公式計算得f =
45、100Hz,T=1/f =1/100=10ms(M=4,Z5)四、實驗參考電路假設(shè)用P1.0P1.3口作為輸出口分別控制步進(jìn)電動機的四相繞組,控制開關(guān)SW1SW2分別接P3.5和P3.4,控制電路圖如圖3-9所示;根據(jù)硬件接線可推導(dǎo)出控制狀態(tài)與P1口的控制碼的對應(yīng)關(guān)系,如表3-1所示。表3-1 控制狀態(tài)與P1口的控制碼的對應(yīng)關(guān)系控制狀態(tài)P1口控制碼P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0D相C相B相A相A相、B相繞組通電03H00000011B相、C相繞組通電06H00000110C相、D相繞組通電0CH00001100D相、A相繞組通電09H00001001圖3-1
46、步進(jìn)電機控制實驗電路五、實驗參考程序分支的出口有兩個以上時,形成散轉(zhuǎn)程序,一般用散轉(zhuǎn)指令來實現(xiàn),設(shè)計方法有4種。分別是轉(zhuǎn)移指令表法、地址偏移量表法、轉(zhuǎn)向地址表法和利用RET指令法。地址機器碼程序注釋 ORG 0000H;程序從地址0000H存放0000H02 00 30 LJMP START ORG 0030H;程序從地址0030H存放0030H75 B0 FFSTART: MOV P3,#0FFH0033HE5 B0 MOV A,P3;讀輸入數(shù)據(jù)0035H54 30 ANL A,#30H;屏蔽掉無關(guān)位0037HC4 SWAP A0038H23 RL A0039HF9 MOV R1,A003A
47、H04 INC A003BH90 00 50 MOV DPTR,#TABLE;轉(zhuǎn)移地址表的基地址送DPTR003EH93 MOVC A,A+DPTR;查表并取出轉(zhuǎn)移地址的低8位003FHC0 E0 PUSH ACC;轉(zhuǎn)移地址的低8位壓入堆棧區(qū)0041HE9 MOV A,R1;恢復(fù)0042H93 MOVC A,A+DPTR;查表并取出轉(zhuǎn)移地址的高8位0043HC0 EO PUSH ACC;轉(zhuǎn)移地址的高8位壓入堆棧區(qū)0045H22 RET;從堆棧區(qū)彈出轉(zhuǎn)移地址送PC ORG 0050H;程序從地址0050H存放0050H00 60 TABLE: DW BR0;轉(zhuǎn)移地址表0052H00 80 DW
48、BR10054H00 A0 DW BR20056H00 C0 DW BR3 ORG 0060H;程序從地址0060H存放0060H75 90 03 BR0:MOV P1,#03H;AB相通電0063H12 01 00 LCALL DELAY10066H75 90 06 MOV P1, #06H;BC相通電0069H12 01 00 LCALL DELAY1006CH75 90 0C MOV P1, #0CH;CD相通電006FH12 01 00 LCALL DELAY10072H75 90 09 MOV P1, #09H;DA相通電0075H12 01 00 LCALL DELAY10078H
49、80 B6 SJMP START;重復(fù)循環(huán) ORG 0080H;程序從地址0080H存放0080H75 90 03 BR1:MOV P1,#03H;AB相通電0083H12 01 00 LCALL DELAY10086H75 90 09 MOV P1, #09H;DA相通電0089H12 01 00 LCALL DELAY1008CH75 90 0C MOV P1, #0CH;CD相通電008FH12 01 00 LCALL DELAY10092H75 90 06 MOV P1, #06H;BC相通電0095H12 01 00 LCALL DELAY10098H80 96 SJMP START;重復(fù)循環(huán) ORG 00A0H;程序從地址00A0H存放00A0H75 90 03 BR2:MOV P1,#03H;AB相通電00A3H12 01 50 LCALL DELAY200A6H75 90 06 MOV P1, #06H;BC相通電00A9H12
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)計的文化與歷史背景
- 房間隔缺損修復(fù)護理查房課件
- 采購合同制式條款范本3篇
- 采購合同管理的信息化發(fā)展3篇
- 虛擬人語音識別與合成-洞察分析
- 采購合同的供應(yīng)鏈合同自由采購3篇
- 應(yīng)急預(yù)案評估與修訂-洞察分析
- 采購合同管理案例解析3篇
- 采購合同評審表評分標(biāo)準(zhǔn)3篇
- 采購框架協(xié)議控制3篇
- 大數(shù)據(jù)建模練習(xí)練習(xí)題及答案1-2023背題版
- 2024年山東濟南軌道交通集團運營有限公司招聘筆試參考題庫含答案解析
- Ⅲ類射線裝置輻射工作人員考核試題 - 副本
- 土壤檢測報告表
- 老年人合理用藥新進(jìn)展課件
- 工程經(jīng)濟學(xué)案例分析課程設(shè)計
- 公司投產(chǎn)慶典策劃方案
- 服務(wù)管理的價值創(chuàng)造
- 內(nèi)科醫(yī)生如何與患者建立有效的溝通
- 植物生長與環(huán)境課程教案
- 歌廳消防安全管理制度
評論
0/150
提交評論