單片機(jī)課程設(shè)計(jì)--鍵控彩燈_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b>  相關(guān)說明</b></p><p><b> ?。ㄒ唬┰O(shè)計(jì)目的</b></p><p>  熟悉51系列單片機(jī)的使用。</p><p><b>  熟悉匯編語言編程。</b>

2、;</p><p>  掌握單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)方法過程及實(shí)現(xiàn)。</p><p>  (二)設(shè)計(jì)任務(wù)描述、要求</p><p><b>  鍵控彩燈系統(tǒng):</b></p><p>  鍵盤控制其運(yùn)行及其停止。</p><p>  鍵盤控制其流水作業(yè)及流動(dòng)方向。</p><p&g

3、t;  鍵盤控制其點(diǎn)亮方式 a.全亮全滅</p><p><b>  b.交叉點(diǎn)亮</b></p><p><b>  成員分工情況:</b></p><p>  袁德:04組長??傇O(shè)計(jì),將任務(wù)說明、框圖、功能模塊圖及相關(guān)說明分給成員,協(xié)助程序編輯和錯(cuò)誤處理,查找資料心得體會(huì)。</p><p> 

4、 湯躍:擔(dān)任軟件設(shè)計(jì),根據(jù)功能模塊圖細(xì)分出流程圖編輯相應(yīng)程序與功能相關(guān)說明,查找資料。</p><p>  曾玉珍:擔(dān)任硬件設(shè)計(jì),根據(jù)總框圖在DXP軟件中畫出原理圖、PCB板,查找資料。</p><p>  邱根:進(jìn)行WORD排版,與協(xié)助湯躍的軟件設(shè)計(jì)和查找資料。</p><p>  曹琦:對進(jìn)行編輯完的程序在仿真軟件上進(jìn)行仿真訓(xùn)練和錯(cuò)誤處理。</p>

5、<p><b>  目錄</b></p><p>  第1章 硬件設(shè)計(jì)1</p><p><b>  1.1總體框圖1</b></p><p>  1.2 原理圖與PCB板圖2</p><p>  1.3 80C51相關(guān)說明:4</p><p>  第

6、2章 軟件設(shè)計(jì)6</p><p>  2.1 功能模塊圖6</p><p>  2.2主控流程圖7</p><p>  2.3鍵盤檢測流程圖9</p><p>  2.4功能鍵處理流程圖13</p><p>  2.5顯示彩燈流程圖15</p><p>  2.6代碼實(shí)現(xiàn)19&l

7、t;/p><p>  第3章 仿真與調(diào)試28</p><p>  3.1調(diào)試步驟28</p><p>  3.2錯(cuò)誤處理30</p><p>  3.3仿真結(jié)果31</p><p>  第4章 設(shè)計(jì)體會(huì)32</p><p><b>  參考文獻(xiàn)34</b><

8、;/p><p><b>  第1章 硬件設(shè)計(jì)</b></p><p><b>  1.1總體框圖</b></p><p><b>  功能說明:</b></p><p>  電源:80C51單片機(jī)使用5V電源,其中正極接40引腳,負(fù)極接20引腳。</p><p

9、>  振蕩電路:在80C51單片機(jī)內(nèi)部集成了一個(gè)高增益方向放大器,用于構(gòu)成放大器,只要接上晶振和電容即可構(gòu)成完整的振蕩電器。晶振跨接于18 (XTAL2出)和19( XTAL1入)引腳之間,18和19引腳對地并聯(lián)兩只小電容,其中晶振可以使用12MHz的小臥式晶振,電容可在18~47pF之間取值,一般可以使用27pF的小磁片電容。</p><p>  復(fù)位電路:單片機(jī)上的9引腳(RST)是復(fù)位引腳,采用的是手

10、動(dòng)復(fù)位,其中其中電容用10uF,而接到RST與地之間的電阻用10kΩ/Vpp引腳:31引腳為/Vpp,該引腳接地。</p><p>  鍵盤電路:單片機(jī)P3.2~P3.5引腳作為輸入使用,在軟件中將其置</p><p>  1.但按鍵沒有按下時(shí),單片機(jī)引腳上為高電平:而當(dāng)按鍵按下去后,引腳接地,單片機(jī)引腳上為低電平。通過編程軟件(采用不斷查詢的方法)即可獲知是否有按鍵按下,按下是哪一個(gè)按鍵

11、。</p><p>  彩燈顯示: LED的陰極與單片機(jī)P1.0~P1.7引腳相連,陽極與+5V電源相連。當(dāng)P1口引腳接高電平時(shí)LED燈不亮,當(dāng)P1口引腳接低電平時(shí)LED燈亮。</p><p>  1.2 原理圖與PCB板圖</p><p><b>  功能說明:</b></p><p>  8個(gè)發(fā)光二管接8*470電阻

