2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  基于AT89C51單片機(jī)的電機(jī)控制綜合設(shè)計(jì)</p><p><b>  目錄</b></p><p><b>  1 系統(tǒng)的設(shè)計(jì)1</b></p><p>  1.1設(shè)計(jì)的目的和要求1</p><p><b>  1.2系統(tǒng)原理1</b></p

2、><p><b>  2 系統(tǒng)的構(gòu)成2</b></p><p>  2.1控制器部分2</p><p>  2.1.1控制器分析2</p><p>  2.1.2控制器主要功能特性2</p><p>  2.1.2控制器引腳功能描述3</p><p>  2.2 數(shù)據(jù)

3、顯示部分4</p><p>  2.2.1 12864液晶顯示模塊概述4</p><p>  2.2.2 基本參數(shù)4</p><p>  2.2.3模塊引腳說(shuō)明5</p><p>  2.2.4 具體指令介紹:5</p><p>  2.2.5顯示坐標(biāo)關(guān)系8</p><p>  3

4、硬件電路設(shè)計(jì)8</p><p>  3.1 LCD控制電路原理圖8</p><p>  3.2電機(jī)控制電路9</p><p>  3.3速度反饋電路10</p><p>  3.4 MCU接口11</p><p>  3.5 按鍵電路11</p><p><b>  4 軟

5、件設(shè)計(jì)12</b></p><p>  4.1程序要求12</p><p>  4.2 程序流程圖12</p><p>  4.3 程序清單12</p><p>  4.3.1 LCD驅(qū)動(dòng)程序12</p><p>  4.3.2 主函數(shù)程序17</p><p><b

6、>  5程序的調(diào)試21</b></p><p>  5.1 編程軟件KEIL C51簡(jiǎn)介21</p><p>  5.2 程序編譯和調(diào)試21</p><p><b>  6 結(jié)語(yǔ)25</b></p><p><b>  1 系統(tǒng)的設(shè)計(jì)</b></p><

7、p>  1.1設(shè)計(jì)的目的和要求</p><p>  基于AT89C51單片機(jī)的電機(jī)控制綜合系統(tǒng),以電機(jī)為被控對(duì)象,由AT89C51單片機(jī)作為控制器,結(jié)合速度反饋和LCD液晶顯示模塊,組成一個(gè)有較好控制性和實(shí)時(shí)性的電機(jī)控制綜合系統(tǒng)。</p><p><b>  1.2系統(tǒng)原理</b></p><p>  系統(tǒng)的原理如上圖1.2所示,控制器A

8、T89C51通過(guò)外圍電路控制電機(jī)轉(zhuǎn)動(dòng)。由速度反饋電路反饋電機(jī)的速度信息,并進(jìn)行伺服計(jì)算和控制。整個(gè)系統(tǒng)的主要信息可以在LCD顯示模塊上顯示。</p><p><b>  2 系統(tǒng)的構(gòu)成</b></p><p><b>  2.1控制器部分</b></p><p>  2.1.1控制器分析</p><p&

9、gt;  AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89

10、C51是一種高效微控制器。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p>  2.1.2控制器主要功能特性</p><p>  ·與MCS-51 兼容 </p><p>  ·4K字節(jié)可編程閃爍存儲(chǔ)器 </p><p>  ·壽命:1000寫/擦循環(huán) </p>

11、<p>  ·數(shù)據(jù)保留時(shí)間:10年 </p><p>  ·全靜態(tài)工作:0Hz-24MHz </p><p>  ·三級(jí)程序存儲(chǔ)器鎖定 </p><p>  ·128×8位內(nèi)部RAM </p><p>  ·32可編程I/O線 </p><p>  

12、·兩個(gè)16位定時(shí)器/計(jì)數(shù)器 </p><p><b>  ·5個(gè)中斷源 </b></p><p><b>  ·可編程串行通道 </b></p><p>  ·低功耗的閑置和掉電模式 </p><p>  ·片內(nèi)振蕩器和時(shí)鐘電路</p>

13、<p>  2.1.2控制器引腳功能描述</p><p>  AT89C51 提供以下標(biāo)準(zhǔn)功能:4k 字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32 個(gè)I/O 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串

14、行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))</p><p><b>  Vcc:電源電壓</b></p><p><b>  GND:地</b></p><p>  P0口是一組8 位

15、漏極開(kāi)路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用</p><p>  時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口寫“1”可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在FIash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。</p><p&g

16、t;  P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電</p><p>  流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。FIash編程和程序校驗(yàn)期間,P1接收低8位地址。</p><p>  P2口是一個(gè)帶有內(nèi)部上拉電

17、阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出</p><p>  電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX@DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行M

18、OVX@RI 指令)時(shí),P2 口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中R2寄存器的內(nèi)容),在整個(gè)訪問(wèn)期間不改變。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其它控制信號(hào)。(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))</p><p>  P3口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸</p><p>  出電流)4 個(gè)TT

