版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)原理與應(yīng)用第一次作業(yè)學(xué)號(hào): 姓名:目錄一、題目二、軟件三、硬件一、題目 題目:廣告燈控制系統(tǒng)內(nèi)容:做宣傳廣告時(shí),為了使廣告內(nèi)容醒目,引人注意,往往用燈光閃爍或明暗對(duì)比等手段。設(shè)有8個(gè)廣告字,每次亮一個(gè)字,亮10ms,依次左移,然后依次右移,循環(huán)不止。要求:以led發(fā)光二極管代替廣告字,程序延時(shí)。硬件:畫出硬件電路原理圖,考慮led的驅(qū)動(dòng)問題。軟件:畫出程序流程圖,編寫源程序。調(diào)試:記錄調(diào)試過程,分析調(diào)試結(jié)果。 二、軟件1.源程序:org 0000h ;定義起始地址 mov a,#01111111b ;將二進(jìn)制立即數(shù)01111111b放到累加器a中 ljmp start ;長(zhǎng)轉(zhuǎn)移到star
2、t函數(shù) org 0100h ;定義start函數(shù)的起始地址start: mov r0,#7 ;將十進(jìn)制立即數(shù)7放到寄存器r0中 mov r1,#7 ;將十進(jìn)制立即數(shù)7放到寄存器r1中 left: mov p1,a ;將a中的內(nèi)容送到p1口,只有p1.7為低電平,該處二極管被點(diǎn)亮 lcall del10ms ;延時(shí)10ms rr a ;將a中的內(nèi)容右移一位,相應(yīng)地,低電平所處位置左移一位 dec r0 ;將r0中的內(nèi)容減1 cjne r0,#0,left ;判斷r0是否為0,若不是則轉(zhuǎn)移到left函數(shù)起始位置,若是則程序順序執(zhí)行 right: mov p1,a ;將a中的內(nèi)容送到p1口,此時(shí)只有
3、p1.0為低電平,該處二極管被點(diǎn)亮 lcall del10ms ;延時(shí)10ms rl a ;將a中的內(nèi)容左移一位,相應(yīng)地,低電平所處位置右移一位 dec r1 ;將r1中的內(nèi)容減1 cjne r1,#0,right ;判斷r1是否為0,若不是則轉(zhuǎn)移到right函數(shù)起始位置,若是則程序順序執(zhí)行 ljmp start ;長(zhǎng)轉(zhuǎn)移到start函數(shù)del10ms: mov r7,#25 ;將十進(jìn)制立即數(shù)25放到寄存器r7中del1: mov r6,#200 ;將十進(jìn)制立即數(shù)200放到寄存器r6中del2: djnz r6,del2 ;將r6中的內(nèi)容減1,判斷r6是否為0,若否則轉(zhuǎn)移到del2函數(shù)起始位置
4、,否則程序順序執(zhí)行 djnz r7,del1 ;將r7中的內(nèi)容減1,判斷r7是否為0,若否則轉(zhuǎn)移到del1函數(shù)起始位置,否則程序順序執(zhí)行 ret ;返回到調(diào)用del10ms函數(shù)的語句的下一條語句end ;程序結(jié)束的標(biāo)志,因?yàn)樯鲜龀绦蛑杏兴姥h(huán),所以目標(biāo)程序執(zhí)行不到這一步注:上述程序已用proteus 7.8中調(diào)試過,能滿足題目要求。調(diào)試方法為設(shè)置執(zhí)行指定時(shí)間分別為10ms,20ms,30ms等整十毫秒,看執(zhí)行完畢后發(fā)光的那個(gè)二極管符不符合預(yù)期。2. 收獲:(1)其實(shí)此次作業(yè)若在上完第四單元后布置會(huì)更好,因?yàn)榈谌轮唤塘艘恍┲噶?,第四章教的才是單片機(jī)匯編語言程序設(shè)計(jì),不過提前布置可以督促大家預(yù)習(xí)
5、第四單元。(2)寫程序的過程中,我深切的感受到了匯編語言指令中的標(biāo)號(hào)帶來的便利,其功能實(shí)際上與c語言的函數(shù)名相同,是為了方便調(diào)用或轉(zhuǎn)移。(3)51單片機(jī)所有i/o口上電之后全部默認(rèn)為高電平,想讓某一發(fā)光二極管發(fā)光,就要用程序來使其一端為高電平,另一端為低電平。 (4)上述程序中延時(shí)10ms的延時(shí)程序是由教材第65面例4-14的延時(shí)50ms的延時(shí)程序改編而來,我在照搬書上的延時(shí)程序,并下載到單片機(jī)中或用proteus 7.8進(jìn)行仿真時(shí)發(fā)現(xiàn)只有最右邊的二極管發(fā)光。認(rèn)真研究后知道sjmp $其實(shí)就是here;sjmp here的意思,是一個(gè)死循環(huán),將其刪除后才能正常調(diào)用延時(shí)函數(shù)。三、硬件1.原理圖:
6、原理圖如下圖一所示:圖一 用proteus 7.8繪制的原理圖2.考慮led的驅(qū)動(dòng)問題二極管選用的是紅色超亮發(fā)光二極管(led-red),其參數(shù)如下圖二所示:圖中顯示其完全驅(qū)動(dòng)電流為10ma,正向?qū)▔航禐?.2v,反向擊穿電壓為4v,為保證發(fā)光二極管被完全驅(qū)動(dòng),上拉電阻的阻值應(yīng)為(5-2.2)v/10ma=280,由于圖中未給出發(fā)光二極管額定電流,故無法計(jì)算使發(fā)光二極管通過額定電流時(shí)的上拉電阻阻值。 圖二 led-red的參數(shù)單片機(jī)原理與應(yīng)用第二次作業(yè)學(xué)號(hào): 姓名:目錄 一、題目及解題思路 二、硬件電路原理圖 三、程序流程圖與源程序 四、編程時(shí)遇到的問題一、題目及解題思路1.題目:汽車方向燈
7、控制系統(tǒng)2.內(nèi)容:汽車在行駛時(shí),有左轉(zhuǎn)彎、右轉(zhuǎn)彎、剎車、警示、停靠等操作。左轉(zhuǎn)彎時(shí),應(yīng)使左頭燈、左尾燈、儀表板左轉(zhuǎn)指示燈閃爍。右轉(zhuǎn)彎時(shí),應(yīng)使右頭燈、右尾燈、儀表板右轉(zhuǎn)指示燈閃爍。剎車時(shí),左右兩個(gè)尾燈亮。警示時(shí),頭燈、尾燈、儀表板指示燈等6個(gè)燈全閃爍。汽車??繒r(shí),左右頭燈、左右尾燈高頻閃爍。3.要求:用按鍵開關(guān)代表汽車的相關(guān)操作,以led發(fā)光二極管代替汽車燈。高頻閃爍頻率為30hz,其它閃爍頻率為1hz。4.解題思路: 題目只考慮了只按下某一個(gè)按鍵開關(guān)時(shí)頭燈、尾燈、儀表板指示燈的工作狀態(tài)。為將所有情況都考慮進(jìn)去,需補(bǔ)上沒有任何按鍵開關(guān)按下和同時(shí)有多個(gè)按鍵開關(guān)按下這兩類情況。按照常理,沒有任何按鍵
8、開關(guān)按下時(shí),所有指示燈都應(yīng)該處于熄滅狀態(tài)。對(duì)于該題,同時(shí)有多個(gè)按鍵按下屬于一種錯(cuò)誤,這時(shí)應(yīng)以某種方式提醒駕駛者,考慮到儀表板指示燈位于車內(nèi),可讓儀表板左轉(zhuǎn)指示燈和儀表板右轉(zhuǎn)指示燈閃爍同時(shí)高頻閃爍來提醒車內(nèi)的駕駛者同時(shí)有多個(gè)按鍵被按下。頻率是周期的倒數(shù),閃爍頻率為1hz意為1s閃一次,30hz為1s閃30次,即約33333us閃一次。為此,可設(shè)計(jì)一個(gè)500ms的延時(shí)子程序,使燈在1s內(nèi)亮滅各一次,設(shè)置一個(gè)16640us的延時(shí)子程序,使燈在33280us內(nèi)亮滅各一次(這里采取了近似的做法)。為滿足題目中用按鍵開關(guān)控制led發(fā)光二極管的要求,可以將所有按鍵開關(guān)的一端全部連在p2口,另一端全部接地,將
9、p2口作為輸入端。將所有l(wèi)ed發(fā)光二極管的一端全部連在p1口,另一端全部接+5v高電平,將p1口作為輸出端。這樣便將按鍵開關(guān)控制led發(fā)光二極管轉(zhuǎn)化為輸入端控制輸出端。二、硬件電路原理圖硬件電路原理圖如下圖一所示:圖一 用proteus 7.8繪制的硬件電路原理圖 因?yàn)樵陔娐穲D中插入太多漢字后再進(jìn)行仿真會(huì)使proteus 7.8卡住,從而無法仿真。所以上述原理圖中未用漢字標(biāo)注每一個(gè)元器件的含義?,F(xiàn)說明如下:s1、s2、s3、s4、s5分別表示左轉(zhuǎn)彎指示按鍵開關(guān)、右轉(zhuǎn)彎指示按鍵開關(guān)、剎車指示開關(guān)、警示指示開關(guān)、停靠指示開關(guān),d1、d2、d3、d4、d5、d6分別表示左尾燈、左頭燈、儀表板左轉(zhuǎn)指示
10、燈、儀表板右轉(zhuǎn)指示燈、右頭燈、右尾燈,r1r6均為上拉電阻。和上次交的作業(yè)一樣,二極管選用的是紅色超亮發(fā)光二極管(led-red),其參數(shù)如下圖二所示,圖中顯示其完全驅(qū)動(dòng)電流為10ma,正向?qū)▔航禐?.2v,反向擊穿電壓為4v,為保證發(fā)光二極管被完全驅(qū)動(dòng),上拉電阻的阻值應(yīng)為(5-2.2)v/10ma=280,由于圖中未給出發(fā)光二極管額定電流,故無法計(jì)算使發(fā)光二極管通過額定電流時(shí)的上拉電阻阻值。 圖二 led-red的參數(shù)3、 程序流程圖與源程序1. 流程圖(用edraw mind map 7.8制作): 2.源程序:org 0000h mov r0,#1fh jmp startorg 010
11、0h start: mov a,p2 cjne a,#0ffh,num1 jmp next1num1: cjne a,#0feh,num2 jmp next2num2: cjne a,#0fdh,num3 jmp next3num3: cjne a,#0fbh,num4 jmp next4num4: cjne a,#0f7h,num5 jmp next5num5: cjne a,#0efh,error jmp next6next1: mov p1,#0ffh ;next1在未按下任何按鍵時(shí)使用 jmp startnext2: mov p1,#0f8h ;next2為左轉(zhuǎn)彎指示命令 call d
12、el500ms mov p1,#0ffh call del500ms jmp startnext3: mov p1,#0c7h ;next3為右轉(zhuǎn)彎指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext4: mov p1,#0deh ;next4為剎車指示命令 jmp start next5: mov p1,#0c0h ;next5為警示指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext6: mov p1,#0cch ;next6為停靠指示命令 call del1
13、6640us mov p1,#0ffh call del16640us jmp starterror: mov p1,#0f3h ;error在同時(shí)按下了兩個(gè)及以上按鍵時(shí)使用 call del16640us mov p1,#0ffh call del16640us jmp startdel500ms: mov r7,#25 ;延時(shí)500msdel1: mov r6,#200del2: mov r5,#50del3: djnz r5,del3 djnz r6,del2 djnz r7,del1 retdel16640us:mov r7,#65 ;延時(shí)16640us del4: mov r6,#1
14、28del5: djnz r6,del5 djnz r7,del4 retend4、 編程時(shí)遇到的問題以下是我編寫的另一個(gè)程序,仿真結(jié)果表明它也滿足題意,但其中有一個(gè)問題。org 0000h ljmp startorg 0100h start: mov a,p2 mov r1,a subb a,#0ffh jz next1 mov a,r1 subb a,#0fdh jz next2 mov a,r1 subb a,#0fch jz next3 mov a,r1 subb a,#0fah jz next4 mov a,r1 subb a,#0f6h jz next5 mov a,r1 subb
15、 a,#0eeh jz next6 jmp errornext1: mov p1,#0ffh ;next1在未按下任何按鍵時(shí)使用 jmp startnext2: mov p1,#0f8h ;next2為左轉(zhuǎn)彎指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext3: mov p1,#0c7h ;next3為右轉(zhuǎn)彎指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext4: mov p1,#0deh ;next4為剎車指示命令 jmp start next5: mov p
16、1,#0c0h ;next5為警示指示命令 call del500ms mov p1,#0ffh call del500ms jmp startnext6: mov p1,#0cch ;next6為??恐甘久?call del16640us mov p1,#0ffh call del16640us jmp starterror: mov p1,#0f3h ;error在同時(shí)按下了兩個(gè)及以上按鍵時(shí)使用 call del16640us mov p1,#0ffh call del16640us jmp startdel500ms: mov r7,#25 ;延時(shí)500msdel1: mov r6,#
17、200del2: mov r5,#50del3: djnz r5,del3 djnz r6,del2 djnz r7,del1 retdel16640us:mov r7,#65 ;延時(shí)16640us del4: mov r6,#128del5: djnz r6,del5 djnz r7,del4 retend該源程序的問題為:按照原理圖和subb指令的定義(subb a,#data的功能為aa-data-cy),當(dāng)未按下任何按鍵時(shí),p2口輸入的數(shù)據(jù)為0ffh。為判斷是否有按鍵被按下,可以將p2口中的數(shù)值傳送到累加器a中,再執(zhí)行subb a,#0feh,之后判斷a的值是否為0,若是,則表明沒有任
18、何按鍵被按下。但仿真結(jié)果表明,如果這樣,則上述程序中畫橫線處的5條語句均無法按照所希望的那樣被執(zhí)行,而其他語句能夠行使相應(yīng)功能。但將subb a,#0feh改為subb a,#0ffh,所有語句反而都能滿足題目要求。 單片機(jī)原理與應(yīng)用第三次作業(yè)學(xué)號(hào): 姓名:目錄 一、題目 二、硬件電路原理圖 三、程序流程圖與源程序一、題目及解題思路1.題目:8人搶答器。2.內(nèi)容:在知識(shí)競(jìng)賽等場(chǎng)合,搶答器是經(jīng)常用到的產(chǎn)品。用單片機(jī)設(shè)計(jì)一個(gè)具有優(yōu)先權(quán)的8人搶答器,0號(hào)搶答器優(yōu)先權(quán)最高,7號(hào)搶答器優(yōu)先權(quán)最低。8位選手,8輪搶答,每位選手可以申請(qǐng)一次0號(hào)搶答器,1號(hào)搶答器,7號(hào)搶答器。也可以按照選手分?jǐn)?shù)高低分配搶答器
19、優(yōu)先級(jí),如分?jǐn)?shù)最低者用0號(hào)搶答器,一次類推。搶答成功者,對(duì)應(yīng)的指示燈閃爍。3.要求:用按鍵開關(guān)代表搶答器按鍵操作,以led發(fā)光二極管代替指示燈。閃爍頻率為1hz。(1)硬件:畫出硬件電路原理圖,考慮中斷源擴(kuò)展。 (2)軟件:畫出程序流程圖,編寫源程序,考慮優(yōu)先級(jí)問題。 (3)調(diào)試:記錄調(diào)試過程,分析調(diào)試結(jié)果。 二、硬件電路原理圖硬件電路原理圖如下圖一所示:圖一 用proteus 7.8繪制的硬件電路原理圖 因?yàn)樵陔娐穲D中插入太多漢字后再進(jìn)行仿真會(huì)使proteus 7.8卡住,從而無法仿真。所以上述原理圖中未用漢字標(biāo)注每一個(gè)元器件的含義?,F(xiàn)說明如下:start按鍵被按下表示允許搶答,end按鍵被
20、按下表示將所有發(fā)光二級(jí)管熄滅。start與end按鍵按下后不允許被自動(dòng)彈開,按下其中一個(gè)按鍵前應(yīng)將另一個(gè)斷開,否則不起作用。為方便選手搶答,s0、s1、s2、s3、s4、s5、s6、s7按鍵按下后可被自動(dòng)彈開(前提是按下的時(shí)間稍長(zhǎng),能被檢測(cè)到,超過幾個(gè)微秒即可),它們分別表示0、1、2、3、4、5、6、7號(hào)搶答器。若在規(guī)定的搶答時(shí)間內(nèi),同時(shí)被按下的所有按鍵中si(i=0,1,2,3,4,5,6,7)的優(yōu)先級(jí)最高,則發(fā)光二極管di閃爍。若搶答時(shí)間結(jié)束且在規(guī)定時(shí)間內(nèi)無任何搶答器對(duì)應(yīng)的按鍵被按下,則d8亮。和上次交的作業(yè)一樣,二極管選用的是紅色超亮發(fā)光二極管(led-red),其參數(shù)如下圖二所示,圖
21、中顯示其完全驅(qū)動(dòng)電流為10ma,正向?qū)▔航禐?.2v,反向擊穿電壓為4v,為保證發(fā)光二極管被完全驅(qū)動(dòng),上拉電阻的阻值應(yīng)為(5-2.2)v/10ma=280,由于圖中未給出發(fā)光二極管額定電流,故無法計(jì)算使發(fā)光二極管通過額定電流時(shí)的上拉電阻阻值。 圖二 led-red的參數(shù)5、 程序流程圖與源程序2. 流程圖(用edraw mind map 7.8制作): 2.源程序:org 0000h jmp startorg 0003h jmp int_0org 0013h jmp int_1org 0100hstart: mov sp,#60h setb ex0 setb it0 setb ex1 set
22、b it0 setb ea jmp int_0org 0200hint_0: jnb p3.1,int_0 ;保證只有在end按鍵斷開時(shí)start按鍵才起作用 jnb p3.0,int_1 int_1: mov r7,#25 ;以下隱含了延時(shí)30s(實(shí)為30018075us)的延時(shí)程序del1: mov r6,#240del2: mov r5,#250del3: jb p3.0,int_0 jnb p2.0,exint1 ;若s0被按下,則跳轉(zhuǎn)到exint1 jnb p2.1,exint2 ;若s1被按下,則跳轉(zhuǎn)到exint2 jnb p2.2,exint3 ;若s2被按下,則跳轉(zhuǎn)到exint
23、3 jnb p2.3,exint4 ;若s3被按下,則跳轉(zhuǎn)到exint4 jnb p2.4,exint5 ;若s4被按下,則跳轉(zhuǎn)到exint4 jnb p2.5,exint6 ;若s5被按下,則跳轉(zhuǎn)到exint5 jnb p2.6,jump2 ;若s6被按下,則跳轉(zhuǎn)到exint6 jnb p2.7,jump3 ;若s7被按下,則跳轉(zhuǎn)到exint8 djnz r5,del3 djnz r6,del2 djnz r7,del1 jmp void ;若30s內(nèi)無人搶答,則跳轉(zhuǎn)到voidrecov: mov p0,#0ffh mov p1,#0ffh jb p3.0,int_0 ;若start按鍵被斷
24、開,則跳轉(zhuǎn)到int_0 jmp recovexint1:mov p1,#0feh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint1 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,recov ;若end按鍵被按下,則跳轉(zhuǎn)到recov jmp exint1exint2:mov p1,#0fdh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint2 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,recov ;若end按鍵被按下,則
25、跳轉(zhuǎn)到recov jmp exint2exint3:mov p1,#0fbh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint3 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,recov ;若end按鍵被按下,則跳轉(zhuǎn)到recov jmp exint3exint4:mov p1,#0f7h call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint4 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,recov ;若end按鍵被按下,則跳轉(zhuǎn)
26、到recov jmp exint4jump1: jmp recov ;中繼jump2: jmp exint7 ;中繼jump3: jmp exint8 ;中繼exint5:mov p1,#0efh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint5 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,recov ;若end按鍵被按下,則跳轉(zhuǎn)到recov jmp exint5exint6:mov p1,#0dfh call del500ms mov p1,#0ffh call del500ms jnb p3.0,ex
27、int6 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,recov ;若end按鍵被按下,則跳轉(zhuǎn)到recov jmp exint6exint7:mov p1,#0bfh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint7 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,jump1 ;若end按鍵被按下,則跳轉(zhuǎn)到j(luò)ump1 jmp exint7exint8:mov p1,#7fh call del500ms mov p1,#0ffh call del500ms jnb p3.0,exint
28、8 ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,jump1 ;若end按鍵被按下,則跳轉(zhuǎn)到j(luò)ump1 jmp exint8void: mov p0,#0feh jnb p3.0,void ;保證只有在start按鍵斷開時(shí)end按鍵才起作用 jnb p3.1,jump1 ;若end按鍵被按下,則跳轉(zhuǎn)到j(luò)ump1 jmp void del500ms: mov r7,#25 ;延時(shí)500ms(實(shí)為498825us)del4: mov r6,#50del5: mov r5,#198del6: djnz r5,del6 djnz r6,del5 djnz r7,del4 ret
29、end 說明:1.上述源程序中的中斷沒有實(shí)際用途,只是迫于題目要求而加了進(jìn)去。因?yàn)樯鲜鲈闯绦虻闹黧w是兩個(gè)中斷int_0與int_1,其他子程序只是為其服務(wù),所以源程序的中斷不會(huì)對(duì)其他程序產(chǎn)生干擾,故沒有進(jìn)行現(xiàn)場(chǎng)保護(hù)與現(xiàn)場(chǎng)恢復(fù)。又因?yàn)閮蓚€(gè)中斷之間形成了無限循環(huán),所以沒有加reti指令;2.查附錄b可知,執(zhí)行一條jnb或jb或djnz指令需要24個(gè)晶振周期。則在已經(jīng)選定晶振頻率為12mhz的情況下(如下圖三、圖四所示),執(zhí)行一條jnb或jb或djnz指令需要的時(shí)間為2us,由此可設(shè)計(jì)延時(shí)子程序del500ms和隱含在int_1、del1、del2和del3中的30s延時(shí)程序;3.jnb位移控制轉(zhuǎn)移
30、指令能轉(zhuǎn)移的范圍有限。jump1、jump2、jump3的作用是幫助相應(yīng)的jnb指令轉(zhuǎn)移到其想轉(zhuǎn)移到卻超出其轉(zhuǎn)移范圍的地方,相當(dāng)于中繼。keil uvision2中的選項(xiàng)對(duì)話框 proteus 7.8中的選項(xiàng)對(duì)話框單片機(jī)原理與應(yīng)用第四次作業(yè)學(xué)號(hào): 姓名:目錄 一、題目 二、硬件電路原理圖 三、程序流程圖與源程序 四、按題目要求設(shè)計(jì)卻不能實(shí)現(xiàn)相關(guān)功能的原理圖及其源程序1、 題目及解題思路1.題目:雙機(jī)通訊2.內(nèi)容:?jiǎn)纹瑱C(jī)串行通訊,需要的數(shù)據(jù)線少,且適合遠(yuǎn)距離傳送,因此,應(yīng)用廣泛。設(shè)計(jì)一個(gè)雙機(jī)通訊系統(tǒng)。要求甲機(jī)將從內(nèi)部ram 40h開始的16個(gè)字節(jié)數(shù)據(jù)發(fā)送給乙機(jī)。乙機(jī)接收后將數(shù)據(jù)存放到內(nèi)部ram
31、60h開始的區(qū)域,采用奇校驗(yàn)驗(yàn)證數(shù)據(jù)傳送的正確性。3.要求:用按鍵開關(guān)啟動(dòng)傳送,也可以用按鍵開關(guān)停止傳送,數(shù)據(jù)傳送期間led發(fā)光二極管閃爍,閃爍頻率為1hz。 (1)硬件:畫出硬件電路原理圖,考慮按鍵中斷及雙機(jī)傳送數(shù)據(jù)線的連接。 (2)軟件:畫出程序流程圖,編寫源程序,考慮led閃爍問題。 (3)調(diào)試:記錄調(diào)試過程,分析調(diào)試結(jié)果。二、硬件電路原理圖硬件電路原理圖如下圖一所示(未使用中斷): 圖一 用proteus 7.8繪制的硬件電路原理圖 因?yàn)樵陔娐穲D中插入太多漢字后再進(jìn)行仿真會(huì)使proteus 7.8卡住,從而無法仿真。所以上述原理圖中未用漢字標(biāo)注每一個(gè)元器件的含義?,F(xiàn)說明如下:u1為甲機(jī)
32、(發(fā)送數(shù)據(jù)),u2為乙機(jī)(接收數(shù)據(jù))。按鍵開關(guān)閉合表示允許甲機(jī)發(fā)送數(shù)據(jù),斷開表示暫停甲機(jī)發(fā)送數(shù)據(jù)。甲機(jī)發(fā)送數(shù)據(jù)時(shí),d1閃爍。和上次交的作業(yè)一樣,二極管選用的是紅色超亮發(fā)光二極管(led-red),其參數(shù)如下圖二所示,圖中顯示其完全驅(qū)動(dòng)電流為10ma,正向?qū)▔航禐?.2v,反向擊穿電壓為4v,為保證發(fā)光二極管被完全驅(qū)動(dòng),上拉電阻的阻值應(yīng)為(5-2.2)v/10ma=280,由于圖中未給出發(fā)光二極管額定電流,故無法計(jì)算使發(fā)光二極管通過額定電流時(shí)的上拉電阻阻值。 圖二 led-red的參數(shù)6、 程序流程圖與源程序3. 流程圖(用edraw mind map 7.8制作): 4. 源程序:由教材第1
33、09面例7-4改編,沒有使用中斷,若乙機(jī)接收數(shù)據(jù)后校驗(yàn)正確,則向甲機(jī)回復(fù)正確標(biāo)志ffh;若發(fā)現(xiàn)錯(cuò)誤,則向甲機(jī)發(fā)送錯(cuò)誤標(biāo)志00h,并等待重新接收。如下:甲機(jī)發(fā)送程序:org 0000h jmp startorg 0100h jmp trlpstart: mov scon,#80h ;置串行方式2,禁止接收 orl pcon,#80h ;置smod=1 mov r0,#40h ;置發(fā)送數(shù)據(jù)區(qū)首址trlp: mov a,r0 ;讀數(shù)據(jù) mov c,psw.0 ;奇偶標(biāo)志送tb8 mov tb8,cre: mov r1,#248 ;根據(jù)閃爍頻率為1hz計(jì)算得出 mov r2,#2 mov r3,#24
34、8 mov r4,#2 jb p1.5,stop ;判斷按鍵是否按下,若是,順序執(zhí)行,否則跳轉(zhuǎn) mov sbuf,a ;啟動(dòng)發(fā)送 jnb ti,$ ;等待一幀數(shù)據(jù)發(fā)送完畢 clr ti ;清發(fā)送中斷標(biāo)志 setb ren ;允許接收 clr ri ;清接收中斷標(biāo)志 jnb ri,$ ;等待接收回復(fù)信號(hào)l1: clr p1.0 call del jb p1.5,stop djnz r1,l1 mov r1,#248 djnz r2,l1l2: setb p1.0 call del jb p1.5,stop djnz r3,l2 mov r3,#248 djnz r4,l2 mov a,sbuf
35、;讀回復(fù)信號(hào) cpl a ;回復(fù)信號(hào)取反 jnz trlp ;非全0(回復(fù)信號(hào)ffh,錯(cuò)誤),轉(zhuǎn)重發(fā) inc r0 ;全0(回復(fù)信號(hào)=ffh,正確),指向下一數(shù)據(jù)存儲(chǔ)單元 cjne r0,#50h,trlp ;判16個(gè)數(shù)據(jù)發(fā)送完否-未完繼續(xù) sjmp $stop: mov p1,#0ffh jmp re del: mov r7,#25 ;延時(shí)1msdel1: mov r6,#20 del2: djnz r6,del2 djnz r7,del1 ret end 乙機(jī)接收程序:org 0000h jmp rxd2org 0100hrxd2: mov scon,#80h ;置串行方式2,禁止接收 o
36、rl pcon,#80h ;置smod=1 mov r0,#60h ;置發(fā)送數(shù)據(jù)區(qū)首址 setb ren ;啟動(dòng)接收rwap: jnb ri,$ ;等待一幀數(shù)據(jù)接收完畢 clr ri ;清接收中斷標(biāo)志 mov a,sbuf ;讀接收數(shù)據(jù),并在psw中產(chǎn)生接收數(shù)據(jù)的奇偶值 jb psw.0,one ;p=1,轉(zhuǎn)另判 jb rb8,err ;p=0,rb8=1,接收有錯(cuò);p=0,rb8=0,接收正確 ;繼續(xù)接收rlop: mov r0,a ;存接收數(shù)據(jù) inc r0 ;指向下一數(shù)據(jù)存儲(chǔ)單元rit: mov a,#0ffh ;置回復(fù)信號(hào)正確 fdbk: mov sbuf,a ;發(fā)送回復(fù)信號(hào) cjne
37、 r0,#70h,rwap ;判16個(gè)數(shù)據(jù)接收完否-未完繼續(xù) clr ren ;16個(gè)數(shù)據(jù)正確接收完畢,禁止接收 jmp $one: jnb rb8,err ;p=1,rb8=0,接收有錯(cuò) jmp rit ;p=1,rb8=1,接收正確,繼續(xù)接收err: clr a ;接收有錯(cuò),置回復(fù)信號(hào)錯(cuò)誤標(biāo)志 jmp fdbk ;轉(zhuǎn)發(fā)送回復(fù)信號(hào)end說明:已經(jīng)選定晶振頻率為12mhz,如下圖三、圖四所示:keil uvision2中的選項(xiàng)對(duì)話框 proteus 7.8中的選項(xiàng)對(duì)話框四、按題目要求設(shè)計(jì)卻不能實(shí)現(xiàn)相關(guān)功能的原理圖及其源程序甲機(jī)發(fā)送程序:org 0000h jmp startorg 0003h
38、jmp keyorg 0100h jmp trlpstart: call int_0 mov scon,#80h ;置串行方式2,禁止接收 orl pcon,#80h ;置smod=1 mov r0,#40h ;置發(fā)送數(shù)據(jù)區(qū)首址trlp: mov a,r0 ;讀數(shù)據(jù) mov c,psw.0 ;奇偶標(biāo)志送tb8 mov tb8,cre: mov r1,#248 ;根據(jù)閃爍頻率為1hz計(jì)算得出 mov r2,#2 mov r3,#248 mov r4,#2 jb p1.5,stop ;判斷按鍵是否按下,若是,順序執(zhí)行,否則跳轉(zhuǎn) mov sbuf,a ;啟動(dòng)發(fā)送 jnb ti,$ ;等待一幀數(shù)據(jù)發(fā)送
39、完畢 clr ti ;清發(fā)送中斷標(biāo)志 setb ren ;允許接收 clr ri ;清接收中斷標(biāo)志 jnb ri,$ ;等待接收回復(fù)信號(hào)l1: clr p1.0 call del jb p1.5,stop djnz r1,l1 mov r1,#248 djnz r2,l1l2: setb p1.0 call del jb p1.5,stop djnz r3,l2 mov r3,#248 djnz r4,l2 mov a,sbuf ;讀回復(fù)信號(hào) cpl a ;回復(fù)信號(hào)取反 call int_0 jnz trlp ;非全0(回復(fù)信號(hào)ffh,錯(cuò)誤),轉(zhuǎn)重發(fā) inc r0 ;全0(回復(fù)信號(hào)=ffh,正
40、確),指向下一數(shù)據(jù)存儲(chǔ)單元 cjne r0,#50h,trlp ;判16個(gè)數(shù)據(jù)發(fā)送完否-未完繼續(xù) sjmp $stop: mov p1,#0ffh jmp re int_0: setb it0 setb ex0 setb ea setb p1.5 retkey: push psw push acc cpl p1.5 pop acc pop psw retidel: mov r7,#25 ;延時(shí)1msdel1: mov r6,#20 del2: djnz r6,del2 djnz r7,del1 ret end乙機(jī)接收程序同上。單片機(jī)原理與應(yīng)用課程設(shè)計(jì) 學(xué)號(hào): 姓名: 目錄 一、題目 二、原理圖
41、 三、軟件框圖 四、軟件程序一、題目 人機(jī)接口設(shè)計(jì) 1: 4*4鍵盤輸入 2:采用4位數(shù)碼管顯示 3:當(dāng)按下某個(gè)鍵,數(shù)碼管立即顯示。 4:數(shù)碼管按每1秒,右循環(huán)顯示所按鍵值。如按下8鍵則顯示 8000,0800,0080,0008,8000,. 要求: 1)設(shè)計(jì)出原理圖,標(biāo)注參數(shù)。 2)畫出軟件框圖 3)編寫軟件(盡量詳細(xì)注釋)二、原理圖硬件電路原理圖如下圖一所示,其各部分的放大圖分別如圖二、圖三、圖四、圖五所示,各元器件的參數(shù)已標(biāo)注在圖中,各元器件的型號(hào)在圖五后面有介紹:圖一 用proteus 7.8繪制的硬件電路原理圖圖二 at89c51主機(jī)系統(tǒng)圖三 p1口、p3口、4*4鍵盤與中斷電路圖四 譯碼器與數(shù)碼管電路圖五 p0口、p2口、排阻、譯碼器與數(shù)碼管電路原理圖中,譯碼器用的是74ls247,數(shù)碼管用的是7seg-mpx1-ca共陽極數(shù)碼管。兩者組合后,譯碼器的輸入與數(shù)碼管的輸出字形之間的關(guān)系(真值表)符合題意,即譯碼器的輸入與數(shù)碼管的輸出字形之間的關(guān)系如下表所示:輸入輸出字形dcba0000000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年上學(xué)期八年級(jí)物理期末考試試卷(無答案)
- 2024版有林地離婚協(xié)議
- 2025年度定制化床墊設(shè)計(jì)生產(chǎn)采購合同3篇
- 2024項(xiàng)目立項(xiàng)專用合同書
- 2024門診部中醫(yī)拔罐師勞動(dòng)合同與拔罐養(yǎng)生服務(wù)協(xié)議3篇
- 2024年公務(wù)員考試宜賓市珙縣《行政職業(yè)能力測(cè)驗(yàn)》模擬試題含解析
- 2024特許經(jīng)營權(quán)許可與商標(biāo)使用合同
- 2025年度安置房項(xiàng)目投資合作協(xié)議3篇
- 【單元AB卷 核心基礎(chǔ)卷】人教新起點(diǎn)英語一年級(jí)上冊(cè)單元核心基礎(chǔ)卷-Unit 1 School(含答案)
- 2024年從業(yè)人員職業(yè)健康管理制度
- 部隊(duì)行車安全教育
- 低溫共燒陶瓷(LTCC)全球市場(chǎng)、份額、市場(chǎng)規(guī)模、趨勢(shì)、行業(yè)分析報(bào)告2024-2030年
- 防止電氣誤操作課件
- 物業(yè)暖通工程師年工作總結(jié)及年工作計(jì)劃
- 手術(shù)室標(biāo)本管理
- 肌鈣蛋白升高詳細(xì)解讀
- 新供應(yīng)商評(píng)價(jià)表
- 地質(zhì)災(zāi)害風(fēng)險(xiǎn)調(diào)查評(píng)價(jià)項(xiàng)目招標(biāo)文件
- 直流屏安裝施工方案
- 九年級(jí)上冊(cè)第二單元民主與法治 單元作業(yè)設(shè)計(jì)
- 三年級(jí)上冊(cè)豎式、脫式、應(yīng)用題每日一練
評(píng)論
0/150
提交評(píng)論