版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、引言說(shuō)起計(jì)算器,值得我們驕傲的是,最早的計(jì)算工具誕生在中國(guó)。中國(guó)古代最早采用的一種計(jì)算工具叫籌策,又被叫做算籌。這種算籌多用竹子制成,也有用木頭,獸骨充當(dāng)材料的。約二百七十枚一束,放在布袋里可隨身攜帶。直到今天仍在使用的珠算盤(pán),是中國(guó)古代計(jì)算工具領(lǐng)域中的另一項(xiàng)發(fā)明,明代時(shí)的珠算盤(pán)已經(jīng)與現(xiàn)代的珠算盤(pán)幾乎相同。17世紀(jì)初,西方國(guó)家的計(jì)算工具有了較大的發(fā)展,英國(guó)數(shù)學(xué)家納皮爾發(fā)明的"納皮爾算籌",英國(guó)牧師奧卻德發(fā)明了圓柱型對(duì)數(shù)計(jì)算尺,這種計(jì)算尺不僅能做加減乘除、乘方、開(kāi)方運(yùn)算,甚至可以計(jì)算三角函數(shù),指數(shù)函數(shù)和對(duì)數(shù)函數(shù),這些計(jì)算工具不僅帶動(dòng)了計(jì)算器的發(fā)展,也為現(xiàn)代計(jì)算器發(fā)展奠定了良好
2、的基礎(chǔ),成為現(xiàn)代社會(huì)應(yīng)用廣泛的計(jì)算工具。近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。本任務(wù)是個(gè)簡(jiǎn)易的兩位數(shù)的四則運(yùn)算,程序都是根據(jù)教材內(nèi)和網(wǎng)絡(luò)中的程序參考編寫(xiě)而成,在功能上還并不完善,限制也較多。本任務(wù)重在設(shè)計(jì)構(gòu)思與團(tuán)隊(duì)合作,使得我們用專業(yè)知識(shí)、專業(yè)技能分析和解決問(wèn)題全面系統(tǒng)的鍛煉。隨著半導(dǎo)體集成工藝的不斷發(fā)展,單片機(jī)的集成度將更高、體積將更小、功能將更強(qiáng)。在單片機(jī)家族中,80C51系列是其中的佼佼者,加之Int
3、el公司將其MCS 51系列中的80C51內(nèi)核使用權(quán)以專利互換或出售形式轉(zhuǎn)讓給全世界許多著名IC制造廠商,如Philips、 NEC、Atmel、AMD、華邦等,這些公司都在保持與80C51單片機(jī)兼容的基礎(chǔ)上改善了80C51的許多特性。這樣,80C51就變成有眾多制造廠商支持的、發(fā)展出上百品種的大家族,現(xiàn)統(tǒng)稱為80C51系列。80C51單片機(jī)已成為單片機(jī)發(fā)展的主流。專家認(rèn)為,雖然世界上的MCU品種繁多,功能各異,開(kāi)發(fā)裝置也互不兼容,但是客觀發(fā)展表明,80C51可能最終形成事實(shí)上的標(biāo)準(zhǔn)MCU芯片。事實(shí)上單片機(jī)是世界上數(shù)量最多的計(jì)算機(jī)?,F(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。
4、手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。而個(gè)人電腦中也會(huì)有為數(shù)不少的單片機(jī)在工作。汽車上一般配備40多部單片機(jī),復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺(tái)單片機(jī)在同時(shí)工作!單片機(jī)的數(shù)量不僅遠(yuǎn)超過(guò)PC機(jī)和其他計(jì)算的總和,甚至比人類的數(shù)量還要多。單片機(jī)內(nèi)部也用和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤(pán)作用相同的存儲(chǔ)器件,不同的是它的這些部件性能都相對(duì)我們的家用電腦弱很多,不過(guò)價(jià)錢(qián)也是低的,一般不超過(guò)10元即可.用它來(lái)做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動(dòng)滾筒洗衣機(jī)、排煙罩、VCD等等的家電里面都可以看到它的身影!.
5、它主要是作為控制部分的核心部件。2 / 25設(shè)計(jì)方案及原理 1.首先賦予顯示緩沖初始值00 00,并把數(shù)據(jù)存儲(chǔ)單元清零。2.主程序調(diào)用鍵盤(pán)掃描子程序,判斷鍵值,是數(shù)字第一次直接賦予23H單元,如是第二次輸入數(shù)字,則把第一次值乘十后與第二次值相加,結(jié)果存儲(chǔ)到23H單元,并R4計(jì)數(shù)2次,表示已輸入兩位,掃描鍵值時(shí)就不在賦值和顯示。等待運(yùn)算符號(hào)的按下,按下等于號(hào)就直接與零計(jì)算并顯示,如加減乘除就R5加一 并把R4清零,表示可以輸入下一操作數(shù),與第一次相同,并等待等于鍵按下。清零鍵則不管在任何情況下都清零,相當(dāng)與軟復(fù)位。3.在掃描完鍵盤(pán)后,調(diào)用數(shù)據(jù)顯示轉(zhuǎn)換子程序,并選擇,由于本任務(wù)是兩位四則運(yùn)算,只有
6、乘法中結(jié)果會(huì)超出FFH的范圍,在此就是選擇處理方式,超出范圍則跳過(guò)數(shù)據(jù)顯示轉(zhuǎn)換子程序,未超出則調(diào)用數(shù)據(jù)顯示轉(zhuǎn)換子程序,兩種選擇都是要把值轉(zhuǎn)換為七段碼。4.調(diào)用數(shù)碼管動(dòng)態(tài)顯示子程序,顯示數(shù)值,重新循環(huán)。硬件系統(tǒng)設(shè)計(jì)1、LED接口電路簡(jiǎn)易計(jì)算器需要2位8段碼LED顯示電路。用8031單片機(jī)經(jīng)8255A擴(kuò)展2位8段碼LED顯示器,用8255A的A口作為段碼(字形代碼)數(shù)據(jù)口,PB0和PB1作為位控制端口。在位控制口加集電極開(kāi)路的反相高壓驅(qū)動(dòng)器74LS06以提供驅(qū)動(dòng)LED顯示器所需的足夠大的電流,然后接至各數(shù)碼顯示器的共陰極端。同理,在段碼數(shù)據(jù)口集電極開(kāi)路的正相高壓驅(qū)動(dòng)器74LS07提供足夠大的電流,
7、然后接到數(shù)碼顯示器的各段。邏輯電路結(jié)構(gòu)如下: 2、鍵盤(pán)接口電路簡(jiǎn)易計(jì)算器需要4*4的行列式鍵盤(pán)。用8031單片機(jī)經(jīng)8255A擴(kuò)展4*4行列式鍵盤(pán),8255A的B口和C口用于擴(kuò)展鍵盤(pán)接口,B口高4位作為輸出口,C口低4位作為輸入口。邏輯電路結(jié)構(gòu)如下:3、計(jì)算器邏輯電路圖將LED接口電路和鍵盤(pán)接口電路結(jié)合到一起就是簡(jiǎn)易計(jì)算器的邏輯電路圖,如下:三、軟件設(shè)計(jì)1、LED顯示程序設(shè)計(jì)LED顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也成為七段LED顯示器,器排列形狀如下圖所示:為了顯示數(shù)字或符號(hào),要為L(zhǎng)ED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供的字形代碼的
8、長(zhǎng)度正好是一個(gè)字節(jié)。簡(jiǎn)易計(jì)算器用到的數(shù)字09的共陰極字形代碼如下表:09七段數(shù)碼管共陰級(jí)字形代碼顯示字型gfedcba段碼001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh2位LED顯示的程序框圖如下:2、讀鍵輸入程序設(shè)計(jì) 為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí)別按鍵。其程序框圖如下:3、主程序設(shè)計(jì) (1)數(shù)值送顯示緩沖程序設(shè)計(jì)簡(jiǎn)易計(jì)
9、算器所顯示的數(shù)值最大位兩位。要顯示數(shù)值,先判斷數(shù)值正負(fù),如果是負(fù)值,則符號(hào)位顯示“-”,然后將數(shù)值除以10,余數(shù)送顯最最低位,判斷商是否為0,若為0則返回,若不為0,則將商除以10,將余數(shù)送顯高位。程序框圖如下: (2)運(yùn)算主程序設(shè)計(jì) 首先初始化參數(shù),送LED低位顯示“0”,高位不顯示。然后掃描鍵盤(pán)看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵(“+”“-”“*”“/”“=” ),是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運(yùn)算鍵,若是“=”則計(jì)算最后結(jié)果并送LED顯示,若是運(yùn)算鍵則保存相對(duì)運(yùn)算程序的首地址。運(yùn)算主程序框圖如下所示:4
10、、簡(jiǎn)易計(jì)算器源程序OUTBIT equ 07FFDh ; 位控制口OUTSEG equ 07FFCh ; 段控制口IN equ 07FFEh ; 鍵盤(pán)讀入口data1 equ 70hdata2 equ 71hdizhi1 equ 72hdizhi2 equ 73hLEDBuf equ 60h ; 顯示緩沖 ljmp StartLEDMAP: ; 八段管顯示碼 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延時(shí)子程序 mov r7, #0DelayLoop:
11、djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #2 ; 共2個(gè)八段管 mov r2, #00000010b ; 從左邊開(kāi)始顯示Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 關(guān)所有八段管 mov a, r0 mov dptr, #OUTSEG movx dptr, a mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 顯示一位八段管 mov r6, #1 call Delay mov a, r2 ; 顯
12、示下一位 rr a mov r2, a inc r0 djnz r1, Loop retTestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 輸出線置為0 mov dptr, #IN movx a, dptr ; 讀入鍵狀態(tài) cpl a anl a, #0fh ; 高四位不用 retKeyTable: ; 鍵碼定義 db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hGetKey: mov dptr, #OUTBIT mov
13、 P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #4KLoop: mov a, r1 ; 找出鍵所在列 cpl a movx dptr, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz Goon1 ; 該列有鍵入 djnz r2, KLoop mov r2, #0ffh ; 沒(méi)有鍵按下, 返回 0ffh sjmp ExitGoon1: mov r1, a ; 鍵值 = 列 X 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ;
14、 r2 = (r2-1)*4 mov a, r1 ; r1中為讀入的行值 mov r1, #4LoopC: rrc a ; 移位找出所在行 jc Exit inc r2 ; r2 = r2+ 行值 djnz r1, LoopCExit: mov a, r2 ; 取出鍵碼 mov dptr, #KeyTable movc a, a+dptr mov r2, aWaitRelease: mov dptr, #OUTBIT ; 等鍵釋放 clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov a, r2 r
15、etStart: mov sp, #40h mov LEDBuf+0, #0 mov LEDBuf+1, #03fh mov dptr, #7FFFh mov a, #89h movx dptr, aMLoop: call DisplayLED ; 顯示 call TestKey ; 有鍵入? jz MLoop ; 無(wú)鍵入, 繼續(xù)顯示 call GetKey ; 讀入鍵碼Jisuan: mov r3, a cjne r3, #0fh, Qita ;判斷是否為清零鍵? mov r3, #00h ;清零 mov r4, #00h mov r5, #00h mov data1, #00h mov d
16、ata2, #00h mov dizhi1, #00h mov dizhi2, #00h mov LEDBuf+0, #0 mov LEDBuf+1, #03fh ljmp MLoopQita: clr c cjne r3, #0ah ,follow ;判斷是數(shù)字鍵還是功能鍵?follow: jc Shuzi ljmp GnShuzi: mov a, r4 ;判斷是否已有運(yùn)算符輸入,沒(méi)有就將數(shù)值存在jnz Shuzi2 data1,有就將數(shù)值存在data2 mov a, r3 mov data1, a ljmp Xs ;顯示第一次輸入的數(shù)值Shuzi2: mov a, r3 mov data2
17、, a ljmp Xs ;顯示第二次輸入的數(shù)值Gn: mov r4, #01h ;將01h給r4,說(shuō)明已有運(yùn)算符輸入 cjne r3, #0eh, Ja ;判斷鍵值是否為“=”? mov r4, #00h ;將r4清零 mov a, dizhi1 ;執(zhí)行“=” mov dph, a mov a, dizhi2 mov dpl, a mov a, #00h jmp a+dptr ;轉(zhuǎn)到本次輸入的算法程序Ja: cjne r3, #0ah, Jn ;若鍵值為“+”則將“+”的程序首地址存在mov dptr, #Jia dizhi1和dizhi2中 mov a, dph mov dizhi1, a
18、mov a, dpl mov dizhi2, a ljmp MLoop Jn: cjne r3, #0bh, Ce ;若鍵值為“-”則將“-”的程序首地址存mov dptr, #Jian dizhi1和dizhi2中 mov a, dph mov dizhi1, a mov a, dpl mov dizhi2, a ljmp MLoop Ce: cjne r3, #0ch, Cu ;若鍵值為“*”則將“*”的程序首地址存在mov dptr, #Cheng dizhi1和dizhi2中 mov a, dph mov dizhi1, a mov a, dpl mov dizhi2, a ljmp
19、MLoop Cu: cjne r3, #0dh, Zhuan ;若鍵值為“/”則將“/”的程序首地址存在mov dptr, #chu dizhi1和dizhi2中 mov a, dph mov dizhi1, a mov a, dpl mov dizhi2, aZhuan: ljmp MLoop Jia: mov a, data1 ;加法程序 add a, data2 ljmp XsJian: mov a, data1 ;減法程序 subb a, data2 ljmp XsCheng: mov a, data1 ;乘法程序 mov b, data2 mul ab ljmp XsChu: mov
20、 a, data1 ;除法程序 mov b, data2 div abXs: mov b, #10 ;顯示個(gè)位數(shù)字 div ab mov r5, a mov a, b mov dptr,#LEDMap movc a, a+dptr mov LEDBuf+1,a mov a, r5First: cjne a,#0,Next ljmp MLoop ;運(yùn)算完后繼續(xù)掃描鍵盤(pán)Next: mov b,#10 ;顯示十位數(shù)字 div ab mov r5, a mov a, b mov dptr, #LEDMap movc a, a+dptr mov LEDBuf+0, a mov a, r5 ljmp First end硬件連線圖 總結(jié) 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說(shuō)得是無(wú)處不在。因此作為電子信息工程專業(yè)的學(xué)生來(lái)說(shuō)掌握單片機(jī)的開(kāi)發(fā)技術(shù)是十分重要的
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆貴州省凱里市一中高三語(yǔ)文第一學(xué)期期末質(zhì)量檢測(cè)試題含解析
- 發(fā)票平臺(tái)培訓(xùn)課件模板
- 競(jìng)技現(xiàn)場(chǎng)活動(dòng)方案策劃(3篇)
- 線上活動(dòng)策劃制作方案(3篇)
- 理想體驗(yàn)活動(dòng)策劃方案(3篇)
- 門(mén)店出圈活動(dòng)策劃方案(3篇)
- 罕見(jiàn)病患者社會(huì)融入的媒體宣傳策略
- 反詐騙網(wǎng)絡(luò)培訓(xùn)課件
- 反洗錢(qián)案例培訓(xùn)課件
- 2026上半年貴州事業(yè)單位聯(lián)考貴州省地震局招聘5人備考題庫(kù)參考答案詳解
- 用電安全隱患檢測(cè)的新技術(shù)及應(yīng)用
- 2025年常州機(jī)電職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 民間融資居間合同
- 環(huán)境污染損害評(píng)估報(bào)告
- 表面活性劑化學(xué)知識(shí)點(diǎn)
- 《塑料材質(zhì)食品相關(guān)產(chǎn)品質(zhì)量安全風(fēng)險(xiǎn)管控清單》
- 武術(shù)學(xué)校體育器材項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- DL∕T 1057-2023 自動(dòng)跟蹤補(bǔ)償消弧線圈成套裝置技術(shù)條件
- 市場(chǎng)營(yíng)銷部門(mén)主管聘用協(xié)議
- 期貨投資說(shuō)課市公開(kāi)課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件
- 辦理退休委托書(shū)
評(píng)論
0/150
提交評(píng)論