19、L邏輯門電路。對(duì)P3 口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。</p><p>  P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表2.1.2所示:</p><p>  P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。</p><p>  RST :

20、復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))</p><p>  ALE/PROG: 當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖</p><p>  用于鎖存地址的低8位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE 仍以時(shí)鐘振蕩頻率的l/6 輸出固定的正脈沖信號(hào),因此它可對(duì)外

21、輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p>  如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的DO 位置位,可禁止ALE 操作。該位置位后,只有一條MOVX和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效。</p>&

22、lt;p>  PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C51 由外部程序</p><p>  存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,這兩次有效的PSEN信號(hào)不出現(xiàn)。</p><p>  EA VPP: 外部訪問(wèn)允許。欲使CPU僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H—FFFFH),E

23、A端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p>  如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。</p><p>  XTAL1: 振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p>

24、<p>  XTAL2:振蕩器反相放大器的輸出端。</p><p>  2.2 數(shù)據(jù)顯示部分</p><p>  2.2.1 12864液晶顯示模塊概述</p><p>  12864液晶顯示模塊是128×64 點(diǎn)陣的漢字圖形型液晶顯示模塊,可顯示漢字及圖形,內(nèi)置國(guó)標(biāo)GB2312 碼簡(jiǎn)體中文字庫(kù)(16X16 點(diǎn)陣)、128 個(gè)字符(8X16

25、點(diǎn)陣)及64X256 點(diǎn)陣顯示RAM(GDRAM)??膳cCPU 直接接口,提供兩種界面來(lái)連接微處理機(jī):8-位并行及串行兩種連接方式。具有多種功能:光標(biāo)顯示、畫面移位、睡眠模式等。</p><p>  2.2.2 基本參數(shù) </p><p>  液晶屏類型 STN FSTN </p><p><b>  模塊顯示效果: </b></p>

26、;<p><b>  黃綠底黑字 </b></p><p>  藍(lán)底白字 白底黑字 視角 6點(diǎn)鐘 12點(diǎn)鐘 </p><p>  驅(qū)動(dòng)方式 1/64 DUTY 1/9 BIAS </p><p>  背光 LED白色 LED黃綠色 </p><p>  控制器 KS0108或兼容 ST7920 T6963C

27、 </p><p>  數(shù)據(jù)總線 8 位并口/6800 方式 串口 </p><p>  溫度特性 工作溫度:-20℃~+70℃ 儲(chǔ)藏溫度:-30℃~+80℃ </p><p>  點(diǎn)陣格式 128 x 64</p><p>  2.2.3模塊引腳說(shuō)明</p><p>  2.2.4 具體指令介紹:</p>

28、<p>  1、清除顯示(指令代碼為01H)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:清除顯示屏幕,把DDRAM 位址計(jì)數(shù)器調(diào)整為“00H”。</p><p>  2、位址歸位(02H)</p>&

29、lt;p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:把DDRAM 位址計(jì)數(shù)器調(diào)整為“00H”,游標(biāo)回原點(diǎn),該功能不影響顯示DDRAM。</p><p>  3、點(diǎn)設(shè)定(07H/04H/05H/06H)</p><p>  CODE:

30、 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:設(shè)定光標(biāo)移動(dòng)方向并指定整體顯示是否移動(dòng)。</p><p>  I/D=1 光標(biāo)右移,I/D=0 光標(biāo)左移。</p><p>  SH=1 且DDRAM 為寫狀態(tài):整體顯示移動(dòng),方向由I/D 決定(I/D=1 左移,I/D=

31、0 右移)</p><p>  SH=0 或DDRAM 為讀狀態(tài):整體顯示不移動(dòng)</p><p>  4、顯示狀態(tài)開(kāi)/關(guān)(08H/0CH/0EH/0FH)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能: D=

32、1;整體顯示ON C=1;游標(biāo)ON B=1;游標(biāo)位置ON.</p><p>  5、游標(biāo)或顯示移位控制(10H/14H/18H/1CH)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:10H/14H:光標(biāo)左/右移動(dòng);18H/1CH:

33、整體顯示左右移動(dòng),光標(biāo)跟隨移動(dòng),AC 值不變</p><p>  6、功能設(shè)定(36H/30H/34H)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:DL=1(必須設(shè)為1) RE=1;擴(kuò)充指令集動(dòng)作 RE=0:基本指令集動(dòng)作5、游

34、標(biāo)或顯示移位控制(10H/14H/18H/1CH)</p><p>  7、設(shè)定CGRAM 位址(40H-7FH)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:設(shè)定CGRAM 位址到位址計(jì)數(shù)器(AC)</p><

35、;p>  8、設(shè)定DDRAM 位址(80H-9FH)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:設(shè)定 DDRAM 位址到位址計(jì)數(shù)器(AC)</p><p>  9、讀取忙碌狀態(tài)(BF)和位址(BF=1, 狀態(tài)忙)</

