微機(jī)原理第二次實(shí)驗(yàn)報(bào)告_第1頁
微機(jī)原理第二次實(shí)驗(yàn)報(bào)告_第2頁
微機(jī)原理第二次實(shí)驗(yàn)報(bào)告_第3頁
微機(jī)原理第二次實(shí)驗(yàn)報(bào)告_第4頁
微機(jī)原理第二次實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)二定時(shí)器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康呐c要求利用定時(shí)器控制產(chǎn)生占空比可變的pw'm波,通過實(shí)驗(yàn)驗(yàn)證進(jìn)一步加強(qiáng)對(duì)定時(shí) 器功能的認(rèn)識(shí),掌握定時(shí)器的使用方法。1、用p1.0 口輸出pwm波,利用按鍵控制占空比的增加和降低,用示波器查 看p1.0 口的輸出波形。2、引導(dǎo)學(xué)生進(jìn)行利用現(xiàn)有程序演示定時(shí)器動(dòng)態(tài)顯示數(shù)碼管實(shí)驗(yàn),了解數(shù)碼 管動(dòng)態(tài)掃描方式。二、實(shí)驗(yàn)注意事項(xiàng)1、啟動(dòng)keil軟件,選擇菜單“工程新建工程”以建立工程(擴(kuò)展 名為.uv2,如 t2a. uv2)。2、選擇菜單“文件新文件”以建立一個(gè)新的文本編輯窗口,在窗 口中輸入?yún)⒖荚闯绦?并保存(擴(kuò)展名為.asm),如test2a. asm,然后將其加

2、入到源程序組1中。3、在工程菜單的選項(xiàng)“目標(biāo)1屬性”屮設(shè)置相應(yīng)的選項(xiàng),包括“輸 出產(chǎn)生hex文件”選項(xiàng)以便匯編生成hex代碼供編程器使用,在“調(diào)試 使用ke訂monitor-51 driver”的設(shè)置中選擇相應(yīng)的串口號(hào)。4、使用“工程”中的“編譯全部文件”完成相應(yīng)的文件編譯,如果 程序格式正確將生成相應(yīng)hex代碼文件,如t2a.hexo如果提示有編譯錯(cuò)誤 請(qǐng)自行修改源程序然后再重新編譯。5、用單根連線將p1.0cjp44)連接到8路指示燈部分(jp32)的ledo, 將 pl. 6、pl. 7 (jp44)分別連接到 jp37 的 koi、k02。6、完成仿真器與計(jì)算機(jī)之間的連線并通電。7、在

3、ketl軟件中啟動(dòng)“調(diào)試開啟仿真模式”,然后用“運(yùn)行”命 令實(shí)現(xiàn)全速運(yùn)行的仿真。8、觀察實(shí)驗(yàn)現(xiàn)象并分別依次按下koi、k02,觀察并記錄實(shí)驗(yàn)現(xiàn)象 然后在keil軟件中啟動(dòng)“中斷運(yùn)行一調(diào)試(debug) 關(guān)閉仿真模式”退出 仿真,選擇“工程關(guān)閉工程”可關(guān)閉當(dāng)前工程。9、參考步驟14完成參考源程序2的建立與輸入,如新項(xiàng)目 t2b. uv2和新的源程序tcst2b. asm,完成編譯與仿真設(shè)置。10、用8p1n連線將p0 口連接到數(shù)碼管數(shù)據(jù)輸入端,p2 口連接到數(shù)碼 管控制端。11、輸入程序并仿真運(yùn)行,注意數(shù)碼管的顯示內(nèi)容。12、根據(jù)參考源程序1和參考源程序2進(jìn)行思考、修改和拓展,自行 設(shè)計(jì)程序目標(biāo)

