【正文】
t = speed_t /adjust。}//left backvoid Lback(INT16U speed){ INT16U t。 s2=1。}//右邊電機運行函數(shù)void Rrun(INT16U speed){ INT16U t。 s4=0。 t = speed_t /adjust。}//right backvoid Rback(INT16U speed){ INT16U t。 s4=1。 en2=0。 //LEFT SENSERsbit follow_M = P3^6。 temp = (temp1)|follow_M。RSTOP()。Rrun(38)。Rrun(39)。break。break。 //全黑時狀態(tài)111,原地打轉(zhuǎn) case 0x07: break。本系統(tǒng)采取標準的行掃描,直接輸入列信號的方式。為了解決此問題,我想到了將顯示程序嵌入電機程序的方法。//行掃描 //顯示***王小丹制作****INT8U wxdtab[5][8]={ {0x00,0x3c,0x08,0x1c,0x08,0x08,0x3c,0x00},//王{0x00,0x08,0x2a,0x49,0x08,0x18,0x08,0x00},//小{0x00,0x3c,0x2c,0xff,0x24,0x2c,0x44,0x00},//丹{0x00,0x48,0xde,0x48,0x4e,0x48,0x4e,0x48},//作{0x38,0x28,0x38,0x00,0xee,0xaa,0xee,0x00}//品}。//顯示*****后箭頭****INT8U code backARROW[]={0x00,0x10,0x20,0x7e,0x20,0x10,0x00,0x00}。 INT16U wxd。wxd) {P0=tab[ta]。 if(ta==8) { ta=0。 if(tb==5) { tb=0。left0。 if(ta==8) { ta=0。 for(right=temp。 ta++。 INT8U mid。 P1=rightARROW[ta]。} } //后退顯示void LED88BACK(void) {INT8U ta。back) {P0=tab[ta]。 } lDelay(500)。stop0。 if(ta==8) { ta=0。主程序部分是控制串口命令的接收,負責將不同的指令傳達給單片機,核心指令選擇部分是通過case函數(shù)實現(xiàn)的。 while(1) {while(!RI)。0x0f) { case 0x01: en1=1。s3=1。//左轉(zhuǎn) break。RSTOP()。s1=0。 //back不停 break。 case 0x09: LED88START()。 SBUF=temp。: 串口傳輸界面使用串口傳輸程序時,可以在發(fā)送區(qū)直接輸入指令,如想要是小車直行,只要輸入1點手動發(fā)送就可以了。要注意的是雖然使用的網(wǎng)口發(fā)送端口絕對不能設(shè)定端口值為網(wǎng)口傳輸端口80或者網(wǎng)口命令端口3003,因為這里的端口指的是目的端口,也就是網(wǎng)口發(fā)送的命令目的是為了傳送給串口所以選擇串口對應(yīng)的4001。 LED點陣測試點陣的測試是通過兩部分完成的,第一部分是通過測試顯示制作人那一段程序來看顯示的是否正常而且穩(wěn)定的。(由于小車的機械問題,小車的右輪轉(zhuǎn)速稍快,左輪的轉(zhuǎn)彎延時定義的稍短來平衡機械誤差) 系統(tǒng)測試將編寫好的程序下載到芯片里,然后將車體放好,首先連接串口線兩端于單片機和PC機,打開串口傳輸軟件,輸入各種指令,單片機可以順利的按照各種指令進行反應(yīng);再將PC段的串口線拔下連接到ZNE100TL的串口輸出端,打開PC的網(wǎng)口傳輸軟件,在發(fā)送去輸入各種指令,小車可以按照指令迅速反應(yīng)運行,當輸入尋跡命令時,可以在軌道上完美的運行。以以太網(wǎng)為基礎(chǔ)的通訊手段在現(xiàn)在的社會中已經(jīng)具有非常廣泛的應(yīng)用而且前景無限??梢砸宰陨頌槔员鞠到y(tǒng)為最簡單的模型。雖然,就我目前完成的情況來看,實現(xiàn)更遠距離的通訊是有一定難度的。不管是控制領(lǐng)域還是以太網(wǎng)技術(shù),在未來都擁有無限的前景。因為科學(xué)技術(shù)永遠是引領(lǐng)社會發(fā)展的根本動力,所以掌握這些并且繼續(xù)學(xué)習(xí)是非常必要的,而且要與時俱進,努力學(xué)習(xí)掌握技術(shù),才能與世界保持同步。通過幾個月的實踐,我已對單片機設(shè)計有了更加深入的了解,對單片技術(shù)也建立的更加深厚的感情。說實話,在實踐的整個過程中,我遇到了很多次的失敗,好幾次都想放棄一些東西,將系統(tǒng)簡化。喬繼紅老師雖然不會一直在我身邊督促我,但是她每次的出現(xiàn)都是在關(guān)鍵的時候。電路不好焊,兩只手不夠,我就會有四只手;軌道不好制作,我便有好幾個人幫忙;程序有問題,大家就一起討論,提出自己的想法。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。對P0端口寫“1”時,引腳用作高阻抗輸入。程序校驗時,需要外部上拉電阻。此外,()和時器/計數(shù)器2的觸發(fā)輸入(),具體如下表所示。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。看門狗計時完成后,RST腳輸出96個晶振周期的高電平。在flash編程時,此引腳也用作編程輸入脈沖。這一位置“1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。當 AT89S52從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,將不被激活。在flash編程期間,也接收12伏VPP電壓。外部程序存儲器和數(shù)據(jù)存儲器都可以64K尋址。這些中斷每個中斷源都可以通過置位或清除特殊寄存器IE中的相關(guān)中斷允許控制位分別使得中斷源有效或無效。它們?yōu)锳T89系列新產(chǎn)品預(yù)留。定時器0和定時器1標志位TF0 和TF1在計數(shù)溢出的那個周期的S5P2被置位。它集Flash程序存儲器既可在線編程(ISP)也可用傳統(tǒng)方法進行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強大,低價位AT89S51單片機可為您提供許多高性價比的應(yīng)用場介,可靈活應(yīng)用于各種控制領(lǐng)域。1000次擦寫周期1288字節(jié)內(nèi)部RAM全雙工串行UART通道掉電標識和快速編程特性 AT89S51提供以下標準功能:4k字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM, 32個I/O口線,看門狗(WDT),兩個數(shù)據(jù)指針,兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。引腳功能說明:Vcc: 電源電壓GND:地P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。 對端口寫‘1’,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,囚為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(In)。P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。 P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁正ALE操作。PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH), EA端必須保持低電平(接地)。 特殊功能寄存器的于片內(nèi)的空間分布的這些地址并沒有全部占用,沒有占用的地址亦不可使用,讀這些地址將得到一個隨意的數(shù)值。用戶應(yīng)在訪問相應(yīng)的數(shù)據(jù)指針寄存器前初始化DPS位。外部復(fù)位時,WDT默認為關(guān)閉狀態(tài),要打開WDT,用戶必須按順序?qū)?1EH和0E1H寫到WDTRST寄存器(SFR地址為OA6H},當啟動了WDT,它會隨晶體振蕩器在每個機器周期計數(shù),除硬件復(fù)位或WDT溢出復(fù)位外沒有其它方法關(guān)閉WDT,當WDT溢出,將使RSF引腳輸出高電平的復(fù)位脈沖。 Products? 8K Bytes of InSystem Programmable (ISP) Flash Memory? 1000 Write/Erase Cycles? Fully Static Operation: 0 Hz to 33 MHz? Threelevel Program Memory Lock? 256 x 8bit Internal RAM? 32 Programmable I/O Lines? Three 16bit Timer/Counters? Eight Interrupt Sources? Full Duplex UART Serial Channel? Lowpower Idle and Powerdown Modes? Interrupt Recovery from Powerdown Mode? Watchdog Timer ? Dual Data Pointer? Poweroff FlagDescriptionThe AT89S52 is a lowpower, highperformance CMOS 8bit microcontroller with 8K bytes of insystem programmable Flash memory. The device is manufactured using Atmel’s highdensity nonvolatile memory technology and is patible with the industry standard 80C51 instruction set and pinout. The onchip Flash allows the programmemory to be reprogrammed insystem or by a conventional nonvolatile memory bining a versatile 8bit CPU with in system programmable Flash on a monolithicchip, the Atmel AT89S52 is a powerful icrocontroller which provides a highlyflexible and costeffective solution to many embedded control AT89S52 provides the following tandard features: 8K bytes of Flash, 256 bytes of RAM, 32 I/O lines, Watchdog timer, two data pointers, three 16bit timer/counters, a sixvector twolevel interrupt architecture, a full duplex serial port, onchip oscillator,and clock circuitry. In addition, the AT89S52 is designed with static logic for operation down to zero frequency and supports two software selectable power saving Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Powerdown mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next interrupt or hardware reset.Pin ConfigurationsBlock DiagramPin DescriptionVCCSupply voltage.GNDGround.Port 0Port 0 is an 8bit open drain bidirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high impedance Inputs.Port 0 can also be configured to be the multiplexed loworder address/data bus during ccesses to external program and data memory. In this mode, P0 has int ernal pull ups.Port 0 also receives the co