12、,接在P0口,將復(fù)位電路接在RST端,復(fù)位電路用到了手動(dòng)復(fù)位,該電路的電阻值為1K,電容為C=10uF.</p><p>  P3.2~P3.5接四個(gè)彈性按鍵,在按鍵前接上四個(gè)上拉電阻(4*1K),該單片機(jī)采用的晶振頻率為6HZ</p><p>  該電路用的兩個(gè)電容C=(5~30pF)EA接地采取片外ROM方式</p><p><b>  PCB板圖&l

13、t;/b></p><p><b>  功能描述:</b></p><p>  同DXP軟件將圖二和圖三畫出來,在通過這些可以將其在電路板上進(jìn)行制做,實(shí)現(xiàn)硬件電路的安裝制作,進(jìn)行調(diào)試</p><p><b>  元件清單:</b></p><p>  1.3 80C51相關(guān)說明:</p

14、><p>  80C51引腳說明:、主電源引腳Vcc和GND</p><p>  Vcc(40腳):主電源接+5V</p><p>  Vss(20腳):接地</p><p>  2、時(shí)鐘電路引腳XTAL1 和XTAL2</p><p>  XTAL2(18腳):接外部晶體振蕩器的一端。片內(nèi)是一個(gè)振蕩電路反相放大器的輸出端

15、。</p><p>  XTAL1(19腳):接外部晶體振蕩器的另一端。片內(nèi)是一個(gè)振蕩電路反相放大器的輸入端。</p><p>  3、控制信號(hào)RST/Vpd、ALE/(/PROG) 、/ PSEN和 (/EA)/Vpp</p><p>  RST/Vpd(9腳):復(fù)位端。高電平有效,寬度在24個(gè)時(shí)鐘周期寬度以上,使單片機(jī)復(fù)位。該引腳有復(fù)用功能,Vpd為備用電源輸入

16、端,防止主電源掉電。</p><p>  ALE/(/PROG)(30腳):地址鎖存信號(hào)端。訪問片外存貯器時(shí),ALE作低八位地址的鎖存控制信號(hào)。平時(shí)不訪問片外存貯器時(shí),該端以六分之一的時(shí)鐘振蕩頻率固定輸出脈沖。ALE端負(fù)載驅(qū)動(dòng)能力為8個(gè)LSTTL門。該引腳有復(fù)用功能, 為片內(nèi)程序存貯器編程(固化)的編程脈沖輸入。</p><p>  /PSEN(29腳):片外程序存貯器讀選通信號(hào)端。負(fù)載能

17、力為8LSTTL門。在讀外部ROM時(shí)PSEN低電平有效,以實(shí)現(xiàn)外部ROM單元的讀操作。 1、內(nèi)部ROM讀取時(shí),PSEN不動(dòng)作; 2、外部ROM讀取時(shí),在每個(gè)機(jī)器周期會(huì)動(dòng)作兩次; 3、外部RAM讀取時(shí),兩個(gè)PSEN脈沖</p><p>  被跳過不會(huì)輸出; 4、外接ROM時(shí),與ROM的OE腳相接。 </p><p>  (/EA)/Vpp(31腳):</p><p>

18、  /EA端接高電平時(shí),CPU取指令從片內(nèi)程序存貯器自動(dòng)順延至片外程序存貯器。 /EA端接低電平時(shí),CPU僅從片外程序存貯器取指令。該引腳有復(fù)用功能,Vpp為片內(nèi)程序存貯器編程時(shí)的編程電壓。 </p><p>  4、輸入/輸出引腳P1、和P3口</p><p>  P1.0~P1.7(1~8腳): 8位準(zhǔn)雙向I/O口。負(fù)載能力為3個(gè)LSTTL門。P1口只做I/O口使用:其內(nèi)部有上拉電阻&

19、lt;/p><p>  P3.0~P3.7(10~17腳):8位準(zhǔn)雙向I/O口。負(fù)載能力為3個(gè)LSTTL門。另外還有專門的第二功能。</p><p>  二、P3口的第二功能:</p><p>  P3.0(10腳): RXD(串行口輸入端)</p><p>  P3.1(11腳): TXD(串行口輸出端)</p><p>