4、并編程驗(yàn)證。13、本次實(shí)驗(yàn)主要連線如圖p2 口輸出到數(shù) 碼管位選p1.6木iip1.7分別連援 按鍵©1和keqpoi輸岀到數(shù) 碼管段碼區(qū)p1.0接led燈川以通過處晴俏 況直觀地觀占空比的變化p1.1可用于輸出信號(hào)外擄示 波器探頭wo71v a * * a a ' jgnd外接示波器信號(hào)參考地三、實(shí)驗(yàn)內(nèi)容1.利用定時(shí)器控制產(chǎn)生占空比可變的pwm波,通過按k01可pwmi1值增加, 則占空比增加,led燈漸暗。按k2, pwm值減小,則占空比減少,led燈 漸亮。pwmhdata40h;高電平脈沖的個(gè)數(shù)pwmdata41h;pwm 周期counterdata42h;tempd

5、ata43houtpwmequ p1.0 ;pwm波輸出引腳outpwmbequ pl.l ;pwm波輸出引腳b,用于外接示波器探頭inckeyequpl.6 ;k01, pwmh 值增加鍵。deckeyequpl.7 ;k02, pwmh 值減小鍵。org 0000hajmp mainorgooobhajmpinttoorg0100hmain: movsp,#60h;給堆棧指針賦初值movpwmh,#0bh;賦初值movcounter,#01hmovpwm,#15hmovtmod, #02h淀時(shí)器0在模式2下工作movtlo, #38h;每200 us產(chǎn)生一次溢岀movtho, #38h;自

6、動(dòng)重裝初值setbeto;使能定時(shí)器0中斷setbea;使能總中斷setb tro;開始計(jì)時(shí)kscan: setb inckey;端口輸入狀態(tài),掃描按鍵setb deckeyjnb inckey,k1check;掃描koi,如果按下跳轉(zhuǎn)到key1處理程序 jnb deckey,k2check;掃描k02,如果按下跳轉(zhuǎn)到key2處理程序 sjmp kscank1check: jb inckey;k1handle;若按下koi后釋放,跳轉(zhuǎn)到key1處理程序,可考慮加延時(shí)去抖動(dòng)程序sjmp k1checkk1handle:mov a,pwmh;cjne a,pwm,k1hosjmp kscan;判斷

7、是否到達(dá)上邊界;是,則不進(jìn)行任何操作k1ho:mov a,pwmhinc acjne a,pwm,k1h1;如果在加1后到達(dá)最大值clrtro;定時(shí)器停止setb outpwmsetb outpwmbsjmp k1h2;置輸出為高電平k1h1:cjne a,#o2h,k1h2;如果加1后到達(dá)下邊界setb tro;重開定時(shí)器k1h2:inc pwmhsjmp kscan;增加占空比k2check: jb decke/k2handle;若按下k02后釋放,跳轉(zhuǎn)到key1處理程序,可考慮加延時(shí)去抖動(dòng)程序sjmp k2checkk2handle: mov a,pwmh ;cjne a,#01h,k2

8、h0 ;判斷是否到達(dá)下邊界,是,則不進(jìn)行任何操作sjmp kscan;k2ho: mov a,pwmh;movtempzpwmdec acjne a,#o1h,k2h1 ;如果在減1后到達(dá)下邊界clr tro;定時(shí)器停止clr outpwm;輸出為低電平clr outpwmbk2h1: dec temp:如果到達(dá)上邊界;啟動(dòng)定時(shí)器;降低占空比sjmp k2h2cjne a,temp,k2h2setb trok2h2: dec pwmhsjmp kscanintto: push pswpush accinc countermov a,countercjne a,pwmhjntt01clr out