36、p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:讀取忙碌狀態(tài)(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出位址計(jì)數(shù)器(AC)的值</p><p>  10、寫資料到RAM(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))&l

37、t;/p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:寫入資料到內(nèi)部的 RAM(DDRAM/CGRAM/TRAM/GDRAM)</p><p>  11、讀出RAM 的值</p><p>  CODE: RW

38、 RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:從內(nèi)部 RAM 讀取資料(DDRAM/CGRAM/TRAM/GDRAM)</p><p>  12、待命模式(01H)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4

39、 DB3 DB2 DB1 DB0</p><p>  功能:進(jìn)入待命模式,執(zhí)行其他命令都可終止待命模式</p><p>  13、卷動(dòng)位址或IRAM 位址選擇(02H/03H)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p>&

40、lt;p>  功能:SR=1;允許輸入卷動(dòng)位址 SR=0;允許輸入IRAM 位址</p><p>  14、反白選擇(04H\05H)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:選擇 4 行中的任一行作反白顯示,并可決定反

41、白的與否</p><p>  15、睡眠模式(08H/0CH)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:SL=1;脫離睡眠模式 SL=0;進(jìn)入睡眠模式</p><p>  16、擴(kuò)充功能設(shè)定(36H/3

42、0H/34H)</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:RE=1;擴(kuò)充指令集動(dòng)作 RE=0;基本指令集動(dòng)作 G=1;繪圖顯示ON G=0;繪圖顯示OFF</p><p>  17、設(shè)定IRAM 位址或卷動(dòng)位址(40H-7FH)

43、</p><p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:SR=1;AC5~AC0 為垂直卷動(dòng)位址 SR=0;AC3~AC0 寫ICONRAM 位址</p><p>  18、設(shè)定繪圖RAM 位址(80H-FFH)</p>&l

44、t;p>  CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0</p><p>  功能:設(shè)定 GDRAM 位址到位址計(jì)數(shù)器(AC)</p><p>  2.2.5顯示坐標(biāo)關(guān)系</p><p>  X 坐標(biāo)</p>

45、<p>  Line1 80H 81H 82H 83H 84H 85H 86H 87H</p><p>  Line2 90H 91H 92H 93H 94H 95H 96H 97H</p><p>  Line3 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH</p><p>  Li

46、ne4 98H 99H 9AH 9BH 9CH 9DH 9EH 9FH</p><p><b>  3 硬件電路設(shè)計(jì)</b></p><p>  3.1 LCD控制電路原理圖</p><p><b>  3.2電機(jī)控制電路</b></p><p>  電機(jī)H橋控制電路如下圖3.2所

47、示。當(dāng)DCMotorA為高電平時(shí),NPN型三極管Q4導(dǎo)通,則PNP型三極管Q2和NPN型三極管Q6會(huì)同時(shí)導(dǎo)通;同時(shí)DCMotorB為低電平,NPN型三極管Q5關(guān)閉,則PNP型三極管Q3和NPN型三極管Q7會(huì)同時(shí)關(guān)閉。此時(shí),電流將從MOTOR B經(jīng)過(guò)電機(jī)向MOTORA方向流動(dòng),如此驅(qū)動(dòng)電機(jī)正向轉(zhuǎn)動(dòng)。反之,DCMotorA為低電平,DCMotorB為高電平,電機(jī)為反向轉(zhuǎn)動(dòng)。如此可以實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)控制。調(diào)節(jié)DCMotorA或DCMotorB

48、的導(dǎo)通時(shí)間,可以實(shí)現(xiàn)電機(jī)的調(diào)速控制。(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))</p><p><b>  3.3速度反饋電路</b></p><p>  速度反饋電路如上圖3.3所示。當(dāng)光耦Optoisolator1導(dǎo)通時(shí),PNP型三極管Q1導(dǎo)通,指示燈LED1發(fā)光,此時(shí)DCMotorSpeed端口為低電平。當(dāng)光耦Optoisolator1

49、不導(dǎo)通時(shí),指示燈LED1不發(fā)光,此時(shí)DCMotorSpeed端口為高電平。電機(jī)帶了一個(gè)有四個(gè)缺口的轉(zhuǎn)盤,如此。當(dāng)電機(jī)轉(zhuǎn)動(dòng)一圈時(shí),會(huì)有4個(gè)脈沖輸入給單片機(jī),對(duì)這些脈沖進(jìn)行計(jì)數(shù),可以計(jì)算出電機(jī)的轉(zhuǎn)動(dòng)速度。(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))</p><p>  由于裝在電機(jī)上的碼盤格數(shù)比較少,而我們程序中速度的級(jí)數(shù)為255,相對(duì)較大。給速度計(jì)數(shù)的T0計(jì)數(shù)器,為滿足系統(tǒng)的實(shí)時(shí)控制性,則獲

