基于單片機(jī)的矩陣式鍵盤(pán)計(jì)數(shù)器設(shè)計(jì)課程設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的矩陣式鍵盤(pán)計(jì)數(shù)器設(shè)計(jì)課程設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的矩陣式鍵盤(pán)計(jì)數(shù)器設(shè)計(jì)課程設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的矩陣式鍵盤(pán)計(jì)數(shù)器設(shè)計(jì)課程設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的矩陣式鍵盤(pán)計(jì)數(shù)器設(shè)計(jì)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器一、設(shè)計(jì)目的1、進(jìn)一步熟悉89c51單片機(jī)外部引腳線路連接,掌握單片機(jī)全系統(tǒng)調(diào)試的過(guò)程及方法。2、通過(guò)計(jì)算器控制系統(tǒng)的設(shè)計(jì),掌握矩陣式鍵盤(pán)的使用方法,和簡(jiǎn)單程序的編寫(xiě),3、通過(guò)單片機(jī)課程設(shè)計(jì),熟練掌握匯編語(yǔ)言的編程方法,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力二、設(shè)計(jì)要求1、設(shè)計(jì)一個(gè)十六個(gè)按鍵的矩陣式計(jì)算器的模擬系統(tǒng)2、該系統(tǒng)具有加減乘除等功能。3、用proteus 7仿真工作的全過(guò)程,用protel 99se畫(huà)出原理圖及pcb圖4、有相應(yīng)的實(shí)物圖5、掌握44矩陣式鍵盤(pán)程序識(shí)別原理,掌握44矩陣式鍵盤(pán)按鍵的設(shè)計(jì)方法。三、設(shè)計(jì)分析圖()(1)行列式鍵盤(pán)的結(jié)構(gòu)用單片

2、機(jī)的并行口p1連接44矩陣鍵盤(pán),并以單片機(jī)的p1.0p1.7各管腳作輸入線,以單片機(jī)的p2.0p2.7和p0.0p0.7各管腳作輸出線,在數(shù)碼管上顯示每個(gè)按鍵 “09”的序號(hào)。鍵盤(pán)中對(duì)應(yīng)按鍵的序號(hào)排列如圖()所示。數(shù)字0、1、2、3接x0;4、5、6、7接x1;8、9、10、11接x2;12、13、14、15接x3。即16個(gè)按鈕空接,即十六個(gè)鍵一端低電平,另一端接高電平;當(dāng)按下任意一個(gè)按鈕時(shí)顯示對(duì)應(yīng)數(shù)字。該系統(tǒng)可以實(shí)現(xiàn)四則運(yùn)算,當(dāng)分別按下個(gè)數(shù)字,再按任意一個(gè)功能鍵即可實(shí)現(xiàn)相應(yīng)的運(yùn)算。(2)按鍵的識(shí)別判斷鍵盤(pán)上有無(wú)按鍵閉合,先判斷行線x0x3輸出低電平“0”,然后判斷列線y0y3的狀態(tài),若為全1

3、,即列線全為高電平,說(shuō)明鍵盤(pán)上沒(méi)有按鍵閉合,若y0y3不全為1,說(shuō)明有鍵按下。(3)消抖處理當(dāng)判斷有鍵按下后,需要進(jìn)行消除抖動(dòng),這里使用了軟件方法即程序中采用時(shí)間延時(shí)0.5秒,待信號(hào)穩(wěn)定后再判別鍵盤(pán)的狀態(tài),若有鍵按下,則再進(jìn)行鍵號(hào)的計(jì)算。(4)判別鍵號(hào)先判斷行線x0x3是否有輸出低電平“0”,若有鍵按下,則相應(yīng)的列線也為低電平“0”,例如行線x1輸出為低電平“0”,且列線y2為低電平,即x1與y2相交的鍵被按下,進(jìn)行鍵號(hào)=行號(hào)*4+列號(hào) 的計(jì)算。 圖()(5)顯示結(jié)果圖顯示器接高電頻,左邊顯示器接.,右邊接.,當(dāng)按下一個(gè)數(shù)字時(shí)右顯示器顯示相應(yīng)的數(shù)字,按第個(gè)數(shù)字時(shí)左邊顯示器顯示相應(yīng)數(shù)字;當(dāng)進(jìn)行除