9、pwmclr outpwmbintto1:cjne a,pwm,intt02mov counter,#01hsetb outpwmsetb outpwmbintt02:popaccpop pswretiend實(shí)驗(yàn)現(xiàn)象記錄:(1)、每按一次koi, led燈亮度變暗一些,同時(shí)示波器上顯示負(fù)脈寬減少; 每按一次k02, led燈亮度變亮一些,同時(shí)示波器上顯示負(fù)脈寬增加。在連續(xù)按 下k02的過程中,led燈逐漸變亮至最亮,同時(shí)示波器上的波形和各參數(shù)變化如 以下圖形所示:初始狀態(tài):正占空比50%,止負(fù)脈寬各占一半。2: ch1i ch1:|: 負(fù)脈寬| : i ch1小心計(jì)小計(jì)量小值::;/36az.

10、1 . i ch2關(guān)閉二上計(jì)丄j 闔期1 11 1 1 1 1 -ch2關(guān)閉:o-921.549hz 負(fù)脈寬k02作用1次,負(fù)脈寬變大,led燈變亮。k02作用第2次,負(fù)脈寬繼續(xù)變大,led燈繼續(xù)變亮。這符合預(yù)期現(xiàn)彖。(2)、連續(xù)按下k01時(shí),負(fù)脈寬逐漸變小,led燈亮度逐漸變暗,同時(shí) 示波器上的波形和各參數(shù)變化如圖所示:初始狀態(tài):正占空比50%,正負(fù)脈寬相等。 ch1j坷期 217“ f ch1 負(fù)棘寬 980.0psch1 量小值 -208.0buch決閉 周期ch2關(guān)閉 負(fù)脈寬k01作用一次,,負(fù)脈寬減少,正脈寬增加,led燈變暗。chi- i.eeum seepsch2關(guān)閉 負(fù)脈jt

11、ou/aeemum po680m:匕 s f measure7: ch1ju期2:.: ch1;: 負(fù)脈寬 ::2iaeps ch1”嚴(yán) 1小*“量小值i-320.0mu7 * 7 * 丁:ch2關(guān)閉同期k01作用多次,負(fù)脈寬繼續(xù)減少,正脈寬繼續(xù)增加,led燈繼續(xù)變暗。 符合實(shí)驗(yàn)預(yù)期現(xiàn)象。實(shí)驗(yàn)現(xiàn)象分析:由實(shí)驗(yàn)代碼可知,定時(shí)周期有20個(gè),每按下一次k01,增加一個(gè)正占空 比即增加5%的正占空比;每按下一次k02,增加一個(gè)負(fù)占空比即增加5%的負(fù) 占空比。當(dāng)正占空比到100%或負(fù)占空比到100%時(shí),跳到正占空比到0%或負(fù) 占空比到0%的狀態(tài),一直循環(huán)下去。k01作用 次數(shù)負(fù)脈寬占 空比負(fù)脈寬k02作

12、用 次數(shù)正脈寬占 空比正脈寬050%1.085050%1.085145%0.9765155%1.1935240%0.868260%1.302335%0.7595365%1.4105430%0.651470%1.519525%0.5425575%1.6275620%0.434680%1.736715%0.3255785%1.8445810%0.217890%1.95395%0.1085995%2.06152.數(shù)碼管顯示演示程序:在8個(gè)led數(shù)碼管上依次顯示1,2, 3, 4, 5, 6, 7, 8。 引用端口:數(shù)碼管數(shù)據(jù)po,數(shù)碼管控制p2;參考程序如下;dis_digit equ 4011;位

13、選通值,傳送到p2 口用于選通當(dāng)前數(shù)碼管的數(shù)值,;如等于oxfe時(shí),選通p2.0 口數(shù)碼管dis_index data 41h;顯示索引,用于標(biāo)識(shí)當(dāng)前顯示的數(shù)碼管和緩沖區(qū)的偏移量dis_bufdata 5011;顯于緩沖應(yīng)起始地址org 0000hajmp mainorg ooobhajmp intto;初始化i/o 口org01oohmovtmod,#02hmovtlo,#3811movtho,#38hsetbetosetbeamov p2,#offhmain:mov po,#offh;定吋器0在模式2下工作;每200 us產(chǎn)生一次溢出;自動(dòng)重裝初值;使能定時(shí)器0中斷;使能總中斷mov dp