50、取速度數(shù)據(jù)的時(shí)間應(yīng)該盡量短(即程序中T0定時(shí)器初始化程序中的Delay延時(shí))。同時(shí),這一時(shí)間又要滿足當(dāng)給定速度最大時(shí),仍有足夠的時(shí)間能夠?qū)λ俣确答佒颠M(jìn)行正確的計(jì)數(shù)。所以這一時(shí)間不能夠太短。合理的確定這一時(shí)間的方法是,給定電機(jī)速度為255,讓其全速轉(zhuǎn)動(dòng)。此時(shí),從小到大更改計(jì)數(shù)延時(shí)Delay()的時(shí)間,然后在液晶顯示器上觀察反饋的速度值,當(dāng)其剛好為255時(shí),此時(shí)的延時(shí)Delay()時(shí)間為系統(tǒng)的的最佳速度采樣時(shí)間。</p>&l

51、t;p>  經(jīng)過(guò)上述處理后,我們發(fā)現(xiàn)獲得的這個(gè)延時(shí)時(shí)間是相對(duì)比較長(zhǎng)的,這是因?yàn)楫?dāng)給定速度較大時(shí),電機(jī)需要轉(zhuǎn)幾十圈才能反饋出實(shí)際的速度值,所以反饋速度所需的時(shí)間比較長(zhǎng),實(shí)時(shí)控制的能力相對(duì)較差。為克服以上系統(tǒng)的缺點(diǎn),可以通過(guò)減少速度的級(jí)數(shù),即減小Pwm_MAX的值來(lái)實(shí)現(xiàn)。但是速度的級(jí)數(shù)減少后,電機(jī)調(diào)速的連續(xù)性就必然會(huì)降低,電機(jī)在速度動(dòng)態(tài)變化過(guò)程中的穩(wěn)定性就會(huì)相應(yīng)降低。另外,還可以采用增加電機(jī)碼盤格數(shù)的方法來(lái)實(shí)現(xiàn)速度反饋的快速性和準(zhǔn)確性

52、,借此可以在較合理的時(shí)間內(nèi)得到電機(jī)速度的準(zhǔn)備值。第二種改進(jìn)方案更為合理和科學(xué)。</p><p><b>  3.4 MCU接口</b></p><p><b>  3.5 按鍵電路</b></p><p>  按鍵電路如上圖3.5所示。當(dāng)任意一個(gè)按鍵KEY被按下時(shí),P2.0~P2.2引腳會(huì)對(duì)應(yīng)的的產(chǎn)生一個(gè)低電平。</

53、p><p><b>  4 軟件設(shè)計(jì)</b></p><p><b>  4.1程序要求</b></p><p>  我們使用C語(yǔ)言對(duì)AT89C51進(jìn)行控制程序的編寫。程序中使用到的資源有兩個(gè)定時(shí)器資源,T0工作在16位外部計(jì)數(shù)模式,用于速度的反饋和計(jì)算等數(shù)據(jù)處理。T1工作在8位定時(shí)器自動(dòng)重載模式,引腳P3.4接計(jì)數(shù)信息輸入端

54、口。在T1的定時(shí)溢出中斷程序中進(jìn)行速度的產(chǎn)生及對(duì)電機(jī)的控制操作。系統(tǒng)使用到5個(gè)普通I/O口資源。P1.6和P1.7為控制電機(jī)轉(zhuǎn)動(dòng)的兩路控制信號(hào)。P2.0作為加速按鍵信息輸入端口,P2.1作為減速按鍵信息輸入端口,P2.2作為方向控制鍵信息輸入端口。(本文由 點(diǎn)夢(mèng)時(shí)刻 www.dreamoment.com 傾情奉獻(xiàn))</p><p>  程序運(yùn)行時(shí),先進(jìn)行LCD控制程序的初始化并對(duì)顯示進(jìn)行預(yù)處理。然后讀預(yù)設(shè)速度初值

55、,由T1中斷服務(wù)程序產(chǎn)生PWM速度控制信號(hào),T0反饋速度信息并進(jìn)行速度的計(jì)算處理。KEY1和KEY2可對(duì)速度進(jìn)行加減操作。KEY3可對(duì)電機(jī)進(jìn)行正反轉(zhuǎn)的控制操作。</p><p>  程序的編寫要遵循性保證系統(tǒng)穩(wěn)定性的前提下消耗盡量少消耗資源的原則,并要考慮實(shí)際的可操作性和滿足系統(tǒng)在各種工作環(huán)境下能穩(wěn)定正常運(yùn)行的要求。</p><p><b>  4.2 程序流程圖</b&g

56、t;</p><p><b>  4.3 程序清單</b></p><p>  4.3.1 LCD驅(qū)動(dòng)程序</p><p><b>  /*</b></p><p><b>  LCD.C</b></p><p>  128×64 LCD驅(qū)動(dòng)程

57、序頭文件</p><p><b>  */</b></p><p>  #ifndef LCD_H_</p><p>  #define LCD_H_</p><p>  #include<REG51.H></p><p>  sbit LCD_BL=P1^4; //定義背光控制信

