




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ì),掌握矩陣式鍵盤的使用方法,和簡(jiǎn)單程序的編寫,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畫出原理圖及pcb圖4、有相應(yīng)的實(shí)物圖5、掌握44矩陣式鍵盤程序識(shí)別原理,掌握44矩陣式鍵盤按鍵的設(shè)計(jì)方法。三、設(shè)計(jì)分析圖()(1)行列式鍵盤的結(jié)構(gòu)用單片
2、機(jī)的并行口p1連接44矩陣鍵盤,并以單片機(jī)的p1.0p1.7各管腳作輸入線,以單片機(jī)的p2.0p2.7和p0.0p0.7各管腳作輸出線,在數(shù)碼管上顯示每個(gè)按鍵 “09”的序號(hào)。鍵盤中對(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í)別判斷鍵盤上有無(wú)按鍵閉合,先判斷行線x0x3輸出低電平“0”,然后判斷列線y0y3的狀態(tài),若為全1
3、,即列線全為高電平,說(shuō)明鍵盤上沒有按鍵閉合,若y0y3不全為1,說(shuō)明有鍵按下。(3)消抖處理當(dāng)判斷有鍵按下后,需要進(jìn)行消除抖動(dòng),這里使用了軟件方法即程序中采用時(shí)間延時(shí)0.5秒,待信號(hào)穩(wě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)。四、程序流程圖開始ap1口高4位置1送入p0顯示第二次鍵入的值掃描鍵盤再按一次鍵按下鍵? 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)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 24107:2024 EN Air quality - Validation of air quality measurement methods in the standardization process
- 【正版授權(quán)】 ISO 8000-115:2024 EN Data quality - Part 115: Master data: Exchange of quality identifiers: Syntactic,semantic and resolution requirements
- 2025年度地坪工程環(huán)保驗(yàn)收服務(wù)承包合同樣本
- 2025年度汽車貸款擔(dān)保合同會(huì)計(jì)處理與風(fēng)險(xiǎn)控制要點(diǎn)
- 2025年度法制副校長(zhǎng)履職評(píng)價(jià)及激勵(lì)措施合同
- 2025年度老舊城區(qū)拆除工程承包合同范本
- 2025感恩廣場(chǎng)二期商鋪投資合作協(xié)議
- 2025年白喉、百日咳、破傷風(fēng)、乙肝四聯(lián)制劑項(xiàng)目發(fā)展計(jì)劃
- 文化機(jī)構(gòu)安全隱患排查與防范計(jì)劃
- 讓孩子們愛上數(shù)學(xué)的活動(dòng)安排計(jì)劃
- 110KV送出線路工程施工組織設(shè)計(jì)方案和對(duì)策
- 二零二五年度大型自動(dòng)化設(shè)備買賣合同模板2篇
- 城市交通系統(tǒng)中的空間正義問(wèn)題-深度研究
- 2024版金礦居間合同協(xié)議書
- 2024年03月江蘇2024年中國(guó)工商銀行蘇州分行社會(huì)招考筆試歷年參考題庫(kù)附帶答案詳解
- 2025年北師大新版高二物理上冊(cè)階段測(cè)試試卷
- 2024年青島職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗(yàn)實(shí)驗(yàn)室建設(shè)技術(shù)規(guī)范
- 2025內(nèi)蒙古匯能煤化工限公司招聘300人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《餐飲服務(wù)禮貌用語(yǔ)》課件
- 2025年中國(guó)融通資產(chǎn)管理集團(tuán)限公司春季招聘(511人)高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論