20、;  P3.2(12腳): /INT0(外部中斷0輸入端)</p><p>  P3.3(13腳): /INT1(外部中斷1輸入端)</p><p>  P3.4(14腳): T0(定時(shí)器/計(jì)數(shù)器0外部輸入端)</p><p>  P3.5(15腳): T1(定時(shí)器/計(jì)數(shù)器1外部輸入端)</p><p>  P3.6(16腳): /WR(片外

21、數(shù)據(jù)存貯器寫選通信號(hào)輸出端)</p><p>  P3.7(17腳): /RD(片外數(shù)據(jù)存貯器讀選通信號(hào)輸出端</p><p><b>  第2章 軟件設(shè)計(jì)</b></p><p><b>  2.1 功能模塊圖</b></p><p><b>  功能說明:</b><

22、/p><p>  鍵盤掃描模塊:就檢測是否按有鍵按下因按鍵是有抖動(dòng)存在所一要掃描兩次</p><p>  以保正確實(shí)有按鍵按下然后在檢查是否有鍵的釋放。</p><p>  延時(shí)去抖模塊:因?yàn)橛邪存I抖動(dòng)的現(xiàn)象存在,且鍵盤抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對一次鍵盤操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。所以實(shí)行軟件去抖消除抖動(dòng)的影響。</p>&

23、lt;p>  主程序模塊圖:將個(gè)模塊連接起來并初始化。</p><p>  彩燈顯示模塊;流水燈模塊采用了8個(gè)LED發(fā)光二極管,通過代碼的編寫實(shí)現(xiàn)四中流水彩燈,本設(shè)計(jì)采用共陽極接法,將不同的初值給單片機(jī)就可以看到彩燈變化。</p><p>  延時(shí)模塊:為了能讓我們看的出彩燈變化的效果進(jìn)行延時(shí),這樣就可以看到彩燈流動(dòng)。</p><p><b>  2

24、.2主控流程圖</b></p><p><b>  圖一主程序流程圖</b></p><p>  功能說明:圖一主程序流程圖,編寫匯編主程序,開始給堆棧初始化,把P1復(fù)位也就讓彩燈一開始處于滅的狀態(tài),把所有標(biāo)志位復(fù)位,否則下次運(yùn)行時(shí)容易出錯(cuò),。給流動(dòng)代碼復(fù)初值,然后調(diào)用鍵盤程序看是否有鍵按下沒有就跳轉(zhuǎn)顯示程序返回,F(xiàn)0為則調(diào)用功能鍵處理程序然后在調(diào)用顯示程

25、序返回循環(huán)。</p><p>  2.3鍵盤檢測流程圖</p><p><b>  圖二鍵盤檢測流程圖</b></p><p>  功能說明:根據(jù)圖二編寫鍵盤掃描程序,首先給F0按鍵清零,因?yàn)橄旅嬉xP3口,所以先ORL給P3先寫1在將P3給A給其余四個(gè)位置1,取反A如果為則沒有鍵按下跳到返回。如果為1則有鍵按下,因?yàn)榘聪骆I有抖動(dòng),所以調(diào)用去抖

26、延時(shí)程序在穩(wěn)定期時(shí)在掃描是否有鍵按下有則去鍵值給B將F0按鍵標(biāo)志置一,在K_RET將P3口用ORL置一讀取P3口給A去反A如果為0則有鍵釋放返回主程序,如果為1則無按鍵釋放跳回K_RET循環(huán)檢測是否有按鍵按下。</p><p><b>  延時(shí)去抖流程圖</b></p><p><b>  圖五延時(shí)去抖流程圖</b></p><

27、;p><b>  功能說明:</b></p><p>  根據(jù)圖五編輯20ms去抖延時(shí)程序,先給R7和R6復(fù)值然后先給內(nèi)循環(huán)R6減1,一直減到R6等0即在給外循環(huán)R7減1,如果沒到0即跳回D1,當(dāng)R7=0時(shí)返回。</p><p>  公式=1us*2*100*100=20ms</p><p>  2.4功能鍵處理流程圖</p>

28、<p>  圖三功能鍵處理流程圖</p><p>  功能說明:根據(jù)圖三編寫功能鍵流程圖,當(dāng)ACC.2為1跳第一個(gè)按鍵處理:看是啟動(dòng)標(biāo)志否為1?不為1則給其置1啟動(dòng)。為1則跳D40復(fù)位啟動(dòng)標(biāo)志。其他標(biāo)志復(fù)位然后返回, ACC.2為0順序執(zhí)行。當(dāng)ACC.3為1跳第二個(gè)按鍵處理:看左移標(biāo)志是否為1,為1則跳到D30給左循環(huán)流動(dòng)標(biāo)志復(fù)位和UpDown置1,給其他標(biāo)志復(fù)位返回。為0則給左移置1,表示為左移。