58、號(hào)</p><p>  void LcdLightOn();//點(diǎn)亮背光燈</p><p>  void LcdLightOff();//熄滅背光燈</p><p>  void LcdClear();//清屏</p><p>  void LcdInit();//初始化</p><p>  void Lcd

59、PutChar(unsigned char c);//顯示ASCⅡ碼</p><p>  void LcdPuts(unsigned char*s); //顯示字符串</p><p>  #endif //LCD_H_</p><p><b>  /*</b></p><p><b>  LCD.C<

60、;/b></p><p>  128×64 LCD驅(qū)動(dòng)程序</p><p><b>  */</b></p><p>  #include <INTRINS.H></p><p>  #include <ABSACC.H></p><p>  unsigne

61、d char LcdCursor; //定義屏幕光標(biāo)(取值0~63,光標(biāo)本身不可見(jiàn))</p><p><b>  int i,j;</b></p><p>  void LcdLightOn() //功能:點(diǎn)亮背光燈</p><p><b>  {</b></p><p>  LCD_

62、BL = 1;</p><p><b>  }</b></p><p>  void LcdLightOff() //功能:熄滅背光燈</p><p><b>  {</b></p><p>  LCD_BL = 0;</p><p><b>  }<

63、;/b></p><p><b>  /*</b></p><p>  函數(shù):LcdGetBF()</p><p><b>  返回:</b></p><p>  BF=1,表示忙,不可進(jìn)行任何操作</p><p>  BF=0,表示不忙,可以進(jìn)行正常操作</p&

64、gt;<p><b>  */</b></p><p>  bit LcdGetBF()//功能:讀出狀態(tài)位BF</p><p><b>  {</b></p><p>  unsigned char dat;</p><p>  dat = XBYTE[0xD002];//XB

65、YTE的定義見(jiàn)<ABSACC.H></p><p>  return (bit)(dat & 0x80);</p><p><b>  }</b></p><p>  void LcdWriteCmd(unsigned char cmd) //功能:向LCD發(fā)送命令</p><p><b>

66、  {</b></p><p>  while ( LcdGetBF() );</p><p>  XBYTE[0xD000] = cmd;</p><p><b>  }</b></p><p>  void LcdWriteDat(unsigned char dat)// 功能:向LCD寫入數(shù)據(jù)<

67、/p><p><b>  {</b></p><p>  while ( LcdGetBF() );</p><p>  XBYTE[0xD001] = dat;</p><p><b>  }</b></p><p>  unsigned char LcdReadDat()

68、 //功能:從LCD讀出數(shù)據(jù)</p><p><b>  {</b></p><p>  volatile unsigned char dat;</p><p>  while ( LcdGetBF() );</p><p>  dat = XBYTE[0xD003];</p><p>  d

69、at = XBYTE[0xD003];//需要連續(xù)執(zhí)行兩次才能夠讀出真正的數(shù)據(jù)</p><p>  return dat;</p><p><b>  }</b></p><p><b>  /*</b></p><p>  函數(shù):LcdSetAC()</p><p>

70、  功能:設(shè)置DDRAM(顯示數(shù)據(jù)RAM)的AC(地址計(jì)數(shù)器)值</p><p><b>  */</b></p><p>  void LcdSetAC(unsigned char ac)</p><p><b>  {</b></p><p>  ac &= 0x3F;</p>

71、;<p>  ac |= 0x80;</p><p>  LcdWriteCmd(ac);</p><p><b>  }</b></p><p>  void LcdClear()//功能:LCD清屏,并使光標(biāo)回到0</p><p><b>  {</b></p>

72、<p>  LcdWriteCmd(0x01);//清屏命令</p><p>  LcdCursor = 0;</p><p><b>  }</b></p><p>  void LcdDelay(unsigned char t) //功能:延時(shí)(t*100)個(gè)機(jī)器周期</p><p><b&g

73、t;  {</b></p><p>  unsigned char n;</p><p><b>  do</b></p><p><b>  {</b></p><p><b>  n = 49;</b></p><p>  while (

74、 --n != 0 );</p><p>  } while ( --t != 0 );</p><p><b>  }</b></p><p>  void LcdInit()//功能:LCD初始化</p><p><b>  {</b></p><p>  LcdWri

75、teCmd(0x30);//設(shè)置基本指令集</p><p>  LcdDelay(3);</p><p>  LcdWriteCmd(0x30);//設(shè)置基本指令集(需要再執(zhí)行一次)</p><p>  LcdDelay(1);</p><p>  LcdWriteCmd(0x0C);//開(kāi)啟顯示</p><p>

76、;  LcdDelay(3);</p><p>  LcdClear();//清屏</p><p>  LcdDelay(250);</p><p>  LcdWriteCmd(0x06);//設(shè)置進(jìn)入點(diǎn)</p><p>  LcdDelay(10);</p><p><b>  }</b>