4、法運(yùn)算時(shí),除的的數(shù)據(jù)要看接口.接高還是低電頻,低電頻則結(jié)果為幾點(diǎn)幾,為高電頻則幾十幾。其它運(yùn)算直接看數(shù)據(jù)即可。圖()(6)復(fù)位電路圖為復(fù)位電路,接at89c51上的rst接口,當(dāng)顯示器顯示數(shù)據(jù)時(shí),按下16鍵時(shí)顯示器不顯示任何數(shù)據(jù)。如果進(jìn)行了某一運(yùn)算后,若這時(shí)還要進(jìn)行運(yùn)算時(shí),可以直接按要進(jìn)行運(yùn)算的鍵號(hào)。四、程序流程圖開(kāi)始ap1口高4位置1送入p0顯示第二次鍵入的值掃描鍵盤(pán)再按一次鍵按下鍵? n加法?y調(diào)用延時(shí)0.5s子程序消除抖動(dòng)y 減法? ny計(jì)算鍵入的值十進(jìn)制?n乘法? ny送入p2顯示第一次鍵入的值y除法? n y 按下鍵?十進(jìn)制,e、f?n n y調(diào)用延時(shí)0.5s子程序消除抖動(dòng) y 送出

5、結(jié)果p2顯示個(gè)位,p0顯示十位 計(jì)算鍵入的值返回十進(jìn)制? na y五、程序org 0000hl1:lcall scan mov 40h,32h ;將鍵號(hào)保存在40h mov r1,40h ;暫存在r1 lcall m0 lcall xy1 mov p0,#0ffh ;使p0口置1 lcall scan mov 41h,32h ;將鍵號(hào)保存在41h mov r1,41h ;暫存在r1 lcall m0 lcall xy2l2:lcall scan mov 42h,32h mov r7,42h cjne r7,#10d,l3 ;是否進(jìn)行加法運(yùn)算 mov a,40h add a,41h mov b,

6、#10d div ab ;商存在a中即十位,余數(shù)存在b中即個(gè)位 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)用顯示個(gè)位數(shù) ljmp l1 l3:cjne r7,#11d,l4 ;是否進(jìn)行減法運(yù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ù)號(hào) mov a,41h subb a,40h add a,#1d mov 32h,a lcall xy1 ;顯示結(jié)果 ljmp l1l4:cjne r7,#12d,l5 ;是否進(jìn)行乘法運(yùn)算 mov a,40h mov b,41h mul ab ;結(jié)果存在a中 mov 50h,a mov b,#10d div ab ;商存在a中即十位,余數(shù)存在b中即個(gè)位 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)行除法運(yù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ù)點(diǎn)前的數(shù) clr p0.7 ;有小數(shù)點(diǎn) mov a,b mov b,#10d mul ab ;余數(shù)的十倍 mov b,41h div ab ;余數(shù)的十倍再除以除數(shù) mov 32h,a ;結(jié)果保留小數(shù)點(diǎn)后一位 lcall xy

9、1 ;p2顯示小數(shù)點(diǎn)后的數(shù)l13:ljmp l1l6:cjne r7,#0d,l7 cjne r7,#1d,l7 ;屏蔽十進(jìn)制,實(shí)現(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 ;無(wú)鍵按下繼續(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延時(shí)消除抖動(dòng) ljmp js ;跳轉(zhuǎn)鍵值計(jì)算程序 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 ;計(jì)算鍵入的值 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 ;顯示第一次按入的鍵號(hào)及結(jié)果的個(gè)位 retxy2:mov a,32h mov dptr,#tab movc a,a+dptr mov p0,a ;顯示第二次按入的鍵號(hào)及結(jié)果的十位 retdelay:mov r7,#100d ;延時(shí)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 ;僅實(shí)現(xiàn)十進(jìn)制的加減乘除運(yù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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論