29、YUAN復(fù)位把右循環(huán)標(biāo)志置1給返回。ACC.3為0則順序執(zhí)行。ACC.4為1跳到第三個(gè)按鍵處理:把全亮全滅標(biāo)志和交叉點(diǎn)亮置1,給UpDown復(fù)位返回。ACC.4為0則順序執(zhí)行ACC.5為1則跳到第四個(gè)按鍵處理:把updown復(fù)位,把YAUN置1和把全亮全滅復(fù)位返回。ACC.5為0則返回主程序。</p><p> ?。?5顯示彩燈流程圖</p><p>  圖四顯示彩燈流動(dòng)程序流程圖<

30、/p><p>  功能說明:根據(jù)圖四編寫匯編程序,通過功能鍵處理程序可知道當(dāng)按下第一個(gè)鍵將給啟動(dòng)鍵置1其他復(fù)位就從LAPM跳轉(zhuǎn)LAMPSTART把0FE給P1口顯示第一盞燈亮說明啟動(dòng)了在按下第一個(gè)鍵因?yàn)镽0加1了所以跳轉(zhuǎn)D40給啟動(dòng)標(biāo)志復(fù)位在LAMP給P1復(fù)位燈滅返回。當(dāng)啟動(dòng)后按下第二個(gè)鍵給給左置一跳到D50把執(zhí)行單燈向左移動(dòng)程序把左后的A給LAPCODE保證反方向流動(dòng)時(shí)可以從原來的狀態(tài)然后在為了能看的清楚調(diào)用延時(shí)程

31、序返回,在次按下第二個(gè)鍵時(shí)因?yàn)榍懊婀δ芴幚沓绦蚪oR1加1跳到D30給左移標(biāo)志復(fù)位執(zhí)行向右單燈流動(dòng)程序返回。但第三個(gè)鍵按下時(shí)給YUAN和QUAN置1其他標(biāo)志復(fù)位既跳轉(zhuǎn)到D80在跳轉(zhuǎn)到D90執(zhí)行全亮全滅的程序把D20給A在取反A給P1和D20記住當(dāng)前的狀態(tài),調(diào)用延時(shí)程序返回。當(dāng)?shù)谒膫€(gè)鍵按下時(shí)給YAUN置1,把其他標(biāo)志復(fù)位,既執(zhí)行交叉點(diǎn)亮程序把D10給A取反A給P1和D10,調(diào)用延時(shí)程序返回,結(jié)束。</p><p>&

32、lt;b>  延時(shí)流程圖</b></p><p><b>  圖六延時(shí)流程圖</b></p><p>  功能說明:因?yàn)槿ザ堆訒r(shí)用大了R7、R6所以一開始入棧保護(hù)現(xiàn)場,R7、R6、R5復(fù)值,將R5減1如果沒有到0則跳D53循環(huán)R5=0給R6減1看R6到0了嗎,沒有到則 跳到D52循環(huán),到0了則給R7減1,看到0了嗎?沒到則跳D51循環(huán),如果R5=0則

33、出棧,返回。</p><p>  10秒延時(shí) 公式=100*250*200*2*1us=10ms</p><p><b>  2.6代碼實(shí)現(xiàn)</b></p><p>  UpDown BIT 00H ;右循環(huán)標(biāo)志</p><p>  StartEnd BIT 01H ;起動(dòng)及停止標(biāo)志<

34、/p><p>  YUAN BIT 02H ;全亮全滅標(biāo)志</p><p>  QUAN BIT 03H ;交叉點(diǎn)亮標(biāo)志</p><p>  ZUOYI BIT 04H ;左右循環(huán)標(biāo)志

35、 </p><p>  LAMPCODE EQU 21H ;存放流動(dòng)的數(shù)據(jù)代碼</p><p>  D10 EQU 22H</p><p>  D20 EQU 23H</p><p>  ORG 0000H

36、 </p><p>  AJMP MAIN</p><p>  ORG 0030H</p><p>  MAIN: ;主程序</p><p>  MOV SP,#5FH ;設(shè)置堆棧指針初值</p>

37、<p>  MOV P1,#00H ;P1初始化</p><p>  CLR UpDown ;啟動(dòng)時(shí)處于向上的狀態(tài)</p><p>  CLR StartEnd ;標(biāo)志位初始化</p><p>  CLR YUAN</p>

38、<p>  CLR QUAN</p><p>  CLR ZUOYI </p><p>  MOV D10,#55H ;交叉點(diǎn)亮燈流動(dòng)代</p><p><b>  碼</b></p><p>  MOV D20,#00H

39、 ;全亮全滅燈流動(dòng)代碼</p><p>  MOV LAMPCODE,#01H ;單燈流動(dòng)的代碼 </p><p>  MOV R0,#00H ;軟件記數(shù)清零</p><p>  MOV R1,#00H ;軟件記數(shù)清零</p