77、;</p><p>  void LcdCheckAC() //功能:根據(jù)光標(biāo)位置調(diào)整AC</p><p><b>  {</b></p><p>  switch ( LcdCursor )</p><p><b>  {</b></p><p><b> 

78、 case 16:</b></p><p>  LcdSetAC(16);</p><p><b>  break;</b></p><p><b>  case 32:</b></p><p>  LcdSetAC(8);</p><p><b>  

79、break;</b></p><p><b>  case 48:</b></p><p>  LcdSetAC(24);</p><p><b>  break;</b></p><p><b>  case 64:</b></p><p>

80、;  LcdCursor = 0;</p><p>  LcdSetAC(0);</p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;</b></p><p>&

81、lt;b>  }</b></p><p><b>  }</b></p><p>  void LcdPutChar(unsigned char c) //功能:顯示ASCII碼</p><p><b>  {</b></p><p>  LcdWriteDat(c);</p

82、><p>  LcdCursor++;</p><p>  LcdCheckAC();</p><p><b>  }</b></p><p>  void LcdPutHZ(unsigned char ch, unsigned char cl) //功能:顯示漢字</p><p><b>

83、  {</b></p><p>  if ( LcdCursor & 0x01 )</p><p>  {//顯示漢字時(shí),必須偶地址對(duì)準(zhǔn),即光標(biāo)位置不能是奇數(shù)</p><p>  LcdPutChar(' ');//額外輸出一個(gè)空格</p><p><b>  }</b></p

84、><p>  LcdWriteDat(ch);</p><p>  LcdWriteDat(cl);</p><p>  LcdCursor += 2;</p><p>  LcdCheckAC();</p><p><b>  }</b></p><p>  void Lcd

85、Puts(unsigned char *s) //功能:顯示字符串</p><p><b>  {</b></p><p>  unsigned char ch, cl;</p><p><b>  for (;;)</b></p><p><b>  {</b></p&

86、gt;<p>  ch = *s++;</p><p>  if ( ch == '\0' ) break;</p><p>  if ( ch < 0x80 )</p><p><b>  {</b></p><p>  LcdPutChar(ch);</p><

87、p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cl = *s++;</p><p>  LcdPutHZ(ch,cl);</p><p><b>  

88、}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.3.2 主函數(shù)程序</p><p><b>  /*</b></p><p><b>  顯示主程序</b&g

89、t;</p><p><b>  */</b></p><p>  #include<REG51.H></p><p>  unsigned char SD[4]={'1','2','3','4'};//速度設(shè)定</p><p>  unsign

90、ed char FK[4]={'2','2','3','4'};//速度反饋</p><p>  unsigned int D=0; //方向控制中間變量</p><p>  unsigned int Pwm=0; //速度產(chǎn)生中間變量</p><p

91、>  unsigned int Pwm_Value=0; //速度計(jì)算中間量 </p><p>  unsigned int Value=0; //速度初值 </p><p>  sbit KEY1=P2^0; //按鍵</p><p>  sbit KEY2=P2^1;</p&g

92、t;<p>  sbit KEY3=P2^2;</p><p>  sbit MotorA=P1^6; //兩個(gè)電機(jī)控制端</p><p>  sbit MotorB=P1^7; </p><p>  bit SWTR; //延時(shí)程序變量</p><p><b

93、>  bit SWTF;</b></p><p>  unsigned int SWTV;</p><p>  #define Pwm_MAX 255 //速度級(jí)數(shù)</p><p>  /********************************************************/</p><p&

94、gt;  函數(shù):Delay()</p><p>  延時(shí)1ms 65.53s</p><p>  t>0時(shí),延時(shí)(t*0.001)s</p><p>  t=0時(shí)。延時(shí)65.53s</p><p>  /********************************************************/</p>

95、<p>  void Delay(unsigned int T) //延時(shí)程度</p><p><b>  {</b></p><p><b>  SWTV=T;</b></p><p><b>  SWTR=1;</b></p><p>  while(!S

96、WTF);</p><p><b>  SWTR=0;</b></p><p><b>  SWTF=0;</b></p><p><b>  }</b></p><p>  void KEY() //按鍵處理函數(shù)</p><p><b

97、>  {</b></p><p>  if(KEY1==0)</p><p><b>  {</b></p><p>  Pwm_Value=Pwm_Value+1;</p><p><b>  }</b></p><p>  if(KEY2==0)<

98、/p><p><b>  {</b></p><p>  Pwm_Value=Pwm_Value-1;</p><p><b>  }</b></p><p>  if(Pwm_Value>255) Pwm_Value=255;</p><p>  if(Pwm_Value

99、<0) Pwm_Value=0;</p><p>  if(KEY3==0)</p><p><b>  {</b></p><p>  if(D==0) D=1;</p><p>  else D=0;</p><p><b>  }</b></p>

100、<p><b>  }</b></p><p>  void PWM_Init() //速度產(chǎn)生函數(shù)</p><p><b>  {</b></p><p>  staticunsigned char t=0;</p><p><b>  t++;</b>&

