

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 交通與汽車工程學院</b></p><p><b> 課程設計說明書</b></p><p> 課 程 名 稱: 微機原理及應用課程設計 </p><p> 課 程 代 碼: </p><p> 題
2、 目: 汽車蓄電池電壓檢測系統(tǒng) </p><p> 年級/專業(yè)/班: 09級/車輛工程/汽電4班 </p><p> 學 生 姓 名: </p><p> 學 號: </p><p> 開 始
3、時 間: 2012 年 07 月 02 日</p><p> 完 成 時 間: 2012 年 07 月 06 日</p><p><b> 課程設計成績:</b></p><p> 指導教師簽名: 年 月 日</p><p><b&g
4、t; 目 錄</b></p><p> 摘要…………………………………………………………………………………………2</p><p> 1 引言………………………………………………………………………………………3</p><p> 1.1 問題的提出 ………………………………………………………………………… 3</p><p
5、> 1.2 任務與分析……………………………………………………………………………3</p><p> 2 方案設計…………………………………………………………………………………4</p><p> 2.1 系統(tǒng)設計方案…………………………………………………………………………4 </p><p> 2.2 系統(tǒng)總體框圖………………………………………
6、…………………………………4 </p><p> 3 系統(tǒng)硬件設計……………………………………………………………………………5</p><p> 3.1 89C51單片機………………………………………………………………………… 5</p><p> 3.2 LCD12864人機交互設備………………………………………………………………7</p>
7、<p> 3.3 ADC0804 AD轉換芯片……………………………………………………………… 8</p><p> 4系統(tǒng)軟件設計……………………………………………………………………………10</p><p> 4.1 proteus軟件環(huán)境介紹………………………………………………………………10 </p><p> 4.2 prote
8、l軟件環(huán)境介紹……………………………………………………………… 11 </p><p> 4.3系統(tǒng)軟件分析………………………………………………………………………11 </p><p> 4.4 程序流程圖……………………………………………………………………………12</p><p> 5 系統(tǒng)調試過程…………………………………………………………………
9、…………14</p><p> 結論…………………………………………………………………………………………21</p><p> 致謝…………………………………………………………………………………………22 </p><p> 參考文獻……………………………………………………………………………………23</p><p> 附錄……………
10、……………………………………………………………………………24</p><p><b> 摘 要</b></p><p> 本設計是基于89C51單片機為控制核心的汽車蓄電池電壓檢測系統(tǒng)。單片機因其體積小、功能強、價格低廉而得到廣泛應用。蓄電池在現(xiàn)代工業(yè)的各種場合都有廣泛的應用,為各種系統(tǒng)提供必不可少的電源,蓄電池的重要性可見一斑,尤其在現(xiàn)代汽車上,蓄電池更是
11、必不可少。本次課程設計用51單片機設計制作的汽車蓄電池電壓檢測系統(tǒng),由51單片機、AD0804芯片、液晶屏lcd12864和一些常用元器件組成,用滑動變阻器的滑頭端輸出電壓來模擬蓄電池的電壓,經(jīng)過AD采樣,將電壓值通過lcd12864顯示,當模擬蓄電池電壓低于2V時,顯示“電壓過低,請充電”的提示信息。本設計說明書對該系統(tǒng)的硬件電路,工作原理進行了詳細的介紹,同時給出了軟件設計的流程圖。</p><p> 關鍵
12、詞: 汽車蓄電池;LCD12864;51單片機;proteus仿真</p><p><b> 1 引 言 </b></p><p> 1.1 問題的提出 </p><p> 隨著人類科技文明的發(fā)展,目前汽車上用于蓄電池檢測顯示的設備過于復雜。在這種趨勢下,能否利用現(xiàn)在所學的單片機知識及常見元器件搭建出能夠檢測并顯示的蓄電池系統(tǒng),將
13、會影響自己的實踐能力。本次課程設計題目基于單片機技術原理,以單片機芯片AT89C51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設計制作出一個汽車蓄電池電壓檢測系統(tǒng)。本設計是基于這種設計方向,以單片機為控制核心,設計制作一個檢測系統(tǒng)。</p><p><b> 1.2任務與分析 </b></p><p> 本次設計的系統(tǒng)的控制中心是89C51單片機。首先
14、,在Protel軟件環(huán)境中進行硬件電路圖的設計。然后在8051軟件環(huán)境中進行系統(tǒng)的軟件編程,并進行程序源文件的編譯和調試,最后生成.hex文件。此.hex文件是硬件電路運行實現(xiàn)的源代碼來源。把.hex文件加載到AT89C51單片機芯片,然后在Proteus軟件環(huán)境中運行硬件電路,時鐘的日期就可以正常顯示了。</p><p> 本次課程設計是應用51單片機原理和微機控制與接口技術設計蓄電池檢測系統(tǒng)控制器的硬件電路
15、,并采用c語言進行程序設計。通過控制外部AD0804芯片來檢測滑動變阻器模擬輸出的蓄電池電壓,當電壓低于2V時,系統(tǒng)能夠及時的給出提示信息。本系統(tǒng)的難點在于AD芯片的應用以及如何在LCD12864上顯示提示信息。由于課程設計需要Proteus軟件進行仿真,而軟件自帶的LCD12864是無字符液晶顯示器,所以程序中還要編寫顯示字符的程序。</p><p><b> 2 系統(tǒng)方案設計</b>&
16、lt;/p><p> 2.1 系統(tǒng)設計方案</p><p> 通過查閱相關資料,設計初期共有二個方案供我選擇,分別是:</p><p><b> 方案一:</b></p><p> 系統(tǒng)采用AT89C51單片機作為主控芯片,AD0804芯片作為電壓檢測的AD轉換模塊。在LCD1602上顯示。</p>&
17、lt;p><b> 方案二:</b></p><p> 系統(tǒng)采用AT89C51單片機作為主控芯片,AD0804芯片作為電壓檢測的AD轉換模塊。采用LCD12864顯示。</p><p> 進行方案比較,由于要求顯示漢字提示信息,方案二可以精確的顯示提示信息,最后確定設計采用第2方案,即系統(tǒng)是由89C51單片機,AD0804芯片,LCD12864液晶顯示器組
18、成。</p><p> 2.2 系統(tǒng)總體框圖</p><p><b> 圖1 系統(tǒng)總體框圖</b></p><p> 在設計里面,利用單片機設計電路,以滑動變阻器模擬蓄電池電壓,用AD芯片進行采樣,最后通過LCD12864液晶顯示器進行顯示,由于使用軟硬件結合的方式代替了數(shù)字電路的復雜性,所以電路結構簡單、調試也相對方便,經(jīng)濟實惠。<
19、;/p><p> 3 系統(tǒng)硬件電路設計</p><p> 3.1 89C51單片機</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機。0C51是INTEL公司MCS-51系列單
20、片機中最基本的產(chǎn)品,它采用INTEL公司可靠的CHMOS工藝技術制造的高性能8位單片機,屬于標準的MCS-51的HCMOS產(chǎn)品。它結合了HMOS的高速和高密度技術及CHMOS的低功耗特征,它繼承和擴展了MCS-48單片機的體系結構和指令系統(tǒng)。</p><p> 80C51內置中央處理單元、128字節(jié)內部數(shù)據(jù)存儲器RAM、32個雙向輸入/輸出(I/O)口、2個16位定時/計數(shù)器和5個兩級中斷結構,一個全雙工串行通
21、信口,片內時鐘振蕩電路。此外,80C51還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內其它功能。80C51有PDIP(40pin)和PLCC(44pin)兩種封裝形式。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。其引腳圖如圖2所示:</p><p> 圖
22、2 89C51單片機引腳圖</p><p> 89C51單片機與早期Intel的8051/8751/8031芯片的外部引腳和指令系統(tǒng)完全兼容,只不過用Flash ROM 替代了ROM/EPROM而已[3]。89C51單片機內部結構如圖3所示。</p><p> 圖3 89C51單片機內部結構示意圖</p><p><b> 各引腳的功能如下:<
23、/b></p><p><b> VCC:供電電壓。</b></p><p><b> GND:接地。</b></p><p> P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位
24、。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高[3]。</p><p> P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p>
25、<p> P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊
26、功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> RST:復位輸入。當振蕩器復位器件時,要保持RST腳
27、兩個機器周期的高電平時間。</p><p> ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR 8EH地址上置0。此時
28、, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> /EA:當/EA保持低電平時,則在此期間CPU只訪問外部
29、程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,則執(zhí)行內部程序存儲器中的程序。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p>&
30、lt;p> 3.2 LCD12864人機交互設備</p><p> 為了進行實時的顯示,本次設計選用LCD12864作為顯示設備,12864可分為無字符型和有字符型。由于Proteus中自帶的LCD12864為無字符型,所以還要在程序中加入字符編碼。lcd12864液晶顯示模塊是128×64點陣的漢字圖形型液晶顯示模塊,可顯示漢字及圖形,內置國標GB2312碼簡體中文字庫(16X16點陣)、1
31、28個字符(8X16點陣)及64X256點陣顯示RAM(GDRAM)??膳cCPU直接接口,提供兩種界面來連接微處理機:8-位并行及串行兩種連接方式。具有多種功能:光標顯示、畫面移位、睡眠模式等。</p><p> 圖4 LCD12864實物圖</p><p> 3.3 ADC0804 AD轉換芯片</p><p> ADC0804是用CMOS集成工藝制成的逐
32、次比較型摸數(shù)轉換芯片。分辨率8位,轉換時間100μs,輸入電壓范圍為0~5V,增加某些外部電路后,輸入模擬電壓可為 5V。該芯片內有輸出數(shù)據(jù)鎖存器,當與計算機連接時,轉換電路的輸出可以直接連接在CPU數(shù)據(jù)總線上,無須附加邏輯接口電路。ADC0804芯片外引腳圖如7.25所示</p><p> 圖5 ADC0804</p><p> 引腳名稱及意義如下:VIN+ VIN- :AD
33、C0804的兩模擬信號輸入端,用以接受單極性、雙極性和差摸輸入信號。DB8~DB0 :A/D轉換器數(shù)據(jù)輸出端,該輸出端具有三態(tài)特性,能與微機總線相接。AGND:模擬信號地。DGND:數(shù)字信號地。CLKIN:外電路提供時鐘脈沖輸入端。CLKR:內部時鐘發(fā)生器外接電阻端,與CLKIN端配合可由芯片自身產(chǎn)生時鐘脈沖,其頻率為1/1.1RC。圖5 ADC0804引腳圖CS:片選信號輸入端,低電平有效,一旦CS有效,
34、表明A/D轉換器被選中,可啟動工作。WR:寫信號輸入,接受微機系統(tǒng)或其它數(shù)字系統(tǒng)控制芯片的啟動輸入端,低電平有效,當CS、WR同時為低電平時,啟動轉換。。RD:讀信號輸入,低電平有效,當CS、RD同時為低電平時,可讀取轉換輸出數(shù)據(jù)。INTR:轉換結束輸出信號,低電平有效。輸出低電平表示本次轉換已完成。該信號常作為向微機系統(tǒng)發(fā)出的中斷請求信號。在使用時應注意以下幾點:(1)轉換時序:ADC0804控制信號的時序圖各控制信號時序關系
35、為:當CS ADC0804控制信號的時序圖與WR同時為低電平A/D轉換</p><p> 本次課程設計系統(tǒng)采用ADC0804AD轉換芯片采樣滑動變阻器上的電壓,其他外部電路采用芯片資料上的典型應用電路。系統(tǒng)采用AD采樣電路如圖6所示</p><p> 圖6 AD采樣電路 </p><p><b> 4 系統(tǒng)軟件設計</b><
36、/p><p> 4.1 proteus軟件環(huán)境介紹</p><p> 本系統(tǒng)的硬件設計首先是在Proteus軟件環(huán)境中仿真實現(xiàn)的。Proteus軟件是來自英國Labcenter electronics公司的EDA工具軟件,Proteus軟件有十多年的歷史,在全球廣泛使用,除了具有和其它EDA工具一樣的原理布圖、PCB自動或人工布線及電路仿真的功能外,其革命性的功能是,它的電路仿真是互動的。
37、針對微處理器的應用,還可以直接在基于原理圖的虛擬原型上編程,并實現(xiàn)軟件源碼級的實時調試。如果有顯示及輸出,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,還能看到運行后輸入輸出的效果。Proteus建立了完備的電子設計開發(fā)環(huán)境,尤其重要的是Proteus Lite可以完全免費,也可以花微不足道的費用注冊達到更好的效果。</p><p> Proteus是目前最好的模擬單片機外圍器件的工具??梢苑抡?1系列、AVR
38、、PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤,馬達,LED,AD/DA,部分SPI器件,部分IIC器件...)。其實Proteus 與 multisim比較類似,只不過它可以仿真MCU,當然,軟件仿真精度有限,而且不可能所有的器件都找得到相應的仿真模型,用開發(fā)板和仿真器當然是最好選擇,可是初學者擁有它們的可能性比較小。當然,硬件實踐還是必不可少的。在沒有硬件的情況下,Proteus能像pspice 仿真模擬/數(shù)字電
39、路那樣仿真MCU及外圍電路。另外,即使有硬件,在程序編寫早期用軟件仿真一下也是很有必要的。Proteus軟件主要具有以下幾個方面的特點:</p><p> 1、設計和仿真軟件Proteus 是一個很有用的工具,它可以幫助學生和專業(yè)人士提高他們的模擬和數(shù)字電路的設計能力。</p><p> 2、它允許對電路設計采用圖形環(huán)境,在這種環(huán)境中,可以使用一個特定符號來代替元器件,并完成不會對真實
40、電路造成任何損害的電路仿真操作。</p><p> 3、它可以仿真儀表以及可描述在仿真過程中所獲得的信號的圖表。</p><p> 4、它可以仿真目前流行的單片機,如PICS, ATMEL-AVR, MOTOROLA, 8051 等。</p><p> 5、在設計綜合性方案中,還可以利用ARES開發(fā)印制電路板。</p><p> 4.
41、2 Protel軟件環(huán)境介紹</p><p> Protel印制板設計軟件包是澳大利亞protel technology公司與1990年推出的電子CAD產(chǎn)品,具有方便、易學、實用、快速以及高速度、高步通率的特點。它采用了分層次下拉窗口菜單結構形式,用戶基本上不需要記背太多的鍵盤命令,用鼠標點擊菜單命令就能操作,protel有著很高的自動布線布通率。布通率是電子產(chǎn)CAD產(chǎn)品的一項重要指標,它反映電子元件在電路圖中
42、連接關系有多少能在印刷版圖中實現(xiàn)。在設計常用的單、雙面印制板時只要選擇適當?shù)脑季趾筒季€策略方法,protel就可以輕易的達到98%-100%的布通率。對于極少數(shù)不能布通的定方,protel可以用飛線指示出來,引導用戶用手工方法連通。另外,protel有強大的宏命令設置功能,利用宏命令功能多定義的熱鍵可以大大提高操作速度[1]。</p><p> Protel對微機的軟硬件配置要求很低:cpu在8088以上,
43、dos2.0以上版本,內存640kb以上,雙軟件(或一個軟件一個硬盤),單色顯示器(多層板設計時最好用彩色),各種兼容打印機。也能在Windows9X平臺的模擬DOS下運行。</p><p> Protel已成為印制板設計加工方面的工業(yè)標準。據(jù)初步統(tǒng)計protel在CAD的市場占有率達 95%,成為電子產(chǎn)品制造業(yè)界的首選CAD軟件。</p><p> 4.3系統(tǒng)軟件分析 </p&
44、gt;<p> 任何一個應用系統(tǒng),它們都有著自己的硬件系統(tǒng)和軟件系統(tǒng),少了任何一個部分都不可能稱之為一個完整的應用系統(tǒng),它們之間是相互依存的一個整體,硬件系統(tǒng)是軟件系統(tǒng)的一個基礎和前提,為軟件系統(tǒng)提供了一個操作平臺;而軟件系統(tǒng)是硬件系統(tǒng)的靈魂,它對硬件系統(tǒng)起到擴充和完善的作用??上攵浖到y(tǒng)與硬件系統(tǒng)同等重要,系統(tǒng)軟件設計過程為:系統(tǒng)采用AT89C51單片機進行設計,程序首先對AD進行初始化,滑動變阻器滑片的不同位置將
45、對應不同的電壓值,AD采集到的數(shù)值也不相同。通過調用轉換程序對其進行標度變換,最終顯示在LCD12864上。如果標度變換的數(shù)值小于所設定的值時,LCD12864上面將會顯示提示信息。</p><p><b> 4.4 程序流程圖</b></p><p><b> 主程序框圖:</b></p><p><b>
46、 N</b></p><p><b> Y</b></p><p><b> 圖7 主程序框圖</b></p><p><b> 數(shù)據(jù)轉換子程序:</b></p><p> 圖8 按鍵檢測子程序框圖</p><p><b
47、> 濾波子程序流程:</b></p><p><b> NY</b></p><p> 圖9 濾波子程序流程圖</p><p><b> 延時子程序框圖:</b></p><p><b> Y</b></p><p><
48、;b> N</b></p><p> Y N </p><p> 圖10 延時子程序框圖</p><p><b> 說明:</b></p><p> 該程序主要是實現(xiàn)軟件可變延時的功能,該延時子程序主要實現(xiàn)1ms延時 (程序由雙重循環(huán)嵌套實現(xiàn),外循環(huán)執(zhí)行減1操作1次,
49、內循環(huán)執(zhí)行加1操作100次。調用延時函數(shù)的實參值不同,其延時的時間不同,延時時間=實參*1ms。</p><p><b> 5 系統(tǒng)調試過程</b></p><p> 通過上面的硬件設計和軟件設計過程,設計的工作已經(jīng)基本完成,接下來的工作就是對所設計好的應用系統(tǒng)進行調試。通過調試可以檢查出系統(tǒng)出現(xiàn)的一些錯誤,從而進行下一步的修改。</p><p
50、> (1)在Protel 99 SE中,對硬件電路圖進行ERC電氣規(guī)則檢查。 </p><p> 圖 11 protel原理圖</p><p> 圖12 ERC電氣規(guī)則檢查結果</p><p> 封裝好原理圖元件生成網(wǎng)絡表加載生成PCB:如圖13</p><p> 圖13 PCB布局圖</p><p&
51、gt;<b> ?。?)程序調試</b></p><p> 程序經(jīng)過調試顯示“0錯誤,0警告”。表示程序調試通過。如 圖14 </p><p> 圖14 程序調試結果</p><p><b> protues調試</b></
52、p><p> 仿真圖建立 :系統(tǒng)采用Proteus軟件進行仿真,利用軟件自帶的仿真模塊建立系統(tǒng)的仿真圖。圖15為蓄電池電壓檢測系統(tǒng)的最小系統(tǒng)圖。</p><p> 圖15 主控芯片仿真</p><p> 系統(tǒng)采用滑動變阻器作為蓄電池的輸入電壓,通過改變滑片的位置將輸出不同的電壓。為了顯示器件的對比,在此選用了軟件自帶的電壓表進行檢測。</p>&l
53、t;p> 圖16 系統(tǒng)檢測系統(tǒng)</p><p> 系統(tǒng)采用LCD12864液晶屏作為顯示器件,其具體的仿真連接圖如下</p><p> 圖17 系統(tǒng)的顯示器件圖</p><p> 當系統(tǒng)檢測完后得到輸入電壓小于我所設定的電壓值時,顯示提示信息。當電壓正常時,不顯示。</p><p> Proteus仿真調試結果:在不同的電壓輸
54、入值中對應的顯示情況為,當調節(jié)滑動變阻器改變AD輸入值,此時可以通過電壓表觀察此時滑動變阻器的電壓為+1.8V,單片機通過采集進行程序處理,在顯示器上面對應的顯示當前值。由于此時的電壓低于設定值2V所以,此時顯示器有提示信息“電壓過低,請充電”如Proteus仿真圖(1)所示</p><p> Proteus仿真圖(1)</p><p> 當逐漸調節(jié)滑動變阻器使其電壓值大于2V時,此時
55、顯示器顯示當前的電壓值但提示信息將消失。如Proteus仿真圖(2)所示</p><p> Proteus仿真圖(2)結 論</p><p> 本此次設計過程中,我查閱了一些相關資料,使得我更深入的了解51系列單片機芯片的應用以及相關軟件、硬件的使用方法。在這段時間里,我不僅完成設計所要求的內容,也掌握了一些AT89C51芯片的具體功能。此外,設計中所涉及到的元器件還有:電容、電阻、
56、液晶顯示器、AD0804等,我通過查閱相關元器件的作用及工作原理。</p><p> 在整個設計過程中,我們不僅能將書本上學到的關于單片機相關的知識與實踐相結合,而且還培養(yǎng)了查找相關資料和自學能力。這將對我們今后的實踐提供很大的幫助。設計中還讓我意識到:理論和實踐相結合的重要性。雖然電路看上去比較簡單,但實際行動起來將會遇到許多困難。因此,設計過程中要保持一種持之以恒、嚴謹?shù)膶W習態(tài)度,這樣才會在設計過程中及時的
57、發(fā)現(xiàn)問題、解決問題。</p><p><b> 致 謝</b></p><p> 在陳飛老師的指導下,我完成了本次課程設計。陳老師是一個擁有專業(yè)知識,嚴謹治學態(tài)度,精益求精作風的老師,他的嚴以律己、寬以待人的崇高風范,樸實無華、平易近人的人格魅力對我影響深遠。在課程設計里面,他讓我重新認識到了專業(yè)知識學習的重要性,還使我明白了許多為人處世的道理。本課程設計從選題
58、到完成,都是老師指導下完成。另外,本次設計的完成也離不開各位同學給我的建議和幫助。在此,我謹向陳飛老師和幫助過我的老師和同學們,表示崇高的敬意和衷心的感謝!</p><p><b> 參考文獻</b></p><p> 1]《Protel99SE EDA 技術及應用》徐崢穎編著,北京:機械工業(yè)出版社,2005</p><p> [2]《單
59、片機系統(tǒng)的protues設計與仿真》張靖武編著,北京:電子工業(yè)出版社,2007</p><p> [3]《單片機原理及接口技術》李朝青編著,北京:北京航空航天大學出版社,2005</p><p> [4]《MCS-51單片機應用開發(fā)實用子程序》邊春遠編著,北京:人民郵電出版社,2005</p><p> [5] 劉守義編著.單片機應用技術[M].西安:西安電子
60、科技大學出版社,2002.</p><p> [6] 韓志軍編著.單片機應用系統(tǒng)設計[M].北京:機械工業(yè)出版社,2005.</p><p> [7] 張毅剛,劉喜元編著.新編MCS-51單片機應用設計[M].哈爾濱:哈爾濱工業(yè)大學出版社,2003.</p><p> [8] 唐嵐編著.汽車測試技術[M].北京:機械工業(yè)出版社,2006.</p>
61、<p><b> 附錄</b></p><p><b> ?。校茫聢D</b></p><p><b> protel原理圖</b></p><p> C程序代碼:#include <reg52.h></p><p> //#include <
62、;intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define lcm P1 </p><p> sbit p_csl=P0^4;</p><p> sbit p_
63、csr=P0^3;</p><p> sbit p_di=P0^2;</p><p> sbit p_rw=P0^1;</p><p> sbit p_e=P0^0;</p><p> sbit p_rst=P0^7;</p><p> sbit ad_INTR=P2^4;</p><p&
64、gt; sbit ad_RD=P2^5;</p><p> sbit ad_WR=P2^6;</p><p> uchar code HZ[];</p><p> uchar code Ez[];</p><p> uint shi,ge,xiao1,xiao2,xiao3,get,get_l;</p><p&g
65、t; uint dianya;//電壓實際是浮點數(shù),這個電壓實際是指AD轉化完成后得到的二進制數(shù)據(jù),電壓的范圍定位0到15V//那么得到的真實電壓應該是dianya*15整除255得到整數(shù)部分,對255取余再乘100對255取余,得到小數(shù)部分</p><p> /*****函數(shù)聲明********/</p><p> void delay(uint k);</p>&l
66、t;p> void wcode(uchar c,uchar csl,uchar csr);</p><p> void wdata(uchar c,uchar csl,uchar csr);</p><p> void set_statrline(uchar i);</p><p> void set_xy(uchar x,uchar y);</
67、p><p> void dison_off(uchar o);</p><p> void reset();</p><p> void lcd_init(void);</p><p> void lw(uchar x,uchar y,uchar dd);//寫數(shù)據(jù)函數(shù)</p><p> void disp_Hz
68、(uchar xx,uchar yy,uchar n,uchar fb);//顯示漢字</p><p> void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb);</p><p> void data_change(uint x);//數(shù)據(jù)轉化將AD得到的數(shù)據(jù)按位轉化為數(shù)字方便顯示</p><p> void Tdel
69、ay(unsigned int i);</p><p> void get0804();</p><p><b> //延時</b></p><p> void Tdelay(unsigned int i)</p><p><b> {</b></p><p>
70、while(i--);</p><p><b> }</b></p><p> void get0804()</p><p><b> {</b></p><p><b> ad_WR=0;</b></p><p> Tdelay(5) ;&
71、lt;/p><p> ad_INTR=0;</p><p> Tdelay(5) ;</p><p> ad_INTR=1;</p><p> Tdelay(5) ;</p><p><b> ad_WR=1;</b></p><p> Tdelay(5);<
72、/p><p> P1=0xff ; </p><p><b> ad_WR=0;</b></p><p> Tdelay(5);</p><p><b> ad_RD=0;</b></p><p> Tdelay(30);</p><p><
73、;b> get=P3;</b></p><p> Tdelay(5);</p><p><b> ad_RD=1;</b></p><p> Tdelay(5);</p><p><b> ad_WR=1;</b></p><p><b&g
74、t; }</b></p><p> void delay(uint k)</p><p><b> {uint i;</b></p><p> for(;k>0;k--)</p><p> {for(i=0;i<124;i++)</p><p><b&g
75、t; {;}</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //</b></p><p><b> //LCM忙判斷</b></p><p>
76、void lcd_busy(void)</p><p><b> {p_di=0;</b></p><p><b> p_rw=1;</b></p><p> /*lcm=0xff;</p><p><b> while(1)</b></p><p
77、><b> { p_e=1;</b></p><p> if(lcm<0x80)</p><p><b> break;</b></p><p><b> p_e=0;</b></p><p><b> }</b></p>
78、;<p><b> p_e=0;*/</b></p><p><b> }</b></p><p><b> //寫指令到LCM</b></p><p> void wcode(uchar c,uchar csl,uchar csr)</p><p>
79、{p_csl=csl;</p><p> p_csr=csr;</p><p> lcd_busy();</p><p><b> p_di=0;</b></p><p><b> p_rw=0;</b></p><p> lcm=c;//將變量C賦予LCM<
80、;/p><p><b> p_e=1;</b></p><p><b> p_e=0;</b></p><p><b> }</b></p><p> //寫數(shù)據(jù)到LCM子函數(shù)</p><p> void wdata(uchar c,uchar c
81、sl,uchar csr)//c表示的是要寫的數(shù)據(jù)8個二進制位</p><p> {p_csl=csl;</p><p> p_csr=csr;</p><p> lcd_busy();</p><p><b> p_di=1;</b></p><p><b> p_rw=
82、0;</b></p><p> lcm=c;//將變量C賦予LCM</p><p><b> p_e=1;</b></p><p><b> p_e=0;</b></p><p><b> }</b></p><p><b>
83、; //設定起始行</b></p><p> void set_startline(uchar i)</p><p> {i=0xc0+i;</p><p> wcode(i,1,1);</p><p><b> }</b></p><p> //定位X方向,Y方向<
84、;/p><p> void set_xy(uchar x,uchar y)</p><p> {x=x+0x40;</p><p><b> y=y+0xb8;</b></p><p> wcode(x,1,1);</p><p> wcode(y,1,1);</p><
85、;p><b> }</b></p><p><b> //屏幕開啟、關閉</b></p><p> void dison_off(uchar o)</p><p> {o=o+0x3e; //o為1為開,為0是關</p><p> wcode(o,1,1);</p>
86、<p><b> }</b></p><p><b> //復位子函數(shù)</b></p><p> void reset()</p><p> {//delay(1000);</p><p><b> p_rst=0;</b></p><
87、p> delay(20);</p><p><b> p_rst=1;</b></p><p> delay(20);</p><p><b> }</b></p><p><b> //LCM初始化</b></p><p> void
88、 lcd_init(void)</p><p> {uchar x,y;</p><p><b> reset();</b></p><p> dison_off(0);</p><p> for(y=0;y<8;y++) </p><p> { for(x=0;x<128
89、;x++)</p><p> lw(x,y,0);</p><p><b> }</b></p><p> dison_off(1);</p><p> set_startline(0);</p><p><b> }</b></p><p>
90、;<b> //寫數(shù)據(jù)到LCM</b></p><p> void lw(uchar x,uchar y,uchar dd) //先定位,再寫入數(shù)據(jù)</p><p> { if(x>=64)</p><p> { set_xy(x-64,y);</p><p> wdata(dd,0,1);//寫右
91、半屏 </p><p><b> }</b></p><p><b> else</b></p><p> { set_xy(x,y);</p><p> wdata(dd,1,0);</p><p><b> }</b></p>
92、;<p><b> }</b></p><p><b> //顯示漢字子函數(shù)</b></p><p> void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb)//xx為該行第xx個字,共8字,yy為第幾行,共8行,n為字庫中第N個字。</p><p> {u
93、char i,dx;</p><p> for(i=0;i<16;i++)</p><p> {dx=HZ[2*i+n*32]; //2*i為選擇偶數(shù)行,因其為列掃描 一個字在X方向應該是16個像素,因為用的是整列16個從上到下編碼每一列占兩個字符</p><p><b> if(fb)</b></p><p
94、> dx=255-dx;//反白顯示</p><p> lw(xx*16+i,yy,dx);</p><p> dx=HZ[(2*i+1)+n*32];</p><p><b> if(fb)</b></p><p> dx=255-dx;</p><p> lw(xx*16+i
95、,yy+1,dx);</p><p><b> }</b></p><p><b> }</b></p><p> void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb)//顯示數(shù)字或英語</p><p> { uchar i,dx;</p&
96、gt;<p> for(i=0;i<8;i++)</p><p> {dx=Ez[2*i+n*16];</p><p><b> if(fb)</b></p><p> dx=255-dx;</p><p> lw(xx*8+i,yy,dx);//</p><p>
97、 dx=Ez[(2*i+1)+n*16];</p><p><b> if(fb)</b></p><p> dx=255-dx;</p><p> lw(xx*8+i,yy+1,dx);</p><p><b> }</b></p><p><b>
98、}</b></p><p> void filter()//限幅濾波</p><p><b> {</b></p><p><b> int x;</b></p><p> x=get-get_l;</p><p> if(x>10 & x
99、<-10) dianya=get_l;</p><p> else dianya=get;</p><p> get_l=get;</p><p><b> }</b></p><p> void data_change(uint x)</p><p><b> {&l
100、t;/b></p><p><b> uint i,j;</b></p><p> i=(x*15)/255;</p><p> j=((x*15)%255)*200/51;//本來應該是 ((x*15)%255)*1000/255 會出現(xiàn)溢出</p><p><b> shi=i/10;<
101、;/b></p><p><b> ge=i%10;</b></p><p> xiao1=j/100;</p><p> xiao2=j%100/10;</p><p> xiao3=j%100%10;</p><p><b> }</b></p>
102、;<p> /*****主函數(shù)****/</p><p> void main()</p><p> {uchar loop,j;//</p><p> uchar fb=0;</p><p> lcd_init();</p><p> delay(300);</p><
103、p> for(loop=0;loop<8;loop++)//行1</p><p> { disp_Hz(loop,0,loop,fb);</p><p><b> }</b></p><p> //dianya=111;</p><p><b> while(1)</b><
104、;/p><p><b> {</b></p><p> get0804();</p><p><b> filter();</b></p><p> data_change(dianya);</p><p><b> fb=0;</b></p
105、><p><b> if(shi)</b></p><p> disp_Ez(4,4,shi,fb);</p><p><b> else</b></p><p> disp_Ez(4,4,12,fb); </p><p> disp_Ez(5,4,ge,fb);<
106、;/p><p> disp_Ez(6,4,10,fb);</p><p> disp_Ez(7,4,xiao1,fb);</p><p> disp_Ez(8,4,xiao2,fb); </p><p> disp_Ez(9,4,xiao3,fb);</p><p> disp_Ez(10,4,11,fb); &
107、lt;/p><p> if(dianya<=34)</p><p><b> {</b></p><p><b> j++;</b></p><p><b> if(j<5)</b></p><p><b> {</b&
108、gt;</p><p><b> fb=0;</b></p><p><b> }</b></p><p><b> if(j>=5)</b></p><p><b> {</b></p><p><b>
109、 fb=1;</b></p><p> if(j==10) j=0;</p><p><b> }</b></p><p> for(loop=0;loop<8;loop++)//行1</p><p> { disp_Hz(loop,6,loop+8,fb);</p><p&
110、gt;<b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> fb=0;</b></p><
111、p> for(loop=0;loop<16;loop++)//行1</p><p> { disp_Ez(loop,6,12,fb);</p><p><b> }</b></p><p><b> }</b></p><p><b> } </b><
112、;/p><p><b> }</b></p><p> uchar code HZ[]=</p><p><b> {</b></p><p> 0x00,0x00,0x40,0x40,0x42,0x44,0x44,0x44,</p><p> 0x58,0x44,0x
113、40,0x44,0x40,0x44,0x7F,0x44,</p><p> 0x40,0x44,0x40,0x44,0x50,0x44,0x48,0x44,</p><p> 0xC6,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,/*"當",0*/</p><p> 0x08,0x00,0x08,0x00,0xE8
114、,0xFF,0x29,0x09,</p><p> 0x2E,0x49,0x28,0x89,0xE8,0x7F,0x08,0x00,</p><p> 0x08,0x00,0xC8,0x0F,0x0C,0x40,0x0B,0x80,</p><p> 0xE8,0x7F,0x08,0x00,0x08,0x00,0x00,0x00,/*"前"
115、,1*/</p><p> 0x12,0x00,0x12,0x00,0x12,0xFA,0x52,0xAA,</p><p> 0x77,0xAB,0x52,0xAB,0xD2,0xAA,0xDA,0xFA,</p><p> 0x52,0xAA,0x52,0xAA,0x37,0xAA,0x92,0xAA,</p><p> 0x12
116、,0xFB,0x12,0x06,0x12,0x00,0x00,0x00,/*"蓄",2*/</p><p> 0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,</p><p> 0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,</p><p> 0x88,0x88,0x88,0
117、x88,0x88,0x88,0x88,0x88,</p><p> 0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*"電",3*/</p><p> 0x10,0x04,0x60,0x04,0x02,0x7E,0xCC,0x01,</p><p> 0x80,0x00,0x80,0x00,0xFC,0x3
118、F,0x40,0x40,</p><p> 0x20,0x40,0xFF,0x4F,0x10,0x40,0x08,0x44,</p><p> 0xF8,0x47,0x00,0x40,0x00,0x78,0x00,0x00,/*"池",4*/</p><p> 0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,
119、</p><p> 0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,</p><p> 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,</p><p> 0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*"電",5*/</p>
120、<p> 0x00,0x80,0x00,0x60,0xFE,0x1F,0x02,0x40,</p><p> 0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,</p><p> 0xFA,0x7F,0x82,0x40,0x82,0x40,0x82,0x44,</p><p> 0x82,0x58,0x82,0x40,
121、0x02,0x40,0x00,0x00,/*"壓",6*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x
122、00,0x00,</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*":",7*/</p><p> 0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,</p><p> 0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,<
123、/p><p> 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,</p><p> 0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*"電",0*/</p><p> 0x00,0x80,0x00,0x60,0xFE,0x1F,0x02,0x40,</p><
124、p> 0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,</p><p> 0xFA,0x7F,0x82,0x40,0x82,0x40,0x82,0x44,</p><p> 0x82,0x58,0x82,0x40,0x02,0x40,0x00,0x00,/*"壓",1*/</p><p> 0x40,
125、0x00,0x40,0x40,0x42,0x20,0xCC,0x1F,</p><p> 0x00,0x20,0x08,0x40,0x48,0x40,0x88,0x41,</p><p> 0x08,0x40,0x08,0x48,0x08,0x50,0xFF,0x4F,</p><p> 0x08,0x40,0x08,0x40,0x08,0x40,0x00,0
126、x00,/*"過",2*/</p><p> 0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,</p><p> 0x07,0x00,0x00,0x00,0xFC,0xFF,0x84,0x40,</p><p> 0x84,0x20,0x84,0x00,0xFE,0x41,0x82,0x8E,</p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理及應用課程設計--汽車蓄電池電壓檢測系統(tǒng)
- 微機原理及應用課程設計--汽車蓄電池電壓檢測系統(tǒng).doc
- 微機檢測課程設計---蓄電池電量采集系統(tǒng)設計及仿真
- 模擬電路課程設計-汽車蓄電池電壓監(jiān)視器設計
- 微機原理課程設計----電壓采集系統(tǒng)
- 蓄電池智能檢測系統(tǒng)設計
- 基于單片機的蓄電池電量檢測系統(tǒng)課程設計
- 直流屏蓄電池檢測系統(tǒng)設計
- 電動汽車蓄電池容量快速檢測系統(tǒng)設計
- 畢業(yè)論文--蓄電池單體電池電壓監(jiān)控系統(tǒng)設計
- 微機原理及應用課程設計
- 蓄電池檢測及均衡系統(tǒng)的研究.pdf
- 電動汽車蓄電池容量快速檢測系統(tǒng)設計-開題報告
- 汽車用蓄電池管理系統(tǒng).pdf
- 汽車蓄電池概述介紹
- 汽車蓄電池概述介紹
- 蓄電池智能檢測系統(tǒng)設計-畢業(yè)設計論文
- 基于多頻點技術的蓄電池內阻在線檢測及蓄電池內阻與蓄電池
- 蓄電池容量檢測技術與應用
- 電動汽車蓄電池管理系統(tǒng).pdf
評論
0/150
提交評論