40、><p><b>  LOOP: </b></p><p>  ACALL KEY ;調(diào)用鍵盤程序</p><p>  JNB F0,LNEXT ;如果無鍵按下,則繼續(xù)</p><p>  ACALL KEYPROC ;否則調(diào)用鍵盤處理程序</p><p&

41、gt;<b>  LNEXT: </b></p><p>  ACALL LAMP ;調(diào)用燈顯示程序</p><p>  AJMP LOOP ;反復(fù)循環(huán),主程序到此結(jié)束</p><p>  DELAY: ;去抖延時(shí)程序</p&

42、gt;<p>  MOV R7,#100 ;將R7復(fù)初值</p><p>  D1: MOV R6,#100 ;將R6復(fù)初值</p><p>  DJNZ R6,$ ;當(dāng)R6循環(huán)100次跳到本身行</p><

43、p>  DJNZ R7,D1 ;R7循環(huán)10次跳到D1重新循環(huán)</p><p>  RET ;返回</p><p><b>  KEYPROC:</b></p><p>  MOV A,B ;從B寄

44、存器中獲取鍵值</p><p>  JB ACC.2,KeyD30 ;分析鍵的代碼,某位被按下,則該位為1</p><p>  JB ACC.3,KeyD50</p><p>  JB ACC.4,KeyD60</p><p>  JB ACC.5,KeyD70</p>

45、<p>  AJMP KEY_RET</p><p>  KeyD30: ;第一個(gè)鍵按下后的處理</p><p>  jb StartEnd,d40 ;如果啟動(dòng)標(biāo)志為0則啟動(dòng)</p><p>  setb StartEnd

46、 ;啟動(dòng)標(biāo)志置1</p><p>  clr zuoyi ;復(fù)位其他標(biāo)志位</p><p>  clr yuan</p><p>  clr quan</p><p>  AJMP KEY_RET ;返回<

47、/p><p><b>  D40: </b></p><p>  clr StartEnd ;復(fù)位StartEnd,</p><p>  clr zuoyi ;復(fù)位其他標(biāo)志位 </p><p>  CLR YUAN

48、 </p><p>  clr updown</p><p>  AJMP KEY_RET ;返KeyD50: ;第二個(gè)鍵按下后的處理</p><p>  jb ZUOYI,d30

49、 ;如果左移標(biāo)志為0 </p><p>  setb ZUOYI ;則左移標(biāo)志為1</p><p>  CLR YUAN ;復(fù)位YUAN標(biāo)志位</p><p>  SETB UpDown ;給UpDown置1</p&g

50、t;<p>  AJMP KEY_RET</p><p>  D30: ;否則跳轉(zhuǎn)到D30</p><p>  clr ZUOYI ;給ZUOYI置1</p><p>  CLR YUAN

51、 ;復(fù)位YUAN標(biāo)志位</p><p>  SETB UpDown ;給UpDown置1</p><p>  AJMP KEY_RET ;返回</p><p>  KeyD60: ;第三個(gè)鍵按下后的處理</p>

52、<p>  SETB YUAN ;將YUAN置1</p><p>  CLR UpDown ;復(fù)位UpDown</p><p>  SETB QUAN ;將QUAN置1</p><p>  AJMP

53、 KEY_RET ;返回</p><p>  KeyD70: ;第四個(gè)鍵按下后的處理</p><p>  clr updown ;將updown復(fù)位</p><p>  SETB YUAN

54、 ;將YUAN置1</p><p>  CLR QUAN ;將QUAN復(fù)位</p><p><b>  KEY_RET:</b></p><p>  RET ;返回</p><p

55、>  KEY: ;鍵盤掃描程序</p><p>  CLR F0 ;清F0,表示無鍵按下。</p><p>  ORL P3,#00111100B ;將P3口的接有鍵的四位置1</p><p>  MOV A,P3

56、 ;取P3的值</p><p>  ORL A,#11000011B ;將其余4位置1</p><p>  CPL A ;取反</p><p>  JZ Key_RET1 ;如果為0則一定無鍵按下</p><p>  ACALL DELAY ;否

57、則延時(shí)去鍵抖</p><p>  ORL P3,#00111100B ;去抖后再次檢測有無按鍵按下</p><p>  MOV A,P3</p><p>  ORL A,#11000011B</p><p><b>  CPL A</b></p>

58、<p>  JZ K_RET</p><p>  MOV B,A ;確實(shí)有鍵按下,將鍵值存入B中</p><p>  SETB F0 ;設(shè)置有鍵按下的標(biāo)志</p><p>  K_RET: ;鍵盤釋放程序</p>

59、<p>  ORL P3,#00111100B ;此處循環(huán)等待鍵的釋放</p><p>  MOV A,P3</p><p>  ORL A,#11000011B</p><p><b>  CPL A</b></p><p>  JZ K_RE