101、lt;/p><p>  if(t>Pwm_MAX) t=0;</p><p>  if(t<=Pwm_Value)</p><p><b>  {</b></p><p><b>  Pwm=1;</b></p><p><b>  }</b>&

102、lt;/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  Pwm=0;</b></p><p><b>  }</b></p><p><b>  if(D==0)&

103、lt;/b></p><p><b>  {</b></p><p><b>  MotorA=0;</b></p><p>  MotorB=Pwm;</p><p><b>  }</b></p><p><b>  else<

104、/b></p><p><b>  {</b></p><p>  MotorA=Pwm;</p><p><b>  MotorB=0;</b></p><p><b>  }</b></p><p><b>  }</b>

105、</p><p>  void Show_Value(unsigned char CH[]) //數(shù)據(jù)顯示函數(shù)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<4;i++)</p><p&g

106、t;<b>  {</b></p><p>  LcdPutChar(CH[i]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Show_Init() //數(shù)據(jù)顯示預(yù)處理

107、函數(shù)</p><p><b>  {</b></p><p>  LcdWriteCmd(0x80);</p><p>  LcdPuts("速度設(shè)定");</p><p>  LcdWriteCmd(0x90);</p><p>  LcdPuts("速度反饋&qu

108、ot;);</p><p>  LcdWriteCmd(0x88);</p><p>  LcdPuts("速度方向");</p><p>  LcdWriteCmd(0x98);</p><p>  LcdPuts("測(cè)控071 ");</p><p>  LcdWriteCm

109、d(0x9c);</p><p>  LcdPuts(" 29號(hào) ");</p><p><b>  }</b></p><p>  void T_int()//定時(shí)器初始化函數(shù)</p><p><b>  {</b></p><p>  T

110、MOD&=0x00;</p><p>  TMOD=0x25;</p><p>  TH1=TL1=0xa4;</p><p>  TH0=TL0=0;</p><p><b>  ET1=1;</b></p><p><b>  TR1=1;</b></p&g

111、t;<p><b>  EA=1;</b></p><p><b>  }</b></p><p>  void MeasureSpeed()//速度反饋及信息處理函數(shù)</p><p><b>  {</b></p><p>  unsigned int

112、m;</p><p>  TH0=TL0=0;</p><p><b>  TR0=1;</b></p><p>  Delay(2400);</p><p><b>  TR0=0;</b></p><p><b>  TF0=0;</b></p

113、><p>  m=2*(TH0*255+TL0);</p><p>  if(m>Value) Pwm_Value++;</p><p>  if(m<Value) Pwm_Value--;</p><p>  FK[3]=(m%10)+48;</p><p>  FK[2]=(m/10%10)+48;&l

114、t;/p><p>  FK[1]=(m/100%10)+48;</p><p>  FK[0]=(m/1000%10)+48;</p><p>  SD[3]=(Pwm_Value%10)+48;</p><p>  SD[2]=(Pwm_Value/10%10)+48;</p><p>  SD[1]=(Pwm_Valu

115、e/100%10)+48;</p><p>  SD[0]=(Pwm_Value/1000%10)+48;</p><p><b>  }</b></p><p>  void main()//主函數(shù)部分</p><p><b>  { </b></p><p>

116、  unsigned char i;</p><p><b>  MotorA=0;</b></p><p><b>  MotorB=0;</b></p><p><b>  EA=0; </b></p><p>  T_int(); //定時(shí)器初始化</p>

117、<p>  Delay(50);</p><p>  LcdInit();//LCD初始化</p><p>  /*****************************************/</p><p>  for(i=0;i<2;i++)</p><p><b>  {</b></

118、p><p>  LcdLightOff();</p><p>  Delay(660);</p><p>  LcdLightOn();</p><p>  Delay(660);</p><p><b>  }</b></p><p>  Delay(660);</p&

119、gt;<p>  LcdClear();</p><p>  Delay(660);</p><p>  /****************************************/</p><p>  Show_Init();</p><p>  Delay(20);</p><p>  Val

120、ue=90;//速度初值</p><p>  Pwm_Value=Value;</p><p><b>  EA=1;</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  KEY()

121、;//按鍵處理</p><p>  MeasureSpeed(); //速度反饋</p><p>  LcdWriteCmd(0x94);</p><p>  Show_Value(FK); //顯示實(shí)時(shí)速度</p><p>  LcdWriteCmd(0x84);</p><p>  Show_Value

122、(SD); //顯示設(shè)定值</p><p>  LcdWriteCmd(0x8c); //顯示方向</p><p>  if(D==0)LcdPuts("正向");</p><p>  if(D==1)LcdPuts("反向");</p><p><b>  }</b>&l

