《設(shè)計(jì)說(shuō)明書(shū)》word版.doc
《《設(shè)計(jì)說(shuō)明書(shū)》word版.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《《設(shè)計(jì)說(shuō)明書(shū)》word版.doc(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
電路設(shè)計(jì)原理及原理圖 1、 設(shè)計(jì)方案 本電路設(shè)計(jì)主要是想通過(guò)AT89C51單片機(jī)的I/O口來(lái)給ULN2003A電機(jī)驅(qū)動(dòng)芯片賦值達(dá)到控制步進(jìn)電機(jī)(帶動(dòng)凸輪軸的轉(zhuǎn)動(dòng))的正傳啟動(dòng),反轉(zhuǎn)啟動(dòng),停止等功能。單片機(jī)的P1口的低四位作為控制電機(jī)的控制輸出,對(duì)于輸入我們采用兩種方式,方式一:硬件開(kāi)關(guān)控制。方式二:上位機(jī)(采用vb編程)控制。P0.0,P0.1連接兩路開(kāi)關(guān),上位機(jī)和下位機(jī)單片機(jī)采用串行通信。 PC機(jī) 電平轉(zhuǎn)換 晶振電路 FREQ=12MHZ 復(fù)位電路 步進(jìn)電機(jī) MOTOR STEPPER 電機(jī)驅(qū)動(dòng)芯片 ULN2003A 正/反轉(zhuǎn)控制開(kāi)關(guān) 單片機(jī) AT89C51 電機(jī)正/反轉(zhuǎn) 單片機(jī)AT89C51 電機(jī)驅(qū)動(dòng)器ULN2003A 正/反轉(zhuǎn)開(kāi)關(guān)閉合 脈沖 系統(tǒng)框圖 系統(tǒng)功能圖 2、硬件選擇以及分析 2.1硬件方案選擇 2.1.1單片機(jī) 單片機(jī)的選擇 本設(shè)計(jì)采用的是AT89C51單片機(jī),AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱(chēng)單片機(jī)。它是一種高效微控制器,因?yàn)樗?jīng)濟(jì)實(shí)惠,用起來(lái)靈活方便,而且習(xí)慣了用這種型號(hào)的單片機(jī),所以選擇AT89C51單片機(jī)。 單片機(jī)的分析 單片機(jī)的主要特性 與MCS-51 兼容 4K字節(jié)可編程閃爍存儲(chǔ)器 壽命:1000寫(xiě)/擦循環(huán) 數(shù)據(jù)保留時(shí)間:10年 全靜態(tài)工作:0Hz-24MHz 三級(jí)程序存儲(chǔ)器鎖定 1288位內(nèi)部RAM 32可編程I/O線 兩個(gè)16位定時(shí)器/計(jì)數(shù)器 5個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時(shí)鐘電路 單片機(jī)AT89C51的引腳說(shuō)明: 圖3.1 AT89C51的引腳排列 引腳描述: VCC:電源電壓 GND:地 P0口:P0口是一組8位漏極開(kāi)路雙向I/O口,即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口時(shí),每一個(gè)管腳都能夠驅(qū)動(dòng)8個(gè)TTL電路。當(dāng)“1”被寫(xiě)入P0口時(shí),每個(gè)管腳都能夠作為高阻抗輸入端。P0口還能夠在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),轉(zhuǎn)換地址和數(shù)據(jù)總線復(fù)用,并在這時(shí)激活內(nèi)部的上拉電阻。P0口在閃爍編程時(shí),P0口接收指令,在程序校驗(yàn)時(shí),輸出指令,需要接電阻。 P1口:P1口一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的電阻把端口拉到高電平,此時(shí)可作為輸入口。因?yàn)閮?nèi)部有電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)輸出一個(gè)電流。閃爍編程時(shí)和程序校驗(yàn)時(shí),P1口接收低8位地址。 P2口:P2口是一個(gè)內(nèi)部帶有上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的電阻把端口拉到高電平,此時(shí),可作為輸入口。因?yàn)閮?nèi)部有電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口線上的內(nèi)容在整個(gè)運(yùn)行期間不變。閃爍編程或校驗(yàn)時(shí),P2口接收高位地址和其它控制信號(hào)。 P3口:P3口是一組帶有內(nèi)部電阻的8位雙向I/O口,P3口輸出緩沖故可驅(qū)動(dòng)4個(gè)TTL電路。對(duì)P3口寫(xiě)如“1”時(shí),它們被內(nèi)部電阻拉到高電平并可作為輸入端時(shí),被外部拉低的P3口將用電阻輸出電流。 P3口除了作為一般的I/O口外,更重要的用途是它的第二功能,如下表所示 端口引腳 第二功能 P3.0 RXD P3.1 TXD P3.2 INT0 P3.3 INT1 P3.4 T0 P3.5 T1 P3.6 WR P3.7 RD 表2..1 P3口第二功能 P3口還接收一些用于閃爍存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。 RST: 復(fù)位輸入。當(dāng)震蕩器工作時(shí),RET引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平將使單片機(jī)復(fù)位。 ALE/: 當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE以時(shí)鐘震蕩頻率的1/16輸出固定的正脈沖信號(hào),因此它可對(duì)輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖時(shí),閃爍存儲(chǔ)器編程時(shí),這個(gè)引腳還用于輸入編程脈沖。如果必要,可對(duì)特殊寄存器區(qū)中的8EH單元的D0位置禁止ALE操作。這個(gè)位置后只有一條MOVX和MOVC指令A(yù)LE才會(huì)被應(yīng)用。此外,這個(gè)引腳會(huì)微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效。 PSEN:程序儲(chǔ)存允許輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C51由外部程序存儲(chǔ)器讀取指令時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN 信號(hào)不出現(xiàn)。 EA/VPP:外部訪問(wèn)允許。欲使中央處理器僅訪問(wèn)外部程序存儲(chǔ)器,EA端必須保持低電平。需要注意的是:如果加密位LBI被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平,CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。閃爍存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電壓VPP,當(dāng)然這必須是該器件是使用12V編程電壓VPP。 XTAL1:震蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 XTAL2:震蕩器反相放大器的輸出端。 時(shí)鐘震蕩器:AT89C51中有一個(gè)用于構(gòu)成內(nèi)部震蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自然震蕩器。 外接石英晶體及電容C1,C2接在放大器的反饋回路中構(gòu)成并聯(lián)震蕩電路。對(duì)外接電容C1,C2雖然沒(méi)有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響震蕩頻率的高低、震蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30PF10PF,而如果使用陶瓷振蕩器建議選擇40PF10PF。用戶(hù)也可以采用外部時(shí)鐘。采用外部時(shí)鐘的電路如圖3.2示。這種情況下,外部時(shí)鐘脈沖接到XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)外部時(shí)鐘信號(hào)的占空比沒(méi)有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。 圖3.2內(nèi)部振蕩電路 2.1.2電平轉(zhuǎn)換 轉(zhuǎn)換芯片的選擇 本設(shè)計(jì)采用MAX232芯片進(jìn)行電平轉(zhuǎn)換,MAX232芯片是美信公司專(zhuān)門(mén)為電腦的RS232標(biāo)準(zhǔn)串口設(shè)計(jì)的接口電路,使用+5V單電源供電,它的作用就是完成TTL電平與RS232電平的轉(zhuǎn)換。PC機(jī)的串行口采用的是標(biāo)準(zhǔn)的RS 232接口,單片機(jī)的串行口電平是FTL電平,而TTL電平特性與RS 232的電氣特性不匹配,因此為了使單片機(jī)的串行口能與RS 232接口通信,必須將串行口的輸入/輸出電平進(jìn)行轉(zhuǎn)換。通常用MAX232芯片來(lái)完成電平轉(zhuǎn)換。 M32芯片的分析 MAX232芯片是美信公司專(zhuān)門(mén)為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的接口電路,使用+5v單電源供電。 內(nèi)部結(jié)構(gòu)基本可分三個(gè)部分: 第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。 第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。 其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。 8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。 TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DP9插頭;DP9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。 第三部分是供電。15腳DNG、16腳VCC(+5v)。 電平轉(zhuǎn)換電路如下: 2.1.3 計(jì)數(shù)器 計(jì)數(shù)器的選擇 本設(shè)計(jì)采用的計(jì)數(shù)器是8253A,由此計(jì)數(shù)器來(lái)記錄下光柵位移傳感器和光電編碼盤(pán)的脈沖信號(hào),達(dá)到計(jì)數(shù)的功能,然后由它把記錄下得脈沖數(shù)傳輸給單片機(jī),由單片機(jī)記錄保存下來(lái)。 計(jì)數(shù)器的分析 8253A是可編程定時(shí)計(jì)數(shù)器,它是INTEL公司專(zhuān)為x86系列CPU配置的外圍接口芯片。它在微機(jī)系統(tǒng)中可用作定時(shí)器和計(jì)數(shù)器。定時(shí)時(shí)間和計(jì)數(shù)次數(shù)有用戶(hù)事先設(shè)定。 1.8253A內(nèi)部結(jié)構(gòu) 四大部分:數(shù)據(jù)總線緩沖器、讀寫(xiě)控制邏輯、控制字寄存器以及三個(gè)獨(dú)立的16位計(jì)數(shù)器通道。這三個(gè)計(jì)數(shù)器分別是計(jì)數(shù)器0通道、計(jì)數(shù)器1通道和計(jì)數(shù)器2通道。 (1)數(shù)據(jù)總線緩沖器:8位的雙向三態(tài)緩沖器。用于暫存數(shù)據(jù),使用在以下幾個(gè)方面:①CPU在初始化編程時(shí),向8253寫(xiě)入控制字。②CPU向某一通道寫(xiě)計(jì)數(shù)初值。③CPU從某一通道讀計(jì)數(shù)初值。 (2)讀/寫(xiě)控制邏輯電路:接受輸入的RD、WR、CS、A1、A0等信號(hào)組合產(chǎn)生出對(duì)8253要執(zhí)行的操作,見(jiàn)操作表。 (3)控制字寄存器:只能寫(xiě)入,不能讀出。8初始化編程時(shí),寫(xiě)入控制字決定通道的工作方式。 (4)3個(gè)計(jì)數(shù)器:分別是0、1和2,是3個(gè)獨(dú)立的計(jì)數(shù)\定時(shí)通道,都可以按照不同的方式工作。每個(gè)計(jì)數(shù)器內(nèi)部都包含一個(gè)16位的預(yù)置初始寄存器。一個(gè)可預(yù)置數(shù)減法計(jì)數(shù)器和一個(gè)鎖存器。 2.1.4 步進(jìn)電機(jī)驅(qū)動(dòng)芯片 在設(shè)計(jì)中我們采用的步進(jìn)電機(jī)驅(qū)動(dòng)芯片為ULN2003A,此芯片通過(guò)將單片機(jī)來(lái)的控制信號(hào)進(jìn)行功率的放大來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)。 ULN2003A驅(qū)動(dòng)芯片的分析 ULN2003A是高耐壓、大電流、內(nèi)部由七個(gè)硅NPN 達(dá)林頓管組成的驅(qū)動(dòng)芯片。 經(jīng)常在以下電路中使用,作為: 1、顯示驅(qū)動(dòng) 2、繼電器驅(qū)動(dòng) 3、照明燈驅(qū)動(dòng) 4、電磁閥驅(qū)動(dòng) 5、伺服電機(jī)、步進(jìn)電機(jī)驅(qū)動(dòng)等電路中。 ULN2003A 的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它 能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái) 處理的數(shù)據(jù)。 ULN2003A 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受 50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。 ULN2003A 的封裝采用DIP—16 或SOP—16 ULN2003A在各種控制電路中常用它作為驅(qū)動(dòng)繼電器的芯片,其芯片內(nèi)部做了一個(gè)消線圈反電動(dòng)勢(shì)的二極管。ULN2003的輸出端允許通過(guò)IC 電流200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。輸出電流大,故可以直接驅(qū)動(dòng)繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅(qū)動(dòng)低壓燈泡。 ULN2003A可以驅(qū)動(dòng)7個(gè)繼電器,具有高電壓輸出特性,并帶有共陰極的續(xù)流二極管使器件可用于開(kāi)關(guān)型感性負(fù)載。每對(duì)達(dá)林頓管的額定集電極電流是500mA,達(dá)林頓對(duì)管還可并聯(lián)使用以達(dá)到更高的輸出電流能力。 ULN2003A中每對(duì)達(dá)林頓管的基極都串聯(lián)有一個(gè)2.7kΩ的電阻,可直接與TTL或5V CMOS器件連接 ULN2003可以并聯(lián)使用,在相應(yīng)的OC輸出管腳上串聯(lián)幾個(gè)歐姆的均流電阻后再并聯(lián)使用,防止陣列電流不平衡。 2.1.5 其他元器件 此外我們?cè)O(shè)計(jì)的電路中還采用了細(xì)分電路、復(fù)位電路、晶震電路,這些都用到了與門(mén),非門(mén)等基本元器件,不再贅述。 3. 電路原理 AT89C51是集成40個(gè)I/O口的單片機(jī),擁有12MHZ的晶振周期,電路擁有可控復(fù)位電路。ULN2003A電機(jī)驅(qū)動(dòng)電路可以實(shí)現(xiàn)電機(jī)的速度調(diào)整。本電路實(shí)現(xiàn)電機(jī)調(diào)速主要利用了ULN2003A的引腳的電平控制,讓其電平的高低變化可以根據(jù)單片機(jī)的程序來(lái)進(jìn)行調(diào)節(jié)。本電路分別進(jìn)行了設(shè)置,當(dāng)正轉(zhuǎn)開(kāi)關(guān)閉合都時(shí),可以控制電機(jī)正轉(zhuǎn),當(dāng)反轉(zhuǎn)電機(jī)閉合時(shí),可以控制電機(jī)反轉(zhuǎn)。 在電路中我們還加了上位機(jī),通過(guò)vb編程來(lái)實(shí)現(xiàn)PC機(jī)和單片機(jī)的通信,通過(guò)vb來(lái)給單片機(jī)發(fā)送指令,達(dá)到控制步進(jìn)電機(jī)的目的,這樣可以減輕單片機(jī)的負(fù)擔(dān),單片機(jī)就值充當(dāng)了數(shù)據(jù)的采集和指令的傳送。 3.1開(kāi)關(guān)控制 當(dāng)正轉(zhuǎn)開(kāi)關(guān)閉合時(shí),電機(jī)正轉(zhuǎn);當(dāng)反轉(zhuǎn)開(kāi)關(guān)閉合時(shí),電機(jī)反轉(zhuǎn);當(dāng)兩個(gè)開(kāi)關(guān)都斷開(kāi)時(shí),電機(jī)停止轉(zhuǎn)動(dòng)。 圖3:開(kāi)關(guān)控制電路 3.2 晶振電路 為AT89C51提供晶振 圖4:晶振電路 3.3 復(fù)位電路 給單片機(jī)提供復(fù)位功能 圖5:復(fù)位電路 3.4 電機(jī)驅(qū)動(dòng)電路 圖6:電機(jī)驅(qū)動(dòng)電路 3.5 串行通信電路 圖7:串行通信電路 3.6計(jì)數(shù)電路 圖8:計(jì)數(shù)電路 3.7細(xì)分電路 圖9:細(xì)分電路 3.8 電路總圖 4、 軟件設(shè)計(jì) 4.1驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的程序 步進(jìn)電機(jī)的驅(qū)動(dòng)編碼是通過(guò)時(shí)下最流行的KEIL UV ISION3一體化集成編程軟件完成,在KEIL環(huán)境下編寫(xiě)程序并生成二進(jìn)制文件。只要是設(shè)置兩個(gè)按鍵對(duì)電機(jī)進(jìn)行正反轉(zhuǎn)控制,在驅(qū)動(dòng)程序中設(shè)定每次按鍵的步進(jìn)值。在軟件設(shè)計(jì)部分,首先要進(jìn)行數(shù)據(jù)初始化,然后進(jìn)行首要操作判決,執(zhí)行如下語(yǔ)句即可實(shí)現(xiàn)對(duì)按鍵的掃描,其中每一句為步進(jìn)電機(jī)的初始角度定義,一般定義起始角度為0.POS為正轉(zhuǎn)控制子程序,NEG為反轉(zhuǎn)控制子程序。 WAIT: MOV P1,R0 MOV P0,#0FFH JNB P0.0,POS JNB P0.1,NEG SJMP WAIT 在按鍵判斷完成后,進(jìn)行數(shù)據(jù)處理,如下為正轉(zhuǎn)子程序,在執(zhí)行以下語(yǔ)句后還要判斷按鍵是否持續(xù),若持續(xù)按鍵,則步進(jìn)值遞增,對(duì)步進(jìn)電機(jī)進(jìn)行連續(xù)驅(qū)動(dòng),否則當(dāng)按鍵松開(kāi)時(shí)按鍵步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng)。 POS: MOV A,R4 MOVC A,@A+DPTR MOV P1,A ACALL DELAY INC R4 當(dāng)為反轉(zhuǎn)控制時(shí),控制方式同正轉(zhuǎn)相同。下面為反轉(zhuǎn)處理子程序。在此次設(shè)計(jì)中將步進(jìn)設(shè)置為9度。 NEG: MOV R4,#6 MOV A,R4 MOVC A,@A+DPTR MOV P1,A 在初始化中必須包含步進(jìn)數(shù)據(jù)模型TAB1,在數(shù)據(jù)處理過(guò)程中進(jìn)行不斷查表輸出控制量,從而實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)控制。在數(shù)據(jù)處理完成后送出P1口低四位,經(jīng)電機(jī)驅(qū)動(dòng)器驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)。 TAB1:DB 02H,06H,04H,0CH DB 08H,09H,01H,03H 4.2上位機(jī)(PC機(jī))與下位機(jī)(單片機(jī))的通信程序 4.2.1下位機(jī)(單片機(jī))的接受指令的框圖和程序 單片機(jī)程序接受框圖: 串口中斷 保護(hù)出棧 接收完畢? 中斷返回 第一次接收? 中斷返回 送緩沖 保護(hù)入棧 清中斷 送緩沖 清第一次 接收標(biāo)志 置第一次接收標(biāo)志 置接收計(jì)數(shù)值 清中斷 是接收? N Y Y N Y N 單片機(jī)接受程序: ;-------------------------------------------------- ;-------------------------------------------------- ;設(shè)置串行口 波特率9600 ;串行口設(shè)置MODE1,SM1=0,REN=1,SMOD=1 ;晶振11.0592,定時(shí)設(shè)置為0FDH ;常用端口設(shè)置參數(shù) ;FD 9600 ;FA 4800 ;F4 2400 ;E8 1200 ;-------------------------------------------------- ;*********************************************************** ORG 00H JMP START ORG 23H JMP UART ORG 30H START: MOV SP,#70H MOV SCON,#50H MOV TMOD,#00100001B ;TIM1在模式2 TIM0在模式1 MOV TH1,#0F4H ;設(shè)置定時(shí)時(shí)間 SETB TR1 ;啟動(dòng)定時(shí)器1 SETB ES ;允許串口中斷 SETB EA ;允許總中斷 MOV P0,#0 ;P0、P2輸出低電平 MOV P2,#0 JMP $ ;等待狀態(tài) ;***************************************** ;串行口中斷 ;***************************************** UART: PUSH ACC PUSH PSW CLR ES ;關(guān)閉串行口中斷 MOV TH0,#HIGH(65536-65536) MOV TL0,#LOW(65536-65536) SETB TR0 ;開(kāi)定時(shí)器0 MOV 30H,#00 ;同步位 MOV 31H,#00 ;數(shù)據(jù)1 MOV 32H,#00 ;數(shù)據(jù)2 MOV 33H,#00 ;結(jié)束位 MOV R0,#30H REC: jbc tf0,FS ;接收時(shí)間是否超時(shí)?是則執(zhí)行FS JNB RI,REC ;接收數(shù)據(jù) CLR RI MOV A,SBUF MOV @R0,A INC R0 JMP REC FS: CLR TR0 ;關(guān)定時(shí)器0 ;******************************** CALL FUN ;解碼并控制繼電器 SETB ES ;開(kāi)串行口中斷 POP PSW POP ACC RETI ;中斷子程序返回 ;**************************************** ;解碼并控制繼電器 ;下面的程序可以更簡(jiǎn)潔,但為了方便,展開(kāi)來(lái)編制 ;**************************************** FUN: MOV A,#0AH ;判斷第1字節(jié)即同步位 CJNE A,30H,ERR MOV A,#0DH ;判斷第4字節(jié)即結(jié)束位 CJNE A,33H,ERR ;**************************************** ;第2字節(jié)即數(shù)據(jù)位1,代表繼電器J1-8 ;第3字節(jié)即數(shù)據(jù)位2,代表繼電器J9-16 ;**************************************** MOV A,31H MOV P0,A MOV A,32H MOV P2,A RET ;************************************** ; 數(shù)據(jù)錯(cuò)誤處理 ;************************************** ERR: MOV 30H,#00 ;同步位 MOV 31H,#00 ;數(shù)據(jù)1 MOV 32H,#00 ;數(shù)據(jù)2 MOV 33H,#00 ;結(jié)束位 RET END ;程序結(jié)束 ;-------------------------------------------------- ;-------------------------------------------------- 4.2.2上位機(jī)的指令發(fā)送程序和人機(jī)界面的設(shè)計(jì) 上位機(jī)我們用的是vb編的程序,程序如下: Private Sub Command1_Click() Dim outbet(0 To 3) As Byte outbet(0) = &HA outbet(1) = &HFE outbet(2) = &H0 outbet(3) = &HD MSComm1.OutBufferCount = 0 MSComm1.Output = outbet End Sub Private Sub Command2_Click() Dim outbet(0 To 3) As Byte outbet(0) = &HA outbet(1) = &HFD outbet(2) = &H0 outbet(3) = &HD MSComm1.OutBufferCount = 0 MSComm1.Output = outbet End Sub Private Sub Command3_Click() Dim outbet(0 To 3) As Byte outbet(0) = &HA outbet(1) = &HFF outbet(2) = &H0 outbet(3) = &HD MSComm1.OutBufferCount = 0 MSComm1.Output = outbet End Sub Private Sub Form_Load() MSComm1.CommPort = 3 MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True MSComm1.RThreshold = Value End Sub 人機(jī)界面的設(shè)計(jì):- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 設(shè)計(jì)說(shuō)明書(shū) 設(shè)計(jì) 說(shuō)明書(shū) word
鏈接地址:http://www.hcyjhs8.com/p-9022545.html