60、T1 ;直到讀取的數(shù)據(jù)取反后為0說明鍵釋放了,才從鍵盤處理程序中返回</p><p>  AJMP K_RET</p><p><b>  K_RET1: </b></p><p>  Key_RET1: ;返回</p><p><b&

61、gt;  RET</b></p><p>  ;----------------------------------- </p><p>  D500MS: ;流水燈的延遲時(shí)間</p><p>  PUSH PSW ;入棧</p><p> 

62、 SETB RS0</p><p>  MOV R7,#10 ;給R7復(fù)初值</p><p><b>  D51:</b></p><p>  MOV R6,#250 ;給R6復(fù)初值</p><p><b>  D52:

63、 </b></p><p>  MOV R5,#200 ;給R5復(fù)初值</p><p><b>  D53: </b></p><p>  DJNZ R5,D53 ;R5減1到0則跳D53</p><p>

64、;  DJNZ R6,D52 ;R6減1到0則跳D52</p><p>  DJNZ R7,D51 ;R7減1到0則跳D51</p><p>  POP PSW ;出棧</p><p>  RET

65、 ;返回</p><p><b>  LAMP:</b></p><p>  JB StartEnd,LampStart ;如果StartEnd=1,則啟動(dòng)</p><p>  MOV P1,#00H ;否則停止</p&g

66、t;<p>  mov lampcode,#01h</p><p>  clr zuoyi </p><p>  AJMP LAMPRET ;返回</p><p>  LampStart: ;啟動(dòng)程序</p>

67、<p>  JB UpDown,LAMPUP ;如果UpDown=1,則向右流動(dòng)</p><p>  jB YUAN,D80 ;如果YUAN=1,則全亮全滅流動(dòng)</p><p>  MOV P1,#01H ;啟動(dòng)是P1。1燈亮</p><p>

68、;  AJMP LAMPRET ;返回</p><p>  LAMPUP: ;燈向右流動(dòng)程序</p><p>  JB ZUOYI,D50 ;如果ZUOYI=1,則向左流動(dòng)</p><p>  MOV A

69、,LAMPCODE ;將單燈流動(dòng)給A</p><p>  RR A ;右移A</p><p>  MOV LAMPCODE,A ;將變化的A值給LAMPCODE</p><p>  MOV P1,A ;將

70、A給P1</p><p>  LCALL D500MS ;延時(shí)程序</p><p>  AJMP LAMPRET ;返回</p><p>  D50: ;向左流動(dòng)程序</p><p>

71、;  MOV A,LAMPCODE ;將單燈流動(dòng)給A</p><p>  RL A ;左移A</p><p>  MOV P1,A ;將A給P1</p><p>  MOV LAMPCODE,A

72、 ;將變化的A值給LAMPCODE</p><p>  LCALL D500MS ;延時(shí)程序</p><p>  AJMP LAMPRET ;返回</p><p>  D80: ;

73、交叉點(diǎn)亮程序</p><p>  JB QUAN,D90 ;如果QUAN=1,則全亮程序</p><p>  MOV A,D10 ;把交叉點(diǎn)亮代碼給A</p><p>  CPL A ;取反</p>

74、;<p>  MOV D10,A ;在將A給D10</p><p>  MOV P1,A ;將A給P1</p><p>  LCALL D500MS ;延時(shí)程序</p><p>  ajmp LA

75、MPRET ;返回</p><p>  D90: ;全亮全滅程序</p><p>  MOV A,D20 ;把全亮代碼給A</p><p>  CPL A

76、 ;取反</p><p>  MOV D20,A ;在將A給D20</p><p>  MOV P1,A ;將A給P1</p><p>  LCALL D500MS ;延時(shí)程序</p><

77、p>  LAMPRET: ;返回</p><p><b>  RET</b></p><p>  END ;結(jié)束 </p><p>  第3章 仿真與調(diào)試&

78、lt;/p><p><b>  3.1調(diào)試步驟</b></p><p><b> ?、僭次募慕ⅲ?lt;/b></p><p>  啟動(dòng)Keil軟件,選擇File→New,輸入源程序,輸入完畢后,選擇File→Save,并給該文件取名TXIT.ASM保存起來。</p><p><b>  ②工程

79、的建立</b></p><p>  選擇Project→New Project,然后建立名為200的工程文件,并保存。一般把工程和源文件放在同一個(gè)文件夾中。注意不用加拓展名。然后選擇Atmel公司的89S51,點(diǎn)擊確定。選擇好后返回到主界面此時(shí)功能已建立,然后單擊工程管理窗口Target 1下的Source Group 1使其反白顯示,然后右擊鼠標(biāo),在出現(xiàn)的快捷菜單中選擇其中的Add File to