123、t;/p><p><b>  }</b></p><p>  void T1ZD() interrupt 3 //T1中斷服務(wù)程序</p><p><b>  {</b></p><p>  unsigned char m=0;</p><p><b>  TR1=0;

124、</b></p><p>  PWM_Init(); //電機(jī)控制</p><p>  if(SWTR) //延時(shí)程序控制</p><p><b>  {</b></p><p>  if(--SWTV==0) SWTF=1;</p><p><b>  }</

125、b></p><p><b>  TR1=1;</b></p><p><b>  }</b></p><p><b>  5程序的調(diào)試</b></p><p>  5.1 編程軟件Keil C51簡(jiǎn)介</p><p>  我們使用KEIL C51

126、軟件來(lái)對(duì)程序進(jìn)行編譯和調(diào)試。Keil C51是德國(guó)知名軟件公司Keil(現(xiàn)已并入ARM公司)開(kāi)發(fā)的基于8051內(nèi)核的微控制器軟件開(kāi)發(fā)平臺(tái),是目前開(kāi)發(fā)8051內(nèi)核單片機(jī)的主流編譯工具。</p><p>  5.2 程序編譯和調(diào)試</p><p> ?。?)運(yùn)行Keil C51軟件。新建工程。選擇Keil C51軟件的菜單“Project | New |u Vision Project…”,參

127、考圖5.1。彈出一個(gè)名為“Create New Project”的對(duì)話框,為工程取名為“SOK”。然后存放到指定文件夾。</p><p> ?。?)緊接著,Keil C51提示您選擇CPU器件。8051內(nèi)核單片機(jī)最早是由Intel公司研發(fā)的。因此,在這里您可以選擇Intel公司的第1個(gè)器件“80/87C52”,參見(jiàn)圖 5.2。接下來(lái)彈出一個(gè)對(duì)話框。我們不需要添加啟動(dòng)代碼,所以這里選擇 “否(N)”。</p&

128、gt;<p> ?。?)選擇Keil C51軟件的菜單“File | New…”,將出現(xiàn)的新文檔命名為“SOK”。選擇菜單“File | Save”,彈出一個(gè)名為“Save As”的對(duì)話框。建議將文件名改為“SOK.c”, 如此,我們建立了一個(gè)C語(yǔ)言的程序文本。如圖5.3所示。</p><p> ?。?)單擊Keil C51軟件左邊“Project Workspace”項(xiàng)目工作窗口的“+”,然后右擊

129、“Source Group 1”文件夾,會(huì)彈出如圖5.4所示的選擇菜單。單擊其中的“Add Files to Group 'Source Group 1'”項(xiàng),將彈出如圖5.5所示的對(duì)話框。選擇文件類型為“C Source file”,這時(shí),對(duì)話框內(nèi)將出現(xiàn)剛才保存的“SOK.c”。單擊文件“SOK.c”,再按一次“Add”按鈕,最后按“Close”按鈕。這時(shí),源程序文件“main.asm”出現(xiàn)在項(xiàng)目工作窗口的“Sourc

130、e Group 1”文件夾內(nèi),可以單擊左邊的“+”展開(kāi)后查看。</p><p> ?。?)在“SOK.c”文件中輸入程序代碼,單擊Keil C51工具欄的“”圖標(biāo),彈出名為“Options for Target ‘Target 1’”的對(duì)話框。單擊“Output”標(biāo)簽頁(yè),選中“Create HEX File”項(xiàng),然后“確定”。參見(jiàn)圖 5.6。單擊工具欄的“”按鈕編譯當(dāng)前源程序。編譯結(jié)果會(huì)顯示在輸出窗口內(nèi)。如果是“

131、0 Error(s), 0 Warning(s)”就表示程序沒(méi)有問(wèn)題了。如果存在錯(cuò)誤或警告,請(qǐng)仔細(xì)檢查您的程序是否與程序清單一致。修改后,再編譯,直到通過(guò)為止。如此可成功生成HEX文件。</p><p> ?。?)使用“Flash Magic”軟件進(jìn)行ISP方式下載HEX文件。如下圖5.7所示。選擇實(shí)際使用的COM端口,Baud Rate選擇9600或19200,Device選擇89V51RD2。勾中“Erase

132、 Blocks used by Hex File”。點(diǎn)擊“Browse”,然后打開(kāi)文件我們需要下載的SOK.hex文件。勾中“Verify after programming”,其它選項(xiàng)不要選擇。按“Start”按鈕,會(huì)彈出一個(gè)紅色對(duì)話框提示您復(fù)位單片機(jī)以進(jìn)入ISP模式。這時(shí)按一次Quick51實(shí)驗(yàn)板上的RST按鍵,ISP下載過(guò)程開(kāi)始。如果下載失敗,請(qǐng)仔細(xì)檢查操作步驟,再試一次。再按一次Quick51實(shí)驗(yàn)板上的RST按鍵,程序開(kāi)始運(yùn)行。

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論