14、tr, #dts_code ;設(shè)定顯示初值為1一8mov a, #1;初值為1,以后順序加1movc a, ©a+dptrmov dis_buf,amov a, #2movc a,a+dptrmov dis buf+01i1, amov a, #3movc a, 0a+dptrmov dis_buf+02h, amov a, #4movc a,a+dptrmov d1s_buf+o3h, amov a, #5movc a,a+dptrmov dts_buf+04h, amov a, #6movc a,©a+dptrmov dis_buf+05h, amov a, #7mov

15、c a,a+dptrmov d1s_buf+o6h,amov a, #8movc a,a+dptrmovdts_buf+07h,adisplay: mov dis_digit, #ofeii ;初始從第一個(gè)數(shù)碼管開始掃描movd1s_index, #0setb tro;啟動(dòng)定時(shí)器0,開始動(dòng)態(tài)掃描顯示main_lp: nop;主癌序循環(huán),可增加其它代碼以改變50h-57h中的值以改變顯示內(nèi)容sjmp main_lpintt0:;定吋器0中斷服程序,用于數(shù)碼管的動(dòng)態(tài)掃描pushaccpushpswmovp2,#offh;先關(guān)閉所有數(shù)碼管mova, #dis_buf;獲得顯示緩沖區(qū)基地址adda,d

16、is index;獲得偏移量movr0, a;r0 =基地址+偏移量mova, r0;獲得顯示代碼movp0, a;顯示代碼傳送到p0 口movp2, dts_dtgttfmov a,dis_digit;位選通值左移,下次中斷時(shí)選通下一位數(shù)碼管rl amov dis_digit, atnc dts_tndex;dis_index加1,下次中斷時(shí)顯示下一位anl d1s_1ndex,#0x07;當(dāng) dis_index 等于 8(0000 1000b)時(shí),清 0poppswpopaccretidis_code:db 28h, 7eh, 0a2h, 62h, 74h, 61h, 21h, 7ahdb

17、 20h, 60h, 30h, 25h, 0a9h, 26h, oalh, oblh;0-9和abcdef的數(shù)碼管顯示代碼end實(shí)驗(yàn)現(xiàn)象如圖所示:四、思考題1.試根據(jù)參考程序1中pwm波控制周期的大小進(jìn)行驗(yàn)算,調(diào)整定時(shí)吋間初 值并進(jìn)行調(diào)試驗(yàn)算,使pwm波控制周期為n ms (其屮n值為學(xué)號(hào)的最后兩 位數(shù)值,如恰好是00則取值為50)。答:我的學(xué)號(hào)最后兩位數(shù)字為14, pwm波控制周期應(yīng)為14ms.由公式(模數(shù)-初值)*(12/晶振)二t得,(模數(shù)-初值)* (12/22. 1184) = (14/20)*1000(模式-初值)二1283在模式2下能產(chǎn)生這個(gè)數(shù),修改部分代碼即可。所以修改部分的代

18、碼如圖所示:將main函數(shù)中的mov pwm, #15h改成:mov pwm, #82h 其他代碼 不變:mov mov mov mov mov mov movsets setb setb sets setspwmh, #obhcouktter, #o1h pwm, tmod.tlotwo, etoea#8平38htroinc7keyi>eckey實(shí)驗(yàn)現(xiàn)象如圖:周期剛好是14. 00ms,符合要求。atten measurech2關(guān)閉 周期ch1 周期 14.00msch2關(guān)閉 頻率chi- 2.00u:|g = 714368hzm 2.50msch1正占空比75%ch朕閉正占空比chi z2.40u m pos:0*00|l*2.嘗試改變參考程序2的顯示內(nèi)容為學(xué)生自己的學(xué)號(hào)的后8位。 答:因?yàn)?-9和abcdef的數(shù)碼管顯示已經(jīng)固定

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論