![MCS-51單片機接口技術(shù)培訓課件_第1頁](http://file4.renrendoc.com/view/e8ecec9772c6518176212f07217b5315/e8ecec9772c6518176212f07217b53151.gif)
![MCS-51單片機接口技術(shù)培訓課件_第2頁](http://file4.renrendoc.com/view/e8ecec9772c6518176212f07217b5315/e8ecec9772c6518176212f07217b53152.gif)
![MCS-51單片機接口技術(shù)培訓課件_第3頁](http://file4.renrendoc.com/view/e8ecec9772c6518176212f07217b5315/e8ecec9772c6518176212f07217b53153.gif)
![MCS-51單片機接口技術(shù)培訓課件_第4頁](http://file4.renrendoc.com/view/e8ecec9772c6518176212f07217b5315/e8ecec9772c6518176212f07217b53154.gif)
![MCS-51單片機接口技術(shù)培訓課件_第5頁](http://file4.renrendoc.com/view/e8ecec9772c6518176212f07217b5315/e8ecec9772c6518176212f07217b53155.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第9章MCS-51單片機接口技術(shù)9.1鍵盤接口9.2顯示器接口9.3A/D轉(zhuǎn)換器接口9.4D/A轉(zhuǎn)換器接口9.5步進電機控制第9章MCS-51單片機接口技術(shù)9.1鍵盤接口19.1鍵盤接口9.1.1鍵盤概述1、按鍵開關(guān)去抖動問題
圖9-1鍵盤抖動過程鍵盤的抖動時間一般為5~10ms,抖動現(xiàn)象會引起CPU對一次鍵操作進行多次處理,從而可能產(chǎn)生錯誤。9.1鍵盤接口9.1.1鍵盤概述圖9-1鍵盤抖動過程2消除抖動不良后果的方法:⑴硬件去抖動圖9-2硬件去抖動電路其中RC濾波電路去抖動電路簡單實用,效果較好。⑵軟件去抖動檢測到按鍵按下后,執(zhí)行延時10ms子程序后再確認該鍵是否確實按下,消除抖動影響。消除抖動不良后果的方法:圖9-2硬件去抖動電路其中RC32.按鍵編碼(1)用鍵盤連接的I/O線的二進制組合表示鍵碼。(2)順序排列編碼。
首先確定按鍵的行號m,再確定按鍵的列號n,則
鍵碼=行號m×4+列號n(a)二進制組合編碼;(b)順序排列編碼2.按鍵編碼(a)二進制組合編碼;(b)順序排列編碼49.1.2獨立式按鍵獨立式按鍵特點:(1)各按鍵相互獨立,電路配置靈活(2)軟件結(jié)構(gòu)簡單(3)按鍵數(shù)量較多時,I/O線耗費較多,只適用于按鍵數(shù)量較少的場合。獨立式按鍵電路如圖9-4所示。圖9-4獨立式按鍵9.1.2獨立式按鍵獨立式按鍵特點:圖9-4獨立式按鍵5圖9-4(a)所示的獨立按鍵掃描程序如下:KEYA:ORLP1,#07H;置P1.0~P1.2為輸入態(tài)MOVA,P1;讀鍵值,鍵閉合相應(yīng)位為0CPLA;取反,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無鍵閉合,返回LCALLDY10ms;非全0,有鍵閉合,延時10ms,軟件去抖動MOVA,P1;重讀鍵值,鍵閉合相應(yīng)位為0CPLA;取反,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無鍵閉合,返回;非全0,確認有鍵閉合JBAcc.0,KA0;轉(zhuǎn)0#鍵功能程序JBAcc.1,KA1;轉(zhuǎn)1#鍵功能程序JBAcc.2,KA2;轉(zhuǎn)2#鍵功能程序GRET:RETKA0:LCALLWORK0;執(zhí)行0#鍵功能子程序RETKA1:LCALLWORK1;執(zhí)行1#鍵功能子程序RETKA2:LCALLWORK2;執(zhí)行2#鍵功能子程序RET圖9-4(a)所示的獨立按鍵掃描程序如下:6圖9-4(b)所示的獨立按鍵掃描程序如下:KEYB:ORLP1,#07H;置P1.0~P1.2為輸入態(tài)MOVA,P1;讀鍵值,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無鍵閉合,返回LCALLDY10ms;非全0,有鍵閉合,延時10ms,軟件去抖動MOVA,P1;重讀鍵值,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無鍵閉合,返回;非全0,確認有鍵閉合JBAcc.0,KB0;轉(zhuǎn)0#鍵功能程序JBAcc.1,KB1;轉(zhuǎn)1#鍵功能程序JBAcc.2,KB2;轉(zhuǎn)2#鍵功能程序GRET:RETKB0:LCALLWORK0;執(zhí)行0#鍵功能子程序RETKB1:LCALLWORK1;執(zhí)行1#鍵功能子程序RETKB2:LCALLWORK2;執(zhí)行2#鍵功能子程序RET圖9-4(b)所示的獨立按鍵掃描程序如下:79.1.3矩陣式鍵盤若需要的按鍵數(shù)目較多,通常采用矩陣式(也稱行列式)鍵盤。I/O端口線分為行線和列線,按鍵跨接在行線和列線的交叉處,按鍵按下時,行線與列線連同,形成回路。其特點是占用I/O線較少,但軟件較復(fù)雜。圖9-5矩陣式鍵盤結(jié)構(gòu)9.1.3矩陣式鍵盤若需要的按鍵數(shù)目81.查詢方式查詢式確認鍵盤中有無鍵按下的基本方法是(以圖9-5為例):P1.4-P1.7輸出0,即所有列線置成低電平,然后將行線電平狀態(tài)讀入累加器A中。如果有鍵按下,總會有一根行線電平被拉至低電平,從而使行輸入狀態(tài)不全為"1"。確認鍵盤中哪一個鍵按下的方法是:從P1.4開始,依次輸出"0",置對應(yīng)的列線為低電平,然后讀入行線狀態(tài),如果全為"1",則所按下之鍵不在此列;如果不全為"1",則所按下的鍵必在此列,而且是與0電平行線相交的交點上的那個鍵。確認鍵碼的過程是:先確認行號,再確認列號
鍵碼=行號×4+列號。1.查詢方式9參考程序如下:KEY:MOVP1,#0F0H;行線置低電平,列線置輸入態(tài)KEY0:MOVA,P1;讀列線數(shù)據(jù)CPLA;數(shù)據(jù)取反,“1”有效ANLA,#0F0H;屏蔽行線,保留列線數(shù)據(jù)MOVR1,A;存列線數(shù)據(jù)(R1高4位)JZGRET;全0,無鍵按下,返回KEY1:MOVP1,#0FH;行線置輸入態(tài),列線置低電平MOVA,P1;讀行線數(shù)據(jù)CPLA;數(shù)據(jù)取反,“1”有效ANLA,#0FH;屏蔽列線,保留行線數(shù)據(jù)MOVR2,A;存行線數(shù)據(jù)(R2低4位)JZGRET;全0,無鍵按下,返回JBCF0,WAIT;已有消抖標志,轉(zhuǎn)SETBF0;無消抖標志,置消抖標志LCALLDY10ms;調(diào)用10ms延時子程序消抖SJMPKEY0;重讀行線列線數(shù)據(jù)GRET:RET參考程序如下:10WAIT:MOVA,P1;等待按鍵釋放
CPLAANLA,#0FHJNZWAIT;按鍵未釋放,繼續(xù)等待KEY2:MOVA,R1;取列線數(shù)據(jù)(高4位)MOVR1,#03H;取列線編號初值MOVR3,#03H;置循環(huán)數(shù)CLRCKEY3:RLCA;依次左移入C中JCKEY4;C=1,該列有鍵按下,(列線編號存R1)DECR1;C=0,無鍵按下,修正列編號DJNZR3,KEY3;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的列線KEY4:MOVA,R2;取行線數(shù)據(jù)(低4位)MOVR2,#00H;置行線編號初值MOVR3,#03H;置循環(huán)數(shù)CLRCKEY5:RRCA;依次右移入C中JCKEY6;C=1,該行有鍵按下,(行線編號存R2)INCR2;C=0,無鍵按下,修正行線編號DJNZR3,KEY5;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的行線WAIT:MOVA,P1;等11KEY6:MOVA,R2;取行線編號CLRCRLCA;行編號×2RLCA;行編號×4ADDA,R1;行編號×4+列編號=按鍵編號KEY7:CLRCRLCA;按鍵編號×2RLCA;按鍵編號×4(LCALL+RET共4字節(jié))MOVDPTR,#TABJJMP@A+DPTR;散轉(zhuǎn),執(zhí)行相應(yīng)鍵功能子程序TABJ:LCALLWORK0;調(diào)用執(zhí)行0#鍵功能子程序RETLCALLWORK1;調(diào)用執(zhí)行1#鍵功能子程序RET……
LCALLWORK15;調(diào)用執(zhí)行15#鍵功能子程序RET
KEY6:MOVA,R2;取行線編122.定時掃描方式圖9-6定時掃描流程定時掃描方式就是每隔一段時間對鍵盤掃描一次,它利用單片機內(nèi)部的定時器產(chǎn)生一定時間(例如10ms)的定時,當定時時間到就產(chǎn)生定時器溢出中斷。CPU響應(yīng)中斷后對鍵盤進行掃描。2.定時掃描方式圖9-6定時掃描流程定時掃描方式就是每133.中斷方式圖9-7中斷鍵盤接口電路具體工作如下:當鍵盤無鍵按下時,與門各輸入端均為高電平,輸出端也為高電平,無中斷請求;當有鍵按下時,相應(yīng)行線為低電平,與門輸出端也為低電平,向CPU申請中斷。若CPU開放外部中斷,則會響應(yīng)中斷請求,轉(zhuǎn)去執(zhí)行鍵盤掃描子程序。3.中斷方式圖9-7中斷鍵盤接口電路具體工作如下:當鍵14參考程序如下:ORG0000H;復(fù)位地址LJMPSTAT;轉(zhuǎn)初始化ORG0003H;中斷入口地址LJMPPINT0;轉(zhuǎn)中斷服務(wù)程序
ORG0100H;初始化程序首地址STAT:MOVSP,#60H;置堆棧指針
SETBIT0;置為邊沿觸發(fā)方式
MOVIP,#00000001B;置為高優(yōu)先級中斷
MOVP1,#00001111B;置P1.0~P1.3置為輸入態(tài),置P1.4~P1.7輸出0SETBEA;CPU開中
SETBEX0;開中
LJMPSTAT;轉(zhuǎn)主程序,并等待有鍵按下時中斷ORG0200H;中斷服務(wù)程序首地址參考程序如下:15PINT0:PUSHAcc;保護現(xiàn)場
PUSHPSWMOVA,P1;讀行線(P1.0~P1.3)數(shù)據(jù)
CPLA;數(shù)據(jù)取反,“1”有效
ANLA,#0FH;屏蔽列線,保留行線數(shù)據(jù)
MOVR2,A;存行線(P1.0~P1.3)數(shù)據(jù)(R2低4位)MOVP1,#0F0H;行線置低電平,列線置輸入態(tài)
MOVA,P1;讀列線(P1.4~P1.7)數(shù)據(jù)
CPLA;數(shù)據(jù)取反,“1”有效
ANLA,#0F0H;屏蔽行線,保留列線數(shù)據(jù)(A中高4位)MOVR1,#03H;取列線編號初值
MOVR3,#03H;置循環(huán)數(shù)
CLRCPINT01:RLCA;依次左移入C中JCPINT02;C=1,該列有鍵按下,(列線編號存R1)DECR1;C=0,無鍵按下,修正列編號DJNZR3,PINT01;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下列線PINT0:PUSHAcc16PINT02:MOVA,R2;取行線數(shù)據(jù)(低4位)MOVR2,#00H;置行線編號初值MOVR3,#03H;置循環(huán)數(shù)PINT03:RRCA;依次右移入C中JCPINT04;C=1,該行有鍵按下,(行線編號存R2)INCR2;C=0,無鍵按下,修正行線編號DJNZR3,PINT03;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下行線PINT04:MOVA,R2;取行線編號CLRCRLCA;行編號×2RLCA;行編號×4ADDA,R1;行編號×4+列編號=按鍵編號MOV30H,A;存按鍵編號POPPSWPOPAccRETIPINT02:MOVA,R2179.1.4鍵盤控制器MM74C922引腳
圖9-8MM74C922引腳9.1.4鍵盤控制器MM74C922引腳圖9-18DATAOUTA—DATAOUTB鍵盤輸出,接單片機輸入口。COLUMNX1—X3鍵盤列線ROWY1—Y4鍵盤行線。Oscillator振蕩引腳,接電容。KeyboardMask按鍵淹沒引腳,功能為硬件消抖動。DataAvailable數(shù)據(jù)有效。OutEnable輸出使能。DATAOUTA—DATAOUTB鍵盤輸出,接單片19表9-1MM74C922芯片輸出與按鍵關(guān)系按鍵DCBA按鍵DCBA00000810001000191001200101010103001111101140100121100501011311016011014111070111151111表9-1MM74C922芯片輸出與按鍵關(guān)系按鍵DCBA20圖9-9MM74C922與單片機連接返回圖9-9MM74C922與單片機連接返回219.2顯示器接口9.2.1LED數(shù)碼管顯示器結(jié)構(gòu)圖9-107段LED數(shù)碼管顯示器9.2顯示器接口9.2.1LED數(shù)碼管顯示器結(jié)構(gòu)圖922段選碼:通常把控制發(fā)光二極管的8位二進制數(shù)稱為段選碼(顯示代碼)。各段碼與數(shù)據(jù)位的對應(yīng)關(guān)系如下:段碼位D7D6
D5D4D3D2D1D0顯示位Dpgfedcba段選碼:通常把控制發(fā)光二極管的8位二進制數(shù)稱為段選碼(顯23表9-2七段LED的段選碼03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82H
Γ31HCEH707HF8Hy6EH91H87FH80H8FFH00H96FH90H“滅”00HFFHA77H88HB7CH83H共陰極段選碼共陰極段選碼共陽極段選碼共陽極段選碼顯示字符顯示字符表9-2七段LED的段選碼03F249.2.2LED數(shù)碼管顯示器工作原理1、LED靜態(tài)顯示
靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。各位數(shù)碼管相互獨立,公共端恒定接地(共陰極)或接正電源(共陽極)。
圖9-11一位靜態(tài)LED顯示9.2.2LED數(shù)碼管顯示器工作原理1、LED靜態(tài)顯示圖925圖9-123位靜態(tài)LED顯示圖9-123位靜態(tài)LED顯示26DIR1:MOVDPTR,#TABMOVA,30H;讀顯示數(shù)MOVB,#100;置除數(shù)DIVAB;產(chǎn)生百位顯示數(shù)字MOVCA,@A+DPTR;讀百位顯示符MOVDPTR,#0DFFFH;置74377(百位)地址MOVX@DPTR,A;輸出百位顯示符MOVA,B;讀余數(shù)MOVB,#10;置除數(shù)DIVAB;產(chǎn)生十位顯示數(shù)字MOVDPTR,#TAB;置共陽字段碼表首址MOVCA,@A+DPTR;讀十位顯示符MOVDPTR,#0BFFFH;置74377(十位)地址MOVX@DPTR,A;輸出十位顯示符靜態(tài)顯示參考程序如下,設(shè)要顯示的數(shù)據(jù)(≤255)存在30H開始的內(nèi)RAM中。DIR1:MOVDPTR,#TAB靜態(tài)顯示參考程序如下,27MOVA,B;讀個位顯示數(shù)字MOVDPTR,#TAB;置共陽字段碼表首址MOVCA,@A+DPTR;讀個位顯示符MOVDPTR,#7FFFH;置74377(個位)地址MOVX@DPTR,A;輸出個位顯示符RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H;共陽字段碼表DB92H,82H,0F8H,80H,90H;MOVA,B28靜態(tài)顯示也可以用串行方式實現(xiàn),如圖9-13所示。圖9-13串行靜態(tài)顯示靜態(tài)顯示也可以用串行方式實現(xiàn),如圖9-13所示。圖9-1329顯示程序如下,設(shè)顯示字段碼已分別存在32H~30H內(nèi)RAM中。DIR2:MOVSCON,#00H;置串口方式0CLRES;串口禁中SETBP1.0;“與”門開,允許TXD發(fā)移位脈沖MOVSBUF,30H;串行輸出個位顯示字段碼JNBTI,$;等待串行發(fā)送完畢CLRTI;清串行中斷標志MOVSBUF,31H;串行輸出十位顯示字段碼JNBTI,$;等待串行發(fā)送完畢CLRTI;清串行中斷標志MOVSBUF,32H;串行輸出百位顯示字段碼JNBTI,$;等待串行發(fā)送完畢CLRTI;清串行中斷標志CLRP1.0;“與”門關(guān),禁止TXD發(fā)移位脈沖RET顯示程序如下,設(shè)顯示字段碼已分別存在32H~30H內(nèi)RAM中30在實際應(yīng)用中,常常還會用到BCD顯示。如圖9-14所示。4511為BCD碼LED顯示器譯碼器,其輸入為BCD,輸出為相應(yīng)的段選碼(顯示代碼)。圖9-14靜態(tài)BCD顯示在實際應(yīng)用中,常常還會用到BCD顯示。31參考程序如下,小數(shù)點固定在第二位,設(shè)顯示數(shù)存在內(nèi)RAM30H~32H中。DIR3:MOVP1,#11100000B;選通個位ORLP1,30H;輸出個位顯示數(shù)MOVP1,#11010000B;選通十位ORLP1,31H;輸出十位顯示數(shù)MOVP1,#10110000B;選通百位ORLP1,32H;輸出百位顯示數(shù)RET參考程序如下,小數(shù)點固定在第二位,設(shè)顯示數(shù)存在內(nèi)RAM30322、LED動態(tài)顯示
動態(tài)顯示是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線控制。
圖9-15LED動態(tài)顯示2、LED動態(tài)顯示圖9-15LED動態(tài)顯示33編制循環(huán)掃描10次顯示子程序,已知顯示字段碼存在以30H(低位)為首址的8字節(jié)內(nèi)RAM中。參考程序如下:DIR4:MOVR2,#10;置循環(huán)掃描次數(shù)MOVDPTR,#7FFFH;置74377口地址DLP1:ANLP1,#11111000B;第0位先顯示MOVR0,#30H;置顯示字段碼首址DLP2:MOVA,@R0;讀顯示字段碼MOVX@DPTR,A;輸出顯示字段碼LCALLDY2ms;調(diào)用延時2ms子程序INCR0;指向下一位字段碼INCP1;選通下一位顯示CJNER0,#38H,DLP2;判8位掃描顯示完否?未完繼續(xù)DJNZR2,DLP1;8位掃描顯示完畢,判10次循環(huán)完否?CLRA;10次循環(huán)完畢,關(guān)顯示MOVX@DPTR,ARET;子程序返回編制循環(huán)掃描10次顯示子程序,已知顯示字段碼存在以30H(低349.2.3液晶(LCD)顯示1.HD44780引腳圖9-16HD44780引腳9.2.3液晶(LCD)顯示1.HD44780引腳圖9-35引腳符號功能1Vss電源地2Vdd電源:5V3V1-V5驅(qū)動電壓:0-5V4RS0選指令寄存器IR,1選數(shù)據(jù)寄存器DR5R/W0寫操作,1讀操作6E下降沿使能有效7-10DB0-DB3數(shù)據(jù)低位,4位傳送時,不用11-14DB4-DB7數(shù)據(jù)高位,4位傳送時,使用引腳符號功能1Vss電源地2Vdd電源:5V3V1-V5驅(qū)動362.HD44780內(nèi)部結(jié)構(gòu)圖9-17HD44780內(nèi)部結(jié)構(gòu)2.HD44780內(nèi)部結(jié)構(gòu)圖9-17HD44780內(nèi)部結(jié)37IR:指令寄存器,存儲指令DR:數(shù)據(jù)寄存器。DDRAM、CGRAM的數(shù)據(jù)存取都要經(jīng)過DR,當CPU讀取DR內(nèi)容后,DR會自動加載下一個數(shù)據(jù)內(nèi)容。連續(xù)讀數(shù)時,只需指定起始地址。BF:“忙”標志,1表示器件正在進行內(nèi)部工作,不能讀寫數(shù)據(jù)。AC:AC的內(nèi)容為DDRAM或CGRAM的地址指針。DDRAM:DDRAM的內(nèi)容與顯示屏的物理位置一一對應(yīng)。給DDRAM某一單元寫入字符編碼時,就在顯示屏對應(yīng)位置顯示該字符。123…1516171819201000102…0E0F101112132404142…4E4F505151533141516…2223242526274545556…626364656667表9-4DDRAM地址與顯示位置的對應(yīng)關(guān)系IR:指令寄存器,存儲指令123…15161718192038CGROM:如表9-5所示,其內(nèi)容為192個字符的點陣信息。表9-5CGROM內(nèi)容CGROM:如表9-5所示,其內(nèi)容為192個字符的點陣信息。39DDRAM數(shù)據(jù)CGRAM地址CGRAM數(shù)據(jù)765432105432107654321000000000(低3位000表示字符代碼為00H,最高為111表示字符代碼是07H)000000第1行000001000010:000011:000100:000101000110000111第8行000001000000010000000100000001
1100000100000001000001111100000000CGRAM:CGRAM的內(nèi)容為用戶編寫的特殊字符的點陣信息。CGRAM地址與字符圖形的對應(yīng)關(guān)系如表9-6所示。以“上”字為例。表9-6CGRAM地址與字符圖形的對應(yīng)關(guān)系DDRAM數(shù)據(jù)CGRAM地址CGRAM數(shù)據(jù)7654340從圖中可以看出,DDRAM地址的0-2位等同于CGRAM地址的3-5位,表示字符代碼的0-7。CGRAM地址的0-2位定義字符的行號。“上”字的CGRAM數(shù)據(jù)為:04H,04H,04H,07H,04H,04H,1FH對應(yīng)的CGRAM地址為:00H-07H,字符代碼為0。從圖中可以看出,DDRAM地址的0-2413.HD44789指令表9-7HD44789指令3.HD44789指令表9-7HD44789指令424.HD44780與單片機接口
圖9-18HD44789與單片機的連接4.HD44780與單片機接口圖9-18HD447435.ASCII字符顯示應(yīng)用舉例(a)主程序流程5.ASCII字符顯示應(yīng)用舉例(a)主程序流程44(b)子程序流程(b)子程序流程45參考程序如下:ENEQUP3.0RWEQUP3.1RSEQUP3.2LCDEQUP1ORG0300HINITIALIZE:MOVA,#00111000B;設(shè)定為8位,2行,5×7字型CALLWRINSTMOVA,#00001000B;關(guān)閉顯示器CALLWRINSTMOVA,#00000001B;清除顯示器CALLWRINSTMOVA,#00001111B;開顯示、游標、閃爍CALLWRINSTMOVA,#00000110B;設(shè)定AC+1CALLWRINST參考程序如下:46LOOP:MOVA,#10000000B;設(shè)定第一行起始地址CALLWRINSTMOVDPTR,#LINE1;指向第一行顯示數(shù)據(jù)MOVR0,#16;一行16個字符CALLWRSTRING;顯示第一行CALLDELAY2;延時2秒MOVA,#11000000B;設(shè)定第二行起始地址CALLWRINSTMOVDPTR,#LINE2;指向第二行顯示數(shù)據(jù)MOVR0,#16;一行顯示16個字符CALLWRSTRING;顯示第二行CALLDELAY2;延時2秒MOVA,#10000000B;設(shè)定第一行起始地址CALLWRINST MOVDPTR,#LINE3;指向第一行顯示數(shù)據(jù) MOVR0,#16;一行顯示16個字符CALLWRSTRING;顯示第一行CALLDELAY2;延時2秒LOOP:MOVA,#10000000B47MOVA,#11000000B;設(shè)定第二行起始地址CALLWRINSTMOVDPTR,#LINE4;指向第二行顯示數(shù)據(jù)MOVR0,#16;一行顯示16個字符CALLWRSTRING;顯示第二行CALLDELAY2;延時2秒JMPLOOP;循環(huán)顯示W(wǎng)RINST:CALLCHECKBF;檢查"忙"標志CLRRS;RS=0,RW=0為指令寫入操作CLRRWSETBENMOVLCD,A;傳送指令CLREN;下降沿寫入RETMOVA,#1100048CHECKBF:PUSHACCBUSY:CLRRS;RS=0,RW=1為讀取BF操作CLRRWSETBENMOVA,LCDCLRENJBACC.7,BUSYCALLDELAYPOPACCRETWRSTRING:MOVR1,#0;寫入數(shù)據(jù),R1為計數(shù)器NEXT:MOVA,R1MOVCA,@A+DPTR;查表讀取數(shù)據(jù)
CALLWRDATAINCR1DJNZR0,NEXTRETCHECKBF:PUSHACC49WRDATA:CALLCHECKBFSETBRS;RS=0,RW=1為數(shù)據(jù)寫入操作CLRRWSETBENMOVLCD,ACLRENRETDELAY:MOVR6,#15;"忙"標志檢查延時D1:MOVR7,#200DJNZR7,$DJNZR6,D1RETDELAY2:MOVR5,#20;2秒延時D3:MOVR6,#200D2:MOVR7,#250DJNZR7,$DJNZR6,D2DJNZR5,D3RETWRDATA:CALLCHECKBF50MCS-51單片機接口技術(shù)培訓課件516.自建字符顯示舉例在HD44789上顯示自建字符“上”,方法如下:(1)將自建字符“上”轉(zhuǎn)換成5×7點陣代碼,如表9-6所示。(2)初始化。和顯示ASCII字符一樣。(3)設(shè)置CGRAM地址(000-111),將自建字符點陣代碼寫入指定的CGRAM單元。(4)設(shè)置DDRAM地址,決定自建字符顯示位置,并將自建字符點陣代碼在CGRAM中的地址號(000-111)寫入DDRAM指定單元。6.自建字符顯示舉例52參考程序如下:ENEQUP3.0RWEQUP3.1RSEQUP3.2LCDEQUP1ZIFUEQU38H;自建字符點陣代碼的CGRAM地址ORG0300HINITIALIZE:MOVA,#00111000B;設(shè)定為8位,2行,5×7字型CALLWRINSTMOVA,#00001000B;關(guān)閉顯示器CALLWRINSTMOVA,#00000001B;清除顯示器CALLWRINSTMOVA,#00001111B;開顯示、游標、閃爍CALLWRINSTMOVA,#00000110B;設(shè)定AC+1CALLWRINSTMOVZIFU,#0;從0號地址開始參考程序如下:53WRCG:MOVA,#01000000B;指定CGRAM起始地址0CALLWRINSTMOVR2,#8;8個字節(jié)MOVR0,#0MOVDPTR,#CHAR;自建字符點陣代碼首地址NEXTC:MOVA,R0MOVCA,@A+DPTR;取自建字符代碼CALLWRDATA;寫入CGRAMINCR0DJNZR2,NEXTCWRZIFU:MOVA,#10000000B;設(shè)定DDRAM第一行起始地址CALLWRINSTMOVA,ZIFU;取自建字符的CGRAM地址CALLWRDATA;寫入DDRAMSJMP$WRCG:MOVA,#01000000B54WRINST:CALLCHECKBF;檢查"忙"標志CLRRS;RS=0,RW=0為指令寫入操作CLRRWSETBENMOVLCD,A;傳送指令CLREN;下降沿寫入RETCHECKBF:PUSHACCBUSY:CLRRS;RS=0,RW=1為讀取BF操作CLRRWSETBENMOVA,LCDCLRENJBACC.7,BUSYCALLDELAYPOPACCRETWRINST:CALLCHECKBF;檢55WRDATA:CALLCHECKBFSETBRS;RS=0,RW=1為數(shù)據(jù)寫入操作CLRRWSETBENMOVLCD,ACLRENRETDELAY:MOVR6,#15;"忙"標志檢查延時D1:MOVR7,#200DJNZR7,$DJNZR6,D1RETCHAR:DB04H,04H,04H,07H,04H,04H,1FH,00HEND返回WRDATA:CALLCHECKBF返回569.3A/D轉(zhuǎn)換器接口被測控的對象單片微機應(yīng)用系統(tǒng)傳感器采樣保持A/D開關(guān)控制部件模擬執(zhí)行部件D/A非電信號模擬電信號圖9-20單片機應(yīng)用系統(tǒng)結(jié)構(gòu)
模/數(shù)轉(zhuǎn)換(A/D):由模擬量變?yōu)閿?shù)字量的轉(zhuǎn)換。數(shù)/模轉(zhuǎn)換(D/A):由數(shù)字量轉(zhuǎn)為模擬量的轉(zhuǎn)換。9.3.1概述9.3A/D轉(zhuǎn)換器接口傳感器采樣保持A/D開關(guān)控制部件模擬57A/D轉(zhuǎn)換器的主要性能指標:1.分辯率。2.量程。3.精度。4.轉(zhuǎn)換時間。5.輸出邏輯電平。6.工作溫度范圍。7.對參考電壓的要求。A/D轉(zhuǎn)換器的主要性能指標:589.3.2A/D轉(zhuǎn)換應(yīng)用1.ADC0809芯片簡介圖9-21ADC0809芯片的內(nèi)部邏輯結(jié)構(gòu)與引腳圖9.3.2A/D轉(zhuǎn)換應(yīng)用1.ADC0809芯片簡介圖9-259
ADC0809的引腳功能⑴IN0~IN7:8路模擬信號輸入端。⑵C、B、A:8路模擬信號轉(zhuǎn)換選擇端。與低8位地址中A0~A2連接。由A0~A2地址000~111選擇IN0~IN7八路A/D通道。⑶CLK:外部時鐘輸入端。時鐘頻率高,A/D轉(zhuǎn)換速度快。允許范圍為10~1280KHz。通常由80C51ALE端直接或分頻后與0809CLK端相連接。⑷D0~D7:數(shù)字量輸出端。⑸OE:A/D轉(zhuǎn)換結(jié)果輸出允許控制端。OE=1,允許將A/D轉(zhuǎn)換結(jié)果從D0~D7端輸出。通常由80C51的端與0809片選端(例如P2.0)通過或非門與0809OE端相連接。⑹ALE:地址鎖存允許信號輸入端。0809ALE信號有效時將當前轉(zhuǎn)換的通道地址鎖存。⑺START:啟動A/D轉(zhuǎn)換信號輸入端。當START端輸入一個正脈沖時,立即啟動0809進行A/D轉(zhuǎn)換。START端與ALE端連在一起,由80C51WR與0809片選端(例如P2.0)通過或非門相連。⑻EOC:A/D轉(zhuǎn)換結(jié)束信號輸出端,高電平有效。⑼UREF(+)、UREF(-):正負基準電壓輸入端。⑽Vcc:正電源電壓(+5V)。GND:接地端。ADC0809的引腳功能60表9-8ADC0809通道地址選擇表CBA選通的通道000 IN0001IN1010 IN2011 IN3100 IN4101 IN5110 IN6111 IN7表9-8ADC0809通道地址選擇表CBA612.ADC0809與單片機接口圖9-22ADC0809與8051接口2.ADC0809與單片機接口圖9-22ADC0809與8623、A/D轉(zhuǎn)換應(yīng)用舉例設(shè)圖9-22接口電路用于一個8路模擬量輸入的巡回檢測系統(tǒng),使用中斷方式采樣數(shù)據(jù),把采樣轉(zhuǎn)換所得的數(shù)字量按序存于片內(nèi)RAM的30H~37H單元中。采樣完一遍后停止采集。
初始化程序:MOVR0,#30H;設(shè)立數(shù)據(jù)存儲區(qū)指針MOVR2,#08H;設(shè)置8路采樣計數(shù)值SETBIT0;設(shè)置外部中斷0為邊沿觸發(fā)方式SETBEA;CPU開放中斷SETBEX0;允許外部中斷0中斷MOVDPTR,#0FEF8H;送入口地址并指向IN0LOOP:MOVX@DPTR,A;啟動A/D轉(zhuǎn)換,A的值無意義HERE:SJMPHERE;等待中斷3、A/D轉(zhuǎn)換應(yīng)用舉例初始化程序:63中斷服務(wù)程序:MOVXA,@DPTR;讀取轉(zhuǎn)換后的數(shù)字量MOV@R0,A;存入片內(nèi)RAM單元INCDPTR;指向下一模擬通道INCR0;指向下一個數(shù)據(jù)存儲單元DJNZR2,INT;8路未轉(zhuǎn)換完,則繼續(xù)CLREA;已轉(zhuǎn)換完,則關(guān)中斷CLREX0;禁止外部中斷0中斷RETI;中斷返回INT:MOVX@DPTR,A;再次啟動A/D轉(zhuǎn)換RETI;中斷返回中斷服務(wù)程序:64用查詢方式實現(xiàn)轉(zhuǎn)換,參考程序如下:ORG0000H;主程序入口地址LJMPMAIN;跳轉(zhuǎn)主程序
ORG1000HMAIN:MOVR0,#30HMOVR2,#08HMOVDPTR,#0FEF8HMOVA,#00HL0:MOVX@DPTR,AL1:JBP3.3,L1;查詢/INT1是否為0MOVXA,@DPTR;/INT1為0,則轉(zhuǎn)換結(jié)束,讀出數(shù)據(jù)MOV@R0,AINCR0INCDPTRDJNZR2,L0SJMP$返回用查詢方式實現(xiàn)轉(zhuǎn)換,參考程序如下:返回659.4D/A轉(zhuǎn)換器接口9.4.1概述D/A轉(zhuǎn)換器的主要性能指標:(1)分辨率
(2)建立時間
(3)輸入編碼形式
(4)轉(zhuǎn)換線性(5)輸出電平
9.4D/A轉(zhuǎn)換器接口9.4.1概述669.4.2D/A轉(zhuǎn)換應(yīng)用1、DAC0832的引腳及功能圖9-23DAC0832引腳9.4.2D/A轉(zhuǎn)換應(yīng)用1、DAC0832的引腳及功能圖967DI0~DI7:8位數(shù)據(jù)輸入端。ILE:輸入數(shù)據(jù)允許鎖存信號,高電平有效。/CS:片選端,低電平有效。/WR1:輸入寄存器寫選通信號,低電平有效。/WR2:DAC寄存器寫選通信號,低電平有效。/XFER:數(shù)據(jù)傳送信號,低電平有效。IOUT1、IOUT2:電流輸出端。RFB:反饋電流輸入端。UREF:基準電壓輸入端。Vcc:正電源端。AGND:模擬地。DGND:數(shù)字地。DI0~DI7:8位數(shù)據(jù)輸入端。682.DAC0832邏輯結(jié)構(gòu)圖9-24DAC0832內(nèi)部結(jié)構(gòu)2.DAC0832邏輯結(jié)構(gòu)圖9-24DAC0832內(nèi)部結(jié)693、DAC0832工作方式用軟件指令控制這5個控制端:ILE、/CS、/WR1、/WR2、/XFER,可實現(xiàn)三種工作方式:直通工作方式:5個控制端均有效,直接D/A轉(zhuǎn)換;單緩沖工作方式:5個控制端一次選通,即兩個輸入寄存器中任意一個處于直通方式,另一個工作于受控方式。雙緩沖工作方式:5個控制端分二次選通。即兩個鎖存器都處于受控狀態(tài)。3、DAC0832工作方式704、DAC0832單緩沖方式圖9-25DAC0832單緩沖方式4、DAC0832單緩沖方式圖9-25DAC0832單71圖9-26用DAC產(chǎn)生鋸齒波
圖9-26用DAC產(chǎn)生鋸齒波72假定輸入寄存器地址為7FFFH,產(chǎn)生鋸齒波的源程序清單如下:ORG0200HDASAW:MOVDPTR,#7FFFH;輸入寄存器地址,假定P2.7接MOVA,#00H;轉(zhuǎn)換初值WW:MOVX@DPTR,A;D/A轉(zhuǎn)換INCA;A中的植加1NOP;延時NOPNOPAJMPWW;循環(huán)矩形波參考程序:BEGIN:MOVDPTR,#7FFFHLP:MOVA,#DATAH;矩形波上限MOVX@DPTR,ALCALLDELAYH;高電平延時時間MOVA,#DATAL;矩形波下限MOVX@DPTR,ALCALLDELAYL;低電平延時時間SJMPLP假定輸入寄存器地址為7FFFH,產(chǎn)生鋸齒波的源程序清單如下:73對鋸齒波的產(chǎn)生作如下幾點說明:(1)程序每循環(huán)一次,A加1,因此實際上鋸齒波的上升沿是由256個小階梯構(gòu)成的,但由于階梯很小,所以從宏觀上看就是線性增長的鋸齒波。(2)可通過循環(huán)程序段的機器周期數(shù)計算出鋸齒波的周期,并可根據(jù)需要,通過延時的辦法來改變波形周期。當延遲時間較短時,可用NOP指令來實現(xiàn);當需要延遲時間較長時,可以使用一個延時子程序。延遲時間不同,波形周期不同,鋸齒波的斜率就不同。(3)通過A加1,可得到正向的鋸齒波;如要得到負向的鋸齒波,改為減1指令即可實現(xiàn)。(4)程序中A的變化范圍是0~255,因此得到的鋸齒波是滿幅度的。如要求得到非滿幅鋸齒波,可通過計算求得數(shù)字量的初值和終值,然后在程序中通過置初值判終值的辦法即可實現(xiàn)。對鋸齒波的產(chǎn)生作如下幾點說明:745.DAC0832雙緩沖方式圖9-27DAC0832雙緩沖方式5.DAC0832雙緩沖方式圖9-27DAC0832雙緩75如果將DAC0832⑴和⑵的輸出端接運放后,分別接圖形顯示器X軸和Y軸偏轉(zhuǎn)放大器輸入端,實現(xiàn)同步輸出,則可更新圖形顯示器的光點位置。設(shè)已知X軸信號和Y軸信號已分別存于30H、31H中。參考程序如下:DOUT:MOVDPTR,#0DFFFH;置DAC0832(1)輸入寄存器地址MOVA,30H;取X軸信號MOVX@DPTR,A;X軸信號→0832(1)輸入寄存器MOVDPTR,#0BFFFH;置DAC0832(2)輸入寄存器地址MOVA,31H;取Y軸信號MOVX@DPTR,A;Y軸信號→0832(2)輸入寄存器MOVDPTR,#7FFFH;置0832(1)、(2)DAC寄存器地址MOVX@DPTR,A;同步D/A,輸出X、Y軸信號RET如果將DAC0832⑴和⑵的輸出端接運76產(chǎn)生階梯波的程序如下,階梯波如圖9-28所示。START:MOVA,#00HMOVDPTR,#1FFFH;0832的地址送DPTRMOVR1,#0AH;臺階數(shù)為10LP:MOVX@DPTR,A;送數(shù)據(jù)至0832CALLDELAY;1ms延時DJNZR1,NEXT;不到10臺階轉(zhuǎn)移SJMPSTART;產(chǎn)生下一個周期NEXT:ADDA,#10;臺階增幅SJMPLP;產(chǎn)生下一臺階DELAY:MOV20H,#249;1ms延時程序AGAIN:NOPNOPDJNZ20H,AGAIN產(chǎn)生階梯波的程序如下,階梯波如圖9-28所示。77圖9-28DAC0832雙緩沖方式產(chǎn)生階梯波返回圖9-28DAC0832雙緩沖方式產(chǎn)生階梯波返回789.5步進電機控制
步進電機是一種將電脈沖轉(zhuǎn)換成機械角位移或線位移的電磁機械裝置。由于它所使用的電源是脈沖電源,所以也稱為脈沖馬達。每當輸入一個電脈沖,電動機就轉(zhuǎn)動一定角度前進一步。脈沖一個一個地輸入,電動機便一步一步地轉(zhuǎn)動。轉(zhuǎn)動的角度大小與施加的脈沖數(shù)目成正比,轉(zhuǎn)動的速度與脈沖頻率成正比,轉(zhuǎn)動方向與脈沖的順序有關(guān)。步進電機主要由轉(zhuǎn)子和定子兩部分組成。轉(zhuǎn)子和定子均由帶齒的硅鋼片疊成。定子上有分為若干相的繞組。當某相定子繞組通以直流電壓激磁后,便會吸引轉(zhuǎn)子,令轉(zhuǎn)子轉(zhuǎn)動一定的角度。向定子繞組輪流激磁,轉(zhuǎn)子便連續(xù)旋轉(zhuǎn)。
9.5步進電機控制步進電機是一種將電79圖9-29步進電機組成圖9-29步進電機組成809.5.1步進電機工作原理
步進電機轉(zhuǎn)子上均勻分布著很多小齒,相鄰兩轉(zhuǎn)子齒軸線間的距離為齒距,以て表示。定子齒有三個勵磁繞阻,其幾何軸線依次分別與轉(zhuǎn)子齒軸線錯開0て、1/3て、2/3て,即A與齒1相對齊,B與齒2向右錯開1/3て,C與齒3向右錯開2/3て,A‘與齒5相對齊,(A’就是A,齒5就是齒1)。圖9-30
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科研樓翻新合同終止通知
- 書店裝修員工合同樣本
- 自然人借款合同樣本
- 三農(nóng)村資源綜合利用路徑規(guī)劃
- 電子政務(wù)平臺建設(shè)及管理手冊
- 農(nóng)業(yè)信息化建設(shè)與管理作業(yè)指導(dǎo)書
- 擔保借款合同書
- 聘請博士協(xié)議書
- 項目管理與協(xié)調(diào)能力作業(yè)指導(dǎo)書
- 農(nóng)產(chǎn)品食品安全與質(zhì)量控制標準作業(yè)指導(dǎo)書
- 建設(shè)用地報批服務(wù)投標方案(技術(shù)方案)
- 精裝修室內(nèi)施工組織部署
- 農(nóng)用拖拉機考試題庫
- GJB438C模板-軟件開發(fā)計劃(已按標準公文格式校準)
- 2023年政府采購評審專家考試真題及答案
- 云端數(shù)據(jù)加密與密鑰管理解決方案
- 毒麻藥品試題答案
- 醫(yī)療器械專業(yè)知識培訓課件
- 傳統(tǒng)體育養(yǎng)生學
- DB4401∕T 33-2019 電梯托管標準化管理規(guī)范
- 醫(yī)院物業(yè)(保潔)技術(shù)服務(wù)投標方案
評論
0/150
提交評論