版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p><b> 資 料 袋</b></p><p> 電氣與信息工程學院 學院(系、部) 2011 ~ 2012 學年第 1 學期 </p><p> 課程名稱 單片機應(yīng)用系統(tǒng) 指導教師 職稱
2、 </p><p> 學生姓名 專業(yè)班級 學號 </p><p> 題 目 對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計 </p><p> 成 績 起止日期 2011 年 12 月 19 日~ 2011
3、 年 12 月 30 日</p><p> 目 錄 清 單</p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 2010 —2011 學年第 1 學期</p><p> 電氣與信息工程學院 學院(系、部) 專業(yè) 班級</p>&l
4、t;p> 課程名稱: 單片機應(yīng)用系統(tǒng) </p><p> 設(shè)計題目: 對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計 </p><p> 完成期限:自 2011 年 12 月 19 日至 2011 年 12 月 3
5、0 日共 2 周</p><p> 指導教師(簽字): 年 月 日</p><p> 系(教研室)主任(簽字): 年 月 日</p><p><b> ?。▎纹瑱C應(yīng)用系統(tǒng))</b></p>
6、<p><b> 設(shè)計說明書</b></p><p><b> 題目:</b></p><p> 起止日期: 2011 年 12 月 19 日 至 2011 年 12 月 30 日</p><p> 電氣與信息工程學院(部)</p><p><b> 年
7、 月 日</b></p><p><b> 一、設(shè)計任務(wù):</b></p><p> 1.1 外部脈沖自動計數(shù),自動顯示。</p><p> 1.1.1設(shè)計一個255計數(shù)器:0-255計數(shù),計滿后自動清0,重新計數(shù)(在數(shù)碼管中顯示)。</p><p> 1.1.2設(shè)計一個50000計數(shù)器:0-500
8、00計數(shù),計滿后自動清0,重新計數(shù)(在數(shù)碼管中顯示)。</p><p> 1.2 設(shè)計一個出租車計費系統(tǒng): </p><p> 起步價為5元(2km以內(nèi)),2km后,0.8元/0.5km;要求每500m刷新計費一次,在8位數(shù)碼管中,前3位顯示數(shù)碼管顯示里程數(shù),后3位數(shù)碼管顯示價錢(角,元,十元,百元)</p&
9、gt;<p> 注:要求首先采用PROTEUS完成單片機最小系統(tǒng)的硬件電路設(shè)計及仿真;程序仿真測試通過后,再下載到單片機實訓板上執(zhí)行。</p><p><b> 二、設(shè)計思路:</b></p><p><b> 1、255計數(shù)</b></p><p> 本設(shè)計采用計數(shù)器T0的工作方式2進行計數(shù),由頻率
10、為1Hz的時鐘提供外部脈沖,每接收一個脈沖,便計一個數(shù),直到加到了255后,再給一個脈沖就會回到0。要實現(xiàn)顯示,首先,用TH0除以64H(100D),所得到的商為百位上的數(shù),它會在右起第三個數(shù)碼管顯示;將余數(shù)除以0AH(10D),所得到的商為十位上的數(shù),它在右起的第二位顯示;這時候剩下的余數(shù)便是個位上的數(shù),在右起第一位顯示。</p><p> 本設(shè)計采用動態(tài)掃描:當需顯示百位上的數(shù)時,使百位對應(yīng)的段選入口為高電
11、平,且有短時間延時,然后掃描十位,這是使其段選入口為高電平,再進行延時,然后用同樣的方法掃描個位。由于延時的時間極短,肉眼分辨不出,所以感覺起來像同時亮,而實際是分開顯示的。</p><p><b> 2、50000計數(shù)</b></p><p> 本設(shè)計采用計數(shù)器T0的工作方式1進行計數(shù),外部脈沖仍為1Hz的時鐘。這個設(shè)計,我是這樣構(gòu)思的:首先將個位、十位、百位、
12、千位、萬位分別存放在5個寄存器里面,每加一個脈沖,首先判斷最低位是否為十,不為十自加一,為十的話,本位清零,下一位加一;然后再判斷下一位是否為十,不為十自加一,為十的話,本位清零,然后再往后一位加一,直到加到49999時,再給一個脈沖變5位都復位清零,實行新的循環(huán)。掃描方法同255計數(shù),仍為動態(tài),只是位數(shù)增加到5位。</p><p><b> 3、出租車計費器</b></p>
13、<p> 設(shè)計思路為:每加一個外部脈沖,就等于行走了100米,兩公里內(nèi)5元,所以里程數(shù)從0.0加至2.0時,價格為5.0元不變,當過了兩公里時,每多行走500米(0.5公里),金額增加0.8元</p><p> 三,PROTEUS仿真圖</p><p><b> 1、255計數(shù)</b></p><p><b> 2
14、、50000計數(shù)</b></p><p><b> 3、出租車計費器</b></p><p><b> 四、程序</b></p><p><b> 1、255計數(shù)</b></p><p><b> ORG 0000H</b></p
15、><p> SJMP START</p><p><b> ORG 000BH</b></p><p><b> AJMP T0</b></p><p> START: MOV TMOD,#06H ;設(shè)置計數(shù)器T0工作方式2</p><p> MOV
16、P1,#0 ;P1口清零</p><p> MOV TH0,#00H</p><p> MOV TL0,#00H ;初始化</p><p> MOV P3,#0 ;P3口清零</p><p> MOV DPTR,#TAB ;賦予查表首地址<
17、/p><p> SETB EA ;總中斷控制設(shè)為“1”</p><p> SETB ET0 ;T0中斷允許控制設(shè)為“1”</p><p> SETB TR0 ;打開T0開關(guān)</p><p> AAA: MOV A,TL0 ;
18、A賦初值</p><p> MOV B,#64H ;除數(shù)為100</p><p> DIV AB ;相除</p><p> MOV R0,B ;存余數(shù)</p><p> MOVC A,@A+DPTR ;查表</p&
19、gt;<p> MOV P2,A ;顯示百位的數(shù)字</p><p> SETB P1.2 ;選位</p><p> ACALL DELAY ;延時</p><p><b> CLR P1.2</b></p><p&g
20、t; MOV A,R0 ;將之先的余數(shù)賦A</p><p> MOV B,#0AH ;除數(shù)為10</p><p> DIV AB ;相除</p><p> MOV R1,B ;存余數(shù)</p><p> MO
21、VC A,@A+DPTR ;查表</p><p> MOV P2,A ;顯示十位的數(shù)字</p><p> SETB P1.1 ;選位</p><p> ACALL DELAY ;延時</p><p><b> CLR
22、P1.1</b></p><p> MOV A,R1 ;個位數(shù)賦A</p><p> MOVC A,@A+DPTR ;查表</p><p> MOV P2,A ;顯示個位的數(shù)字</p><p> SETB P1.0
23、 ;位選</p><p> ACALL DELAY ;延時</p><p><b> CLR P1.0</b></p><p> T0: AJMP AAA</p><p> DELAY: MOV R7,#10 ;子延時程序</p><p&
24、gt; DE1:MOV R6,#50</p><p> DE2:DJNZ R6,DE2</p><p> DJNZ R7,DE1</p><p><b> RET</b></p><p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,
25、0C6H,0A1H,86H,8EH</p><p><b> 2、50000計數(shù)</b></p><p><b> ORG 0000H</b></p><p> SJMP START</p><p><b> ORG 000BH</b></p><p
26、><b> AJMP T0</b></p><p> START: MOV TMOD,#05H ; 用計數(shù)器T0工作方式1進行工作</p><p> MOV P1,#0 ; 將P1口置0</p><p> MOV TH0,#0FFH ;<
27、;/p><p> MOV TL0,#0FFH ; 計數(shù)器初始化,有一個脈沖即中斷</p><p> MOV P3,#0 ; 將P3口置0</p><p> CLR C ; C置0</p><p> MOV DPTR,#TAB
28、 ; 指針指向TAB</p><p> SETB EA ; 總中斷控制設(shè)為“1”</p><p> SETB ET0 ; T0中斷允許控制設(shè)為“1”</p><p> MOV R0,#0 ; 個位值清零</p>&
29、lt;p> MOV R1,#0 ; 十位值清零</p><p> MOV R2,#0 ; 百位值清零</p><p> MOV R3,#0 ; 千位值清零</p><p> MOV R4,#0 ; 萬位值清零
30、 </p><p> SETB TR0 ; 打開T0開關(guān)</p><p> ACALL T1 ; 顯示加等待中斷</p><p> T0: MOV TH0,#0FFH ;</p><p> MOV TL0,#0FFH
31、 ; 中斷將計數(shù)器初始化</p><p> INC R0 ; R0自加1</p><p> MOV A,R0 ; 將R0的值賦入A中</p><p> CJNE A,#10,AAA ; 比較A是否等于十,如果為十則進位,未滿十就繼續(xù)計數(shù)</
32、p><p> MOV R0,#0 ; R0置0</p><p> INC R1 ; 進位到十位</p><p> AAA: MOVC A,@A+DPTR ; 查表</p><p> MOV P2,A ;&
33、lt;/p><p> SETB P1.0 ; 顯示個位</p><p> ACALL DELAY ; 延時</p><p> CLR P1.0 ;</p><p> MOV A,R1 ; R1的值賦入
34、A中</p><p> CJNE A,#10,BBB ; 比較,是否進位</p><p> MOV R1,#0 ; 進位 R1置0</p><p> INC R2 ; 進位到百位</p><p> BBB: MOVC A,@A+DPTR
35、 ; 查表</p><p> MOV P2,A ;</p><p> SETB P1.1 ; 顯示十位</p><p> ACALL DELAY ; 延時</p><p> CLR P1.1
36、 ;</p><p> MOV A,R2 ; R2賦入百位</p><p> CJNE A,#10,CCC ; 比較,是否進位</p><p> MOV R2,#0 ; 進位,R2置0</p><p> INC R4
37、 ; 進位到千位</p><p> CCC: MOVC A,@A+DPTR ; 查表</p><p><b> MOV P2,A</b></p><p> SETB P1.2 ; 顯示百位</p><p> ACALL DELA
38、Y ; 延時</p><p><b> CLR P1.2</b></p><p> MOV A,R3 ; R3賦入A中</p><p> CJNE A,#10,DDD ; 比較,是否進位</p><p> MOV R3
39、,#0 ; 進位置0</p><p> INC R4 ; 進位到萬位</p><p> DDD: MOVC A,@A+DPTR ; 查表</p><p><b> MOV P2,A</b></p><p> SETB
40、 P1.3 ; 顯示千位</p><p> ACALL DELAY ; 延時</p><p><b> CLR P1.3</b></p><p> MOV A,R4 ; R4賦入A中</p><p> CJN
41、E A,#5,EEE ; 比較萬位是否到5</p><p> MOV R4,#0 ; 萬位到5時置0</p><p><b> MOV R3,#0</b></p><p> EEE: MOVC A,@A+DPTR ; 查表</p><p
42、> MOV P2,A ;</p><p> SETB P1.4 ; 顯示萬位</p><p> ACALL DELAY ; 延時</p><p><b> CLR P1.4</b></p><p><
43、;b> RETI</b></p><p> T1:MOV A,R0 ; 等待中斷時調(diào)用</p><p> MOVC A,@A+DPTR</p><p><b> MOV P2,A</b></p><p><b> SETB P1.0</b
44、></p><p> ACALL DELAY</p><p><b> CLR P1.0</b></p><p><b> MOV A,R1</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV P2,A</
45、b></p><p><b> SETB P1.1</b></p><p> ACALL DELAY</p><p><b> CLR P1.1</b></p><p><b> MOV A,R2</b></p><p> MOVC A,
46、@A+DPTR</p><p><b> MOV P2,A</b></p><p><b> SETB P1.2</b></p><p> ACALL DELAY</p><p><b> CLR P1.2</b></p><p><b&g
47、t; MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV P2,A</b></p><p><b> SETB P1.3</b></p><p> ACALL DELAY</p><p><b
48、> CLR P1.3</b></p><p><b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV P2,A</b></p><p><b> SETB P1.4</b></p&g
49、t;<p> ACALL DELAY</p><p><b> CLR P1.4</b></p><p><b> AJMP T1</b></p><p> DELAY:MOV R7,#10</p><p> DE1:MOV R6,#50</p><p&g
50、t; DE2:DJNZ R6,DE2</p><p> DJNZ R7,DE1</p><p><b> RET</b></p><p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH</p><p>
51、<b> 3、出租車計費系統(tǒng)</b></p><p><b> ORG 0000H</b></p><p> LJMP START</p><p><b> ORG 000BH</b></p><p><b> LJMP T0</b></p
52、><p> JIAO EQU 20H</p><p> YUAN EQU 21H</p><p> SHIY EQU 22H</p><p> BAIY EQU 23H</p><p> BAIMI EQU 24H</p><p> LI EQU 25H</p>&
53、lt;p> SHILI EQU 26H</p><p><b> ORG 2000H</b></p><p> START:MOV TMOD,#06H ;設(shè)置計數(shù)器T0工作方式2</p><p> MOV TH0,#0FFH ;</p><p> MOV TL0,#0F
54、FH ;初始化</p><p> SETB EA ;總中斷控制設(shè)為“1”</p><p> SETB ET0 ;T0中斷允許控制設(shè)為“1”</p><p> SETB TR0 ;打開TR0開關(guān)</p><p><b> C
55、LR JIAO</b></p><p> MOV YUAN,#5 ;從5元開始計費</p><p><b> CLR SHIY</b></p><p><b> CLR BAIY</b></p><p><b> CLR BAIMI</b&g
56、t;</p><p><b> CLR LI</b></p><p><b> CLR SHILI</b></p><p> MOV R0,#21 ;超過了兩公里換另一種計費方式</p><p> MOV DPTR,#TAB</p><p>
57、 A0: ACALL XS</p><p><b> AJMP A0</b></p><p> T0: INC BAIMI</p><p> DJNZ R0,H0</p><p> MOV R0,#5 ;每500米更新一次金額</p><p> B1: MOV
58、 A,JIAO</p><p> ADD A,#8 ;每次走500米,金額加0.8元</p><p> MOV JIAO,A</p><p> CJNE A,#10,Z0 ;比較是否滿十,滿十僅進位</p><p> MOV JIAO,#0</p><p>&l
59、t;b> INC YUAN</b></p><p><b> SJMP Z1</b></p><p><b> Z0: JC Z1</b></p><p> SUBB A,#10</p><p> MOV JIAO,A</p><p><b&
60、gt; INC YUAN</b></p><p> Z1: MOV A,YUAN</p><p> CJNE A,#10,Z2 ;比較是否滿十,滿十僅進位</p><p> MOV YUAN,#0</p><p><b> INC SHIY</b></p><
61、p> Z2: MOV A,SHIY</p><p> CJNE A,#10,H0 ;比較是否滿十,滿十僅進位</p><p> MOV SHIY,#0</p><p><b> INC BAIY</b></p><p> H0: MOV A,BAIMI</p><p
62、> CJNE A,#10,Y0 ;比較是否滿十,滿十僅進位</p><p> MOV BAIMI,#0</p><p><b> INC LI</b></p><p> Y0: MOV A,LI</p><p> CJNE A,#10,Z3 ;比較是否滿十,滿十僅進
63、位</p><p><b> MOV LI,#0</b></p><p><b> INC SHILI</b></p><p> Z3: ACALL XS</p><p><b> ZZZ: RETI</b></p><p> XS: MOV
64、A,JIAO </p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“角”</p><p> SETB P1.0 ; 位選</p><p><b> ACALL W1</b></p>
65、;<p><b> CLR P1.0</b></p><p> MOV A,YUAN</p><p> MOV DPTR,#TAB1</p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“元”</p><p&
66、gt; SETB P1.1 ;位選</p><p><b> ACALL W1</b></p><p><b> CLR P1.1</b></p><p> MOV DPTR,#TAB</p><p> MOV A,SHIY</p><p&
67、gt; MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“十元”</p><p> SETB P1.2 ;位選</p><p><b> ACALL W1</b></p><p><b> CLR P1.2<
68、;/b></p><p> MOV A,BAIY</p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“百元”</p><p> SETB P1.3 ;位選</p><p><b> ACA
69、LL W1</b></p><p><b> CLR P1.3</b></p><p> MOV A,BAIMI </p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“百米”(0.1公里)</p&
70、gt;<p> SETB P1.4 ;位選</p><p><b> ACALL W1</b></p><p><b> CLR P1.4</b></p><p> MOV DPTR,#TAB1</p><p><b> MOV A,
71、LI</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“公里數(shù)”</p><p> SETB P1.5 ;位選</p><p><b> ACALL W1</b></p>&l
72、t;p><b> CLR P1.5</b></p><p> MOV DPTR,#TAB</p><p> MOV A,SHILI</p><p> MOVC A,@A+DPTR</p><p> MOV P2,A ;顯示“十公里數(shù)”</p><p>
73、; SETB P1.6 ;位選</p><p><b> ACALL W1</b></p><p><b> CLR P1.6</b></p><p><b> RET</b></p><p> W1: MOV R7,#10</p&
74、gt;<p><b> DJNZ R7,$</b></p><p><b> RET</b></p><p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ; 共陽極數(shù)值碼</p><p> TAB1:DB 40H,79H,24H,30
75、H,19H,12H,02H,78H,00H,10H</p><p> 課程設(shè)計體會 本學期的17、18周,我們進行了單片機課程設(shè)計。本學期我們已開設(shè)單片機原理及設(shè)計這門課程,一開始,學的完全是理論,感覺著也是背,那也是背,很乏味,但是一些老師和學長學姐跟我講,單片機是一門很有用的課程,是以后嵌入式跟控制方向的基礎(chǔ),對畢業(yè)找工作非常有用,所以我還是靜下心來聽課。</p><p>
76、 到學期中期,我們開始單片機實驗課,從那一刻起,我便開始迷上了單片機,每當布置任務(wù),我就會迫不及待地回寢室開始動手,我享受坐在電腦前面設(shè)計程序。</p><p> 我原本以為課程設(shè)計會跟實驗差不多的難度,可當我開始做時,發(fā)現(xiàn)課程設(shè)計并不是那么簡單,找下手點不是那么容易,它把整學期的知識都融合在一起,從簡單的賦值,加減乘除,再到復雜的查表、中斷。查表的關(guān)鍵是A實現(xiàn)的變址。A會決定在表中查找的位置。由于計數(shù)器需要外
77、部脈沖,這就需要外部中斷來實現(xiàn),由于計數(shù)范圍不一樣,所以255計數(shù)與50000計數(shù)要用不同的工作方式,另外,由于中斷器不一樣,所置的入口地址也不一樣。</p><p> 然后,還需要硬件結(jié)合起來,包括芯片與外部器件。拿芯片來說,一開始,我將數(shù)碼管的七個接口接在P0口上,執(zhí)行程序后發(fā)現(xiàn)數(shù)碼管顯示不了,但是還是有電信號,后來我才想起P0口做通用I/0口需接上拉電阻。于是為了方便,我便接在P2口上。另外一種需要掌握的
78、是七段LED數(shù)碼管的顯示方法。多位七段LED數(shù)碼管有位選引腳跟段選引腳,在做動態(tài)掃描時,要注意不僅要讓數(shù)碼管顯示對應(yīng)的字符,而且需同時選中該位進行顯示,才能實現(xiàn)想要的功能。</p><p> 255計數(shù)是三個設(shè)計中最簡單的,我設(shè)計的時候采用工作方式2,就能很快把程序?qū)懗鰜?,若要說難點,也就是動態(tài)掃描那部分,在設(shè)計這一塊的時候,我也算是比較費勁了。寫完255計數(shù),我想著50000計數(shù)應(yīng)該只要稍微改一下就能做出來,
79、但是事實并非如此。因為計數(shù)范圍不同,工作方式不同,選的位數(shù)也不同,所以思路要轉(zhuǎn)換一下,最后還是做出來了。而出租車計費系統(tǒng)是在普通計數(shù)的基礎(chǔ)上修改的,因為它需要將金額跟里程數(shù)同時掃面顯示,而且里程數(shù)的計量會影響到金額的變動,所以程序也復雜一點。</p><p> 盡管我們在課堂學到的內(nèi)容很有限,但在以后的學習中單片機還需要好好的深入研究和學習,學好了單片機也就多了一項生存的本錢。最后感謝老師對我們的精心指導和幫助
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計---對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計
- 單片機課程設(shè)計---對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計
- 單片機課程設(shè)計--對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計
- 單片機課程設(shè)計報告---對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計
- 對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計課程設(shè)計
- 課程設(shè)計--對外部脈沖計數(shù)及出租車計費系統(tǒng)的設(shè)計
- 單片機課程設(shè)計---出租車計費系統(tǒng)
- 單片機課程設(shè)計--出租車計費系統(tǒng)
- 單片機課程設(shè)計---出租車計費系統(tǒng)
- 單片機課程設(shè)計--出租車計費系統(tǒng)
- 單片機課程設(shè)計-- 出租車計費系統(tǒng)
- 單片機課程設(shè)計---出租車計費系統(tǒng) (2)
- 單片機課程設(shè)計報告-- 出租車計費系統(tǒng)
- 單片機課程設(shè)計報告---- 出租車計費課程設(shè)計
- 單片機課程設(shè)計外部脈沖計數(shù)器
- 單片機課程設(shè)計——出租車計費器
- 基于單片機的出租車自動計費設(shè)計
- 基于單片機出租車計費器的設(shè)計
- 單片機課程設(shè)計--出租車計價器
- 微機原理單片機課程設(shè)計--出租車計價
評論
0/150
提交評論