80、Group ‘Source Group 1’項(xiàng),在“文件類型”下拉列表框中選擇Asm Source file(*.a*;*.src)項(xiàng),這時(shí)會(huì)將文件下的*.asm文件顯示出來。雙擊要加入的文件名或者單擊要加入的文件名后單擊Add按鈕,將這個(gè)文件加入到工程中。</p><p><b>  ③工程的設(shè)置</b></p><p>  選擇Project→Option for

81、 target’target 1’,打開Debug選項(xiàng)卡后,在左側(cè)最下面的Parameter文本框中輸入“-dledkey”,單擊“確定”關(guān)閉對話框。</p><p><b> ?、芫幾g、鏈接</b></p><p>  設(shè)置好工程后,即可進(jìn)行編譯鏈接。按F7匯編、鏈接以獲得目</p><p>  標(biāo)文件,然后選擇Debug→Start/Sto

82、p Debug菜單項(xiàng)或快捷鍵Ctrl+F5進(jìn)入調(diào)試狀態(tài)。選擇Peripherals→“鍵盤顯示實(shí)驗(yàn)仿真板”,再單擊“運(yùn)行”按鈕即可開始運(yùn)行。</p><p>  在沒有按第一個(gè)鍵P3.2時(shí),按其他任何一個(gè)結(jié)果彩燈沒有現(xiàn)象。</p><p>  按下第一個(gè)鍵P3.2后,亮一棧P1.1所接的彩燈亮,其他的燈滅。</p><p>  在按下一個(gè)鍵P3.2后,燈全滅。<

83、;/p><p>  按下P3.2后看到一盞燈后在按第二個(gè)鍵P3.3后彩燈單燈向左流動(dòng),在按下該鍵彩燈單燈向右流動(dòng),在按下該鍵彩燈單燈向左移動(dòng)。</p><p>  按下第三個(gè)按鍵P3.4后彩燈由單向流動(dòng)變?yōu)槿寥珳缃惶媪痢?lt;/p><p>  按下第四個(gè)按鍵P3.5后彩燈由全亮全滅交替亮變?yōu)榻徊嫜h(huán)點(diǎn)亮。</p><p>  按下P3.2后所有的

84、燈滅。</p><p><b>  3.2錯(cuò)誤處理</b></p><p>  接到老師發(fā)的課程設(shè)計(jì)后我按著書和自己的思路編寫程序編寫后進(jìn)行軟件仿真調(diào)試發(fā)現(xiàn)當(dāng)按下第二個(gè)鍵時(shí)所有沒有左右循環(huán),出現(xiàn)了全亮全滅與交叉流動(dòng)一起出現(xiàn)我按下停止鍵進(jìn)行單步運(yùn)行,一步一走,到了顯示程序我看到黃色的箭頭在左右單燈流動(dòng)沒有返回直接跳到全亮全滅的程序,我在程序最后添加了AJMP LA

85、MPRET后,在點(diǎn)編輯連接后進(jìn)入調(diào)試狀態(tài)點(diǎn)運(yùn)行就可以實(shí)現(xiàn)各按鍵控制相應(yīng)的程序不會(huì)出現(xiàn)剛才的現(xiàn)象。但是我發(fā)現(xiàn)按完第一個(gè)鍵停止后在按第一個(gè)鍵運(yùn)行在按第二個(gè)鍵左右流動(dòng)時(shí)不是從開始流動(dòng)而是從上次停止時(shí)的地方流動(dòng),在停止的程序給R1清零,在進(jìn)行調(diào)試就可以從初始狀態(tài)流動(dòng),經(jīng)過處理仿真結(jié)果基本符合設(shè)計(jì)要求。</p><p><b>  3.3仿真結(jié)果</b></p><p>  仿

86、真結(jié)果基本可以達(dá)到任務(wù)要求。</p><p>  當(dāng)啟動(dòng)鍵(P3.2)沒按時(shí)按任何鍵LED無任何變化。</p><p>  按第二個(gè)鍵(P3.3)時(shí)向左流動(dòng),在按下向右流動(dòng)</p><p>  按第三個(gè)鍵(P3.4)時(shí)LED燈變化為全亮全滅。</p><p>  按第四個(gè)鍵(P3.5)時(shí)LED馬上變化為交叉循環(huán)電亮。</p>&

