版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機課程設(shè)計報告計算器一、設(shè)計目的1、進(jìn)一步熟悉89c51單片機外部引腳線路連接,掌握單片機全系統(tǒng)調(diào)試的過程及方法。2、通過計算器控制系統(tǒng)的設(shè)計,掌握矩陣式鍵盤的使用方法,和簡單程序的編寫,3、通過單片機課程設(shè)計,熟練掌握匯編語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力二、設(shè)計要求1、設(shè)計一個十六個按鍵的矩陣式計算器的模擬系統(tǒng)2、該系統(tǒng)具有加減乘除等功能。3、用proteus 7仿真工作的全過程,用protel 99se畫出原理圖及pcb圖4、有相應(yīng)的實物圖5、掌握44矩陣式鍵盤程序識別原理,掌握44矩陣式鍵盤按鍵的設(shè)計方法。三、設(shè)計分析圖()(1)行列式鍵盤的結(jié)構(gòu)用單片
2、機的并行口p1連接44矩陣鍵盤,并以單片機的p1.0p1.7各管腳作輸入線,以單片機的p2.0p2.7和p0.0p0.7各管腳作輸出線,在數(shù)碼管上顯示每個按鍵 “09”的序號。鍵盤中對應(yīng)按鍵的序號排列如圖()所示。數(shù)字0、1、2、3接x0;4、5、6、7接x1;8、9、10、11接x2;12、13、14、15接x3。即16個按鈕空接,即十六個鍵一端低電平,另一端接高電平;當(dāng)按下任意一個按鈕時顯示對應(yīng)數(shù)字。該系統(tǒng)可以實現(xiàn)四則運算,當(dāng)分別按下個數(shù)字,再按任意一個功能鍵即可實現(xiàn)相應(yīng)的運算。(2)按鍵的識別判斷鍵盤上有無按鍵閉合,先判斷行線x0x3輸出低電平“0”,然后判斷列線y0y3的狀態(tài),若為全1
3、,即列線全為高電平,說明鍵盤上沒有按鍵閉合,若y0y3不全為1,說明有鍵按下。(3)消抖處理當(dāng)判斷有鍵按下后,需要進(jìn)行消除抖動,這里使用了軟件方法即程序中采用時間延時0.5秒,待信號穩(wěn)定后再判別鍵盤的狀態(tài),若有鍵按下,則再進(jìn)行鍵號的計算。(4)判別鍵號先判斷行線x0x3是否有輸出低電平“0”,若有鍵按下,則相應(yīng)的列線也為低電平“0”,例如行線x1輸出為低電平“0”,且列線y2為低電平,即x1與y2相交的鍵被按下,進(jìn)行鍵號=行號*4+列號 的計算。 圖()(5)顯示結(jié)果圖顯示器接高電頻,左邊顯示器接.,右邊接.,當(dāng)按下一個數(shù)字時右顯示器顯示相應(yīng)的數(shù)字,按第個數(shù)字時左邊顯示器顯示相應(yīng)數(shù)字;當(dāng)進(jìn)行除
4、法運算時,除的的數(shù)據(jù)要看接口.接高還是低電頻,低電頻則結(jié)果為幾點幾,為高電頻則幾十幾。其它運算直接看數(shù)據(jù)即可。圖()(6)復(fù)位電路圖為復(fù)位電路,接at89c51上的rst接口,當(dāng)顯示器顯示數(shù)據(jù)時,按下16鍵時顯示器不顯示任何數(shù)據(jù)。如果進(jìn)行了某一運算后,若這時還要進(jìn)行運算時,可以直接按要進(jìn)行運算的鍵號。四、程序流程圖開始ap1口高4位置1送入p0顯示第二次鍵入的值掃描鍵盤再按一次鍵按下鍵? n加法?y調(diào)用延時0.5s子程序消除抖動y 減法? ny計算鍵入的值十進(jìn)制?n乘法? ny送入p2顯示第一次鍵入的值y除法? n y 按下鍵?十進(jìn)制,e、f?n n y調(diào)用延時0.5s子程序消除抖動 y 送出
5、結(jié)果p2顯示個位,p0顯示十位 計算鍵入的值返回十進(jìn)制? na y五、程序org 0000hl1:lcall scan mov 40h,32h ;將鍵號保存在40h mov r1,40h ;暫存在r1 lcall m0 lcall xy1 mov p0,#0ffh ;使p0口置1 lcall scan mov 41h,32h ;將鍵號保存在41h mov r1,41h ;暫存在r1 lcall m0 lcall xy2l2:lcall scan mov 42h,32h mov r7,42h cjne r7,#10d,l3 ;是否進(jìn)行加法運算 mov a,40h add a,41h mov b,
6、#10d div ab ;商存在a中即十位,余數(shù)存在b中即個位 cjne a,#00h,l8 ;判斷十位是否為0,不為0跳轉(zhuǎn) mov p0,#0ffh ;置1不顯示 ljmp l9l8:mov 32h,a lcall xy2 ;商非0則調(diào)用顯示十位數(shù)l9:mov 32h,b lcall xy1 ;調(diào)用顯示個位數(shù) ljmp l1 l3:cjne r7,#11d,l4 ;是否進(jìn)行減法運算 mov a,40h subb a,41h ;結(jié)果存在a jb acc.7,n1 ;判斷正負(fù) mov 32h,a mov p0,#0ffh lcall xy1 ;減法結(jié)果為正 ljmp l1 n1:mov p0,#
7、0bfh ;顯示負(fù)號 mov a,41h subb a,40h add a,#1d mov 32h,a lcall xy1 ;顯示結(jié)果 ljmp l1l4:cjne r7,#12d,l5 ;是否進(jìn)行乘法運算 mov a,40h mov b,41h mul ab ;結(jié)果存在a中 mov 50h,a mov b,#10d div ab ;商存在a中即十位,余數(shù)存在b中即個位 cjne a,#00h,l10 ;判斷十位是否為0,不為0跳轉(zhuǎn) mov p0,#0ffh ;置1不顯示 ljmp l11l10:mov 32h,a lcall xy2l11:mov 32h,b lcall xy1 ljmp l
8、1l5:cjne r7,#13d,l6 ;是否進(jìn)行除法運算 mov a,40h mov b,41h div ab ;x/y 除法 mov r6,b cjne r6,#00h,l12 ;判斷余數(shù)是否為0,不為0跳轉(zhuǎn) mov p0,#0ffh ;置1不顯示十位 mov 32h,a lcall xy1 ljmp l13l12:mov 32h,a lcall xy2 ;p0顯示小數(shù)點前的數(shù) clr p0.7 ;有小數(shù)點 mov a,b mov b,#10d mul ab ;余數(shù)的十倍 mov b,41h div ab ;余數(shù)的十倍再除以除數(shù) mov 32h,a ;結(jié)果保留小數(shù)點后一位 lcall xy
9、1 ;p2顯示小數(shù)點后的數(shù)l13:ljmp l1l6:cjne r7,#0d,l7 cjne r7,#1d,l7 ;屏蔽十進(jìn)制,實現(xiàn)加減乘除 cjne r7,#2d,l7 cjne r7,#3d,l7 cjne r7,#4d,l7 cjne r7,#5d,l7 cjne r7,#6d,l7 cjne r7,#7d,l7 cjne r7,#8d,l7 cjne r7,#9d,l7 cjne r7,#14d,l7 ;屏蔽e、f cjne r7,#15d,l7l7:ljmp l2scan:mov p1,#0f0h ;p1口高4位置1 jnb p1.4,y0 ;判斷y0列是否有鍵按下,有就跳至y0 j
10、nb p1.5,y1 jnb p1.6,y2 jnb p1.7,y3 ljmp scan ;無鍵按下繼續(xù)掃描 y0:mov 31h,#00h ;列線y0有鍵按下 mov p1,#0feh jnb p1.4,x0 ;判斷x0橫是否有鍵按下 mov p1,#0fdh jnb p1.4,x1 ;判斷x1橫是否有鍵按下 mov p1,#0fbh jnb p1.4,x2 ;判斷x2橫是否有鍵按下 mov p1,#0f7h jnb p1.4,x3 ;判斷x3橫是否有鍵按下 ljmp y0 ;返回繼續(xù)判斷 y1:mov 31h,#01h ;列線y1有鍵按下 mov p1,#0feh jnb p1.5,x0
11、mov p1,#0fdh jnb p1.5,x1 mov p1,#0fbh jnb p1.5,x2 mov p1,#0f7h jnb p1.5,x3 ljmp y1 y2:mov 31h,#02h ;列線y2有鍵按下 mov p1,#0feh jnb p1.6,x0 mov p1,#0fdh jnb p1.6,x1 mov p1,#0fbh jnb p1.6,x2 mov p1,#0f7h jnb p1.6,x3 ljmp y2 y3:mov 31h,#03h ;列線y3有鍵按下 mov p1,#0feh jnb p1.7,x0 mov p1,#0fdh jnb p1.7,x1 mov p1,
12、#0fbh jnb p1.7,x2 mov p1,#0f7h jnb p1.7,x3 ljmp y3 x0:mov 30h,#00h ;行線x0有鍵按下 lcall delay ;0.5s延時消除抖動 ljmp js ;跳轉(zhuǎn)鍵值計算程序 x1:mov 30h,#01h ;行線x1有鍵按下 lcall delay ljmp js x2:mov 30h,#02h ;行線x2有鍵按下 lcall delay ljmp js x3:mov 30h,#03h ;行線x3有鍵按下 lcall delay ljmp js js:mov a,30h ;計算鍵入的值 mov b,#04h mul ab add
13、a,31h mov 32h,a retxy1:mov a,32h mov dptr,#tab movc a,a+dptr mov p2,a ;顯示第一次按入的鍵號及結(jié)果的個位 retxy2:mov a,32h mov dptr,#tab movc a,a+dptr mov p0,a ;顯示第二次按入的鍵號及結(jié)果的十位 retdelay:mov r7,#100d ;延時0.5s子程序 del1:mov r6,#250d del2:mov r5,#10d djnz r5,$ djnz r6,del2 djnz r7,del1 rettab:db 0c0h,0f9h,0a4h,0b0h,99h,92h db 82h,0f8h,80h,90h,88h,83h db 0c6h,0a1h,86h,8eh,0ffh retm0:cjne r1,#10d,m1 ;僅實現(xiàn)十進(jìn)制的加減乘除運算 ljmp l1m1:cjne r1,#11d,m2 ljmp l1m2:cjne r1,#12d,m3 ljmp l1m3:cjne r1,#13d,m4 ljmp l1m4:cjne r1,#14d,m5 ljmp l1m5:cjne r1,#15d,m6 ljmp
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陶藝課程設(shè)計思路
- 音樂與影視同步課程設(shè)計
- 二零二五版辦公大樓智能化會議系統(tǒng)建設(shè)與維護(hù)協(xié)議2篇
- 2024年心理咨詢師之心理咨詢師基礎(chǔ)知識題庫帶答案(輕巧奪冠)
- 2025年度個人增強現(xiàn)實技術(shù)入股協(xié)議3篇
- 造價課程設(shè)計江蘇版
- 年度玻璃用助劑市場分析及競爭策略分析報告
- 年度自動造型線產(chǎn)業(yè)分析報告
- 專項施工方案的審核人
- 2025年度特種車輛轉(zhuǎn)讓及配套設(shè)備安裝服務(wù)合同3篇
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當(dāng)行業(yè)發(fā)展前景預(yù)測及融資策略分析報告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 動物醫(yī)學(xué)類專業(yè)生涯發(fā)展展示
- 批發(fā)面包采購合同范本
- 乘風(fēng)化麟 蛇我其誰 2025XX集團(tuán)年終總結(jié)暨頒獎盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(xué)(上)計算題專項練習(xí)匯編
- 中醫(yī)基礎(chǔ)理論課件
評論
0/150
提交評論