版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計正文與附錄(數(shù)字轉(zhuǎn)速表的設(shè)計) 數(shù)字轉(zhuǎn)速表的設(shè)計 一、概述 隨著科學(xué)技術(shù)特別是微型計算機技術(shù)的高速開展,單片微機技術(shù)也獲得了飛速開展。目前,單片機已經(jīng)在日常生活和控制領(lǐng)域等方面得到廣泛的應(yīng)用,它正為我國經(jīng)濟的快速開展發(fā)揮著舉足輕重的作用。作為自動化專業(yè)的一名工科學(xué)生應(yīng)該牢牢掌握這一重要技術(shù)。而課程設(shè)計這一環(huán)節(jié)是我們提高單片機應(yīng)用能力的很好時機,也是我們學(xué)好這一課程的必經(jīng)環(huán)節(jié)。通過課程設(shè)計可以進一步穩(wěn)固我們前面所學(xué)理論知識,使我們對單片機理論知識有一個深刻的認識和全面的掌握。另外通過這一真正意義上的實踐活動,我們可以從中發(fā)現(xiàn)自己缺乏之處并能夠在自己的深思下和老師的指導(dǎo)下得到及時的解決。再
2、次,它能使我們的應(yīng)用能力和科技創(chuàng)新能力得到較大的提高。 本課程設(shè)計是單片機系統(tǒng)在測速方面的簡單應(yīng)用。目前單片機技術(shù)已經(jīng)在電機轉(zhuǎn)速等為控制對象的控制系統(tǒng)中得到了廣泛的應(yīng)用,而在這一控制過程中必須通過單片機來測量轉(zhuǎn)速?;诖吮菊n程設(shè)計利用89C51單片機及外圍電路來設(shè)計一個數(shù)字轉(zhuǎn)速表。通過測量轉(zhuǎn)速所對應(yīng)的方波脈沖來測量轉(zhuǎn)速,其轉(zhuǎn)速可以通過鍵盤輸入給定,同時其具體數(shù)值也可以在LED上顯示出來。 ? 設(shè)計要求 1) 利用單片機組成一數(shù)字轉(zhuǎn)速表。 2) 電機轉(zhuǎn)速由信號發(fā)生器的方波脈沖信號來模擬。 3) 利用四位LED顯示器顯示: a. 當前轉(zhuǎn)速 b. 給定轉(zhuǎn)速 c.給定轉(zhuǎn)速與當前轉(zhuǎn)速的區(qū)別標志 d. 超
3、速報警顯示 4) 利用小鍵盤實現(xiàn): a. 顯示選擇 b. 給定轉(zhuǎn)速的輸入 5) 測速范圍為500rpm1500rpm。電機的正常轉(zhuǎn)速為1000rpm。 6) 檢測對應(yīng)關(guān)系為:1024個脈沖/轉(zhuǎn),采用周期為40ms。 二、數(shù)字轉(zhuǎn)速表方案 為了確定其設(shè)計方案,首先必須構(gòu)思好初步的設(shè)計思路。根據(jù)設(shè)計要求和實驗仿真 1 條件,初步的設(shè)計思路可以總結(jié)如下: 1) 用信號發(fā)生器來產(chǎn)生周期為的方波脈沖信號。 2) 當前轉(zhuǎn)速與給定轉(zhuǎn)速顯示用4段LED數(shù)碼管。 3) 鍵盤采用矩陣式鍵盤,一共12個鍵,用2個控制鍵和10個數(shù)字鍵。 4) 采樣時間用定時/計數(shù)器0來實現(xiàn)。 5) 用定時/計數(shù)器1來統(tǒng)計采樣時間內(nèi)的脈
4、沖數(shù),進而計算轉(zhuǎn)速。 6) 給定轉(zhuǎn)速與當前轉(zhuǎn)速的區(qū)別標志是在個位加點顯示,有點為給定轉(zhuǎn)速。 根據(jù)設(shè)計要求與設(shè)計思路,可以確定該系統(tǒng)的設(shè)計方案,圖1為該系統(tǒng)設(shè)計的硬件電路設(shè)計框圖。硬件主要由四局部組成,即脈沖源、單片機、小鍵盤、LED顯示器。單片機采用89C51??紤]到實驗室的條件,鍵盤采用2行6列的矩陣式鍵盤,2個控制鍵分別控制顯示當前轉(zhuǎn)速和給定輸入的轉(zhuǎn)速,10個數(shù)字鍵用來輸入給定轉(zhuǎn)速,行與列與P1口連接。LED顯示采用靜態(tài)串口顯示,需用4個LED和4個74LS164移位存放器。脈沖源用一個方波脈沖發(fā)生器,用來模擬對應(yīng)的轉(zhuǎn)速。脈沖源與單片機的T1相連。 圖1 數(shù)字轉(zhuǎn)速表硬件框圖 鍵盤的設(shè)計也可
5、以采用其它形式,如采用3行4列。LED顯示也可以采用動態(tài)顯示。但綜合考慮本設(shè)計還是采用如上方案。 三、數(shù)字轉(zhuǎn)速表硬件設(shè)計 本設(shè)計需用到AT89C2051單片機、小鍵盤、LED顯示器和74LS164移位存放器等硬件,與其它設(shè)計相比其硬件設(shè)計相對簡單,且在實驗室也容易實現(xiàn)。小鍵盤用2行6列的矩陣式鍵盤,一共有12個鍵。LED和74LS164一起構(gòu)成靜態(tài)串口顯示。硬件設(shè)計總 2 圖見附圖A。下面對各局部硬件的設(shè)計進行簡單的介紹。 1、單片機最小系統(tǒng) 根據(jù)初步設(shè)計方案的分析,設(shè)計這樣的一個簡單應(yīng)用系統(tǒng),可以選擇帶有EPROM的單片機,應(yīng)用程序直接儲存在片內(nèi),不用再外部擴展存儲器,電路可以簡化,AT89
6、C51單片機的功能與MCS-51系列單片機完全兼容,并且還有程序加密功能,物美價廉,經(jīng)濟適用,因此我們選擇AT89C51,圖2是89C51的圖示。 本設(shè)計需用到Vcc、END、RESET 、XTAL1和XTAL2、P3.0 /RXD、 P3.1 /TXD、P1口、T1引腳。下面對所用引腳進行簡單介紹。 Vcc:供電電壓,GND:接地。:串行輸入口,P3.1 /TXD:串行輸出口 T1:定時/計數(shù)器1外部輸入 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:反向振蕩器的輸出。 RESET:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RESET腳兩個機器周期的高電平。 P1口:P1
7、口是一個內(nèi)部提供上拉電阻的8位雙向I/O口。 圖2 單片機最小系統(tǒng) ? 時鐘電路設(shè)計 單片機工作時間的基準是由時鐘電路提供的。在單片機的XTAL1和XTAL2兩個引 3 腳間接一只晶振及兩只電容就構(gòu)成了單片機的時鐘電路,如上圖所示,電路中電容器C2 列可以串聯(lián)一個二極管。行與列之間的交叉點就放置按鍵,按鍵的編號如圖3所示,其中A、B為控制鍵,A鍵控制當前轉(zhuǎn)速在LED上顯示,B鍵控制給定轉(zhuǎn)速在LED上顯示,其余為數(shù)字鍵,其排列順序如圖。按鍵未按下時行與列沒有連接,當且僅當按鍵按下時行與列相連,此時按鍵才起作用。 ? 鍵盤的工作原理 從圖3可以看出,行線與電阻串聯(lián)后接+5V的電源,當沒有按鍵按下時
8、,和的輸入為高電平,即單片機檢測到和的電平為高電平。因此,為了使按鍵起作用,的輸出為低電平,當任意一個按鍵按下時,或的輸入為低電平。這樣為了檢測X行Y列的按鍵是否按下時,可以在Y列輸入低電平,其余為高電平,然后檢測X行輸入的電平,假設(shè)為高電平說明按鍵沒有按下,假設(shè)為低電平那么有按鍵按下。 3、LED顯示接口電路設(shè)計 根據(jù)設(shè)計要求可知,系統(tǒng)需要顯示4位數(shù)字,因此需用到4個LED??紤]到顯示的數(shù)字需要移位以及實驗室的條件,本系統(tǒng)采用串口靜態(tài)顯示。串口靜態(tài)顯示需用到4個移位存放器,這里采用4個74LS164。其硬件圖如下: 圖4 LED顯示接口電路 ? 說明 5 如圖4所示,四個LED是8段共陰極數(shù)
9、碼管,它們的端口9接地;LED的a,b,c,d,e,f,g,dp接限流電阻后分別與74LS164的QA,QB,QC,QD,QE,QF,QG,QH相連;編號為1的74LS164的端口A、B連在一起并與單片機的RXD相連,其余三個74LS164的A、B端口也連在一起并與前一個QH端口相連;四個74LS164的端口CLK連在一起并與單片機的TXD相連,CLR與+5V電源相連。 四個LED的主要功能是用來顯示四位轉(zhuǎn)速數(shù)字;74LS164的主要功能是在脈沖的作用下移位,并具有鎖存作用。 ? 工作原理 圖4與單片機連在一起構(gòu)成靜態(tài)串口顯示,當單片機執(zhí)行指令MOV SBUF,A時單片機開始通過串行輸入口RX
10、D向74LS164移位存放器傳送一個字節(jié)的數(shù)據(jù),與此同時前一個移位存放器向后移位存放器也傳送它之前存放的一個字節(jié)數(shù)據(jù)。因為LED與移位存放器是對應(yīng)相連的,因此LED會根據(jù)74LS164存放器中的值作出對應(yīng)的顯示。移位存放器接收數(shù)據(jù)是單片機通過TXD向74LS164的CLK發(fā)送脈沖所致,脈沖的頻率直接影響發(fā)送數(shù)據(jù)的速度。 四、數(shù)字轉(zhuǎn)速表軟件設(shè)計 軟件設(shè)計是課程設(shè)計的一個重要組成局部,軟件的設(shè)計成功與否直接影響系統(tǒng)的功能。因此,軟件的設(shè)計是一個非常嚴密的過程。根據(jù)設(shè)計要求和設(shè)計方案可知,本系統(tǒng)是通過測量脈沖并根據(jù)所給關(guān)系來計算轉(zhuǎn)速并在LED上顯示,LED的顯示是通過鍵盤來控制,為了實現(xiàn)這些功能,可
11、確定下面的設(shè)計方案。 ? 軟件設(shè)計簡介 根據(jù)要求,每按下按鍵就有相應(yīng)的顯示,故在主程序中設(shè)計鍵盤循環(huán)掃描程序。另外測速的采樣周期是40ms,可以通過設(shè)計定時器中斷子程序來定時40ms,并在這40ms內(nèi)通過設(shè)計計數(shù)器程序來計算脈沖個數(shù)。此外,還需設(shè)計相應(yīng)的子程序。 ? 系統(tǒng)資源分配 為了方便編寫程序,先對系統(tǒng)的資源分配加以說明。 1) 定時器:定時器0用作采樣周期定時,按方式1工作,每隔40ms溢出中斷一次。 故初值定為6FFEH。 2) 計時器:計時器1用作在40ms的時間內(nèi)統(tǒng)計脈沖個數(shù)。不中斷并由軟件控制。 3) 片內(nèi)RAM的分配與定義表1所示 6 表1 片內(nèi)RAM的分配與定義 ? 軟件流程
12、 根據(jù)上述工作流程,軟件設(shè)計可分為以下幾個功能模塊: 1) 主程序:初始化與鍵盤循環(huán)掃描等 2) 計時:為定時器0中斷效勞子程序,完成對應(yīng)轉(zhuǎn)速的計算和判斷是否報警等。 3) 顯示:顯示1完成當前轉(zhuǎn)速4位靜態(tài)顯示;顯示2完成給定轉(zhuǎn)速4位靜態(tài)顯示。 4) 報警顯示子程序:實現(xiàn)4個8的靜態(tài)顯示。 5) 其它輔助功能子程序:如乘除法運算子程序,兩字節(jié)轉(zhuǎn)換為三字節(jié)BCD碼子程序,兩個延時子程序。 下面對各功能模塊進行介紹 1、主程序 ? 主程序功能分析 主程序首先必須完成串行口設(shè)置、指針設(shè)置、中斷設(shè)置、定時計數(shù)器工作方式及初始值設(shè)置等。其次,進行存放區(qū)初始化設(shè)置和調(diào)用LED1子程序。再次,開中斷并開始掃
13、描數(shù)字鍵和控制鍵等。鍵盤的掃描是不斷循環(huán)進行的。當有鍵按下時就會執(zhí)行它要實現(xiàn)某一功能的程序,為了凸顯這一過程,畫出主程序流程圖如圖5。 ? 主程序說明 串口方式采用方式0;中斷允許存放器設(shè)為82H,即允許T0和CPU中斷;T1設(shè)為方式0,初值為0;T0設(shè)為方式0,且初值為6FFEH,因為需要定時40ms,可根據(jù)下面的表達式求出初值,其中時鐘頻率為,一個周期的時間為S。 計數(shù)值=定時時間機器周期時間1.085?s 計數(shù)初值?65536?36866?28670?6FFEH 初值存放器的初值為: TH0=6FH;TL0=0FEH 7 R2的值表示接連按數(shù)字鍵的次數(shù),在掃描數(shù)字鍵前設(shè)置R2=1。當確定
14、有數(shù)字鍵按下且R2的小于4時,根據(jù)R2的值執(zhí)行完相應(yīng)程序后返回到開始數(shù)字鍵掃描處。當確定R2=4或有控制鍵按下時,在執(zhí)行完對應(yīng)程序后返回到設(shè)置R2=1程序處。另外,鍵盤的掃描是依次循環(huán)進行的。 圖5 主程序流程圖 2、T0中斷效勞子程序 ? 功能分析 中斷效勞子程序需完成的主要任務(wù)有:保持現(xiàn)場;讀取計數(shù)器1在這40ms內(nèi)所統(tǒng)計的脈沖個數(shù);把脈沖個數(shù)通過調(diào)用轉(zhuǎn)速計算子程序和二進制轉(zhuǎn)換為BCD碼子程序轉(zhuǎn)換為BCD碼并存入緩沖區(qū)中;通個查表將BCD碼轉(zhuǎn)換為相應(yīng)可以顯示的數(shù)值并存入GW1QW1緩沖區(qū)中;檢查是否報警;恢復(fù)現(xiàn)場。根據(jù)這些任務(wù)可以編寫相應(yīng)的中斷效勞子程序,具體流程見下頁。 8 圖6 T0中
15、斷效勞子程序流程圖 ? 說明 中斷發(fā)生時說明40ms的定時時間已到,這時將所測脈沖數(shù)記錄下來并存入DSL低位與DSH高位中。然后就可以求出單位時間內(nèi)的脈沖個數(shù),再根據(jù)所給對應(yīng)關(guān)系:1024個脈沖/轉(zhuǎn),便可求出每一分鐘的轉(zhuǎn)數(shù),即轉(zhuǎn)速。其計算過程如下: 40ms內(nèi)脈沖數(shù)?1000?60一分鐘內(nèi)的脈沖個數(shù)?40ms內(nèi)脈沖數(shù)?150040 一分鐘內(nèi)的脈沖個數(shù)375轉(zhuǎn)速?一分鐘內(nèi)的轉(zhuǎn)數(shù)?40ms內(nèi)脈沖數(shù)?1024256 9 計算所得的轉(zhuǎn)速暫存入R5、R6工作存放器中,其中R5是高位,通過估算可知轉(zhuǎn)速是10位左右的二進制數(shù),然后調(diào)用二進制轉(zhuǎn)換為BCD碼子程序完成數(shù)制轉(zhuǎn)換,并將所得3字節(jié)BCD碼存入BCD1
16、低位、BCD2、BCD3存放區(qū)中。實際上,由估算可知所得值只有兩字節(jié)BCD碼,故BCD3所存值為0。 判斷是否報警是根據(jù)所測轉(zhuǎn)速是否大于等于1010轉(zhuǎn)/分鐘,因為正常轉(zhuǎn)速是1000轉(zhuǎn)/分鐘,報警上限稍大于正常轉(zhuǎn)速。另外,值得一說的是通過估算可知在定時器1定時的40ms內(nèi),計數(shù)器1不會發(fā)生溢出,故不會產(chǎn)生中斷。 3、LED顯示子程序 圖7 顯示當前轉(zhuǎn)速子程序流程圖 圖8 顯示給定轉(zhuǎn)速子程序流程圖 10 ? 分析 為了顯示當前轉(zhuǎn)速與給定轉(zhuǎn)速,需要設(shè)計兩個顯示子程序。根據(jù)設(shè)計方案知,本系統(tǒng)采用靜態(tài)串口顯示,故需根據(jù)靜態(tài)串口顯示來編程。在這里可用指令MOV SBUF,A轉(zhuǎn)送一個字節(jié)給第一個移位存放器。
17、由于有四個LED,需用此指令連續(xù)傳送四個字節(jié)。具體編程方法見附錄源程序?,F(xiàn)將子程序流程畫出如圖7和圖8。 ? 說明 上面的兩個子程序的思路根本相同,不同之處是它們欲顯示的內(nèi)容完全不同,另外為了顯示當前轉(zhuǎn)速與給定轉(zhuǎn)速的區(qū)別,在給定轉(zhuǎn)速的各位加一點,即把GW2中的值的最高位置1便可。 4、其它模塊簡介 報警顯示模塊和當前轉(zhuǎn)速顯示模塊類似,只是要顯示的是4個8。在此不再累贅。 兩個延時子程序是最常用的子程序,它是通過重復(fù)執(zhí)行程序來延時,具體編寫過程見附錄B,在此不再詳述。 乘除法運算子程序即轉(zhuǎn)速計算子程序的功能是實現(xiàn)兩個字節(jié)與兩個字節(jié)的乘法運算和所得四字節(jié)結(jié)果再除以兩字節(jié)的除法運算。所得結(jié)果存入相應(yīng)
18、單元以便下一步運用。 兩字節(jié)轉(zhuǎn)換為三字節(jié)BCD碼子程序的功能是將上一步計算所得的兩字節(jié)結(jié)果轉(zhuǎn)換為BCD碼,以便在LED上顯示。 五、數(shù)字轉(zhuǎn)速表調(diào)試與分析 1、調(diào)試過程及分析 調(diào)試過程也是課程設(shè)計必不可少的一個環(huán)節(jié),調(diào)試的效果直接反映了設(shè)計的好壞。根據(jù)指導(dǎo)老師的要求,本系統(tǒng)主要在專業(yè)的實驗室進行,而不是在仿真軟件上進行。 在調(diào)試之前,首先要對軟件進行調(diào)試,可以在偉福6000中調(diào)試,由于這一過程是一個簡單過程和調(diào)試中的一小局部,在此不再詳述。調(diào)試的主要過程是在實驗臺上的調(diào)試。這一過程有硬件調(diào)試和軟件調(diào)試兩局部,下面對這兩局部進行簡單介紹。 ? 硬件調(diào)試 硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括設(shè)
19、計錯誤和工藝性錯誤。 1) 脫機檢查 用萬用表檢查器件的引腳,尤其是電源是否連接正確;檢查各按鍵是否能正常開關(guān), 11 是否連接正確;各限流電阻是否電路等。為了保護芯片,應(yīng)先對IC座尤其是對電源端電位進行檢查,正確無誤后再插入芯片檢查,注意芯片的正反。 2) 聯(lián)機調(diào)試 為了經(jīng)驗鍵盤/顯示接口電路是否滿足設(shè)計要求??梢酝ㄟ^設(shè)計一些簡單的測試軟件來查看接口是否正常。例如,我們可以設(shè)計一個使所有LED全顯示“8.的靜態(tài)顯示程序來檢查LED好壞。如果運行測試結(jié)果與預(yù)期不符,很容易根據(jù)故障現(xiàn)象判斷故障原因并采取針對性措施排除故障。 ? 軟件調(diào)試 軟件調(diào)試的主要任務(wù)是檢查軟件是否能實現(xiàn)所要求的功能,如果不
20、能,就糾正程序錯誤。程序的調(diào)試應(yīng)逐個模塊進行,首先單獨測試相應(yīng)子程序,檢查程序能否實現(xiàn)預(yù)期功能;最后逐步將各子程序連起來總調(diào)試。聯(lián)調(diào)需要注意的是,各程序模塊間能否正確傳遞參數(shù),要注意各子程序的現(xiàn)場保護。調(diào)試的根本步驟如下: 1) 在仿真軟件上調(diào)試轉(zhuǎn)速計算子程序和二進制轉(zhuǎn)換為BCD碼子程序,在相應(yīng)單元預(yù)存某一數(shù)值,然后執(zhí)行程序,觀察工作存放器和緩沖區(qū)的內(nèi)容,檢查是否正確。 2) 調(diào)試鍵盤與顯示子程序,調(diào)試時可以去掉中斷,這樣只進行鍵盤掃描與顯示程序。在 鍵盤上輸入數(shù)字鍵,在LED顯示器上觀察顯示,如在鍵盤上接連輸入1、2、3、4,觀察顯示器上是否顯示1、2、3、4,并且要在按鍵的同時觀察顯示器上
21、數(shù)字的移動是否正確。觀測按下控制鍵A后顯示器上是否顯示當前轉(zhuǎn)速,按下控制鍵B后是否顯示給定轉(zhuǎn)速等。另外,要觀察在按數(shù)字鍵的過程中,如果按下控制鍵,顯示器上有何反響等。 3) 總調(diào)試,總調(diào)試是在各模塊聯(lián)接后調(diào)試各功能。調(diào)試的方法是綜合上面的方法。另外 當前轉(zhuǎn)速的調(diào)試,可用一個方波脈沖發(fā)生器,首先通過估算調(diào)節(jié)發(fā)生器輸出的脈沖周期,然后微調(diào)輸出頻率并觀察顯示是否正確。在這里可以通過手算檢查所測轉(zhuǎn)速是否正確。 2、調(diào)試結(jié)果及分析 硬件調(diào)試的結(jié)果是正確的,因為實驗設(shè)備良好。在這里主要講述軟件總調(diào)試的結(jié)果,因為軟件設(shè)計是此課程設(shè)計的重點和難點?,F(xiàn)將主要的軟件調(diào)試結(jié)果表達如下: 1) 給定轉(zhuǎn)速在鍵盤輸入時的
22、調(diào)試結(jié)果 當在鍵盤上接連按數(shù)字鍵5、6、7、8時,顯示器上也接連顯示5、6、7、8。經(jīng)過屢次接連輸入數(shù)字鍵時可以總結(jié)這樣一個規(guī)律:當接連所按的數(shù)字鍵個數(shù)小于或等于4時,在LED上會擠兌顯示這些數(shù)字;當接連按第五次按數(shù)字鍵時,顯示會再次從個位開始, 12 高位沒有顯示,效果與前面相同。 A、B控制鍵的按鍵效果是:無論在什么時候按A鍵,在數(shù)碼管上就會顯示當前所測的轉(zhuǎn)速;同樣無論在什么時候按B鍵,在數(shù)碼管就會顯示上次按數(shù)字所輸入的給定轉(zhuǎn)速。 2) 轉(zhuǎn)速測量的調(diào)試結(jié)果及分析 輸入不同頻率的方波脈沖就會有相應(yīng)的結(jié)果,當轉(zhuǎn)速大于等于1010轉(zhuǎn)/分鐘時就會有報警顯示。具體的測量結(jié)果如下表2。 表2 轉(zhuǎn)速測量
23、結(jié)果 ? 說明:單片機的晶振頻率是。如果假定為12MHz就會有較大的誤差。 從上表中可以看出其相對誤差較小,精度較高,但仍存在一定的誤差,這主要是由計算誤差和儀器誤差組成,且是無法防止的。理論計數(shù)值可根據(jù)如下式子計算。 理論計算值? 60 輸入脈沖的周期?1024 3) 調(diào)試過程中出現(xiàn)的問題 由于注入了很多精力去編程,在調(diào)試的過程中我遇到的問題與其他同學(xué)相比要少得多,但還是出現(xiàn)了一些問題。其中有一個看似小問題,但卻嚴重影響調(diào)試結(jié)果的大問題,這個問題就是重復(fù)運用了R2工作存放器且沒有做出相應(yīng)處理,幸運的是在老師的耐心指導(dǎo)下我最后解決了此問題。其它問題也在自己的不懈努力下得到了較好的解決。 六、結(jié)
24、束語 實驗說明,本系統(tǒng)的設(shè)計在功能上完全滿足要求,說明設(shè)計是有效的。具體來說,小鍵盤上的各鍵都有效果,且能實現(xiàn)其功能;顯示器也完全能滿足要求;轉(zhuǎn)速的測量根本上無誤差,之所以還存在很小的誤差是因為在計算上和方波脈沖發(fā)生器上存在計算誤差和儀器誤差。 13 總的來說,本設(shè)計是合理的,但應(yīng)當指出的是此系統(tǒng)還可以采用其它更好的方案,從而到達更好的效果。譬如在軟件方面,鍵盤掃描程序和兩個LED顯示子程序可以通過循環(huán)和共用等方法使程序長度減少,但為了便于快速看懂程序,本程序沒有進行一些復(fù)雜的處理,而是注重彰顯各個局部。另外,由于時間關(guān)系和能力的局限性,錯誤之處難免,還請老師體諒。下面是我的一些體會與建議。
25、通過兩周的單片機課程設(shè)計的實習,在老師的指導(dǎo)下和自己的努力下,我成功地完成了數(shù)字轉(zhuǎn)速表的設(shè)計,真正地感覺到在這段時間里受益良多,這主要表現(xiàn)在:一是對之前所學(xué)的理論知識得到了很大的穩(wěn)固和提高;二是對單片機課程設(shè)計有了一個全面的認識,對單片機有關(guān)的設(shè)備儀器和軟件的使用有了很深的認識;三是對硬件設(shè)計,特別是軟件設(shè)計有了較強的掌握;四是進一步培養(yǎng)了自己的思維,提高了動手能力和創(chuàng)新能力。 盡管在此之前,我已經(jīng)做過不少專業(yè)課的課程設(shè)計,但這一次與前面的設(shè)計有很大的不同,其中最大的不同是,系統(tǒng)設(shè)計好后需在實驗室調(diào)試,調(diào)試的成功與否具有直接否決權(quán),而這一過程恰恰是我們最不敢面對的,也是最具有難度的。這一過程能
26、夠考驗我們設(shè)計的系統(tǒng),同時也能真正地考察我們對這門課程的應(yīng)用能力。因此,突出這一環(huán)節(jié)的重要性,是完全正確的。在實驗室調(diào)試過程中,我不斷發(fā)現(xiàn)問題和解決問題。重點解決了鍵盤輸入、擠兌顯示和設(shè)計程序計算等問題。 總之,本次設(shè)計的收獲是以往任何課程設(shè)計無法相比的。因為這次課程設(shè)計是真正意義上的課程設(shè)計,在形式上更具有實際意義。另外,這次學(xué)校為我們提供了很好的設(shè)計條件,而且老師也非常負責。在這里向老師表示真心的感謝。 建議其它課程設(shè)計和本次設(shè)計一樣,學(xué)校能為學(xué)生提供較好的實習條件,老師能夠嚴格要求所指導(dǎo)的學(xué)生。 14 數(shù)字轉(zhuǎn)速表電路圖 附錄A 15 附錄B 數(shù)字轉(zhuǎn)速表程序清單 GW1 EQU 40H ;
27、當前轉(zhuǎn)速緩沖區(qū) SW1 EQU 41H BW1 EQU 42H QW1 EQU 43 GW2 EQU 44H ;給定轉(zhuǎn)速緩沖區(qū) SW2 EQU 45H BW2 EQU 46H QW2 EQU 47H DSL EQU 48H ;脈沖個數(shù)緩沖區(qū) DSH EQU 49H BCD1 EQU 4AH ;轉(zhuǎn)速BCD碼緩沖區(qū) BCD2 EQU 4BH BCD3 EQU 4CH ORG 0000H ;主程序入口地址 AJMP MAIN ;無條件轉(zhuǎn)移到MAIN ORG 000BH ;T0中斷入口地址 LJMP INTT0 ;無條件轉(zhuǎn)移到INTI0 ORG 0030H ;* ; 主程序 ;* MAIN:MOV S
28、CON,#00H ;設(shè)置串形輸出方式 MOV SP,#55H ;設(shè)置堆棧指針 MOV IE,#10000010B ;設(shè)置中斷方式 MOV TMOD,#51H ;設(shè)置定時計數(shù)方式 MOV TH0,#6FH ;T0賦初值 MOV TL0,#0FEH MOV TH1,#0 ;T1賦初值 MOV TL1,#0 MOV GW1,#0 ;緩沖區(qū)初始化 MOV SW1,#0 MOV BW1,#0 MOV QW1,#0 MOV GW2,#0 MOV SW2,#0 MOV BW2,#0 MOV QW2,#0 LCALL LED1 ;調(diào)用子程序LED1 SETB TR0 ;開定時器0 SETB TR1 ;開計數(shù)器
29、1 16 KEYSHU:MOV R2,#01H ;設(shè)置接連按數(shù)字的次數(shù) ALLKEY:MOV P1,#02H ;掃描所有按鍵,看是否有任一鍵按下 MOV A,P1 ANL A,#0FH ;高位4位清0 CJNE A,#0FH,KEYQ ;有一鍵按下轉(zhuǎn)KEYQ AJMP ALLKEY ;無鍵按下,轉(zhuǎn)移到ALLKEY KEYQ: LCALL DELAY5MS ;延時5MS,再次確定是否有一鍵按下 MOV P1,#02H MOV A,P1 ANL A,#0FH CJNE A,#0FH,KEY0 AJMP ALLKEY KEY0: MOV DPTR,#TABL MOV A,#00H MOV P1,#0
30、F7H JB P1.0,KEY1 JNB P1.0,$ LJMP HUAN KEY1:MOV A,#01H MOV P1,#0EFH JB P1.0,KEY2 JNB P1.0,$ LJMP HUAN KEY2:MOV A,#02H MOV P1,#0DFH JB P1.0,KEY3 JNB P1.0,$ LJMP HUAN KEY3:MOV A,#03H MOV P1,#0BFH JB P1.0,KEY4 JNB P1.0,$ LJMP HUAN KEY4:MOV A,#04H MOV P1,#7FH JB P1.0,KEY5 JNB P1.0,$ LJMP HUAN KEY5:MOV A,
31、#05H MOV P1,#0F7H JB P1.1,KEY6 JNB P1.1,$ LJMP HUAN KEY6:MOV A,#06H MOV P1,#0EFH ;有一鍵按下轉(zhuǎn)KEY0 ;無鍵按下轉(zhuǎn)ALLKEY ;取表的起始地址 ;A表示0號鍵 ;判斷0鍵是否按下 ;沒有轉(zhuǎn)KEY1 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示1號鍵 ;判斷1鍵是否按下 ;沒有轉(zhuǎn)KEY2 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示2號鍵 ;判斷2號鍵是否按下 ;沒有轉(zhuǎn)KEY3 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示3號鍵 ;判斷3號鍵是否按下 ;沒有轉(zhuǎn)KEY4 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示4號鍵 ;判斷4號鍵是
32、否按下 ;沒有轉(zhuǎn)KEY5 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示5號鍵 ;判斷5號鍵是否按下 ;沒有轉(zhuǎn)KEY6 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示6號鍵 ;判斷6號鍵是否按下 17 JB P1.1,KEY7 ;沒有轉(zhuǎn)KEY7 JNB P1.1,$ ;等待松鍵 LJMP HUAN ;轉(zhuǎn)移到HUAN KEY7:MOV A,#07H ;A表示7號鍵 MOV P1,#0DFH ;判斷7號鍵是否按下 JB P1.1,KEY5 ;沒有轉(zhuǎn)KEY8 JNB P1.1,$ ;等待松鍵 LJMP HUAN ;轉(zhuǎn)移到HUAN KEY8:MOV A,#08H ;A表示8號鍵 MOV P1,#0BFH JB P1.
33、1,KEY9 JNB P1.1,$ LJMP HUAN KEY9:MOV A,#09H MOV P1,#07FH JB P1.1,KEYA JNB P1.1,$ LJMP HUAN KEYA:MOV P1,#0FBH JB P1.0,KEYB JNB P1.0,$ LCALL LED1 LJMP KEYSHU KEYB:MOV P1,#0FBH JB P1.1,LOOP JNB P1.1,$ LCALL LED2 LJMP KEYSHU LOOP:LJMP ALLKEY HUAN:CJNE R2,#01H,HUAN1 MOVC A,A+DPTR MOV GW2,A MOV SW2,#00H M
34、OV BW2,#00H MOV QW2,#00H INC R2 LCALL LED2 LJMP ALLKEY HUAN1:CJNE R2,#02H,HUAN2 MOV BW2,#00H MOV QW2,#00H MOV SW2,GW2 MOVC A,A+DPTR MOV GW2,A INC R2 ;判斷8號鍵是否按下 ;沒有轉(zhuǎn)KEY9 ;等待松鍵 ;轉(zhuǎn)移到HUAN ;A表示9號鍵 ;判斷9號鍵是否按下 ;沒有轉(zhuǎn)KEYA ;等待松鍵 ;轉(zhuǎn)移到HUAN ;判斷A鍵是否按下 ;沒有轉(zhuǎn)KEYB ;等待松鍵 ;調(diào)用LED1 ;轉(zhuǎn)移到KEYSHU ;判斷B鍵是否按下 ;沒有轉(zhuǎn)LOOP ;等待松鍵 ;調(diào)用L
35、ED2 ;轉(zhuǎn)移到KEYSHU ;轉(zhuǎn)移到ALLKEY ;判斷是否接連第一次按鍵,不是轉(zhuǎn)HUAN1 ;是,查表把值賦給A ;把A的值賦給GW2(個位) ;其它位清0 ;R2加1 ;調(diào)用LED2 ;轉(zhuǎn)移到ALLKEY ;判斷是否接連第二次按鍵,不是轉(zhuǎn)HUAN2 ;BW2清0 ;QW2清0 ;把GW2的值給SW2 ;查表 ;把A的值賦給GW2 ;R2加1 18 LCALL LED2 ;調(diào)用LED2 LJMP ALLKEY ;轉(zhuǎn)移到ALLKEY HUAN2:CJNE R2,#03H,HUAN3 ;判斷是否接連第三次按鍵,不是轉(zhuǎn)HUAN3 MOV QW2,#00H ;QW2清0 MOV BW2,SW2 ;
36、把SW2的值給BW2 MOV SW2,GW2 ;把GW2的值給SW2 MOVC A,A+DPTR ;查表 MOV GW2,A ;把A的值賦給GW2 INC R2 ;R2加1 LCALL LED2 ;調(diào)用LED2 LJMP ALLKEY ;轉(zhuǎn)移到ALLKEY HUAN3:MOV QW2,BW2 ;把BW2的值給QW2 MOV BW2,SW2 ;把SW2的值給BW2 MOV SW2,GW2 ;把GW2的值給SW2 MOVC A,A+DPTR ;查表 MOV A,GW2 ;把A的值賦給GW2 LCALL LED2 ;調(diào)用LED2 LJMP KEYSHU ;轉(zhuǎn)移到KEYSHU ;* ; 定時中斷效勞子
37、程序 ;* INTT0:PUSH PSW ;保護現(xiàn)場 PUSH ACC MOV DSL,TL1 ;記錄40ms內(nèi)的脈沖數(shù) MOV DSH,TH1 MOV TL1,#00H ;重設(shè)初值 MOV TH1,#00H MOV TH0,#6FH MOV TL0,#0FEH LCALL DMULSUB ;調(diào)用DMULSUB計算 LCALL SBINBCD ;調(diào)用SBINBCD進行數(shù)制轉(zhuǎn)換 MOV DPTR,#TABL MOV A,BCD1 ;將BCD1的值給A ANL A,#0FH ;高4位清0 MOVC A,A+DPTR ;查表 MOV GW1,A ;把A賦給GW1 MOV A,BCD1 ;將BCD1的
38、值給A SWAP A ;高四位與低四位交換 ANL A,#0FH ;高4位清0 MOVC A,A+DPTR ;查表 MOV SW1,A ;把A賦給SW1 MOV A,BCD2 ;將BCD2的值給A ANL A,#0FH ;高4位清0 MOVC A,A+DPTR ;查表 MOV BW1,A ;把A賦給BW1 19 MOV A,BCD2 ;將BCD2的值給A SWAP A ;高四位與低四位交換 ANL A,#0FH ;高4位清0 MOVC A,A+DPTR ;查表 MOV QW1,A ;把A賦給QW1 CJNE A,#3FH,XX1 ;判斷QW1是否為3F,不是轉(zhuǎn)XX1 AJMP XX4 ;是轉(zhuǎn)XX4 XX1:MOV A,BW1 CJNE A,#3FH,XX5 ;判斷BW2是否為3F,不是轉(zhuǎn)XX5 MOV A,SW1 CJNE A,#3FH,XX5 ;不為3F,轉(zhuǎn)XX5 AJMP XX4 ;轉(zhuǎn)移到XX4 XX5:LCALL BAOJING ;調(diào)用報警子程序 LCALL DELAY20MS LCALL LED1 XX4:POP ACC ;恢復(fù)現(xiàn)場 POP PSW RETI ;中斷返回 ;* ;乘除法運算子程序,即計算轉(zhuǎn)速子程序 ;* DMULSUB:MOV R6,#01H ;把乘數(shù)的高八位賦給R6 MOV R7,#77H ;把乘數(shù)的低八位賦給R7 MOV A,DSL MOV B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧物流配送服務(wù)合作協(xié)議
- 股權(quán)轉(zhuǎn)讓定金協(xié)議
- 玻璃購銷簡單的合同范本
- 2024施工合同終止協(xié)議書范本(適用于水利工程)3篇
- 保潔勞務(wù)派遣協(xié)議書
- 2024招投標與合同管理判斷多選
- 專業(yè)化口譯服務(wù)協(xié)議樣本2024版版B版
- 2024版區(qū)域代理合同范本
- 2024年航空航天液壓系統(tǒng)生產(chǎn)部門勞動合同范本3篇
- 2024消防設(shè)施設(shè)備驗收與維護保養(yǎng)合同
- 業(yè)主搭建陽光房申請書
- 小學(xué)語文分層作業(yè)設(shè)計案例
- 四川旭虹光電科技有限公司曲面顯示用蓋板玻璃生產(chǎn)項目環(huán)評報告
- 傷口愈合的病理生理及濕性愈合理論-課件
- GB/T 24475-2023電梯遠程報警系統(tǒng)
- 科技計劃項目(課題)驗收(結(jié)題)經(jīng)費審計業(yè)務(wù)約定書
- SIS系統(tǒng)操作規(guī)程
- 教師書法培訓(xùn)教案
- 2023年上海航天技術(shù)研究院下屬航天總廠校園招聘筆試參考題庫附帶答案詳解
- 華東師大版-七年級下冊數(shù)學(xué)-第6章-一元一次方程-教學(xué)課件
- 《貴州省市政工程計價定額》(2016版)
評論
0/150
提交評論