版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第二章 設計方案論證2.1整個系統(tǒng)的原理 SHAPE * MERGEFORMAT 整個系統(tǒng)的設計方案如下面的介紹,主要是,系統(tǒng)原理,控制芯片介紹和管腳的說明。2.1.1系統(tǒng)原理說明圖2.1 系統(tǒng)原理框圖 從上面的框圖我們很容易的可以看出,CPU是整個電路的核心,它受電源驅(qū)動,然后驅(qū)動555電路和液晶屏,并且反饋到上位機。整個設計的大體思想就是這樣,CPU作為最核心的部件,是這給那個電路的主體,也是整個電路的控制部分。此次我們采用的是由飛利浦公司生產(chǎn)的P89V5RD2HBA單片機芯片。芯片的引腳圖如圖2.2所示。本設計工作,我主要負責的是軟件的編程的工作,這就需要對所用的主芯片要有一個詳實的了解
2、,下面是我們在此次設計中用到的芯片口的詳細資料,(說明,本次設計中P2口沒有用到,作為紅外線報警器的擴展口來用,以備今后對紅外線的升級之用.)2.1.2控制芯片介紹在本系統(tǒng)中采用的控制芯片是P89V51RD2,P89V51RD2 是一款80C51 微控制器,包含64kB Flash 和1024 字節(jié)的數(shù)據(jù)RAM。P89V51RD2 的典型特性是它的X2 方式選項。利用該特性,設計工程師可使應用程序以傳統(tǒng)的80C51 時鐘頻率(每個機器周期包含12 個時鐘)或X2 方式(每個機器周期包含6 個時鐘)的時鐘頻率運行,選擇X2 方式可在相同時鐘頻率下獲得2 倍的吞吐量。從該特性獲益的另一種方法是將時
3、鐘頻率減半而保持特性不變,這樣可以極大地降低電磁干擾(EMI)。Flash 程序存儲器支持并行和串行在系統(tǒng)編程(ISP)。并行編程方式提供了高速的分組編程(頁編程)方式,可節(jié)省編程成本和上市時間。ISP 允許在軟件控制下對成品中的器件進行重復編程。應用固件的產(chǎn)生/更新能力實現(xiàn)了ISP 的大范圍應用。它的主要特性如下:(1) 80C51 核心處理單元;(2) 5V 的工作電壓,操作頻率為040MHz;(3) 16/32/64kB 的片內(nèi)Flash 程序存儲器,具有ISP(在系統(tǒng)編程)和IAP(在應用中編程)功能;(4) 通過軟件或ISP 選擇支持12 時鐘(默認)或6 時鐘模式;(5) SPI(
4、串行外圍接口)和增強型UART;(6) PCA(可編程計數(shù)器陣列),具有PWM 和捕獲/比較功能;(7) 4個8位I/O 口,含有3個高電流P1 口(每個I/O 口的電流為16mA);(8) 3個16 位定時器/計數(shù)器;(9) 可編程看門狗定時器(WDT);(10) 8個中斷源,4個中斷優(yōu)先級;(11) 2個DPTR 寄存器;(12) 低EMI 方式(ALE 禁能);(13) 兼容TTL 和CMOS 邏輯電平;(14) 掉電檢測;(15) 低功耗模式(16) 掉電模式,外部中斷喚醒;(17) 空閑模式;(18) DIP40,PLCC44 和TQFP44 的封裝; P89V51RD2的管腳如圖2
5、.2所示。圖2.2系統(tǒng)CPU芯片管腳圖2.1.3管腳的具體說明本次設計中對芯片的使用管腳(注:本次只對設計中所用的管腳作介紹)如表2.1所示:表2.1 P89V51RD2的管腳說明符號類型描述P0.0P0.7I/OP0 口:P0 口是一個8 位開漏雙向I/O 口。寫入1時P0 口懸浮,可用作高阻態(tài)輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0 口復用為低位地址和數(shù)據(jù)總線。應用中P0 口利用強內(nèi)部上拉來發(fā)送1電平。P0 口可在外部主機模式編程過程中接收代碼字節(jié)和在外部主機模式校驗過程中發(fā)送代碼字節(jié)。P0口用作程序校驗或通用I/O 口時均需連接一個外部上拉電阻。P1.0P1.7I/O 帶內(nèi)部上拉P1 口
6、:P1 口是一個帶內(nèi)部上拉的8 位雙向口。寫入1時P1 口被內(nèi)部上拉拉高,可用作輸入。用作輸入時,由于內(nèi)部上拉的存在,P1 口被外部器件拉低時將吸收電流( IIL )。此外,P1.5,P1.6,P1.7還有16mA 的高電流驅(qū)動能力。在外部主機模式編程和校驗中,P1 口也可接收低位地址字節(jié)。P1.0I/OT2:定時器/計數(shù)器2 的外部計數(shù)輸入或時鐘輸出。P1.1IT2EX:定時器/計數(shù)器2 捕獲/重裝觸發(fā)和方向控制。P1.2IECI:外部時鐘輸入。PCA 的外部時鐘輸入。P1.3I/OCEX0:PCA 模塊0 的捕獲/比較外部I/O 口。每個捕獲/比較模塊連接一個P1 口用作外部I/O 口。該
7、口線不被PCA 占用時仍可用作標準I/O 口。P1.4I/O/SS :SPI 從機選擇輸入。CEX1:PCA 模塊1 的捕獲/比較外部I/O 口。P1.5I/OMOSI:SPI 主機輸出從機輸入端。CEX2:PCA 模塊2 的捕獲/比較外部I/O 口。P1.6I/OMISO:SPI 主機輸入從機輸出端。CEX3:PCA 模塊3 的捕獲/比較外部I/O 口。P1.7I/OSCK:SPI 主機輸出從機輸入端。CEX4:PCA 模塊4 的捕獲/比較外部I/O 口。P2.0P2.7I/O 帶內(nèi)部上拉P2 口:P2 口是一個帶內(nèi)部上拉的8 位雙向口。寫入1時P2 口被內(nèi)部上拉拉高,可用作輸入。用作輸入時
8、,由于內(nèi)部上拉的存在,P2 口被外部器件拉低時將吸收電流( IIL )。在取指外部程序存儲器或訪問16 位地址(MOVX DPTR)的外部數(shù)據(jù)存儲器時,P2 口發(fā)送高位地址。應用中P2 口利用強內(nèi)部上拉來發(fā)送1。 P3.0P3.7I/O 帶內(nèi)部上拉P3 口:P3 口是一個帶內(nèi)部上拉的8 位雙向口。寫入1時P3 口被內(nèi)部上拉拉高,可用作輸入。用作輸入時,由于內(nèi)部上拉的存在,P3 口被外部器件拉低時將吸收電流( IIL )。在外部主機模式編程和校驗中,P3 口可接收一些控制信號和部分高地址位。P3.0IRxD:串口輸入。P3.1OTxD:串口輸出。P3.2I/INT0 :外部中斷0 輸入P3.3I
9、/INT1 :外部中斷1 輸入P3.4IT0:定時器/計數(shù)器0 的外部計數(shù)輸入。P3.5IT1:定時器/計數(shù)器1 的外部計數(shù)輸入。P3.6OWR :外部數(shù)據(jù)存儲器寫選通信號。P3.7ORD :外部數(shù)據(jù)存儲器讀選通信號。/PSENI/O程序選通使能:/PSEN 是外部程序存儲器的讀選通信號。/PSEN 在執(zhí)行內(nèi)部程序存儲器的程序時無效(高電平),執(zhí)行外部程序存儲器時每個機器周期內(nèi)兩次有效,但當訪問外部數(shù)據(jù)存儲器時兩個有效/PSEN 脈沖將被跳過。當RST 輸入引腳的高電平時間大于10 個機器周期時,向/PSEN 腳強制輸入一個高電平到低電平的跳變將使器件進入外部主機模式編程。RSTI復位:振蕩器
10、工作時,該引腳上2 個機器周期的高電平邏輯狀態(tài)將使器件復位。當RST 輸入引腳為高電平時,如果/PSEN 腳輸入一個高電平到低電平的跳變,器件將進入外部主機模式。否則進入正常工作模式。/EAI外部訪問使能:若器件要對外部程序存儲器取指, /EA 就必須與VSS 相連。器件執(zhí)行內(nèi)部程序存儲器的程序時/EA 必須與VDD 相連。然而,4 個安全鎖定電平可將/EA 禁能,使器件只能執(zhí)行內(nèi)部程序存儲器的程序。/EA 腳可承受12V 的高壓ALE/PROGI/O地址鎖存使能:ALE 是一個輸出信號,在訪問外部存儲器時將地址低字節(jié)鎖存。該引腳也用作Flash 的編程脈沖輸入( /PROG )。通常,ALE
11、在1/6 的振蕩頻率時輸出,可用作外部定時或外部時鐘。每次訪問外部數(shù)據(jù)存儲器時都有一個ALE 脈沖被跳過。但是,只要AO 被置1,ALE就被禁能。NCI/O不連XTAL1I晶振1:反相振蕩放大器的輸入和內(nèi)部時鐘發(fā)生電路的輸入。XTAL2O晶振2:反相振蕩放大器的輸出。VDDI電源VSSI地 綜上所述P89V51RD2單片機既具有通用單片機的特點又有一些獨特之處,因此,此芯片足以滿足本設計的要求,并能很好的控制整個電路,尤其它所具有的ISP在線調(diào)試功能給本設計帶來了極大的方便。2.2 16x2字符型帶背光液晶顯示模塊 液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點,在袖珍式儀表和
12、低功耗應用系統(tǒng)中得到越來越廣泛的應用。 2.2.1液晶模塊的認識這里介紹的字符型液晶模塊是一種用5x7點陣圖形來顯示字符的液晶顯示器,根據(jù)顯示的容量可以分為1行16個字、2行16個字、2行20個字等等,這里以常用的2行16個字的1602液晶模塊來介紹它的編程方法。 下面是它的實物圖以及插槽連接圖。圖2.3(液晶顯示模塊的正面視圖)圖2.4(液晶顯示模塊的反面視圖)圖2.5(液晶顯示模塊的引腳插槽)其中,各個引腳所對應的含義如下表所示。 表2.2 1602管腳說明 端自號:標記:電平:功能:1VSS-電源電壓GND2VCC-電源電壓5V3V0-液晶驅(qū)動電源4RS0H/L寄存器選擇信號:L指令寄存
13、器H:數(shù)據(jù)寄存器5RWH/L讀寫選擇信號L:寫操作H:讀操作6ENHH-L使能信號7-14P00P07H/L數(shù)據(jù)總線15VCC-備光驅(qū)動電壓16GND-電源電壓GND2.2.2液晶模塊的編程本次設計中所編寫的液晶顯示模塊程序如附錄一所示:讀操作時序?qū)懖僮鲿r序:液晶模塊的流程圖、程序見附錄一。2.3.串口通信 隨著計算機的廣泛應用,市場上很多電氣產(chǎn)品應用串口通信技術(shù)作為對外數(shù)據(jù)交換的橋梁,串口通信受到如此重視,主要原因就是這個技術(shù)簡單而且容易實現(xiàn)。所以本次設計使用串口進行通信。而且本次設計使用的是RS-232串口通信。串口通信的認識:串口通信在本次的軟件設計中擔任傳輸?shù)淖饔?,即上位機和下位機的數(shù)
14、據(jù)傳輸。(包括程序的下載和數(shù)據(jù)的傳輸)具體連接如圖2.6所示。 圖2.6 RS-232串口通信連接圖串口控制程序一般分為查詢和中斷兩者方式。查詢方式適用于簡單的應用,簡單可靠,但是缺點是需要占用處理器資源,在發(fā)送或者接收數(shù)據(jù)的時候不能做其它的事情,處理器利用率低。中斷方式下,在發(fā)送或者接受數(shù)據(jù)的時候處理器還可以做其它的工作,效率較高。對于稍微復雜的系統(tǒng)來說,中斷方式管理串口程序?qū)佑行?。中斷處理方式也可分為幾種,其中采用循環(huán)緩沖區(qū)的方式比較高效。循環(huán)緩沖區(qū)為定義的一定長度的RAM區(qū)間,對于接受數(shù)據(jù)來說,中斷中收到的數(shù)據(jù)將存入RAM中,然后等待主程序來讀取。其中會涉及到數(shù)據(jù)見的協(xié)調(diào)問題,寫數(shù)
15、據(jù)的時候不能把還沒有讀取的數(shù)據(jù)覆蓋掉,讀數(shù)據(jù)的時候應該讀取的是緩沖區(qū)中最老的數(shù)據(jù)。當緩沖區(qū)已滿的時候,寫入的新數(shù)據(jù)應該覆蓋掉最老的數(shù)據(jù)。這些問題的處理可以使用兩個指針來實現(xiàn)。2.4 Visual Basic 與串口通信隨著計算機的廣泛應用,市場上很多電氣產(chǎn)品應用串口通信技術(shù)作為對外數(shù)據(jù)交換的橋梁,串口通信受到如此的重視,主要原因就是這個技術(shù)簡單而且容易實現(xiàn)。2.4.1Visual Basic簡單介紹Visual Basic集成開發(fā)環(huán)境主要由以下元素組成:工具窗口、工程窗口、屬性窗口、對象窗口以及代碼組成等。如圖2.7所示圖2.7 Visual Basic集成開發(fā)環(huán)境Visual Basic是一
16、般程序設計人員在Windows環(huán)境下最常用的串口編程語言。利用Visual Basic開發(fā)串口通信程序主要有兩種方法:一是使用MSComm串口控件,二是利用Windows API函數(shù)。在查閱了大量的資料和在實踐資料中,使用Visual Basic串口控件實現(xiàn)通信的方法比調(diào)用API動態(tài)鏈接庫的方法更加方便、快捷,而且用較少的代碼可以實現(xiàn)相同的功能,從而使編程效率大大提高,也減少了因編程不當而導致的系統(tǒng)不穩(wěn)定。所以本次的設計采用了串口控件實現(xiàn)。2.4.2MSComm控件MSComm控件全稱為Microsoft Communications Control,是Microsoft公司提供的Active
17、X控件,目的是為了簡化Windows下串行通信編程,它既可以用來提供簡單的串行通信功能,也可以用來創(chuàng)建功能完備的、事件驅(qū)動的高級通信工具。MSComm控件在串口通信時非常方便,程序員不必花時間去了解較為復雜的API函數(shù),而且在Visual Basic、Visual C+、Delphi等語言中均可使用。使用他可以建立與串行端口的連接,通過串行端口連接到其他通信設備(如調(diào)制解調(diào)器),發(fā)出命令,交換數(shù)據(jù),以及監(jiān)視和響應串行連接中發(fā)生的時間和錯誤。利用它可以進行諸如撥打電話號碼、監(jiān)視串行端口的輸入數(shù)據(jù)乃至創(chuàng)建功能完備的終端程序等?!耙茫?)”MSComm控件處理通信的方式有兩種:一種是事件驅(qū)動方式,
18、另一種是查詢方式。MSComm控件有許多屬性,這將會在上位機設計中作具體說明。2.4.3 VB工程建立工程的具體包括如下:(注意:下面的jia.*是本次設計的上位機的文件名) = 1 * GB2 .工程文件()一個工程只有一個工程文件,他管理著該工程的所有部件。工程文件中含有該工程的所有窗體文件以及其他的相關(guān)信息(如其他部件的名稱、在磁盤上的位置等)。此外,每個工程還會生成一個擴展名為.vbw的附屬工程文件,它保存了工程在集成環(huán)境中各窗體的狀態(tài)。 = 2 * GB2 .窗體文件() 添加到工程中的每個窗體都會單獨地保存為一個文件。工程中有幾個窗體就會產(chǎn)生幾個窗體文件。窗體文件中保存了所有該窗體
19、和放置在該窗體中控件的信息,包括對象名、對象類型、對象的屬性設置、對象的事件過程代碼和通用過程代碼。也就是說,一個窗體文件保存了這個窗體所對應的對象窗口和代碼窗口所有的內(nèi)容。這些內(nèi)容在Visual Basic中被總稱為“窗體模塊”。一個工程有幾個窗體就有幾個窗體模塊和幾個窗體模塊文件。 = 3 * GB2 .二進制窗體文件() 如果一個窗體中包括了圖片等二進制信息(如在屬性窗口中設置了窗體的Icon屬性、Pircture屬性),則會產(chǎn)生一個與窗體*.frm文件同文件名的*.frx文件。 = 4 * GB2 .標準模塊文件() 標準模塊是用來保存公共變量、常量、數(shù)據(jù)類型、過程的地方,其他的模塊可
20、以調(diào)用標準模塊中的代碼。一個工程中有多個標準模塊,也可以沒有。工程文件()、窗體模塊文件()和標準模塊文件()都是純文本文件,有經(jīng)驗的編程者可以使用“記事本”這類文本編輯軟件打開、查看并進行修改。 = 5 * GB2 .類模塊文件Visual Basic允許編程者創(chuàng)建新類,新類的定義保存在類模塊中。一個工程中可以有多個類模塊,也可以沒有。 = 6 * GB2 .建立可執(zhí)行文件前面執(zhí)行應用程序的時候是選擇“運行”菜單的“啟動”命令來執(zhí)行的,這種執(zhí)行是解釋執(zhí)行,解釋執(zhí)行只能在Visual Basic開發(fā)環(huán)境中進行,不能脫離開發(fā)環(huán)境。為了使應用程序能脫離開發(fā)環(huán)境而直接在Windows環(huán)境下運行,就必
21、須將應用程序編譯成可執(zhí)行文件(5.6.21.44.exe文件,這個是此次畢業(yè)設計的上位機的運行界面的名稱。意思是:五月六日9點44分完成)。生成的方法是:依次選擇“文件”菜單的“生成工程1.exe”命令(這里的“工程1”是工程名),彈出“生成工程”對話框時,選定保存位置,輸入可執(zhí)行文件的名字,單擊“確定”按鈕即可在指定位置建立一個可執(zhí)行文件。第三章 設計和計算3.1上位機設計(VB的設計)定義聲明函數(shù)初始化串口各參數(shù)清零按鈕按下?設置連接按鈕按下?執(zhí)行相應操作退出按鈕按下?結(jié)束退出 N Y Y N Y Y N Y圖3.1 VB程序的流程圖3.1.1 VB編寫的上位機程序程序一:Dim COMB
22、UF As StringPrivate Sub Command3_Click()ngs = 600,N,8,1 設置數(shù)據(jù)傳輸率,沒有奇偶校驗,和數(shù)據(jù)位八位,一位停止位。 ort = 6 設置通訊串口COM6 Len = 0 設置或返回一次從接收緩沖區(qū)中讀取字節(jié)數(shù),0表示一次讀取所有數(shù)據(jù) ferSize = 512 設置接收緩沖區(qū)為512ByteferCount = 0 讀取整個緩沖區(qū)的數(shù)據(jù)。shold = 1 每個字符到接收緩沖區(qū)都觸發(fā)接收事件字符到接收緩沖區(qū)觸發(fā)接收事件 pen = True 打開串口 le = TrueEnd SubPrivate Sub Command1_Click()
23、pen = False 關(guān)閉串口 olor = RGB(0, 255, 0) 綠色 olor = RGB(0, 255, 0) le = True ed = False ed = FalseEnd SubPrivate Sub Command2_Click()Unload Me 退出End SubPrivate Sub MSComm1_OnComm()Dim i As Variant Select Case vent Case comEvReceive COMBUF = Asc()Print 苗家祥.張勇提醒: & COMBUF & 區(qū)報警 & - & Now olor = RGB(255,
24、0, 0) 紅色 olor = RGB(255, 0, 0) = E:音樂哈.mp3 ed = True ed = True End SelectEnd SubPrivate Sub Timer1_Timer() Timer控件 = NowEnd SubPrivate Sub Timer2_Timer()le = FalseEnd SubPrivate Sub Timer3_Timer()le = TrueEnd Sub分析: 當報警的時候就在上位機的界面上執(zhí)行下面一句:Print 苗家祥.張勇提醒: & COMBUF & 區(qū)報警 & - & Now 這樣報警的信息就顯示在界面上了。如下圖所示
25、。 圖3.2 報警信息圖上述程序中的Timer控件即定時器控件主要用來控制界面中的閃爍的紅色小球。如下圖所示: 綠色 紅色正常檢測狀態(tài) 圖3.3 報警狀態(tài)開始檢測的時候,他是綠顏色的,當觸發(fā)報警的時候,他就變成紅顏色的并且是在不斷閃爍的小球,給人以視覺沖擊起到報警的作用。程序中使用了三個定時器控件,Timer1主要用來控制上圖中的時鐘條 。Timer2和Timer3主要用來控制小球,設計的時候把Timer2的interval屬性定義成500, Timer3的interval屬性定義成1000.這樣再觸發(fā)下面的事件。Private Sub Timer2_Timer() Private Sub T
26、imer3_Timer()le = False le = TrueEnd Sub End Sub就實現(xiàn)了小球的不斷閃爍。同時觸發(fā)WindowsMediaPlayer1發(fā)生報警信號。這樣上位機的聲光報警就實現(xiàn)3.2 下位機設計主程序分析:我們的目標是,當紅外線檢測到有人闖入時:(1)由P3.4輸出高低電平間隔0.5s的脈沖信號去驅(qū)動聲光報警電路,產(chǎn)生聲光報警。這可通過使P3.4每隔0.5s取反一次實現(xiàn),而0.5s時間可同時定時器T0(工作于定時方式1)重復定時100ms十次來實現(xiàn)。用工作寄存器R1作循環(huán)計數(shù)器,初值為10(0AH)。(采用中斷方式編程)。(50ms*10=500ms=0.5s)(
27、2)由P0口輸出數(shù)據(jù)到液晶屏顯示報警所在位置的區(qū)號(1、2、3、4)。這要通過在主程序中對液晶模塊的調(diào)用來實現(xiàn)。顯示什么字符,就調(diào)用該字符函數(shù)。(3)通過RS232串口(由是程序的下載線,當下載線不用時)上傳到上位機,并在上位機當中顯示報警所在位置的區(qū)號(1234)。上位機部分要通過Visual Basic 軟件來實現(xiàn)。3.2.1 C編寫的下位機程序主要功能是對系統(tǒng)進行初始化和對系統(tǒng)進行監(jiān)視,看是否有人闖入。其程序流程圖如圖3.3所示。開始系統(tǒng)初始化有人闖入?啟動定時等待時間到時間到了嗎?NYESEZNoY報警實現(xiàn)聲光報警液晶顯示上位機顯示圖3.4 主程序流程圖整個設計的主程序如下面的“程序一
28、”所示:下面是中斷程序流程圖。開始定義重設定時初值1s到嗎?P3.4取反中斷返回圖3.5 聲光報警中斷程序流程圖NOYES程序一:#include #include#define uchar unsigned char#define uint unsigned int sbit P10=P10; sbit P11=P11; sbit P12=P12; sbit P13=P13; sbit P14=P14; sbit P15=P15; sbit P16=P16; sbit P17=P17; sbit P34=P34;void fun0(void); void fun1(void);Uart_In
29、it();Uart1_Init();extern void lcd_init(void);extern void display_string(unsigned char x,unsigned char y,unsigned char *s);extern void display_char(unsigned char x,unsigned char y,unsigned char dat);unsigned char code str1= BAO JING;uchar code Table_Count4=1,2,3,4; /要顯示的數(shù)字或者字母,放在此區(qū)域void main(void) uc
30、har temp=0; P10=0; P11=0; P12=0; P13=0; Uart_Init(); Uart1_Init(); lcd_init();display_string(8,0,str1); /顯示(bao jing)while(1) if(P1!=0) TR0=1; if(P1!=temp) fun0(); temp=P1; fun1(); void TR0_SER(void) interrupt 1 /中斷 static uchar num=0; TH0=0 x3c; TL0=0 xb0; num+;if(num=10) num=0;P34=P34;void fun0(vo
31、id) /液晶顯示模塊 if(P14=1) display_char(1,0,1); /液晶屏顯示字符1 if(P15=1) display_char(2,0,2); /液晶屏顯示字符2 if(P16=1) display_char(3,0,3); /液晶屏顯示字符3 if(P17=1) display_char(4,0,4); /液晶屏顯示字符4 void fun1(void) /向串口發(fā)送字符模塊 if(P14=1) /PC機上顯示字符1 SBUF=Table_Count0; while(!TI); /等待發(fā)送完成 TI=0;/清除TI標志,準備下一次發(fā)送。 if(P15=1) /PC機上
32、顯示字符2 SBUF=Table_Count1; while(!TI); TI=0; if(P16=1) /PC機上顯示字符3 SBUF=Table_Count2; while(!TI); TI=0; if(P17=1) /PC機上顯示字符4 SBUF=Table_Count3; while(!TI); TI=0; Uart_Init() /串口初始化。 TMOD=(TMOD & 0 x00) |0 x20; /定時器1使用方式2 PCON=0 x00; /SMOD為0 SCON=0 x50; /工作于方式1,波特率600,允許接受 TH1=0 xcc;/204 參考文獻12P140-表10.
33、12 TL1=0 xcc; TR1=1; Uart1_Init() /主程序初始化 TMOD=TMOD|0 x01; /定時器0,方式一; TH0=0 x3c; TL0=0 xb0; ET0=1; /定時器0允許中斷; EA=1; /CPU允許中斷; P34=0;分析說明: = 1 * GB3 主程序初始化的設計的計算:TMOD:0000,0001 定時器0,方式一,16位(0-65536)Num=1012MHZ/12=1s 0.5s=500000s 500000/10=50000 65536-50000=15536=(3CB0H)即: TH0=0 x3c;TL0=0 xb0; = 2 * G
34、B3 串口初始化的設計的計算:綜合上面的優(yōu)劣,本次的畢業(yè)設計采用中斷的方式比較合理。所以在本次軟件設計中采用了中斷方式的編程。在其中應注意的是初始化串口。初始化串口的程序和下面的相似。根據(jù)“常用波特率對應的初始值表”知因為工作頻率為12M,波特率為600,由查表知:初始值應該是0XCC查表:單片機Keil Cx51應用開發(fā)技術(shù)-P140頁中表10.12所以: 初始化串口, 波特率600Uart_Init() /串口初始化。 TMOD=(TMOD & 0 x00) |0 x20; /定時器1使用方式2PCON=0 x00; /和串口相關(guān)的只有第七位SMOD為0. SCON=0 x50; /工作于
35、方式1,允許接受。波特率600,TH1=0XCC; TL1=0XCC; TR1=1; 第四章 軟硬件調(diào)試及方案校驗軟件設計的工具主要是Keil軟件和Visual Basic軟件.4.1 上位機軟件的調(diào)試Visual Basic的一大優(yōu)勢在與可視化編程,良好、美觀的編程界面對用戶來說是必要的,應用程序的界面用戶有著極大的影響,界面不好將直接影響到應用程序的易用性。對于程序員來講,需要考慮的是如何將窗體、控件、對話框、菜單和工具欄等界面元素有機地組合在一起,從而構(gòu)成一個完整的易學易用的應用程序。4.1.1 Visual Basic的調(diào)試運行Visual Basic程序,出現(xiàn)“新建工程”對話框,如圖
36、4-1 圖4.1“新建工程”對話框選擇新建“標準EXE”,執(zhí)行“打開”命令,進入Visual Basic工程集成開發(fā)環(huán)境,窗體設計器中會自動出現(xiàn)一個名為Form1的空白窗體。然后在這里建立工程編輯界面和編寫程序。編程完成后的程序和界面如下所示: 從圖4.2可以看出。圖4.2編輯完成后圖程序的編寫,以及界面的編輯要有所講究。要簡潔明了的表達要實現(xiàn)的功能。說明一:界面上有三個按鈕,分別“設置連接”、“清零按鈕”、“退出按鈕”,有三個定時器控件,和一個聲音播放控件,還有一個TEXT1文本框。 說明二:程序中有些屬性都在屬性窗口中設置完成的。 說明三:運行時,運行正常時,時鐘框和小球是綠色的。但當報警
37、時同為紅顏色。 說明四:報警時還伴有報警的聲音。下面是本次設計的日常監(jiān)控時的界面-如圖4.3所示。觸發(fā)報警時所顯示的界面-如圖4.4所示。 綠色 圖4.3監(jiān)控界面點擊“設置連接”按鈕后,觸發(fā)報警實現(xiàn)的界面如下圖4.5所示: 紅色 圖4.4說明(報警時小球在不斷閃爍,且有報警聲音出現(xiàn))4.1.2 上位機調(diào)試的問題問題一:在VB當中MSComm控件比較的重要特別是下面兩句的每一系數(shù)的選擇,都是經(jīng)過不斷的調(diào)試,在實踐當中我們發(fā)現(xiàn)當(ngs = 600,N,7,1 )時,發(fā)現(xiàn)實現(xiàn)不了要接收的數(shù)據(jù)。發(fā)現(xiàn)問題后我們通過“串口調(diào)試精靈”發(fā)現(xiàn),接收上來的數(shù)據(jù)是正確的只不過顯示的是十六進制的。經(jīng)過不斷的調(diào)試,對
38、數(shù)據(jù)進行改進,我們發(fā)現(xiàn)把數(shù)據(jù)位改為 7位比較合適。即(ngs = 600,N,8,1)這樣,通過串口傳到上位機上顯示的數(shù)字就正常了。然后關(guān)掉“串口調(diào)試精靈”,改掉參數(shù),重新打開我們的上位機軟件,問題沒有了。這是由SCON決定的,它的數(shù)據(jù)位就是八位。問題二:調(diào)試的時候我們的程序中有(ngs = 9600,N,7,1)中,傳輸率9600的選擇。開始使用的是4800,因為我們燒錄程序的時候的波特率選的是4800結(jié)果不行,出現(xiàn)錯誤。通過查閱資料我發(fā)現(xiàn)書中這樣介紹,當電源控制寄存器PCON 的SMOD位選擇為“1”時,(即PCON=0 x80; /SMOD為1,波特率增加一倍)因為當SMOD為“0”時,
39、多出一個二分頻。這個解釋還可以參照下面的一個公式:計數(shù)器1益出速率)32 波特率=2AVERAGE(SMOD) # 0 通過上面的公式,就可以發(fā)現(xiàn)選擇1和0的區(qū)別,(即知道了為什么要用9600和4800了)問題三:設計當中的串口問題,也占用了我們大量的時間,由于接觸的不多。我們對串口的了解,僅存在與學過的書本上一點不知道。實際應用是時候不知道數(shù)據(jù)怎么傳送,不知道數(shù)據(jù)放在哪里合適,開始以為問題出在VB這部分。解決方法后來去圖書館查閱資料發(fā)現(xiàn)要把傳送的數(shù)據(jù)送到串口:uchar code Table_Count4=1,2,3,4; SBUF=Table_Count0;這兩句比較重要。把字符(1,2,
40、3,4)放到數(shù)組里面,再從主程序里面調(diào)用數(shù)組,這樣比較簡單。然后再在VB程序中用下面的程序:COMBUF = Asc() ; Print COMBUF這樣問題就解決了。4.2下位機軟件的調(diào)試步驟和問題Keil 軟件是目前最流行開發(fā) MCS-51 系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持 Keil 即可看出。要實現(xiàn)調(diào)試,首先要建立工程文件,程序在軟件中調(diào)試成功后,并且要可以生成*.HEX文件。這要才可以進一步的進行下面的調(diào)試工作。4.2.1建立文件 = 1 * GB2 . 點擊“Project-New Project ”菜單,出現(xiàn)一個對話框,要求給將要建立的工程起一個名字,你可以
41、在編緝框中輸入一個名字(設為 miao),不需要擴展名。點擊“保存”按鈕,出現(xiàn)第二個對話框,這個對話框要求選擇目標 CPU(即你所用芯片的型號),Keil 支持的CPU很多,點擊 ATMEL 前面的“+”號,展開該層,這里我們要選擇飛利浦公司生產(chǎn)的P89V5RD2,然后再點擊“確定”按鈕。 = 2 * GB2 . 此時,在工程窗口的文件頁中,出現(xiàn)了“Target1”,前面有“+”號,點擊“+”號展開,可以看到下一層的“ Source Group1”,點擊“Source Group1”使其反白顯然后,點擊鼠標右鍵,選中其中的“Add file toGroup”Source Group1”,出現(xiàn)一
42、個對話框,要求尋找源文件( = 1 * GB3 主程序.C = 2 * GB3 液晶.C). = 3 * GB2 . 雙擊 = 1 * GB3 主程序.C和 = 2 * GB3 液晶.C 文件,將文件加入項目,然后點擊“Close”即可返回主界面,返回后,點擊“SourceGroup 1”前的加號,會發(fā)現(xiàn) = 1 * GB3 主程序.C和 = 2 * GB3 液晶.C 文件已在其中。雙擊文件名,打開該源程序。4.2.2調(diào)試步驟紅外線防盜報警器主程序編輯完成以后,調(diào)試沒問題時。要注意以下步驟: = 1 * GB3 . .要注意必須生成文件,以便燒錄程序(下載程序到硬件)以實現(xiàn)需要的功能。 = 2
43、 * GB3 . 下載線.下載之前要連接好下載線(這里用的是USB轉(zhuǎn)RS-232下載線),注意電腦上的相應驅(qū)動要安裝完成才可以使用這樣的轉(zhuǎn)接線,并打開硬件上的開關(guān)。 = 3 * GB3 . 擦除文件.運行“Flash Magic”,選擇界面上的參數(shù),注意:參數(shù)不正確無法下載。準備擦除硬件CPU內(nèi)的原始程序。步驟是:點擊菜單欄的“ISP”“ Erase Flash”選中“Eraseall Flash” 點擊“Erase”按一下硬件上的黑色復位健擦除完成。 = 4 * GB3 . 燒錄.燒錄程序,步驟是:點擊” Browse” 選擇路徑找到先前Keil中生成的“”文件點擊“Start”程序下載完成
44、,(Finished).準備硬件調(diào)試。具體如下圖所示:圖4.5 Flash Magic界面圖 = 5 * GB3 . 液晶屏.根據(jù)設計的要求調(diào)試555聲光報警電路,調(diào)試液晶屏。 = 6 * GB3 . 上位機.調(diào)試上位機時,要注意的是硬件上的串口通信開關(guān)不能斷開,要保持在連接狀態(tài)。(即白色按鈕要按下去)。然后保持串口線連接正常后,打開上位機的監(jiān)控界面。點擊“設置連接”按鈕,進行調(diào)試。4.2.3 下位機調(diào)試問題問題一:工程建立后出現(xiàn)的問題,我們的程序有兩個???,一個是主程序模塊,另一個是液晶屏???。在編譯時出現(xiàn)下面的錯誤“Target not created”。結(jié)果在生成*.HEX文件的時候,怎
45、么也生成不了。 最后在查閱資料后發(fā)現(xiàn)問題。仔細閱讀程序后才發(fā)現(xiàn),在液晶??炖锩嬉灿幸粋€主程序main()而在主程序??焱瑯右灿幸粋€main()。犯了一個本不應該犯的錯誤。我們的解決方法是把液晶部分的main()去掉,把相應的主程序操作,移動主程序模塊進行實現(xiàn)。這樣再對程序進行相應的調(diào)試,問題就可以解決了。問題二:設計當中的液晶屏的顯示,開始怎么也調(diào)試不出,那個液晶屏不出字符?分析:經(jīng)過我們的不斷發(fā)現(xiàn),不斷地從軟硬件上改善,最終完整實現(xiàn)了報警。結(jié)果是軟件上所傳送的字符(1改成1)不對,硬件上的V0(背光驅(qū)動電源)根本沒加上去。查出問題后,我們有效的進行調(diào)節(jié),給硬件上的V0(背光驅(qū)動電源)加上一個
46、電位器,并在軟件上把1改成“1”。最終實現(xiàn)了液晶顯示的報警。問題三:燒錄軟件時遇到如下圖中的問題,解決不了。經(jīng)過不斷的調(diào)試,這種情況在我們的軟件調(diào)試中經(jīng)常遇到,具體有以下幾點可能: = 1 * GB3 .下載線沒插或者是沒插好。 = 2 * GB3 .硬件的電源沒打開。 = 3 * GB3 .硬件上面在串口和單片機之間的一個白色的開關(guān)沒有連接好,或者根本就沒有按下去導致無法下載。 = 4 * GB3 .還有可能是燒錄軟件上面的波特率沒選好,此次的設計中波特率應該選擇 600。 = 5 * GB3 .有可能COM口沒選擇好,要注意的是燒錄器上的COM口要和電腦硬件的接口相對應。問題四:有的時候在
47、下載程序不成功的時候會出現(xiàn)電腦上面的畫面停滯導致無法繼續(xù)操作。分析:這樣的情況應該是我們的誤操作所致,和電腦上的問題差不多。經(jīng)過我們的調(diào)試和經(jīng)驗可知,處理的最好的方法就是,關(guān)掉硬件電源,然后拔掉電腦上的USB下載線,重新插上,問題迎刃而解。注意出現(xiàn)這樣的問題可能是下載的步驟不正確所致。只要注意設計中上面的步驟,再重新進行調(diào)試,問題就迎刃而解了。第五章 結(jié)論和改進意見5.1 總結(jié)此次的畢業(yè)設計,應該說是這幾年來的一個結(jié)果的體現(xiàn)吧,從開始的選題到最后的完稿,中間經(jīng)歷了許多,從毫無頭緒到一點點的梳理完成,再到成竹在胸,是要付出許多的。我們有過許多不眠之夜,有過幾天不出宿舍的設計。本次的設計完全完成了
48、老師布置的任務,而且在此基礎上我們又作出了拓展。改善了以往的單調(diào)的報警,同時在價值上也不可小計,我們的紅外線報警已經(jīng)在理論和實踐中達到了和市面上的報警器相同的功能,甚至在有些地方已經(jīng)有所超越。我們的紅外線報警器不僅有現(xiàn)場聲光報警(這個報警是利用比較傳統(tǒng)的555電路做成的),而且還添加了上位機的部分。并且可以在上位機上實現(xiàn)聲音報警,和屏面報警(顯示界面上有個紅色圓形報警區(qū)域在報警時會不斷閃爍),我們設計的紅外線報警器設計的還比較的細致,他的功能很強大,它可以捕捉到一分一秒的報警,每一區(qū)的報警我們設計的報警器可以精確到幾點幾分幾秒。還有在報警的時候,我們還利用其他的軟件和音頻設備自己制作出了報警的
49、聲音。這個給我們的設計可以說是增光添彩了。我們的紅外報警器有了這些優(yōu)點特色以后,完全可以有效防止不法分子的不法行為。完全完成了畢業(yè)設計的任務。欣喜之情自不必說。付出了努力才會有所回報。此次的設計不僅在能力上得到了提升。而且在心理素質(zhì)上也得到了許多的鍛煉。5.2改進建議當然,人無完人,事無完事,我們設計的東西也一樣。此次的設計的產(chǎn)品由于時間的關(guān)系,只在實驗設計中得以實現(xiàn),它的有效傳播距離由于條件限制,我們無法測量。在傳播距離這一塊,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。在軟件上我的主要思路就是利用PWM脈沖,發(fā)射紅外線去控制相應的受控裝置時,其控制的距離與發(fā)射功率成正比。為了增加紅外線的控制距離
50、,紅外發(fā)光二極管工作于脈沖狀態(tài),因為脈動光(調(diào)制光)的有效傳送距離與脈沖的峰值電流成正比,只需盡量提高峰值Ip,就能增加紅外光的發(fā)射距離。提高Ip的方法,是減小脈沖占空比,即壓縮脈沖的寬度,一些彩電紅外遙控器,其紅外發(fā)光管的工作脈沖占空比約為1/41/3;一些電氣產(chǎn)品紅外遙控器,其占空比是1/10。減小沖占空比還可使小功率紅外發(fā)光二極管的發(fā)射距離大大增加。常見的紅外發(fā)光二極管,其功率分為小功率(1mW10mW)、中功率(20mW50mW)和大功率(50mW100mW以上)三大類。要使紅外發(fā)光二極管產(chǎn)生調(diào)制光,只需在驅(qū)動管上加上一定頻率的脈沖電壓。由于時間的原因,我們做的還不夠完美,許多好的想法
51、都沒來得及實現(xiàn),比如,我們的液晶屏當在某一區(qū)報警的時候,如果能實現(xiàn)字符的閃動,那就更好了,更能表達報警的效果。還有下面的字符,如果能夠?qū)崿F(xiàn)下面的固定的字符的滾動,那就會使,報警器“活”起來了,那樣看上去效果會更好。希望將來在有機會的話能夠完善它。理論和實踐的結(jié)合是需要時間的,這將在以后的社會實踐中再去完善吧。參考文獻周興華 編著 單片機智能化產(chǎn)品C語言設計實例詳解北京:北京航空航天大學出版社 2006年 田立 田清 貸方震 編著51 單片機C語言程序設計快速入門 北京 :人民郵電出版社 2006李江全 岑紅雷 編著Visual Basic 串口通信與測控應用技術(shù)實戰(zhàn)詳解北京:人民郵電出版社 2
52、007毛玉良 張赤斌 編著微機系統(tǒng)原理及應用 南京:東南大學出版社 2006魏立峰 王寶興 編著單片機原理與應用北京:北京大學出版社 2006年8月楊將新.李震華 編著單片機程序設計及應用從基礎到實踐電子工業(yè)出版社 2006年3月何立民 編著單片機實驗與實踐教程三 北京航空航天大學出版社 2006年3月萬光毅 遍著單片機實驗與實踐教程一北京航空航天大學出版社 2006年3月汪文 陳林 編著單片機原理及運用 華中科技大學出版社,2007年7月趙亮 侯國銳 編著 單片機C編程與實例人民郵電出版社 2003年7月肖來勝 馮建蘭 編著單片機技術(shù)實驗教程華中科技大學出版社 2004年1月王為青 程國鋼 編著 單片機LEIL C51 應用開發(fā)技術(shù) 人民郵電出版社 2007年2 月 液晶模塊流程圖/*液晶顯示模塊*/#include /調(diào)用頭文件(單片機內(nèi)部的寄存器定義) sbit LCD_RS = P3 7;sbit LCD_RW = P3 6; sbit LCD_E = P3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 招標投標質(zhì)量控制手冊
- 互聯(lián)網(wǎng)公司網(wǎng)絡安全操作指南
- 房地產(chǎn)策劃解雇協(xié)議
- 員工意見收集指南試點
- 燃氣管道安全檢測
- 商業(yè)綜合體物業(yè)租賃承包合同
- 城市綠化協(xié)管員管理辦法
- 2024年建筑施工承攬合同示范文本
- 拜訪客戶銷售心得(8篇)
- 汽車制造吊籃租賃合同
- 部編版小學語文六年級上冊單元考點總結(jié)(全冊)課件
- 海康威視內(nèi)部培訓教材1
- 小小銀行家課件講解學習共
- 五年級綜合實踐活動課件 模擬小法庭 全國通用
- 吊籃安全檢查記錄表
- IATF16949條款與過程的對應關(guān)系
- 華科版五年級全冊信息技術(shù)教案(共24課時)
- 設備供貨安裝方案(通用版)
- 三年級數(shù)學上冊課件-8.1.1 認識幾分之一 人教版(共20張PPT)
- 英語學習重要性
- 《應用寫作》精品課程教案
評論
0/150
提交評論