版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> **大學(xué)</b></p><p><b> ***工程學(xué)院</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱: 單片機(jī)原理及應(yīng)用 </p><p> 設(shè)計(jì)題目:
2、 </p><p> 班 級(jí): ************* </p><p> 姓 名: **** 學(xué) 號(hào): ********** </p><p> 指導(dǎo)教師: ****** 評(píng) 分: <
3、/p><p><b> 2013年7月1日</b></p><p><b> 前言</b></p><p> 步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開(kāi)環(huán)控制元步進(jìn)電機(jī)件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)
4、定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。</p><p> 通常電機(jī)的轉(zhuǎn)子為永磁體,當(dāng)電流流過(guò)定子繞組時(shí),定子繞組產(chǎn)生一矢量磁場(chǎng)。該磁場(chǎng)會(huì)帶動(dòng)轉(zhuǎn)子旋轉(zhuǎn)一角度,使得轉(zhuǎn)子的一對(duì)磁場(chǎng)方向與定子的磁場(chǎng)方向一致。當(dāng)定子的矢量磁場(chǎng)旋轉(zhuǎn)一個(gè)角度。轉(zhuǎn)子也
5、隨著該磁場(chǎng)轉(zhuǎn)一個(gè)角度。每輸入一個(gè)電脈沖,電動(dòng)機(jī)轉(zhuǎn)動(dòng)一個(gè)角度前進(jìn)一步。它輸出的角位移與輸入的脈沖數(shù)成正比、轉(zhuǎn)速與脈沖頻率成正比。改變繞組通電的順序,電機(jī)就會(huì)反轉(zhuǎn)。所以可用控制脈沖數(shù)量、頻率及電動(dòng)機(jī)各相繞組的通電順序來(lái)控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)。</p><p><b> 目錄</b></p><p> 設(shè)計(jì)目的……………………………………………………………2</p&g
6、t;<p> 設(shè)計(jì)要求……………………………………………………………2</p><p> 儀器設(shè)備……………………………………………………………2</p><p> 硬件線路圖及主要芯片說(shuō)明………………………………………2</p><p> 系統(tǒng)工作原理………………………………………………………7</p><p> 程
7、序框圖………………………………………………………… 11</p><p> 程序清單………………………………………………………… 12</p><p> 設(shè)計(jì)體會(huì)………………………………………………………… 17</p><p><b> 一、設(shè)計(jì)目的</b></p><p> 通過(guò)具體小型測(cè)試系統(tǒng)設(shè)計(jì),實(shí)踐單片
8、機(jī)系統(tǒng)設(shè)計(jì)及調(diào)試的全過(guò)程,以加深對(duì)單片機(jī)內(nèi)部結(jié)構(gòu)、功能和指令系統(tǒng)的理解,并進(jìn)一步學(xué)習(xí)單片機(jī)開(kāi)發(fā)系統(tǒng)的應(yīng)用及一些外圍芯片的接口和編程方法,初步掌握單片機(jī)系統(tǒng)的硬、軟件設(shè)計(jì)技術(shù)及調(diào)試技巧。</p><p><b> 設(shè)計(jì)要求</b></p><p> 1) 電機(jī)轉(zhuǎn)速可以平穩(wěn)控制</p><p> 2)通過(guò)鍵盤(pán)和顯示器可以設(shè)置電機(jī)的轉(zhuǎn)速<
9、/p><p> 3)顯示電機(jī)的速度趨勢(shì)</p><p><b> 儀器設(shè)備</b></p><p> 1、單片機(jī)開(kāi)發(fā)試驗(yàn)儀 一套</p><p> 2、“m35sp-5”步進(jìn)電機(jī) 一個(gè)</p><p> 硬件線路圖及主要芯片說(shuō)明</p&g
10、t;<p><b> 單片機(jī)開(kāi)發(fā)試驗(yàn)儀</b></p><p> STC90C51RD單片機(jī)是新一代高速/低功耗/超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12 時(shí)鐘/機(jī)器周期和 6 時(shí)鐘/機(jī)器周期可以任意選擇。</p><p><b> 主要特性如下: </b></p><p> 1)
11、. 增強(qiáng)型 9051 單片機(jī),6 時(shí)鐘/機(jī)器周期和 12 時(shí)鐘/機(jī)器周期可以任意選擇,指令代碼完全兼容傳統(tǒng) 8051. </p><p> 2). 工作電壓:5.5V~3.3V(5V 單片機(jī))/3.8V~2.0V(3V 單片機(jī)) </p><p> 3). 工作頻率范圍:0~40MHz,相當(dāng)于普通 8051 的 0~80MHz,實(shí)際工作頻率可達(dá) 48MHz </p>&l
12、t;p> 4). 用戶應(yīng)用程序空間為 8K 字節(jié) </p><p> 5). 片上集成 512 字節(jié) RAM</p><p> 6). 通用 I/O 口(32 個(gè))復(fù)位后為: , P1/P2/P3/P4 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開(kāi)路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。 </p><p> 7). IS
13、P(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專用編程器,無(wú)需專用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片</p><p> 8). 具有 EEPROM 功能 </p><p> 9). 具有看門狗功能 </p><p> 10). 共 3 個(gè) 16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器 T0、T1、T2</p
14、><p> 11). 外部中斷 4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可由外部中斷低電平觸發(fā)中斷方式喚醒 </p><p> 12). 通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè) UART </p><p> 13). 工作溫度范圍:-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí)) </p><p> 1
15、4). PDIP 封裝 </p><p> STC89C52RC 單片機(jī)的工作模式</p><p> 掉電模式:典型功耗<0.1μA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序空閑模式:典型功耗 2mA </p><p> 正常工作模式:典型功耗 4mA~7mA </p><p> 掉電模式可由外部中斷喚醒,適用于水表、氣表
16、等電池供電系統(tǒng)及便攜設(shè)備 STC89C52RC 引腳功能說(shuō)明</p><p> VCC(40 引腳):電源電壓 </p><p> VS S(20 引腳):接地 </p><p> P0 端口(P0.0~P0.7 P0.7,39~32 引腳):P0 口是一個(gè)漏極開(kāi)路的 8 位雙向 I/O 口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL 負(fù)載,對(duì)端口 P0 寫(xiě)入
17、每個(gè)引腳能驅(qū)動(dòng)寫(xiě)入“1”時(shí),可以作為高阻抗輸入。在訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也可以提供低 8 位 地址和 8 位數(shù)據(jù)的復(fù)用總線 位數(shù)據(jù)的復(fù)用總線。此時(shí),P0 口內(nèi)部上拉電阻有效。在 Flash ROM 在線編程時(shí),P0 端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。 </p><p> P1 端口(P1.0~P1.7,1~8 引腳):P1 口是一個(gè)帶內(nèi)部上拉電阻的 8 位
18、雙向 I/O 口。P1 的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4 個(gè) TTL 輸入。對(duì)端 口寫(xiě)入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1 口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電流(I)。此外,P1.0 和 P1.1 還可以作為定時(shí)器/計(jì)數(shù)器 2 的外部技術(shù)輸入(P1.0/T2和定時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX) 。</p><p>
19、 P2 端口(P2.0~P2.7,21~28 引腳):P2 口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙 向 I/O 端口。P2 的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4 個(gè) TTL 輸入。 對(duì)端口寫(xiě)入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。 P2 作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流(I) 。在訪問(wèn)外部程序存儲(chǔ)器和 16 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX @DPTR
20、”指令)時(shí),P2 送出高 8 位地址。在訪問(wèn) 8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如 執(zhí)行“MOVX @R1”指令)時(shí),P2 口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū) 中的 P2 寄存器的內(nèi)容) ,在整個(gè)訪問(wèn)期間不會(huì)改變。</p><p> 在對(duì) Flash ROM 編程和程序校驗(yàn)期間, P2也接收高位地址和一些控制信號(hào)。</p><p> P3 端口(P3.0~P3.7,10~17 引腳)
21、 :P3 是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 端口。P3 的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4 個(gè) TTL 輸入。對(duì)端 口寫(xiě)入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3 做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一 個(gè)電流(I) 。 在對(duì) Flash ROM 編程或程序校驗(yàn)時(shí),P3 還接收一些控制信號(hào)。P3 口除作為一般 I/O 口外,還有其他一些復(fù)用功能。</p&
22、gt;<p> RST(9 引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效, 用來(lái)完成單片機(jī)單片機(jī)的復(fù)位初始化操作??撮T狗計(jì)時(shí)完成后,RST 引腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功 能無(wú)效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。 </p><p> ALE/ ROG (30 引腳) 地址鎖存控制信號(hào) : (ALE)
23、 是訪問(wèn)外部程序存儲(chǔ)器時(shí), 鎖存低 8 位地址的輸出脈沖。在 Flash 編程時(shí),此引腳( ROG)也用作編程輸入 脈沖。 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部 定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE 脈沖 將會(huì)跳過(guò)。如果需要,通過(guò)將地址位 8EH 的 SFR 的第 0 位置“1” ,ALE 操作將無(wú)效。這 一位置“1” ,ALE 僅在執(zhí)行 MOVX 或 MOV 指令時(shí)有效
24、。否則,ALE 將被微弱拉 高。這個(gè) ALE 使能標(biāo)志位(地址位 8EH 的 SFR 的第 0 位)的設(shè)置對(duì)微控制器處于 外部執(zhí)行模式下無(wú)效。PSEN(29 引腳):PSEN是外部程序存儲(chǔ)器選通信號(hào)。當(dāng) STC89C52RC 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,而訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。</p><p> EA/VPP (31 引腳):訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)
25、。為使能從 0000H 到 FFFFH 的外部程序存儲(chǔ)器讀取指令, EA必須接 GND。注意加密方式 1 時(shí), EA將內(nèi)部鎖 定位 RESET。為了執(zhí)行內(nèi)部程序指令, EA應(yīng)該接 VCC。在 Flash 編程期間,EA也 接收 12 伏 VPP 電壓。 </p><p> XTAL1(19 引腳) :振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p> XTAL2(18 引腳
26、) :振蕩器反相放大器的輸入端。</p><p> “m35sp-5”步進(jìn)電機(jī)</p><p><b> 主要技術(shù)參數(shù):</b></p><p><b> 相數(shù):四相</b></p><p><b> 電壓:5VDC</b></p><p>&l
27、t;b> 電流:92mA</b></p><p><b> 電阻:800Ω</b></p><p><b> 步距角:7.5°</b></p><p> 空載牽出頻率:800pps</p><p> 空載牽入頻率:500pps</p><p&
28、gt;<b> 減速比:1/64</b></p><p> 牽入轉(zhuǎn)矩:≥78.4mN.m</p><p> 接線指示:A(橙)、B(黃)、C(藍(lán))、D(灰)、E(紅,中點(diǎn)接+5V)</p><p><b> 四相八拍相序表</b></p><p> 如果需要電機(jī)正轉(zhuǎn),只需要從A-AB-B-
29、BC-C-CD-D-DA依次通電即可,反轉(zhuǎn),則需要反過(guò)來(lái)依次通電。</p><p><b> 3、開(kāi)發(fā)板原理圖:</b></p><p><b> 系統(tǒng)工作原理</b></p><p> 本程序包括按鍵處理程序、顯示處理程序、中斷處理程序、數(shù)據(jù)處理程序四個(gè)主要部分</p><p><b&
30、gt; 1、按鍵處理程序</b></p><p> 按鍵處理安排在主程序當(dāng)中,使其處于不斷檢測(cè)狀態(tài),當(dāng)有按鍵按下能夠及時(shí)對(duì)其進(jìn)行相應(yīng)的處理。同時(shí),對(duì)于按鍵還應(yīng)該進(jìn)行消抖處理,避免系統(tǒng)誤動(dòng)作。其主要程序如下: </p><p><b> if(k1==0)</b></p><p><b> {</b>
31、;</p><p> delay(5); //延時(shí)消抖</p><p><b> if(k1==0)</b></p><p><b> delay(5);</b></p><p><b> if(k1==0)</b></p><p&
32、gt;<b> {</b></p><p><b> TR0=~TR0;</b></p><p><b> k++;</b></p><p> } //啟動(dòng)/停止</p><p><b> }</b></p>&l
33、t;p> while(!k1); //等待按鍵釋放</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> delay(5); //延時(shí)消抖</p><p><b> if(k
34、2==0)</b></p><p><b> delay(5);</b></p><p><b> if(k2==0)</b></p><p> time=time-1000;</p><p> } //加速</p><p> whi
35、le(!k2); //等待按鍵釋放</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> delay(5); //延時(shí)消抖</p><p><b> if(k3==0)<
36、/b></p><p><b> delay(5);</b></p><p><b> if(k3==0)</b></p><p> time=time+1000;</p><p> } //減速</p><p> whi
37、le(!k3); //等待按鍵釋放</p><p><b> if(k4==0)</b></p><p><b> {</b></p><p> delay(5); //延時(shí)消抖</p><p><b> if(k4==0)</b&
38、gt;</p><p><b> delay(5);</b></p><p><b> if(k4==0)</b></p><p><b> f++;</b></p><p> } //正/反轉(zhuǎn)</p><p
39、> while(!k4); //等待按鍵釋放</p><p><b> 2、中斷處理程序</b></p><p> 中斷程序中安排對(duì)P1口賦值及對(duì)定時(shí)器重新裝入初值,每次進(jìn)入中斷程序時(shí),先判斷是否執(zhí)行反轉(zhuǎn),如是,則送反轉(zhuǎn)編碼,否則,送正轉(zhuǎn)編碼。其主要程序如下: </p><p> void timer0(
40、)interrupt 1</p><p><b> {</b></p><p><b> if(f%2)</b></p><p><b> {</b></p><p> P1=FF[j++];</p><p><b> if(j==
41、8)</b></p><p><b> j=0;</b></p><p> } //f為奇數(shù)時(shí)代表反轉(zhuǎn),則送反轉(zhuǎn)編碼到P1口</p><p><b> else </b></p><p><b> {</b></p>
42、<p> P1=ZF[j++];</p><p><b> if(j==8)</b></p><p><b> j=0;</b></p><p> } //否則送正轉(zhuǎn)編碼到P1口</p><p> TH0=(65536-time)/256;<
43、/p><p> TL0=(65536-time)%256;//重新裝初值</p><p><b> }</b></p><p><b> 3、顯示處理程序</b></p><p> 顯示程序則通過(guò)對(duì)相應(yīng)數(shù)碼管的通斷,然后送段碼。以這種方式來(lái)控制其動(dòng)態(tài)顯示,同時(shí)需要主要每個(gè)數(shù)碼管都應(yīng)該延時(shí)亮一
44、段時(shí)間。并且要對(duì)其消隱。以獲得較好的顯示效果。其主要程序如下:</p><p> void display(uchar a,uchar b,uchar c,uchar d)</p><p><b> {</b></p><p><b> if(f%2)</b></p><p><b>
45、; {</b></p><p> P2=0x7f; </p><p> P0=0xbf; //f為奇數(shù)時(shí)代表反轉(zhuǎn),第一個(gè)數(shù)碼管顯示"0"</p><p> delay(1); </p><p><b> P0=0xff;</b></p&g
46、t;<p> } //消隱</p><p><b> else</b></p><p><b> {</b></p><p> P2=0x7f; </p><p> P0=0x06; //f為偶數(shù)時(shí)代表正轉(zhuǎn),第一個(gè)數(shù)碼管顯示&q
47、uot;1"</p><p> delay(1); </p><p><b> P0=0x00;</b></p><p><b> }</b></p><p> P2=0xef; </p><p> P0=SM[a]; //顯示萬(wàn)位</p&g
48、t;<p> delay(1); </p><p> P0=0x00; //消隱</p><p> P2=0xf7; </p><p> P0=SM[b]; //顯示千位</p><p> delay(1); </p><p> P0=0x00; //消隱</
49、p><p><b> P2=0xfb;</b></p><p> P0=SM[c]; //顯示百位</p><p><b> delay(1);</b></p><p> P0=0x00; //消隱</p><p><b> P2=0xfd;&
50、lt;/b></p><p> P0=SM[d]; //顯示十位</p><p><b> delay(1);</b></p><p> P0=0x00; //消隱</p><p><b> P2=0xfe;</b></p><p> P0=SM
51、[d]; //顯示個(gè)位</p><p><b> delay(1);</b></p><p> P0=0x00; //消隱</p><p><b> }</b></p><p><b> 4、數(shù)據(jù)處理程序</b></p><p>
52、 通過(guò)對(duì)數(shù)據(jù)進(jìn)行處理來(lái)獲得電機(jī)的轉(zhuǎn)速,可以先計(jì)算出1ms時(shí)電機(jī)的速度,然后通過(guò)改變時(shí)間間隔來(lái)計(jì)算電機(jī)的轉(zhuǎn)速。其主要程序如下:</p><p> void dispose()</p><p><b> {</b></p><p> h=time/10000;</p><p> w=time/1000%10;<
53、/p><p> p=time/100%10;</p><p> q=time/10%10;</p><p> u=time%10;</p><p><b> }</b></p><p> 根據(jù)以上四個(gè)主要部分來(lái)把整個(gè)系統(tǒng)劃分成相應(yīng)模塊,有利于提高系統(tǒng)的抗干擾能力。能較好的保證系統(tǒng)運(yùn)行的可靠。
54、</p><p><b> 程序框圖</b></p><p><b> 程序清單</b></p><p> #include<reg52.h> //頭文件</p><p> #define uint unsigned int //宏定義&
55、lt;/p><p> #define uchar unsigned char //宏定義</p><p> uchar code ZF[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正轉(zhuǎn)編碼表</p><p> uchar code FF[8]={0x09,0x08,0x0c,0x04,0x06,0x0
56、2,0x03,0x01}; //反轉(zhuǎn)編碼表</p><p> uchar code SM[]=</p><p><b> {</b></p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0
57、x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71</p><p> }; //數(shù)碼表</p><p> sbit k1=P3^0; //定義K1為啟動(dòng)/停止按鍵</p><p> sbit k2=P3^1; //定義
58、K2為減速按鍵</p><p> sbit k3=P3^2; //定義K3為加速按鍵</p><p> sbit k4=P3^3; //定義K4為正/反轉(zhuǎn)按鍵</p><p> uchar j=0;</p><p> uint time=12000; //time為每?jī)膳闹g的間隔時(shí)間</p&g
59、t;<p> uint temp2;</p><p> uchar temp1,h,w,p,q,f;</p><p> /********************************************************************</p><p> 函數(shù):void delay(uchar z)</p>
60、<p> 功能:1ms延時(shí)函數(shù)(12M晶振下)</p><p> ********************************************************************/</p><p> void delay(uchar z)</p><p><b> { </b></p>
61、<p> uchar s,v;</p><p> for(s=0;s<z;s++)</p><p> for(v=0;v<125;v++); //一個(gè)for循環(huán)8個(gè)機(jī)器周期(125*8*1us=1ms)</p><p><b> }</b></p><p> /***********
62、*********************************************************</p><p> 函數(shù):void display(uchar a,uchar b,uchar c,uchar d)</p><p><b> 功能:顯示函數(shù)</b></p><p> ********************
63、************************************************/</p><p> void display(uchar a,uchar b,uchar c,uchar d)</p><p><b> {</b></p><p><b> if(f%2)</b></p>
64、<p><b> {</b></p><p> P2=0x7f; </p><p> P0=0xbf; //f為奇數(shù)時(shí)代表反轉(zhuǎn),第一個(gè)數(shù)碼管顯示"0"</p><p> delay(1); </p><p><b> P0=0xff;
65、</b></p><p> } //消隱</p><p><b> else</b></p><p><b> {</b></p><p> P2=0x7f; </p><p> P0=0x06; //f為
66、偶數(shù)時(shí)代表正轉(zhuǎn),第一個(gè)數(shù)碼管顯示"1"</p><p> delay(1); </p><p><b> P0=0x00;</b></p><p><b> }</b></p><p> P2=0xef; </p><p> P0=SM[a
67、]; //顯示萬(wàn)位</p><p> delay(1); </p><p> P0=0x00; //消隱</p><p> P2=0xf7; </p><p> P0=SM[b]; //顯示千位</p><p> delay(1); </p><p> P0=
68、0x00; //消隱</p><p><b> P2=0xfb;</b></p><p> P0=SM[c]; //顯示百位</p><p><b> delay(1);</b></p><p> P0=0x00; //消隱</p><p>&l
69、t;b> P2=0xfd;</b></p><p> P0=SM[d]; //顯示十位</p><p><b> delay(1);</b></p><p> P0=0x00; //消隱</p><p><b> P2=0xfe;</b></p>
70、<p> P0=SM[d]; //顯示個(gè)位</p><p><b> delay(1);</b></p><p> P0=0x00; //消隱</p><p><b> }</b></p><p> /******************************
71、**************************************</p><p> 函數(shù):void dispose()</p><p> 功能:數(shù)值處理函數(shù)********************************************************************/</p><p> void dispose()<
72、/p><p><b> {</b></p><p> h=time/10000;</p><p> w=time/1000%10;</p><p> p=time/100%10;</p><p> q=time/10%10;</p><p> u=time%10;&
73、lt;/p><p><b> }</b></p><p> /********************************************************************</p><p> 函數(shù):void main()</p><p> 功能:主函數(shù)********************
74、************************************************/</p><p> void main()</p><p><b> {</b></p><p><b> uchar k; </b></p><p> TMOD=0x01;
75、 //定義定時(shí)器0工作方式1</p><p> EA=1; //開(kāi)總中斷</p><p> ET0=1; //開(kāi)定時(shí)器0中斷</p><p> TH0=(65536-time)/256;</p><p> TL0=(65536-time)%256;
76、 //裝定時(shí)器初值</p><p> TR0=1; //開(kāi)定時(shí)器0</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> if(k1==0)</b></p>
77、<p><b> {</b></p><p> delay(5); //延時(shí)消抖</p><p><b> if(k1==0)</b></p><p><b> delay(5);</b></p><p><b> if(k1=
78、=0)</b></p><p><b> {</b></p><p><b> TR0=~TR0;</b></p><p><b> k++;</b></p><p> } //啟動(dòng)/停止</p><p><b
79、> }</b></p><p> while(!k1); //等待按鍵釋放</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> delay(5); //延時(shí)消抖</
80、p><p><b> if(k2==0)</b></p><p><b> delay(5);</b></p><p><b> if(k2==0)</b></p><p> time=time-1000;</p><p> }
81、 //加速</p><p> while(!k2); //等待按鍵釋放</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> delay(5); //延時(shí)消抖</p>&l
82、t;p><b> if(k3==0)</b></p><p><b> delay(5);</b></p><p><b> if(k3==0)</b></p><p> time=time+1000;</p><p> }
83、 //減速</p><p> while(!k3); //等待按鍵釋放</p><p><b> if(k4==0)</b></p><p><b> {</b></p><p> delay(5); //延時(shí)消抖</p><p
84、><b> if(k4==0)</b></p><p><b> delay(5);</b></p><p><b> if(k4==0)</b></p><p><b> f++;</b></p><p> }
85、 //正/反轉(zhuǎn)</p><p> while(!k4); //等待按鍵釋放</p><p> dispose(); </p><p><b> if(k%2)</b></p><p> display(0,0,0,0); //停止時(shí)顯示00.00</p>
86、<p><b> else</b></p><p> display(h,w,p,q); //正常運(yùn)轉(zhuǎn)時(shí)調(diào)用顯示函數(shù)</p><p><b> }</b></p><p><b> }</b></p><p> /******************
87、**************************************************</p><p> 函數(shù):void timer0() interrupt 1</p><p> 功能:定時(shí)器0中斷處理函數(shù)********************************************************************/</p>&l
88、t;p> void timer0()interrupt 1</p><p><b> {</b></p><p><b> if(f%2)</b></p><p><b> {</b></p><p> P1=FF[j++];</p><p
89、><b> if(j==8)</b></p><p><b> j=0;</b></p><p> } //f為奇數(shù)時(shí)代表反轉(zhuǎn),則送反轉(zhuǎn)編碼到P1口</p><p><b> else </b></p><p><b>
90、{</b></p><p> P1=ZF[j++];</p><p><b> if(j==8)</b></p><p><b> j=0;</b></p><p> } //否則送正轉(zhuǎn)編碼到P1口</p><p> TH0=
91、(65536-time)/256;</p><p> TL0=(65536-time)%256;//重新裝初值</p><p><b> }</b></p><p><b> 八、設(shè)計(jì)體會(huì)</b></p><p> 通過(guò)本次的課程設(shè)計(jì),使我對(duì)單片機(jī)有了更加深入的認(rèn)識(shí)。因?yàn)橛辛酥癈語(yǔ)言的
92、基礎(chǔ),所以這次的軟件設(shè)計(jì)比較沒(méi)有那么困難。在主函數(shù)編寫(xiě)好之后,再單獨(dú)編寫(xiě)各個(gè)子函數(shù),通過(guò)主函數(shù)對(duì)子函數(shù)的調(diào)用可以讓程序結(jié)構(gòu)看起來(lái)更有層次,更簡(jiǎn)潔,更清楚。同時(shí),這次的課程設(shè)計(jì)讓我對(duì)STC90C51RD單片機(jī)芯片的硬件結(jié)構(gòu)有了更深的認(rèn)識(shí),平時(shí)課堂上學(xué)到的那么多關(guān)于這款芯片的硬件結(jié)構(gòu)知識(shí)終于在這次的課程設(shè)計(jì)上派上了用場(chǎng)。</p><p> 總之,這次的課程設(shè)計(jì)是對(duì)我們所學(xué)知識(shí)的綜合考驗(yàn),我從這次的課程設(shè)計(jì)中學(xué)到了很
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)-- 單片機(jī)原理及應(yīng)用
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)手機(jī)鍵盤(pán)-單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)串行通訊
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)--基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)—單片機(jī)電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)io口的應(yīng)用
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)--基于單片機(jī)的電子鬧鐘設(shè)計(jì)
- 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)
- 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)(溫度測(cè)量)
- lcd單片機(jī)原理課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)籃球計(jì)分器
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
評(píng)論
0/150
提交評(píng)論