版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)--基于at89c51單片機(jī)控制步進(jìn)電機(jī)
- 基于at89c51單片機(jī)的電機(jī)控制綜合設(shè)計(jì)
- 基于at89c51單片機(jī)步進(jìn)電機(jī)控制
- 基于at89c51單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)at89c51
- at89c51單片機(jī)課程設(shè)計(jì)-----搶答器
- 基于單片機(jī)at89c51控制的鍵控流水燈課程設(shè)計(jì)報(bào)告
- 基于單片機(jī)at89c51控制的中斷控制流水燈課程設(shè)計(jì)報(bào)告
- at89c51單片機(jī)控制溫度
- at89c51單片機(jī)控制溫度
- 單片機(jī)課程設(shè)計(jì)--at89c51 單片機(jī)控制的交通燈控制電路
- 基于單片機(jī)at89c51控制的中斷控制流水燈課程設(shè)計(jì)報(bào)告
- at89c51單片機(jī)課程設(shè)計(jì)說(shuō)明書
- 基于單片機(jī)at89c51的電子時(shí)鐘的課程設(shè)計(jì)
- 基于at89c51單片機(jī)的多人搶答器設(shè)計(jì)課程設(shè)計(jì)
- at89c51基于單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)
- 基于at89c51單片機(jī)定時(shí)鬧鐘設(shè)計(jì)
- 基于at89c51單片機(jī)數(shù)控電源
- c51課程設(shè)計(jì)報(bào)告基于at89c51單片機(jī)的水位控制系統(tǒng)設(shè)計(jì)
- 基于at89c51單片機(jī)數(shù)控電源
評(píng)論
0/150
提交評(píng)論