87、lt;p>  在按下第二鍵、第三個(gè)鍵LED顯相應(yīng)彩燈變化。按下第一個(gè)鍵燈全滅實(shí)現(xiàn)LED停止。</p><p><b>  第4章 設(shè)計(jì)體會(huì)</b></p><p>  通過這次課程設(shè)計(jì),讓我學(xué)習(xí)到了很多知識(shí)以及認(rèn)識(shí)到了很多問題。同時(shí)我意識(shí)到一個(gè)很重要的問題,那就是課程設(shè)計(jì)之前的準(zhǔn)備工作也是很重要的,包括提前預(yù)習(xí)設(shè)計(jì)的課題,上網(wǎng)和去圖書館查閱資料。我清楚的知道了

88、,資料也是那么重要,否則在一個(gè)新穎的題目前,你將無從下手。通過準(zhǔn)備工作,這樣可以保證在設(shè)計(jì)的時(shí)候,有了充足的準(zhǔn)備,使的自己不會(huì)在真正要開始課程設(shè)計(jì)的時(shí)候,對著題目發(fā)呆,沒有什么進(jìn)展,因此,我覺得這個(gè)也是對待學(xué)習(xí)的一種好的態(tài)度,以后在學(xué)習(xí)中,也要一直以這種好的態(tài)度對待。除次之外,讓我發(fā)現(xiàn)這次的鍵控彩燈設(shè)計(jì)對與我以前的學(xué)習(xí)單片機(jī)等知識(shí),不僅是一次很好的運(yùn)用,而且讓我在次花心思去復(fù)習(xí)了以前學(xué)習(xí)的知識(shí)點(diǎn),運(yùn)用之處相互結(jié)合知識(shí)點(diǎn),使的知識(shí)點(diǎn)可以聯(lián)

89、系起來,對我的學(xué)習(xí)有了很大的好出。在程序設(shè)計(jì)過程中,也遇到了好多問題,通過我和同學(xué)的思考和自己的努力,經(jīng)過多次的修改以后終于在仿真軟件中完成鍵控彩燈的基本功能。</p><p>  總的來說,這次設(shè)計(jì)獲益勝多,因?yàn)楸敬握n程設(shè)計(jì)是一個(gè)團(tuán)隊(duì)的合作,所以,不僅使得我們的團(tuán)結(jié)合作,學(xué)習(xí)到了知識(shí),還讓我們更加的學(xué)會(huì)溝通。不僅培養(yǎng)了實(shí)踐能力,還培養(yǎng)了設(shè)計(jì)思維。在摸索該如何設(shè)計(jì)電路使之實(shí)現(xiàn)所需功能的過程,鍛煉餓運(yùn)用所學(xué)知識(shí)的靈

90、活性,加深了對知識(shí)的理解及提高了解決問題的能力。在體會(huì)到設(shè)計(jì)電路的艱辛的同時(shí),更體會(huì)到成功的喜悅和快樂。</p><p>  對于這次課程設(shè)計(jì),首先最要感謝就是我們的江西機(jī)電學(xué)院,這是他提供了這次實(shí)踐的機(jī)會(huì),讓我們有了鍛煉的機(jī)會(huì),有了進(jìn)一步學(xué)習(xí)和鞏固所學(xué)習(xí)的知識(shí)點(diǎn)。</p><p>  當(dāng)然我還要感謝的就是這次擔(dān)任我單片機(jī)課程設(shè)計(jì)的指導(dǎo)老師萬長征,他每天都會(huì)來我們的課程設(shè)計(jì)教室,指導(dǎo)我們設(shè)

91、計(jì),對于我們在課程設(shè)計(jì)中遇到問題,他總是回很認(rèn)真的幫助我們解答疑難,在旁邊一遍有一遍,知道我弄懂為止,真的十分感謝!</p><p>  為此我將努力學(xué)習(xí),不斷充實(shí)自己的大腦,努力奮斗?。?!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 周堅(jiān). 單片機(jī)項(xiàng)目教程. 北京航空航天大學(xué)出版社 2008.6 ISB97

92、8 – 7 – 81124 – 310 – 9 </p><p>  [2] 王效華,張?jiān)伱? 單片機(jī)原理與應(yīng)用. 北京交通大學(xué)出版社 2007.6 ISBN978 – 7 – 81123 – 011 – 6 </p><p>  [3] 李廣弟. 單片機(jī)基礎(chǔ). 北京航空航天大學(xué)出版社 2007.6 ISBN978 – 7 – 81077 – 837 – 4 </p>

93、;<p>  [4] 羅偉. 單片機(jī)應(yīng)用. 人民郵電出版社 2010.4 ISBN978 – 7 – 11517 – 101 – 6 </p><p>  [5] 王文海. 單片機(jī)應(yīng)用與實(shí)踐項(xiàng)目化教程. 化學(xué)工業(yè)出版社 2010.7.1 ISBN978 – 7 12208 – 250 – 3 </p><p>  [6] 萬隆. 單片機(jī)原理及應(yīng)用技術(shù). 清華大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論