freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)論文智能轉速測量系統(tǒng)的軟件設計(編輯修改稿)

2025-07-07 21:17 本頁面
 

【文章內容簡介】 來重新寫入 [20]。 這一器件將通用的 8bitsCPU 和閃存結合起來,集成在一個芯片上,使該芯片成為不少控制系統(tǒng)的高度靈活和經濟的解決方案。 AT89C51 是 ATMEL 公司生產的一款 51 單片機,它有如下的特點: (1)與 MCS51TM系列產品兼容; (2)4K 片內可編寫程序存儲器( FLASH),可以被重寫 1000 次; (3)存儲數(shù)據(jù)保存時間為 10 年; (4)寬工作電壓范圍為 :~ 6V; (5)工作主時鐘頻率在 0HZ~ 24MHZ 之間; (6)128 8bits 內部 RAM; (7)程序存儲器具有 3級加密保護; (8)32 條可編程的 I/O 引腳; (9)2 個 16bits 可編程定時器 /計數(shù)器; (10)6 個中斷源; (11)可編程全雙工串行通信; (12)低功耗空閑狀態(tài)和低功耗停機狀態(tài); b. MAX232: RS232( ANSI/EIA232 標準)是 IBMPC 及其兼容機上的串行連接標準。可用于許多用途,比如連接鼠標、打印機或者 Modem,同時也可以接工業(yè)儀器儀表。用于驅動和連線的改進,實際應用中 RS232 的傳輸長度或者速度常常超過標準的值。 RS232 只限 于 PC 串口和設備間點對點的通信。 RS232串口通信最遠距離是 50 英尺。 計算機的串口采 用的是 RS232電平,是 12V 的電壓,而我們單片機系統(tǒng)則采用的是 TTL 電平,是 0~ +5V 的電壓。因此需要將 TTL電平轉換成 RS232 電平。在我們的硬件圖里使用互換器 MAX232來進行 TTL電平和 RS232電平的轉換。 +5V西安工業(yè)大學畢業(yè)設計(論文) 10 電平 RS232 傳送 /發(fā)送模塊,包含 TTL/CMOS 到 RS232 電平的轉換以及 RS232到 TTL/CMOS 電平的轉換器各 2個。 MAX232 的引腳說明為: VCC:供電電壓; GND:地; C+、 C:外圍電容; T1IN:第一路 TTL/CMOS 驅動電平輸入; T1OUT:第一路 RS232 電平輸出; R1IN:第一路電平輸入; R1OUT:第一路 TTL/COMS 驅動電平輸出; T2IN:第二路 TTL/CMOS 驅動電平輸入; T2OUT:第二路 RS232 電平的輸出; R2IN:第二路 RS232電平輸入; R2OUT:第二路 TTL/COMS 驅動電平輸出。 MAX232 的主要性能參數(shù)如下: ①工作電壓:單電源 +5V; ②雙通道接收和發(fā)送; ③與所有 EIA/TIA232E 以及 協(xié)議兼容; ④三態(tài)門接收和發(fā)送。 4 智能轉速測量系統(tǒng)的軟件設計 11 4 智能轉速測量系統(tǒng)的軟件設計 C51的介紹 單片機 C語言與匯編語言 在單片機的開發(fā)應用中,逐漸引入了高級語言, C 語言就是其中的一種。對用慣了匯編語言的人來說,高級語言的可控行不好,不如匯編語言那樣能夠隨心所欲。但是使用匯編語言會遇到很多問題,首先它的可讀性和可維護性不強,特別是當呈現(xiàn)沒有很好的標注時,其次就是代碼的可重用性也比較低。使用 C語言就可以很好的解決這些問題 [18]。 C語言具有良好的模塊化,容易閱讀和維護等優(yōu)點。由于模塊化,用 C語言編寫的程序有很好的可移植性,功能化代碼能夠很方便地從一個工程移植到另一個工程,從而減少開發(fā)時間。 用 C 語 言編寫程序比用匯編編寫程序更符合人們的思考習慣,開發(fā)者可以更專心地考慮算法而不是考慮一些細節(jié)問題,這樣就減少了開發(fā)和調試時間。使用像 C 這樣的語言,編寫者不必十分熟悉處理器的運算過程。很多處理器支持 C編譯器,這意味著對新的處理器也能很快上手,而不必知道處理器的具體內部結構,這使得用 C語言編寫的程序比匯編程序有更好的可移植性。 C語言的特點就是可以使編寫者盡量少地對硬件進行操作,它是功能性和結構性很強的語言。 對大多數(shù) 51 系列單片機,使用 C 語言這樣的高級語言與使用匯編語言相比具有如下優(yōu)點: (1)不需要了解處理 器的指令集,也不必了解存儲器結構; (2)寄存器分配和尋址方式由編譯器進行管理,編程時不需要考慮存儲器的 尋址和數(shù)據(jù)類型等細節(jié); (3)指定操作的變量選擇組合提高了程序的可讀性; (4)可使用與人的思維更相近的關鍵字和操作函數(shù); (5)與使用匯編語言編程相比,程序的開發(fā)和調試時間大大縮短; (6)C 語言中的庫文件提供許多標準的 方程 , 例如 :格式化輸出、數(shù)據(jù)轉換和浮點運算等; (7)通過 C 語言可實現(xiàn)模塊編程技術,從而可將已編制好的程序加入到新程序中; (8)C 語言可移植性好且非常普及, C 語言編譯器幾乎適用于 所有的目標系統(tǒng),已完成的軟件項目可以很容易地轉換到其它的處理器或環(huán)境中。 所以在本畢業(yè)設計數(shù)據(jù)采集系統(tǒng)的軟件設計中我選用單片機 C 語言來進行程序代碼的編寫。 西安工業(yè)大學畢業(yè)設計(論文) 12 C51 對標準 C語言的擴展 51 系列單片機中使用的 C語言與標準 C語言還有一些不同,或者說 C51對標準 C 語言有一些擴展。 C51 語言的特色主要體現(xiàn)在以下幾個方面: (1)C51 雖然繼承了標準 C 語言的絕大部分的特性,而且基本語法相同,但是本身又在特定的硬件結構上有所擴展,如關鍵字 sbit、 data、 idata、 pdata、xdata、 code 等。 (2)應用 C51更要注重對系統(tǒng)資源的理解,因為單片機的系統(tǒng)資源相對 PC機來說很貧乏,對于 RAM、 ROM 中的每一字節(jié)都要充分利用??梢酝ㄟ^看編譯生成的 .m51 文件來了解自己程序中資源的利用情況。 (3)程序上應用的各種算法要精簡,不要對系統(tǒng)構成過重的負擔。盡量少用浮點運算,可以用 unsigned 無符號型數(shù)據(jù)的就不要用有符號型數(shù)據(jù),盡量避免多字節(jié)的乘除運算,多使用移位運算等。 相對于標準 C 語言的擴展直接針對 51 系列 CPU 硬件,大致有以下幾個方面: (1)數(shù)據(jù)類型 C51 具有標準 C語言所具有的標準 數(shù)據(jù)類型,除此之外,為了更加有效地利用 8051 的結構,還加入了以下特殊的數(shù)據(jù)類型。 (2)存儲區(qū) C51 編譯器支持 8051 及其擴展系列,并提供對 8051 所有存儲區(qū)的訪問。存儲區(qū)可分為內部數(shù)據(jù)存儲區(qū)、外部數(shù)據(jù)存儲區(qū)以及程序存儲區(qū)。 8051CPU 內部的數(shù)據(jù)存儲區(qū)是可讀寫的, 8051 派生系列最多可有 256 字節(jié)的內部數(shù)據(jù)存儲區(qū),其中低 128 字節(jié)可直接尋址,高 128 字節(jié)(從 0x80 到 0xFF)只能間接尋址,從20H 開始的 16 字節(jié)可位尋址。內部數(shù)據(jù)區(qū)又可分為 3個不同的存儲類型: data、idata、 bdata。外部數(shù)據(jù) 區(qū)也是可讀寫的。但是訪問起來比較慢,因為外部數(shù)據(jù)區(qū)是通過數(shù)據(jù)指針加載地址來間接訪問的。 (3)特殊功能寄存器( SFR) 51 單片機提供 128 字節(jié)的 SFR 尋址區(qū),地址為 80H~ FFH。 51 單片機中除了程序計數(shù)器 PC 和 4 組通用寄存器組之外,其它所有的寄存器均為 SFR,并位于片內特殊寄存器區(qū)。 根據(jù)硬件電路設計,進行程序設計,在程序設計之前,首先要確定定時器的工作方式,方式控制字,確定串行口的工作模式等,下面分別討論。 工作方式及控制字設置 1.定時 /計數(shù)器 T0 本系統(tǒng)設計中, T0 被用 于計數(shù),我們當然希望計數(shù)量越大越好,這樣,可西安工業(yè)大學畢業(yè)設計(論文) 13 以獲得較大的測量范圍,因此, T0選定為工作方式 1( 16位的計數(shù)方式),設計中,沒有使用外部控制端,僅用指令置位 /清零 TR0 來進行計數(shù)的啟動 /停止,這樣,電路較為簡單,但精度會受到一定的影響,但在本設計中,認為采用這種方式,精度可達到要求,因此, T0 采用自由計數(shù)的方式,不用預置初值。 2.定時 /計數(shù)器 T1 定時器 T1 每 10ms 中斷一次,用以進行數(shù)碼管顯示和每一秒讀取一次計數(shù)器T0中的數(shù)值。這里選用 T1的工作狀態(tài)為 1。要使 T1 設定正確的定時時間,首先要計算其初值,定時 時間為: t=(216T1 的初值 )晶振周期 12 ( ) 定時時間 10ms: 10ms=(216T1的初值 ) 1/12*106 12 則: T1 的初值 =216104 因此, TH1=D8, TH1=F0; 確定了定時 /計數(shù)器 T1 的定時時間以后,就要計算定時初值,本系統(tǒng)用了12M 的晶振,恰好是一個機器周期為 1μ s,因此, 1ms定時時間意味著只要計數(shù)1000 次即可,由于定時 /計數(shù)器 T1是向上計數(shù),因此,要化為 16 進制,并分別送 入 T1 的高 8位和低 8位。這里,采用的 keil 匯編軟件有較強的預處理功能,能夠處理較復雜的運算,因此,計數(shù)程序中可寫為: PlusCounter = TH0*256 + TL0。 這里用 PlusCounter 作為轉化為 10 進制數(shù)值的數(shù)值存儲器, TH0 和 TL0 分別是二進制計數(shù)值的高 8位和低 8位。 由于 AT89C51 單片機在中斷時,會附加延時 38個周期,在滿足一定條件的情形下,驗證這個數(shù)值是否正確,可以在進入仿真調試時通過觀察 Keil 提供的有關變量看到,如果不正確,可以根據(jù)實際情況略作調整,保證定時時間盡量準確。 3.定時 /計數(shù)器的方式控制字 定時 /計數(shù)器的方式控制字 TMOD,其地址為 89H,復位值 00H,不可位尋址。其 8 位控制。如圖 工作模式寄存器 TMOD 的位定義所示。 GATE C/T M1 M0 GATE C/T M1 M0 T1 T0 圖 工作模式寄存器 TMOD的位定義圖 說明: GATE:門控位。由 GATE、軟件控制位 TR0/1 和 INT0/1 共同決定定時 /計數(shù)器 0/1 的打開或關閉。當 GATE=0,只要用指令置 TR0/1=1 即可啟動定時 /計數(shù)器0/1 工作。 GATE=1,只有 INT0/1 引腳為高電平且用指令置 TR0/1=1 時,才能啟動定時 /計數(shù)器 0/1 的工作。 C/T:定時器 /計數(shù)器選擇位。 C/T=1,工作于計數(shù)器方式; C/T=0 工作于定時器方式。 西安工業(yè)大學畢業(yè)設計(論文) 14 M1M0:定時 /計數(shù)工作模式選擇位。 M1M0=00, 13位計數(shù); M1M0=01, 16 位計數(shù); M1M0=10,自動再裝入 8位計數(shù); M1M0=11,工作于模式 3狀態(tài)。 根據(jù)前面的描述,可以確定 TMOD 的控制字應為 00010101B。 程序如下: void init_timer0() // T0、 T1 分別定義 { TMOD= 0xF1。 } void init_timer1() { TMOD = 0x50。 } 將控制字分別送入 TMOD。 4.定時 /計數(shù)控制寄存器 TCON TCON 地址 88H,可進行位尋址,復位值 00H。如圖 控制寄存器 TCON 的位定義圖所示。 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 圖 控制寄存器 TCON的位定 義圖 TF0、 TF1 分別為定時器 T0和計數(shù)器 T1的溢出標志位, TR0和 TR1 在正常情況下,都沒有溢出標志,只有當計數(shù)值或定時值超過 65536 時,才能有溢出中斷請求,這兩位是由硬件置位和硬件清零,不需另行設置??稍?T0 和 T1 的溢出中斷服務程序中,以供使用。 TR TR0 分別用于開啟 T1 和 T0 的開關位,其中 TR1 由系統(tǒng)開啟時,直接置位,打開 T1,開始定時,經運行判斷后,打開 TR0。 變量分配及程序的初始化 在程序開始之前,首先進行變量的分配,程序的初始化,根據(jù)硬件電路的要求,將各硬件電路置于其規(guī)定的 狀態(tài);根據(jù)需要,對定時器、計數(shù)器、串行口等設置工作狀態(tài),預置初值等。以下是程序定義變量及進行初始化的程序行。 uint Tcounter = 0。 //時間計數(shù)器 bit Flag_Fresh = 0。 //刷新標志 bit Flag_clac = 0。 //計算轉速標志 bit Flag_Err = 0。 //超量程標志 Disbuf[0] = 0。 //開機時,初始化為 0000 Disbuf[1] = 0。 Disbuf[2] = 0。 Disbuf[3] = 0。 init_timer0()。 //T0、 T1 分別初始化 西安工業(yè)大學畢業(yè)設計(論文) 15 init_timer1()。 顯示功能的實現(xiàn) 定時計數(shù)器 T1 每 10ms 中斷一次,用以進行數(shù)碼管顯示和每 1秒讀取一次計數(shù)器 T0 中的數(shù)值。 1. 秒信號的產生 中斷產生后: define TIME_CYLC 100 Tcounter++。 if(TcounterTIME_CYLC) { Flag_clac = 1。 } 判斷 Tcour
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1