上位機與下位機通訊_第1頁
上位機與下位機通訊_第2頁
上位機與下位機通訊_第3頁
上位機與下位機通訊_第4頁
上位機與下位機通訊_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機課程設計——上位機與下位機通訊

目錄目錄 II1.引言 11.1 實習目的 11.2 實習要求 21.3實驗內容 22.企業(yè)參觀 23.C51單片機開發(fā)設計 33.1 設計意義 33.2 系統(tǒng)功能設計 33.2.1 功能特點 33.2.2負責工作 43.3 硬件設計及描述 53.3.1 時鐘與復位模塊 53.3.2 按鍵選擇模塊 53.3.3 LCD顯示模塊 63.3.4硬件原理圖63.4 軟件設計流程與描述 63.4.1 編程思路簡介 63.4.2程序流程圖 73.4.3部分程序94.心得體會 125.參考文獻 13-引言近年來,計算機在各個領域的應用越來越深入,單片機憑借它的體積小、功耗低、控制功能強,擴展靈活,微型化和使用方便等優(yōu)點,廣泛應用于各種儀器儀表和工業(yè)當中。單片機是一種在線式實時控制計算機,在線式就是現(xiàn)場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區(qū)別。在工業(yè)控制中的應用用單片機可以構成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統(tǒng),與計算機聯(lián)網(wǎng)構成二級控制系統(tǒng)等。本設計就是利用單片機實現(xiàn)了一個溫度報警系統(tǒng)。由于實驗設備等原因的限制,本實驗利用另外一臺單片機代替計算機與實時采集數(shù)據(jù)的單片機構成了二級控制系統(tǒng)。由下位機采集溫度數(shù)據(jù)并處理成二進制數(shù)后傳送到上位機。如果溫度過高,超過一定限定值就會產(chǎn)生報警。本次課程設計的主要內容是通過單片機C51語言進行編程設計。同時在上位機還加了附加功能能夠產(chǎn)生實時時鐘,使系統(tǒng)用起來更加的方便。本次課程設計的目的是培養(yǎng)理論聯(lián)系實際的學習方法以及獨立解決工程實際問題的能力。能夠熟練運用C51語言進行單片機編程,同時了解一些單片機外圍設備及其應用。主要內容是利用89C51單片機及其他一些器件來構成串行通信溫度報警器。關鍵詞:單片機,溫度,89c51。1.1實習目的通過實習,使學生進一步弄懂所學到的課本知識,鞏固和深化對單片機的結構、指令系統(tǒng)、中斷系統(tǒng)、鍵盤/顯示系統(tǒng)、接口技術、系統(tǒng)擴展、定時/控制、程序設計、應用開發(fā)、等基本理論知識的理解,提高單片機應用于技術的實踐操作技能,掌握單片機應用系統(tǒng)設計、研制的方法,培養(yǎng)利用單片機進行科技革新、開發(fā)和創(chuàng)新的基本能力,為畢業(yè)后從事與單片機相關的工作打下一定的基礎。1.2實習要求:1)用Protel畫出硬件原理圖。2)采用單片機C語言或匯編語言進行編程。3)完成硬件與軟件調試綜合調試,實現(xiàn)預定功能,并寫出課程設計報告實習內容(1)參觀遼寧省廣播電視廳033臺廣播信號發(fā)送站。(2)自選一個設計題目,在軟件和硬件方面分別利用高級程序語言及實驗室所提供的單片機來實現(xiàn)。(3)在完成以上工作后進行相關總結。企業(yè)參觀單位:遼寧省廣播電視傳播發(fā)射中心時間:2010年7月6日內容:(1)室內設備參觀學習(2)室外設備參觀學習概況:1958年5月8日建臺,座落在遼寧省沈陽市蘇家屯區(qū)八一鎮(zhèn)北。目前負責國家及省的部分發(fā)射廣播信號工作。分別是中央新聞、中央經(jīng)濟、遼寧新聞、遼寧經(jīng)濟、遼寧鄉(xiāng)村和遼寧故事。站內芳草萋萋,瓜果俱全。主建筑是一個二層的建筑物。發(fā)射塔有三個,最高兩百余米。體會:7月6日上午8時許,我們在東北大學南門集合,準備出發(fā)進行企業(yè)參觀。根據(jù)學院的相關安排,我們今天將前往坐落于沈陽市南郊蘇家屯區(qū)的零三三臺廣播發(fā)送站進行參觀訪問。作為新中國首批設立的廣播信號發(fā)送站,從1958年建臺之初迄今,零三三臺已然在風霜的洗禮中跨越了半個世紀的滄桑歲月,先進的技術設備以及傳統(tǒng)的企業(yè)文化是我們此行考察的重點目的。在經(jīng)歷了四十分鐘的短途行程之后,我們終于到達了目的地——遼寧省廣播電視廳零三三臺廣播信號發(fā)送站。參觀伊始,在站長的熱情引導和介紹下,我們來到了全臺的中心樞紐——廣播信號測控大廳。整個大廳大體分為內廳和外廳兩個部分,內廳呈狹長通道狀,嵌于外廳之中,前者主要負責廣播信號的監(jiān)測工作,而后者則主要負責其處理工作。外廳一側并排佇立著7臺大型信號處理設備,其中不乏HARRIS3DX-50全固態(tài)中波調幅發(fā)射機這樣世界尖端的技術產(chǎn)品。但若非隨行陳副工程師的一番生動講解,我們也很難想象,就是這7臺機器承載了6個重量級電臺(中央新聞、中央經(jīng)濟、遼寧新聞、遼寧經(jīng)濟、遼寧鄉(xiāng)村和遼寧故事)在全省范圍內大部分信號的發(fā)送工作。隨著講解的逐步深入,我們了解到廣播信號發(fā)送站的主要職能在于將電臺發(fā)送過來的相對較弱的節(jié)目信號,通過一系列有效的處理和調制,轉換成適合遠距離傳輸?shù)拇蠊β市盘?,并借助天線將其發(fā)送出去。其中主要的信號接收設備包括微波機、衛(wèi)星接收機和光纖信號解調機,而信號發(fā)送設備則以中波發(fā)射機為主。在測控大廳中,我們還見到了一套猶在使用的基于電子管技術的信號處理設備,由工程師的講解中,我們得知,這是零三三臺現(xiàn)存的年代最為久遠的機器,回首凝視身旁的工程師,他總是在沉思片刻后熱情地回答同學們提出的各式各樣的問題,語重心長而面帶微笑。在工作樓前的露天平臺下,張工程師精彩的演說也隨之拉開了帷幕。如果說信號處理是廣播工作靈魂所在的話,那么信號發(fā)送就是其外在的軀殼,沒有后者,前者所完成的一切就都無法演變?yōu)閷嵸|性的內容。廣播信號的發(fā)送硬件由兩部分組成,分別是傳輸線和射頻高塔,廣播站通過傳輸線將廣播信號測控大廳中經(jīng)過處理的信號傳至射頻高塔頂部,并將其發(fā)射出去。其中,傳輸線根據(jù)信號傳輸量的不同劃分為兩類直徑不一的線路(38mm和80mm),但其傳輸介質皆為同軸電纜。射頻高塔共有四座,高度在138m至147m之間不等,每座高塔根據(jù)頻道的不同而承載相異的傳輸任務。由于所有的信號皆為調幅信號,因此其覆蓋面極廣,近至沈陽周邊地區(qū),遠至朝韓日本,皆可接收到由此地發(fā)出的信號。不知不覺我們的參觀接近尾聲,通過參觀和學習,我充分了解了課程所學的理論知識在工程上是如何應用的,讓我有信心在以后的工作和學習中使用自己掌握的知識和技術來解決各種問題,同時也認識到自己在很多理論知識方面的欠缺。感謝老師給我們在這樣的機會,使我們能夠認識理解到自己的不足。C51單片機開發(fā)設計設計意義溫度采集器應用很廣,平時比較常見,但作為實驗內容的較少,適合作為編程聯(lián)系的例子。在設計中能夠更加透徹的理解和較為全面的考慮各種情況。通過這次的練習,可以加深對單片機應用了解,更能靈活的使用51系列單片機的資源解決實際問題。系統(tǒng)功能設計功能特點溫度采集是由單片機上的溫度采集模塊直接采集的數(shù)據(jù),但采集的是模擬的電壓。需要通過下位機上的AD轉換模塊進行處理得到數(shù)字信息。但是得到的數(shù)據(jù)并不是真正的溫度值,還需要進一步的處理換算才能得到真正的溫度值。然后下位機會通過串行口與上位機進行通信,將采集得到的數(shù)據(jù)送到上位機。上位機進行分析以后,與原先設定好的溫度值進行比較,如果大于設定值,則會啟動報警程序,進行報警。這一過程是通過中斷產(chǎn)生的。如果監(jiān)控人員發(fā)現(xiàn)后通過按按鈕,可以關閉警報。同時為了使系統(tǒng)使用起來更加方便,增添了數(shù)字時鐘的功能。在上位機的LCD上顯示時鐘,并且把下位機采集的溫度值也在這里顯示。實時時鐘是利用單片機實驗箱上的DS12877實現(xiàn)。它可以計秒,分,時,日,星期,月,年等補償功能。將其產(chǎn)生的數(shù)據(jù)通過并行口送到單片機。同時可以通過按鍵調節(jié)時鐘的時間,如果時間不對的話可以調節(jié)。這些是通過中斷實現(xiàn)的。LCD的液晶顯示器單元通過點陣形式顯示漢字和圖形。監(jiān)控人員關斷報警的過程也是通過中斷實現(xiàn)的。溫度報警器的基本硬件電路有以下幾部分組成:上位機、下位機、選擇按鍵輸入電路、LCD顯示電路,實時時鐘電路,溫度采集電路和揚聲器等。串行通信溫度報警器的硬件電路設計框圖如圖2.1所示。下位機上位機下位機上位機時鐘與復位電路溫度采集輸入電路入溫度采集輸入電路入選擇按鍵輸入電路選擇按鍵輸入電路LCD顯示電路溫度報警電路揚聲器LCD顯示電路溫度報警電路揚聲器圖3.1溫度報警器硬件電路設計框圖負責工作主要負責LCD顯示模塊和時鐘模塊的設計及編寫。使用protel制作原理圖,首先我分析了以前的實驗程序,包括LCD顯示程序和串口程序,對試驗箱上的部分模塊進行了調試,在確定硬件和軟件都沒有錯誤的前提下,根據(jù)自己的想法,對實驗程序做了改動,并在編寫的程序中進行調用,用以完成要求。3.3硬件設計及描述3.3.1時鐘與復位模塊由電容,電位器,按鍵組成復位電路部分,該電路接于單片機的RESET端可以通過按鍵達到手動復位的效果,也可以通過電位器和電容組成上電復位電路。通過復位電路使單片機回到初始狀態(tài)。圖3.2復位電路圖3.3晶振時鐘電路3.3.2按鍵選擇模塊利用P1.0到P1.2與8279芯片構成鍵盤掃描電路,可以掃描十六個按鍵,但本次設計只用到十個按鍵。用來進行對實時時間的更改和校準。溫度采集模塊這一過程是將試驗箱上的溫度傳感器采集到的模擬電壓值經(jīng)過ADC0809芯片的轉換得到數(shù)字電壓值傳送到單片機上,然后再經(jīng)過換算得到準確的溫度值。3.3.3LCD顯示模塊由RT12864,按鍵和保護電阻組成的外部擴展電路。其工作過程是通過單片機P3.6/WR和P3.7/RD接于RT12864,使其接收單片機由使用者通過按鍵發(fā)來的信息,顯示實時時間和溫度值,當有按鍵按下時,LCD會暫停顯示,等待改變完要進行的操作后再繼續(xù)計時顯示。3.3.4電路原理圖綜合以上功能模塊,連接于單片機,繪制原理圖如圖3.4所示。圖3.4音樂播放器電路原理圖3.4軟件設計流程及描述3.4.1編程思路簡述要實現(xiàn)對溫度的實時采樣必須有溫度傳感器,而試驗箱上的溫度模塊正好完成了我們對溫度的采樣。我們需要做的是對溫度進行AD轉換,然后再進行換算成實際的溫度。由于對芯片的不熟悉,我們只能用實際觀察的方法來實現(xiàn)。先用溫度計對室內溫度有一個測量然后與采集到的AD電壓進行比較得出他們的數(shù)學線性關系,然后進行換算。然后需要做的是進行實現(xiàn)實時計時的功能,我們用的是DS1302進行計時。用專用的芯片會更加方便,也會使編程很方便,并且節(jié)省CPU的資源。實時時鐘的校時操作時通過按鍵完成的,而鍵盤的掃描時通過對可編程芯片8279的編程實現(xiàn)的。共完成了十個按鍵的操作,這些操作都是通過中斷傳送的程序中的。這些校時操作中包括了對年,月,天,周,小時,分鐘,和秒的加一減一的操作,當使用者按下1時表示要對時間進行校時,然后按下2,3,4,5,6,7,8分別表示對年,月,天,周,小時,分鐘,和秒進行操作。然后再按下9表示加一,若是按下A表示減一的操作。按幾下表示加或者減幾下。如果操作結束按下B,則結束,時鐘又開始重新計時。3.4.2程序流程圖開始開始初始化(LCD設置,定時器、終端等設置)初始化(LCD設置,定時器、終端等設置)是否溫度過高是否溫度過高N溫度過高發(fā)生報警將時間,溫度等值賦給LCD進行顯示Y溫度過高發(fā)生報警將時間,溫度等值賦給LCD進行顯示 (操作1)是否有按鍵是否有按鍵Y要進行時間的修改,暫停計時按鍵1要進行時間的修改,暫停計時按鍵1對年進行操作按鍵2對年進行操作按鍵2對月進行操作按鍵3對月進行操作按鍵3對日進行操作按鍵4對日進行操作按鍵4對星期進行操作按鍵5對星期進行操作按鍵5對小時進行操作6按鍵6對小時進行操作6按鍵6對分鐘進行操作按鍵7對分鐘進行操作按鍵7對秒進行操作按鍵8對秒進行操作按鍵8對相應值進行加一操作9按鍵9對相應值進行加一操作9按鍵9對相應值進行減一操作按鍵10對相應值進行減一操作按鍵10按鍵A對相應值進行減一操作按鍵A對相應值進行減一操作若不是以上按鍵,則不進行操作繼續(xù)顯示若不是以上按鍵,則不進行操作繼續(xù)顯示結束結束開始主機的程序流程圖開始將AD轉換的值賦給變量wendu將AD轉換的值賦給變量wendu將wendu的值賦給串口通信的寄存器將wendu的值賦給串口通信的寄存器通過查詢中斷將數(shù)值發(fā)送過去通過查詢中斷將數(shù)值發(fā)送過去結束結束圖3.5程序流程圖3.4.3主要程序LCD程序:voidlcdxian(unsignedchartempreture){ unsignedchards_temp; unsignedchartemp1; ds_temp=tempreture; if(rflag==0) { w_c_add=0x80;/*寫命令字:設定DDRAM地址到地址計數(shù)器(AC)*/ delay(); temp1=ds_y&0xf0;/*年保留高四位*/ ds_t=_cror_(temp1,4);/*將變量temp1循環(huán)右移4位*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ ds_t=ds_y&0x0f;/*年保留低四位,將小時的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ lcd_busy(); w_d_add=0xC4;/*年*/ lcd_busy(); w_d_add=0xEA; temp1=ds_mon&0xf0;/*月保留高四位*/ ds_t=_cror_(temp1,4);/*將變量temp1循環(huán)右移4位*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ ds_t=ds_mon&0x0f;/*月保留低四位,將小時的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ lcd_busy(); w_d_add=0xD4;/*月*/ lcd_busy(); w_d_add=0xC2; temp1=ds_d&0xf0;/*天保留高四位*/ ds_t=_cror_(temp1,4);/*將變量temp1循環(huán)右移4位*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ ds_t=ds_d&0x0f;/*天保留低四位,將小時的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ lcd_busy(); w_d_add=0xC8;/*日*/ lcd_busy(); w_d_add=0xD5; lcd_busy(); w_d_add=0xD6;/*周*/ lcd_busy(); w_d_add=0xDC; ds_t=ds_week&0x0f;/*天保留低四位,將小時的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ lcd_busy(); w_c_add=0x90;/*換行顯示*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)*/ lcd_busy(); temp1=ds_h&0xf0;/*小時保留高四位*/ ds_t=_cror_(temp1,4);/*將變量temp1循環(huán)右移4位*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ ds_t=ds_h&0x0f;/*小時保留低四位,將小時的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t];/*寫數(shù)據(jù)*/ lcd_busy(); w_d_add=0x3a;/*:冒號*/ temp1=ds_m&0xf0;/*分保留高四位,將分的十位和個位分離*/ ds_t=_cror_(temp1,4); lcd_busy(); w_d_add=num[ds_t]; ds_t=ds_m&0x0f;/*分保留低四位,將分的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t]; lcd_busy(); w_d_add=0x3a;/*:冒號*/ temp1=ds_s&0xf0;/*秒保留高四位,將秒的十位和個位分離*/ ds_t=_cror_(temp1,4); lcd_busy(); w_d_add=num[ds_t]; ds_t=ds_s&0x0f;/*秒保留低四位將,秒的十位和個位分離*/ lcd_busy(); w_d_add=num[ds_t]; lcd_busy(); w_c_add=0x88;/*換行顯示*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); w_d_add=0xCE;/*溫*/ lcd_busy(); w_d_add=0xC2;lcd_busy(); w_d_add=0xB6;/*度*/ lcd_busy(); w_d_add=0xC8; lcd_busy(); w_d_add=0x3a;/*:冒號*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); temp1=ds_temp&0xf0;/*溫度保留高四位*/ ds_t=_cror_(temp1,4); lcd_busy(); w_d_add=num[ds_t]; ds_t=ds_temp&0x0f;/*溫度保留低四位*/ lcd_busy(); w_d_add=num[ds_t]; lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); w_d_add=0x20;/*寫數(shù)據(jù)空格*/ lcd_busy(); }}時鐘程序: voidcheck

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論