版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機(jī)課程設(shè)計報告</b></p><p><b> 相關(guān)說明</b></p><p><b> ?。ㄒ唬┰O(shè)計目的</b></p><p> 熟悉51系列單片機(jī)的使用。</p><p><b> 熟悉匯編語言編程。</b>
2、;</p><p> 掌握單片機(jī)應(yīng)用系統(tǒng)的設(shè)計方法過程及實現(xiàn)。</p><p> ?。ǘ┰O(shè)計任務(wù)描述、要求</p><p><b> 鍵控彩燈系統(tǒng):</b></p><p> 鍵盤控制其運行及其停止。</p><p> 鍵盤控制其流水作業(yè)及流動方向。</p><p&g
3、t; 鍵盤控制其點亮方式 a.全亮全滅</p><p><b> b.交叉點亮</b></p><p><b> 成員分工情況:</b></p><p> 袁德:04組長??傇O(shè)計,將任務(wù)說明、框圖、功能模塊圖及相關(guān)說明分給成員,協(xié)助程序編輯和錯誤處理,查找資料心得體會。</p><p>
4、 湯躍:擔(dān)任軟件設(shè)計,根據(jù)功能模塊圖細(xì)分出流程圖編輯相應(yīng)程序與功能相關(guān)說明,查找資料。</p><p> 曾玉珍:擔(dān)任硬件設(shè)計,根據(jù)總框圖在DXP軟件中畫出原理圖、PCB板,查找資料。</p><p> 邱根:進(jìn)行WORD排版,與協(xié)助湯躍的軟件設(shè)計和查找資料。</p><p> 曹琦:對進(jìn)行編輯完的程序在仿真軟件上進(jìn)行仿真訓(xùn)練和錯誤處理。</p>
5、<p><b> 目錄</b></p><p> 第1章 硬件設(shè)計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è)計6</p><p> 2.1 功能模塊圖6</p><p> 2.2主控流程圖7</p><p> 2.3鍵盤檢測流程圖9</p><p> 2.4功能鍵處理流程圖13</p><p> ?。?5顯示彩燈流程圖15</p><p> 2.6代碼實現(xiàn)19&l
7、t;/p><p> 第3章 仿真與調(diào)試28</p><p> 3.1調(diào)試步驟28</p><p> 3.2錯誤處理30</p><p> 3.3仿真結(jié)果31</p><p> 第4章 設(shè)計體會32</p><p><b> 參考文獻(xiàn)34</b><
8、;/p><p><b> 第1章 硬件設(shè)計</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òu)成放大器,只要接上晶振和電容即可構(gòu)成完整的振蕩電器。晶振跨接于18 (XTAL2出)和19( XTAL1入)引腳之間,18和19引腳對地并聯(lián)兩只小電容,其中晶振可以使用12MHz的小臥式晶振,電容可在18~47pF之間取值,一般可以使用27pF的小磁片電容。</p><p> 復(fù)位電路:單片機(jī)上的9引腳(RST)是復(fù)位引腳,采用的是手
10、動復(fù)位,其中其中電容用10uF,而接到RST與地之間的電阻用10kΩ/Vpp引腳:31引腳為/Vpp,該引腳接地。</p><p> 鍵盤電路:單片機(jī)P3.2~P3.5引腳作為輸入使用,在軟件中將其置</p><p> 1.但按鍵沒有按下時,單片機(jī)引腳上為高電平:而當(dāng)按鍵按下去后,引腳接地,單片機(jī)引腳上為低電平。通過編程軟件(采用不斷查詢的方法)即可獲知是否有按鍵按下,按下是哪一個按鍵
11、。</p><p> 彩燈顯示: LED的陰極與單片機(jī)P1.0~P1.7引腳相連,陽極與+5V電源相連。當(dāng)P1口引腳接高電平時LED燈不亮,當(dāng)P1口引腳接低電平時LED燈亮。</p><p> 1.2 原理圖與PCB板圖</p><p><b> 功能說明:</b></p><p> 8個發(fā)光二管接8*470電阻
12、,接在P0口,將復(fù)位電路接在RST端,復(fù)位電路用到了手動復(fù)位,該電路的電阻值為1K,電容為C=10uF.</p><p> P3.2~P3.5接四個彈性按鍵,在按鍵前接上四個上拉電阻(4*1K),該單片機(jī)采用的晶振頻率為6HZ</p><p> 該電路用的兩個電容C=(5~30pF)EA接地采取片外ROM方式</p><p><b> PCB板圖&l
13、t;/b></p><p><b> 功能描述:</b></p><p> 同DXP軟件將圖二和圖三畫出來,在通過這些可以將其在電路板上進(jìn)行制做,實現(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、時鐘電路引腳XTAL1 和XTAL2</p><p> XTAL2(18腳):接外部晶體振蕩器的一端。片內(nèi)是一個振蕩電路反相放大器的輸出端
15、。</p><p> XTAL1(19腳):接外部晶體振蕩器的另一端。片內(nèi)是一個振蕩電路反相放大器的輸入端。</p><p> 3、控制信號RST/Vpd、ALE/(/PROG) 、/ PSEN和 (/EA)/Vpp</p><p> RST/Vpd(9腳):復(fù)位端。高電平有效,寬度在24個時鐘周期寬度以上,使單片機(jī)復(fù)位。該引腳有復(fù)用功能,Vpd為備用電源輸入
16、端,防止主電源掉電。</p><p> ALE/(/PROG)(30腳):地址鎖存信號端。訪問片外存貯器時,ALE作低八位地址的鎖存控制信號。平時不訪問片外存貯器時,該端以六分之一的時鐘振蕩頻率固定輸出脈沖。ALE端負(fù)載驅(qū)動能力為8個LSTTL門。該引腳有復(fù)用功能, 為片內(nèi)程序存貯器編程(固化)的編程脈沖輸入。</p><p> /PSEN(29腳):片外程序存貯器讀選通信號端。負(fù)載能
17、力為8LSTTL門。在讀外部ROM時PSEN低電平有效,以實現(xiàn)外部ROM單元的讀操作。 1、內(nèi)部ROM讀取時,PSEN不動作; 2、外部ROM讀取時,在每個機(jī)器周期會動作兩次; 3、外部RAM讀取時,兩個PSEN脈沖</p><p> 被跳過不會輸出; 4、外接ROM時,與ROM的OE腳相接。 </p><p> (/EA)/Vpp(31腳):</p><p>
18、 /EA端接高電平時,CPU取指令從片內(nèi)程序存貯器自動順延至片外程序存貯器。 /EA端接低電平時,CPU僅從片外程序存貯器取指令。該引腳有復(fù)用功能,Vpp為片內(nèi)程序存貯器編程時的編程電壓。 </p><p> 4、輸入/輸出引腳P1、和P3口</p><p> P1.0~P1.7(1~8腳): 8位準(zhǔn)雙向I/O口。負(fù)載能力為3個LSTTL門。P1口只做I/O口使用:其內(nèi)部有上拉電阻&
19、lt;/p><p> P3.0~P3.7(10~17腳):8位準(zhǔn)雙向I/O口。負(fù)載能力為3個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ù)器0外部輸入端)</p><p> P3.5(15腳): T1(定時器/計數(shù)器1外部輸入端)</p><p> P3.6(16腳): /WR(片外
21、數(shù)據(jù)存貯器寫選通信號輸出端)</p><p> P3.7(17腳): /RD(片外數(shù)據(jù)存貯器讀選通信號輸出端</p><p><b> 第2章 軟件設(shè)計</b></p><p><b> 2.1 功能模塊圖</b></p><p><b> 功能說明:</b><
22、/p><p> 鍵盤掃描模塊:就檢測是否按有鍵按下因按鍵是有抖動存在所一要掃描兩次</p><p> 以保正確實有按鍵按下然后在檢查是否有鍵的釋放。</p><p> 延時去抖模塊:因為有按鍵抖動的現(xiàn)象存在,且鍵盤抖動時間一般為5~10ms,抖動現(xiàn)象會引起CPU對一次鍵盤操作進(jìn)行多次處理,從而可能產(chǎn)生錯誤。所以實行軟件去抖消除抖動的影響。</p>&
23、lt;p> 主程序模塊圖:將個模塊連接起來并初始化。</p><p> 彩燈顯示模塊;流水燈模塊采用了8個LED發(fā)光二極管,通過代碼的編寫實現(xiàn)四中流水彩燈,本設(shè)計采用共陽極接法,將不同的初值給單片機(jī)就可以看到彩燈變化。</p><p> 延時模塊:為了能讓我們看的出彩燈變化的效果進(jìn)行延時,這樣就可以看到彩燈流動。</p><p><b> 2
24、.2主控流程圖</b></p><p><b> 圖一主程序流程圖</b></p><p> 功能說明:圖一主程序流程圖,編寫匯編主程序,開始給堆棧初始化,把P1復(fù)位也就讓彩燈一開始處于滅的狀態(tài),把所有標(biāo)志位復(fù)位,否則下次運行時容易出錯,。給流動代碼復(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按鍵清零,因為下面要讀P3口,所以先ORL給P3先寫1在將P3給A給其余四個位置1,取反A如果為則沒有鍵按下跳到返回。如果為1則有鍵按下,因為按下鍵有抖動,所以調(diào)用去抖
26、延時程序在穩(wěn)定期時在掃描是否有鍵按下有則去鍵值給B將F0按鍵標(biāo)志置一,在K_RET將P3口用ORL置一讀取P3口給A去反A如果為0則有鍵釋放返回主程序,如果為1則無按鍵釋放跳回K_RET循環(huán)檢測是否有按鍵按下。</p><p><b> 延時去抖流程圖</b></p><p><b> 圖五延時去抖流程圖</b></p><
27、;p><b> 功能說明:</b></p><p> 根據(jù)圖五編輯20ms去抖延時程序,先給R7和R6復(fù)值然后先給內(nèi)循環(huán)R6減1,一直減到R6等0即在給外循環(huán)R7減1,如果沒到0即跳回D1,當(dāng)R7=0時返回。</p><p> 公式=1us*2*100*100=20ms</p><p> 2.4功能鍵處理流程圖</p>
28、<p> 圖三功能鍵處理流程圖</p><p> 功能說明:根據(jù)圖三編寫功能鍵流程圖,當(dāng)ACC.2為1跳第一個按鍵處理:看是啟動標(biāo)志否為1?不為1則給其置1啟動。為1則跳D40復(fù)位啟動標(biāo)志。其他標(biāo)志復(fù)位然后返回, ACC.2為0順序執(zhí)行。當(dāng)ACC.3為1跳第二個按鍵處理:看左移標(biāo)志是否為1,為1則跳到D30給左循環(huán)流動標(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跳到第三個按鍵處理:把全亮全滅標(biāo)志和交叉點亮置1,給UpDown復(fù)位返回。ACC.4為0則順序執(zhí)行ACC.5為1則跳到第四個按鍵處理:把updown復(fù)位,把YAUN置1和把全亮全滅復(fù)位返回。ACC.5為0則返回主程序。</p><p> ?。?5顯示彩燈流程圖</p><p> 圖四顯示彩燈流動程序流程圖<
30、/p><p> 功能說明:根據(jù)圖四編寫匯編程序,通過功能鍵處理程序可知道當(dāng)按下第一個鍵將給啟動鍵置1其他復(fù)位就從LAPM跳轉(zhuǎn)LAMPSTART把0FE給P1口顯示第一盞燈亮說明啟動了在按下第一個鍵因為R0加1了所以跳轉(zhuǎn)D40給啟動標(biāo)志復(fù)位在LAMP給P1復(fù)位燈滅返回。當(dāng)啟動后按下第二個鍵給給左置一跳到D50把執(zhí)行單燈向左移動程序把左后的A給LAPCODE保證反方向流動時可以從原來的狀態(tài)然后在為了能看的清楚調(diào)用延時程
31、序返回,在次按下第二個鍵時因為前面功能處理程序給R1加1跳到D30給左移標(biāo)志復(fù)位執(zhí)行向右單燈流動程序返回。但第三個鍵按下時給YUAN和QUAN置1其他標(biāo)志復(fù)位既跳轉(zhuǎn)到D80在跳轉(zhuǎn)到D90執(zhí)行全亮全滅的程序把D20給A在取反A給P1和D20記住當(dāng)前的狀態(tài),調(diào)用延時程序返回。當(dāng)?shù)谒膫€鍵按下時給YAUN置1,把其他標(biāo)志復(fù)位,既執(zhí)行交叉點亮程序把D10給A取反A給P1和D10,調(diào)用延時程序返回,結(jié)束。</p><p>&
32、lt;b> 延時流程圖</b></p><p><b> 圖六延時流程圖</b></p><p> 功能說明:因為去抖延時用大了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秒延時 公式=100*250*200*2*1us=10ms</p><p><b> 2.6代碼實現(xiàn)</b></p><p> UpDown BIT 00H ;右循環(huán)標(biāo)志</p><p> StartEnd BIT 01H ;起動及停止標(biāo)志<
34、/p><p> YUAN BIT 02H ;全亮全滅標(biāo)志</p><p> QUAN BIT 03H ;交叉點亮標(biāo)志</p><p> ZUOYI BIT 04H ;左右循環(huán)標(biāo)志
35、 </p><p> LAMPCODE EQU 21H ;存放流動的數(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 ;啟動時處于向上的狀態(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 ;交叉點亮燈流動代</p><p><b> 碼</b></p><p> MOV D20,#00H
39、 ;全亮全滅燈流動代碼</p><p> MOV LAMPCODE,#01H ;單燈流動的代碼 </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: ;去抖延時程序</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: ;第一個鍵按下后的處理</p><p> jb StartEnd,d40 ;如果啟動標(biāo)志為0則啟動</p><p> setb StartEnd
46、 ;啟動標(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: ;第二個鍵按下后的處理</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: ;第三個鍵按下后的處理</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: ;第四個鍵按下后的處理</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、則延時去鍵抖</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 ;確實有鍵按下,將鍵值存入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: ;流水燈的延遲時間</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,則啟動</p><p> MOV P1,#00H ;否則停止</p&g
66、t;<p> mov lampcode,#01h</p><p> clr zuoyi </p><p> AJMP LAMPRET ;返回</p><p> LampStart: ;啟動程序</p>
67、<p> JB UpDown,LAMPUP ;如果UpDown=1,則向右流動</p><p> jB YUAN,D80 ;如果YUAN=1,則全亮全滅流動</p><p> MOV P1,#01H ;啟動是P1。1燈亮</p><p>
68、; AJMP LAMPRET ;返回</p><p> LAMPUP: ;燈向右流動程序</p><p> JB ZUOYI,D50 ;如果ZUOYI=1,則向左流動</p><p> MOV A
69、,LAMPCODE ;將單燈流動給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 ;延時程序</p><p> AJMP LAMPRET ;返回</p><p> D50: ;向左流動程序</p><p>
71、; MOV A,LAMPCODE ;將單燈流動給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 ;延時程序</p><p> AJMP LAMPRET ;返回</p><p> D80: ;
73、交叉點亮程序</p><p> JB QUAN,D90 ;如果QUAN=1,則全亮程序</p><p> MOV A,D10 ;把交叉點亮代碼給A</p><p> CPL A ;取反</p>
74、;<p> MOV D10,A ;在將A給D10</p><p> MOV P1,A ;將A給P1</p><p> LCALL D500MS ;延時程序</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 ;延時程序</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> 啟動Keil軟件,選擇File→New,輸入源程序,輸入完畢后,選擇File→Save,并給該文件取名TXIT.ASM保存起來。</p><p><b> ?、诠こ?/p>
79、的建立</b></p><p> 選擇Project→New Project,然后建立名為200的工程文件,并保存。一般把工程和源文件放在同一個文件夾中。注意不用加拓展名。然后選擇Atmel公司的89S51,點擊確定。選擇好后返回到主界面此時功能已建立,然后單擊工程管理窗口Target 1下的Source Group 1使其反白顯示,然后右擊鼠標(biāo),在出現(xiàn)的快捷菜單中選擇其中的Add File to
80、Group ‘Source Group 1’項,在“文件類型”下拉列表框中選擇Asm Source file(*.a*;*.src)項,這時會將文件下的*.asm文件顯示出來。雙擊要加入的文件名或者單擊要加入的文件名后單擊Add按鈕,將這個文件加入到工程中。</p><p><b> ③工程的設(shè)置</b></p><p> 選擇Project→Option for
81、 target’target 1’,打開Debug選項卡后,在左側(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菜單項或快捷鍵Ctrl+F5進(jìn)入調(diào)試狀態(tài)。選擇Peripherals→“鍵盤顯示實驗仿真板”,再單擊“運行”按鈕即可開始運行。</p><p> 在沒有按第一個鍵P3.2時,按其他任何一個結(jié)果彩燈沒有現(xiàn)象。</p><p> 按下第一個鍵P3.2后,亮一棧P1.1所接的彩燈亮,其他的燈滅。</p><p> 在按下一個鍵P3.2后,燈全滅。<
83、;/p><p> 按下P3.2后看到一盞燈后在按第二個鍵P3.3后彩燈單燈向左流動,在按下該鍵彩燈單燈向右流動,在按下該鍵彩燈單燈向左移動。</p><p> 按下第三個按鍵P3.4后彩燈由單向流動變?yōu)槿寥珳缃惶媪痢?lt;/p><p> 按下第四個按鍵P3.5后彩燈由全亮全滅交替亮變?yōu)榻徊嫜h(huán)點亮。</p><p> 按下P3.2后所有的
84、燈滅。</p><p><b> 3.2錯誤處理</b></p><p> 接到老師發(fā)的課程設(shè)計后我按著書和自己的思路編寫程序編寫后進(jìn)行軟件仿真調(diào)試發(fā)現(xiàn)當(dāng)按下第二個鍵時所有沒有左右循環(huán),出現(xiàn)了全亮全滅與交叉流動一起出現(xiàn)我按下停止鍵進(jìn)行單步運行,一步一走,到了顯示程序我看到黃色的箭頭在左右單燈流動沒有返回直接跳到全亮全滅的程序,我在程序最后添加了AJMP LA
85、MPRET后,在點編輯連接后進(jìn)入調(diào)試狀態(tài)點運行就可以實現(xiàn)各按鍵控制相應(yīng)的程序不會出現(xiàn)剛才的現(xiàn)象。但是我發(fā)現(xiàn)按完第一個鍵停止后在按第一個鍵運行在按第二個鍵左右流動時不是從開始流動而是從上次停止時的地方流動,在停止的程序給R1清零,在進(jìn)行調(diào)試就可以從初始狀態(tài)流動,經(jīng)過處理仿真結(jié)果基本符合設(shè)計要求。</p><p><b> 3.3仿真結(jié)果</b></p><p> 仿
86、真結(jié)果基本可以達(dá)到任務(wù)要求。</p><p> 當(dāng)啟動鍵(P3.2)沒按時按任何鍵LED無任何變化。</p><p> 按第二個鍵(P3.3)時向左流動,在按下向右流動</p><p> 按第三個鍵(P3.4)時LED燈變化為全亮全滅。</p><p> 按第四個鍵(P3.5)時LED馬上變化為交叉循環(huán)電亮。</p>&
87、lt;p> 在按下第二鍵、第三個鍵LED顯相應(yīng)彩燈變化。按下第一個鍵燈全滅實現(xiàn)LED停止。</p><p><b> 第4章 設(shè)計體會</b></p><p> 通過這次課程設(shè)計,讓我學(xué)習(xí)到了很多知識以及認(rèn)識到了很多問題。同時我意識到一個很重要的問題,那就是課程設(shè)計之前的準(zhǔn)備工作也是很重要的,包括提前預(yù)習(xí)設(shè)計的課題,上網(wǎng)和去圖書館查閱資料。我清楚的知道了
88、,資料也是那么重要,否則在一個新穎的題目前,你將無從下手。通過準(zhǔn)備工作,這樣可以保證在設(shè)計的時候,有了充足的準(zhǔn)備,使的自己不會在真正要開始課程設(shè)計的時候,對著題目發(fā)呆,沒有什么進(jìn)展,因此,我覺得這個也是對待學(xué)習(xí)的一種好的態(tài)度,以后在學(xué)習(xí)中,也要一直以這種好的態(tài)度對待。除次之外,讓我發(fā)現(xiàn)這次的鍵控彩燈設(shè)計對與我以前的學(xué)習(xí)單片機(jī)等知識,不僅是一次很好的運用,而且讓我在次花心思去復(fù)習(xí)了以前學(xué)習(xí)的知識點,運用之處相互結(jié)合知識點,使的知識點可以聯(lián)
89、系起來,對我的學(xué)習(xí)有了很大的好出。在程序設(shè)計過程中,也遇到了好多問題,通過我和同學(xué)的思考和自己的努力,經(jīng)過多次的修改以后終于在仿真軟件中完成鍵控彩燈的基本功能。</p><p> 總的來說,這次設(shè)計獲益勝多,因為本次課程設(shè)計是一個團(tuán)隊的合作,所以,不僅使得我們的團(tuán)結(jié)合作,學(xué)習(xí)到了知識,還讓我們更加的學(xué)會溝通。不僅培養(yǎng)了實踐能力,還培養(yǎng)了設(shè)計思維。在摸索該如何設(shè)計電路使之實現(xiàn)所需功能的過程,鍛煉餓運用所學(xué)知識的靈
90、活性,加深了對知識的理解及提高了解決問題的能力。在體會到設(shè)計電路的艱辛的同時,更體會到成功的喜悅和快樂。</p><p> 對于這次課程設(shè)計,首先最要感謝就是我們的江西機(jī)電學(xué)院,這是他提供了這次實踐的機(jī)會,讓我們有了鍛煉的機(jī)會,有了進(jìn)一步學(xué)習(xí)和鞏固所學(xué)習(xí)的知識點。</p><p> 當(dāng)然我還要感謝的就是這次擔(dān)任我單片機(jī)課程設(shè)計的指導(dǎo)老師萬長征,他每天都會來我們的課程設(shè)計教室,指導(dǎo)我們設(shè)
91、計,對于我們在課程設(shè)計中遇到問題,他總是回很認(rèn)真的幫助我們解答疑難,在旁邊一遍有一遍,知道我弄懂為止,真的十分感謝!</p><p> 為此我將努力學(xué)習(xí),不斷充實自己的大腦,努力奮斗?。?!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 周堅. 單片機(jī)項目教程. 北京航空航天大學(xué)出版社 2008.6 ISB97
92、8 – 7 – 81124 – 310 – 9 </p><p> [2] 王效華,張詠梅. 單片機(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)用與實踐項目化教程. 化學(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 彩燈單片機(jī)課程設(shè)計
- 單片機(jī)彩燈控制課程設(shè)計
- 單片機(jī)節(jié)日彩燈課程設(shè)計
- 單片機(jī)課程設(shè)計彩燈實驗
- 基于單片機(jī)課程設(shè)計--彩燈設(shè)計
- 基于單片機(jī)彩燈控制課程設(shè)計
- 單片機(jī)流水彩燈課程設(shè)計
- 單片機(jī)課程設(shè)計---簡易節(jié)日彩燈
- 單片機(jī)流水彩燈課程設(shè)計
- 單片機(jī)花樣彩燈課程設(shè)計報告
- 單片機(jī)課程設(shè)計---節(jié)日彩燈控制
- 單片機(jī)課程設(shè)計---單片機(jī)節(jié)日彩燈控制器
- 單片機(jī)課程設(shè)計:彩燈控制器設(shè)計
- 單片機(jī)課程設(shè)計---用單片機(jī)設(shè)計節(jié)日彩燈控制器
- 單片機(jī)課程設(shè)計--藝術(shù)彩燈控制系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計-- 彩燈控制器的設(shè)計
- 彩燈控制器的設(shè)計 單片機(jī)課程設(shè)計
- 單片機(jī)課程設(shè)計---藝術(shù)彩燈控制系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計--節(jié)日彩燈控制器設(shè)計
- 單片機(jī)課程設(shè)計--單片機(jī)動態(tài)控制64個彩燈
評論
0/150
提交評論