

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于雙MCU的數(shù)字示波器</p><p><b> 摘 要</b></p><p> 數(shù)字示波器與傳統(tǒng)的模擬示波器在工作方式上,區(qū)別很大,它是由高速A/D轉(zhuǎn)換器將模擬信號轉(zhuǎn)換成數(shù)字信號,然后送給單片機(jī)、DSP、ARM等高速微型處理器,微處理器經(jīng)過通過計算,重新在液晶屏繪出波形圖,以便于我們進(jìn)行觀測。它一般支持多級菜單,能提供給用戶多種選擇,
2、多種分析功能。還有一些示波器可以提供存儲,實現(xiàn)對波形的保存和處理。 </p><p> 近年來,由于集成電子技術(shù)的迅速發(fā)展,A/D轉(zhuǎn)換芯片的轉(zhuǎn)換速度得到大幅度提高,高速A/D轉(zhuǎn)換器的價格也日趨下降,這樣使得數(shù)字示波器在性價比上,也得到巨大的提升。如今市場上有很多數(shù)字示波器已經(jīng)做成手持式的,較小的體積,攜帶非常方便,而且其性能也是非常強(qiáng)大,可以達(dá)到100MHz的采樣頻率,可以滿足絕大部分用戶的需求。而且現(xiàn)在的數(shù)字
3、示波器可以很容易的觀測到頻率很低的信號圖像,這是模擬示波器所不能實現(xiàn)的(模擬示波器在測量頻率很低的信號時,只能看到一個點在移動,無法看到整個波形變化)。</p><p> 本數(shù)字示波器采用比較常用的高性價比芯片,采樣頻率與市場上的數(shù)字示波器相比,低了很多,但用于平時的常用電路檢測,音頻電壓測試等還是夠用的。該示波器采用的新一代的增強(qiáng)型8051單片機(jī)STC12C5A60S2作為微處理器,其運算速度是普通8051單
4、片機(jī)的8—12倍,且指令系統(tǒng)與傳統(tǒng)8051單片機(jī)完全兼容,使用該款單片機(jī)能夠使該數(shù)字示波器的采樣頻率更上一個臺階?;贏/D轉(zhuǎn)換芯片的價格與電路設(shè)計的簡便,我選擇了TLC0820這款高速A/D轉(zhuǎn)換芯片,TLC0820是一款經(jīng)過改進(jìn)的高速8位并行模數(shù)轉(zhuǎn)換器,該芯片的A/D轉(zhuǎn)換時間典型值為1.6μs,最大2.5μs,之所以選擇這款,最主要的原因是該器件無需外部時鐘和附加元件,這樣使得外部電路簡單很多。</p><p>
5、;<b> ABSTRACT</b></p><p><b> 目 錄</b></p><p> 1.示波器的整體介紹………………………………………………………1</p><p> 1.1 模擬示波管示波器的介紹…………………………………………4</p><p> 1.2 數(shù)字示波器
6、的介紹………………………………………………………7</p><p> 1.3 數(shù)字示波器與模擬示波器的優(yōu)缺點……………………………7</p><p> 硬件電路設(shè)計……………………………………………………………25</p><p> 2.1 單片機(jī)選型…………………………………………………………………27</p><p> 2.2 程
7、控放大電路………………………………………………………………27</p><p> 2.3 AD轉(zhuǎn)換電路………………………………………………………………27</p><p> 2.4 兩單片機(jī)之間的通訊電路……………………………………………27</p><p> 2.5 單片機(jī)外部輸入電路……………………………………………………27</p>
8、<p> 2.6 液晶顯示屏驅(qū)動電路……………………………………………………27</p><p> 2.7 其它部分電路………………………………………………………………27</p><p> 2.8 原理圖與PCB圖……………………………………………………………27</p><p> 3.MCU軟件設(shè)計…………………………………………………………
9、…25</p><p> 2.1 程序流程圖…………………………………………………………………27</p><p> 2.2 單片機(jī)程序源代碼………………………………………………………27</p><p> 1 示波器的整體介紹</p><p> 1.1 示波器的工作原理 </p><p> 1.1.1
10、 模擬示波管示波器的介紹</p><p> 模擬示波器利用狹窄的、由高速電子組成的電子束,打在涂有熒光物質(zhì)的屏面上,就可產(chǎn)生細(xì)小的光點。在被測信號的作用下,電子束就好像一支筆的筆尖,可以在屏面上描繪出被測信號的瞬時值的變化曲線。利用示波器能觀察各種不同信號幅度隨時間變化的波形曲線,還可以用它測試各種不同的電量,如電壓、電流、頻率、相位差、調(diào)幅度等等。</p><p> 從下面的示波管結(jié)
11、構(gòu)圖可以看出,只要控制X軸偏轉(zhuǎn)板和Y軸偏轉(zhuǎn)板上的電壓,就能控制示波管顯示的圖形形狀。我們知道,一個電子信號是時間的函數(shù)f(t),它隨時間的變化而變化。因此,只要在示波管的X軸偏轉(zhuǎn)板上加一個與時間變量成正比的電壓,在y軸加上被測信號(經(jīng)過比例放大或者縮小),示波管屏幕上就會顯示出被測信號隨時間變化的圖形。 </p><p> 1.1.2 數(shù)字示波器的介紹</p><p> 數(shù)字示波
12、器是一款用于顯示被測量的瞬時值軌跡變化情況的儀器,它是帶數(shù)據(jù)記錄功能的示波器。它一般支持多級菜單,能提供給用戶多種選擇,多種分析功能。還有一些示波器可以提供存儲,實現(xiàn)對波形的保存和處理。</p><p> 數(shù)字示波器首先對模擬信號進(jìn)行高速采樣獲得相應(yīng)的數(shù)字?jǐn)?shù)據(jù)并存儲。用數(shù)字信號處理技術(shù)對采樣得到的數(shù)字信號進(jìn)行相關(guān)處理與運算,從而獲得所需的各種信號參數(shù)(包括可能需要使用萬用表測試的一些元器件電氣參數(shù))。根據(jù)得到的
13、信號參數(shù)繪制信號波形, 并可對被測信號進(jìn)行實時的、瞬態(tài)的分析,以方便用戶了解信號質(zhì)量,快速準(zhǔn)確地進(jìn)行故障的診斷。</p><p> 測量開始時,操作者可通過中文界面選定測量類型(波形測量、元件測量)、測量參數(shù)(頻率/周期、有效值、電阻阻值、二極管通斷等)及測量范圍(可選自動設(shè)置,由儀器自動設(shè)置最佳范圍) ;微處理器自動將測量設(shè)置解釋到采樣電路,并啟動數(shù)據(jù)采集;采集完成后,由微處理器對采樣數(shù)據(jù)按測量設(shè)置進(jìn)行處理,
14、提取所需要的測量參數(shù),并將結(jié)果送顯示部件。如果需要,用戶可選擇自動測試方式:微處理器在分析首次采樣得到的數(shù)據(jù)后會根據(jù)具體情況調(diào)整、修改測量設(shè)置,并重新采樣。在經(jīng)過幾次這樣的“采樣-分析-調(diào)整-重采樣”循環(huán)后,示波表即可完成即觸即測功能,而無須人工調(diào)換量程,便于手持操作。</p><p> 數(shù)字示波器采樣一般都是采用8位的高速的AD轉(zhuǎn)換器,相對于其他設(shè)備,其AD采集的精度的確非常低,不過對于一般用戶來說,用來分辨
15、電壓變化波形還是足夠的。不過數(shù)字示波器的AD芯片對AD轉(zhuǎn)換速度要求非常高,這樣才能顯示出高頻的信號的波形。</p><p> 1.3 數(shù)字示波器與模擬示波器的優(yōu)缺點</p><p> 近些年,隨著數(shù)字電子技術(shù)的迅猛發(fā)展,數(shù)字示波器的性能也得到非常大的提高。在很多性能方面,數(shù)字示波器的優(yōu)勢是不言而喻的。</p><p><b> 數(shù)字示波器的優(yōu)點:&l
16、t;/b></p><p> 體積小,便于攜帶,方便現(xiàn)場測試。</p><p> 數(shù)字示波器一般采用液晶屏作為顯示器,功耗低,價格便宜。</p><p> 具有自動測量功能,便于快速調(diào)節(jié)。</p><p><b> 具有信號存儲功能。</b></p><p> 可以顯示頻率很低信號
17、的波形,而模擬示波器只能看到一個點在移動,看不出完整波形情況。</p><p> 數(shù)字示波器雖然好用,但也有些其不盡人意的地方。由于數(shù)字示波器所顯示的波形并非原始信號的波形,而是通過AD轉(zhuǎn)換后產(chǎn)生的數(shù)字信號送給MCU,通過MCU強(qiáng)大的計算能力,在液晶屏上重新模擬出波形。所以從其基本原理上就可以看出,數(shù)字示波器的實時性是比較差的。</p><p> 相對于后起之秀數(shù)字示波器,傳統(tǒng)模擬示波
18、器的某些特點,是數(shù)字示波器所不具備的。</p><p><b> 模擬示波器優(yōu)點:</b></p><p> 垂直分辨率高,連續(xù)而且無限級,數(shù)字示波器分辨率一般只有8為至10為。</p><p> 數(shù)據(jù)更新,每秒捕捉幾十萬波形,數(shù)字示波器每秒捕捉幾十個波形。</p><p> 實時寬帶和事實顯示,連續(xù)波形與單次波
19、形的帶寬相同,數(shù)字示波器的帶寬與取樣率密切相關(guān),取樣率不高時需借助內(nèi)插計算,容易出現(xiàn)混淆波形。</p><p> 當(dāng)然模擬示波器的缺點也是顯而易見的,一般模擬示波器價格較貴,體積較大,且機(jī)內(nèi)有用于電子加速的高壓電,安全性差。</p><p><b> 硬件電路設(shè)計</b></p><p> 對于示波器而言,硬件設(shè)計至關(guān)重要,它直接決定了示
20、波器測量的精度,和最大采樣速度。要想更好的還原出真實波形,示波器的數(shù)據(jù)處理量是比較大的,而且對處理速度也有很高的要求,所以該示波器采用“雙核”結(jié)構(gòu),兩片新型高速單片機(jī)協(xié)同工作,MCU1用于AD轉(zhuǎn)換,頻率測量,MCU2用于數(shù)據(jù)處理,彩色液晶屏控制。按鍵、編碼器等輸入部分由兩片單片機(jī)共同完成的,兩片單片機(jī)通過對一片雙端口RAM的讀寫,進(jìn)行高速通訊。</p><p> 目標(biāo)信號從探頭輸入,進(jìn)入程控放大(衰減)電路進(jìn)行
21、放大(衰減),放大(衰減)后的信號一路被送入高速AD轉(zhuǎn)換器,進(jìn)行AD轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)存入雙端口RAM,并通知MCU2取數(shù)據(jù);另一路直接送入MCU1的計數(shù)器引腳,進(jìn)行頻率測量,測量結(jié)果寫入雙端口RAM的特殊地址區(qū)。MCU2接到數(shù)據(jù)已更新的通知后,立馬從雙端口RAM中讀出數(shù)據(jù),經(jīng)過數(shù)據(jù)處理后,在液晶屏上顯示波形、頻率和電壓等信息。同時MCU1通過對兩個旋轉(zhuǎn)編碼器的信號采集,從而確定掃描周期和垂直靈敏度。</p><p&
22、gt;<b> 系統(tǒng)框圖如下:</b></p><p><b> 2.1 單片機(jī)選型</b></p><p> 2.1.1 STC12C5A60S2單片機(jī)簡介</p><p> STC12C5A60S2單片機(jī)是宏晶科技生產(chǎn)的單時鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超?抗干擾的新一代8051單片機(jī),指令代碼
23、完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S,即25萬次/秒),針對電機(jī)控制,強(qiáng)干擾場合。</p><p> 1.增?型8051CPU,1T,單時鐘/機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051</p><p><b> 2.工作電壓:</b></p><p&
24、gt; STC12C5A60S2系列工作電壓:5.5V - 3.5V(5V單片機(jī))</p><p> STC12LE5A60S2 系列工作電壓:3.6V - 2.2V(3V單片機(jī))</p><p> 3.工作頻率范圍:0~35MHz,相當(dāng)于普通8051的0~420MHz</p><p> 4.用戶應(yīng)用程序空間 8K /16K / 20K
25、 / 32K / 40K / 48K / 52K / 60K / 62K 字節(jié)</p><p> 5.片上集成1280字節(jié)RAM</p><p> 6.通用I/O口(36/40/44個),復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口)可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,強(qiáng)推挽/強(qiáng)上拉,僅為輸入/高阻,開漏。每個I/O口驅(qū)動能力均可達(dá)到20mA,但整個芯片最大不要超過1
26、20mA</p><p> 7.ISP(在系統(tǒng)可編程)/ IAP(在應(yīng)用可編程),無需專用編程器,無需專用仿真器可通過串口(P3.0/P3.1)直接下載用戶程序,數(shù)?即可完成一片</p><p> 8.有EEPROM功能(STC12C5A62S2/AD/PWM無內(nèi)部EEPROM)</p><p><b> 9.看門狗</b><
27、/p><p> 10.內(nèi)部集成MAX810專用復(fù)位電路(外部晶體12M以下時,復(fù)位腳可直接1K電阻到地)</p><p> 11.外部掉電檢測電路:在P4.6口有一個低壓門檻比較器</p><p> 5V單片機(jī)為1.33V,誤差為±5%,3.3V單片機(jī)為1.31V,誤差為±3%</p><p> 12.時鐘源:
28、外部高精度晶體/時鐘,內(nèi)部R/C振蕩器(溫漂為±5%到±10%以內(nèi))</p><p> 用戶在下載用戶程序時可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時 鐘</p><p> 常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz ~ 17MHz</p><p> 3.3V單片機(jī)為:8MHz ~ 12MHz<
29、/p><p> 精度要求不高時,可選擇使用內(nèi)部時鐘,但因為有制造誤差和溫漂,以實際測試為準(zhǔn)</p><p> 13.共4個16位定時器</p><p> 兩個與傳統(tǒng)8051兼容的定時器/計數(shù)器,16位定時器T0和T1,沒有定時器2,但有獨立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再加上2路PCA模塊可再實現(xiàn)2個16位定時器</p><p>
30、 14.3個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘,獨立波特率發(fā)生器可以在P1.0口輸出時鐘</p><p> 外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊,Power Down模式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, RxD/P3.0,CCP0/P1.3(
31、也可通過寄存器設(shè)置到P4.2), CCP1/P1.4(也可通過寄存器設(shè)置到P4.3)</p><p> PWM(2路)/ PCA(可編程計數(shù)器陣列,2路)</p><p> ---也可用來當(dāng)2路D/A使用</p><p> ---也可用來再實現(xiàn)2個定時器</p><p> ---也可用來再實現(xiàn)2個外部中斷(上升沿中斷/下降沿中斷
32、均可分別或同時支持)</p><p> 17.A/D轉(zhuǎn)換,10位精度ADC,共8路,轉(zhuǎn)換速度可達(dá)250K/S(每秒鐘25萬次)</p><p> 18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時器或PCA軟件實現(xiàn)多串口</p><p> 19.STC12C5A60S2系列有雙串口,后綴有S2標(biāo)志的才有雙串口,RxD
33、2/P1.2(可通過寄存器設(shè)置到P4.2),TxD2/P1.3(可通過寄存器設(shè)置到P4.3)</p><p> 20.工作溫度范圍:-40 ~ +85℃(工業(yè)級)/0 ~ 75℃(商業(yè)級)</p><p> 21.封裝:LQFP-48, LQFP-44, PDIP-40, PLCC-44, QFN-40,I/O口不夠時,可用2到3根普通I/O口線外接74HC164/165/595(
34、均可級聯(lián))來擴(kuò)展I/O口,還可用A/D做按鍵掃描來節(jié)省I/O口,或用雙CPU,三線通信,還多了串口。</p><p> 2.1.2 STC12C5A60S2系列單片機(jī)管腳圖</p><p> STC12C5A60S2系列(有第二串口,有A/D轉(zhuǎn)換,有PWM/PCA功能,有內(nèi)部EEPROM)</p><p> STC12C5A60AD系列(無第二串口,有A/D轉(zhuǎn)
35、換,有PWM/PCA功能,有內(nèi)部EEPROM)</p><p> STC12C5A60PWM/CCP系列(無第二串口,無A/D轉(zhuǎn)換,有PWM/CCP功能,有內(nèi)部EEPROM)</p><p> STC MCU 由P4SW寄存器設(shè)置(NA/P4.4,ALE/P4.5,EX_LVD/P4.6)三個端口的第二功能</p><p> STC NA/P4.4: 0,復(fù)
36、位后P4SW.4=0,NA/P4.4腳是弱上拉,無任何功能</p><p> 1,通過設(shè)置P4SW.4=1,將NA/P4.4腳設(shè)置成I/O口(P4.4)</p><p> ALE/P4.5: 0,復(fù)位后P4SW.5=0,ALE/P4.5腳是ALE信號,只有在用MOVX指令訪問片外擴(kuò)展器件時才有信號輸</p><p>
37、 1,通過設(shè)置P4SW.5=1,將ALE/P4.5腳設(shè)置成I/O口(P4.5)</p><p> EX_LVD/P4.6:0,復(fù)位后P4SW.6=0,EX_LVD/P4.6是外部低壓檢測腳,可使用查詢方式或設(shè)置成中斷來檢測</p><p> 1,通過設(shè)置P4SW.6=1,將EX_LVD/P4.6腳設(shè)置成I/O口(P4.6)</p><p> 在ISP
38、燒錄程序時設(shè)置RST/P4.7的第二功能</p><p> RST/P4.7在ISP燒錄程序時選擇是復(fù)位腳還是P4.7口,如設(shè)置成P4.7口,必須使用外部時鐘。</p><p> 由AUXR1寄存器設(shè)置(PCA/PWM/SPI/UART2)是在P1口還是在P4口</p><p> PCA_P4: 0,復(fù)位后AUXR1.6=0,PCA/PWM在P1口</p
39、><p> 1,通過設(shè)置AUXR1.6=1,將PCA/PWM從P1口切換到P4口</p><p> SPI_P4: 0,復(fù)位后AUXR1.5=0,SPI在P1口</p><p> 1,通過設(shè)置AUXR1.5=1,將SPI從P1口切換到P4口</p><p> S2_P4: 0,復(fù)位后AUXR1.4=0,UART2/串口2在P1口(僅針對
40、雙串口單片機(jī)有效)</p><p> 1,通過設(shè)置AUXR1.4=1,將UART2/串口2從P1口切換到P4口(僅針對雙串口單片機(jī)有效)</p><p> 2.1.3 STC12C5A60S2系列單片機(jī)的內(nèi)部結(jié)構(gòu)</p><p> STC12C5A60S2系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如下圖所示。STC12C5A60S2單片機(jī)中包含中央處理器(CPU)、程序存儲器(
41、Flash)、數(shù)據(jù)存儲器(SRAM)、定時/計數(shù)器、UART串口、串口2、I/O接口、高速A/D轉(zhuǎn)換、SPI接口、PCA、看門狗及片內(nèi)R/C振蕩器和外部晶體振蕩電路等模塊。STC12C5A60S2系列單片機(jī)幾乎包含了數(shù)據(jù)采集和控制中所需的所有單元模塊,可稱得上一個片上系統(tǒng)。</p><p> 2.2 程控放大電路</p><p> 該部分電路采用模擬開關(guān)芯片CD4051來控制通道的選擇
42、,通過選擇不同的通道,改變接入運算放大電路的反饋電阻的阻值,從而改變運算放大電路的放大衰減倍數(shù),以便把輸入電壓調(diào)整到適合AD轉(zhuǎn)換芯片采集的范圍。</p><p> CD4051它允許雙向使用,即可用多到一的切換輸出,也可用于一到多的輸出切換。由于多路開關(guān)的導(dǎo)通電阻Ron比機(jī)械開關(guān)大得多,對控制增益放大的增益影響較明顯,所以在反饋電阻計算式時要考慮CD4051的導(dǎo)通電阻。經(jīng)實際測試當(dāng)Vdd=5V,Vee=0V時,
43、CD4051的Ron=280Ω。</p><p> 該部分電路中運算放大器選用較為常見得LF353,該運算放大器最大雙電源電壓:±18V ,由于AD轉(zhuǎn)換器的輸入電壓范圍為0—5V,故這里采用雙電源電壓:±18V。</p><p> 從上面的電路圖,我們可以看出:</p><p><b> 一級放大輸出電壓</b><
44、;/p><p> Uo1=Rf(Vdd/Rw2-Ui/R3);</p><p> Rf=Ron+R?;</p><p> 其中Ui為輸入電壓,R?為CD4051所選通道電阻。</p><p><b> 二級放大輸出電壓</b></p><p> Uo2=R5(Vcc/Rw2-Uo1/R4);
45、</p><p> 2.2 AD轉(zhuǎn)換電路</p><p> 該部分電路的AD轉(zhuǎn)換芯片為TLC0820,單片機(jī)采用片外尋址的方式對其操作,這樣使得程序變得非常簡單,僅僅只需一條片外尋址指令就可讀出AD轉(zhuǎn)換結(jié)果,同樣啟動AD轉(zhuǎn)換也只需一條片外尋址指令。</p><p><b> 芯片簡介:</b></p><p>
46、 TLC0820是德州儀器公司(TI)推出的,采用先進(jìn)LinCMOS工藝制造的8位A/D轉(zhuǎn)換器,它由2個4位的閃速(FLASH)轉(zhuǎn)換器,1個4位的數(shù)模轉(zhuǎn)換器,1個計算誤差放大器,控制邏輯電路和結(jié)果鎖存電路組成。其可校正的FLASH技術(shù)可以保證芯片在工作溫度范圍內(nèi)完成一個8位轉(zhuǎn)換僅僅需要1.18us。芯片的跟蹤保持電路有100ns的采樣窗口,它允許芯片以100mV/us的轉(zhuǎn)換率轉(zhuǎn)換連續(xù)的模擬信號而不需要外部的采樣電路。TTL兼容的3態(tài)輸出
47、驅(qū)動和2種操作模式可以方便的與各種微處理器接口。</p><p> 從上面的介紹和電路圖都可以看出,這款高速AD轉(zhuǎn)換芯片的外圍電路非常簡單,這是我選擇這塊芯片的很重要的原因。有人可能會說采用8位的AD轉(zhuǎn)換芯片是否精度太低了,其實不然。因為我們使用示波器主要是看信號波形的變化,而不是為了測量電壓。而且該示波器采用的液晶屏分辨率為320*240,其垂直方向為240格,而8為AD轉(zhuǎn)換器的轉(zhuǎn)換結(jié)果為0—255,已經(jīng)超出
48、液晶屏的分辨率,所以說8位AD轉(zhuǎn)換器是完全足夠的。該芯片屬于高速AD轉(zhuǎn)換器,速度轉(zhuǎn)換頻率可達(dá)500K Hz,相對于一般AD轉(zhuǎn)換芯片,速度還是非??捎^的。但用于示波器AD轉(zhuǎn)換,就顯得有些慢了,這對于示波器來說也是個致命的缺陷。之所以還是選擇了這款A(yù)D轉(zhuǎn)換器,主要原因還是其外圍電路簡單,且是DIP封裝,便于測試、安裝。</p><p><b> AD轉(zhuǎn)換程序如下:</b></p>
49、<p> unsigned char ad()</p><p><b> {</b></p><p> XBYTE[0x1fff]=0xff; //啟動AD轉(zhuǎn)換</p><p> while(P11==0); //等待轉(zhuǎn)換結(jié)束</p><p> return(XBYTE[0x0f
50、ff]);//返回AD轉(zhuǎn)換結(jié)果</p><p><b> }</b></p><p> 兩單片機(jī)之間的通訊電路</p><p> 該部分電路采用了一片雙端口RAMIDT7132芯片作為數(shù)據(jù)傳輸?shù)暮诵钠骷?,兩單片機(jī)都采用片外尋址的方式對IDT7132進(jìn)行讀寫,程序非常簡單明了,而且也可以作為片外RAM使用,便于存儲大量AD轉(zhuǎn)換的數(shù)據(jù)。<
51、;/p><p> 該IDT7132是高速2K x 8雙端口靜態(tài)RAMs。該IDT7132被設(shè)計用來作為8-bit雙口RAM的獨立或作為“主人”雙口RAM一起IDT7142“奴隸”雙端口在16-bit-or-more字寬系統(tǒng)。使用IDT主/從屬雙口RAM記憶體系統(tǒng)的做法,16-or-more-bit在全速,無差錯操作的應(yīng)用結(jié)果,而不需要額外的分立邏輯.這兩款器件提供兩個獨立的控制獨立端口,地址,和L /允許獨立的,異
52、步訪問的O pins讀取或?qū)懭雰?nèi)存中的任何位置.自動關(guān)機(jī)功能,控制CE允許每個端口的片上電路進(jìn)入一個非常低的待機(jī)功耗模式。制作中,采用IDT的CMOS高性能技術(shù),這些設(shè)備通常只經(jīng)營權(quán)力325mW。低功耗(LA)版本提供電池備份的數(shù)據(jù)保存能力,每雙端口,通常從200µW消耗電池2V。該IDT7132/7142器件封裝在一個48-pin sidebraze或塑料DIPs, 48-pin LCCs, 52-pin PLCCs和48-
53、lead flatpacks。軍用級產(chǎn)品是符合最新修訂MIL-PRF-38535 QML,因此非常適合于軍事高溫應(yīng)用的性能要求最高水平和可靠性。</p><p> 該IDT7132提供兩個單獨的控制端口,地址和I / O pins允許讀取或獨立訪問寫入內(nèi)存中的任何位置。有一本IDT7132/IDT7142自動斷電功能控制CE.該CE控制上芯片掉電電路,允許到相應(yīng)的端口去待機(jī)模式時,沒有選擇(CE =VIH)。當(dāng)
54、一個端口被啟用,訪問整個存儲器陣列是允許的。</p><p> 忙碌的邏輯提供了硬件的跡象表明這兩個端口已存取內(nèi)存在同一時間同一地點.它還允許兩個人進(jìn)行訪問,并通知對方該RAM是“忙”。該忙引腳可被用來搪塞訪問,直到對對方的行動已經(jīng)完成.如果寫入操作一直試圖從側(cè)面接收一個忙指示,寫門控信號,以防止內(nèi)部寫的進(jìn)行。使用忙邏輯并不需要或適宜的所有應(yīng)用系統(tǒng)蒸發(fā)散。在某些情況下,它可能是有用的邏輯或的忙輸出一起使用任何忙
55、指示作為國旗的中斷源事件一非法或不合理的操作該忙在IDT7132 RAM的主輸出的圖騰柱類型輸出,并且不需要上拉電阻進(jìn)行操作.如果這些RAMs是正在擴(kuò)大深入,則忙顯示的結(jié)果數(shù)組不需要外部與門的使用。</p><p> 2.4 單片機(jī)外部輸入電路</p><p> 關(guān)于這部分電路,按鍵開關(guān)這里就不在多講了,主要講下旋轉(zhuǎn)編碼開關(guān)這種新型電子器件。</p><p>
56、 小型旋轉(zhuǎn)編碼器,又稱旋轉(zhuǎn)編碼開關(guān),是指具有一組有規(guī)律且嚴(yán)格時 序脈沖的開關(guān)電子元器件。通過與IC的配合,起到遞增,遞減,翻頁等功能,例:鼠標(biāo)的翻頁,菜單的選擇,音響的聲音與調(diào)節(jié),頻率的調(diào)節(jié),多仕爐的溫度調(diào)節(jié),醫(yī)用器械的頻率調(diào)節(jié)等。按結(jié)構(gòu)可將其分為機(jī)械式旋轉(zhuǎn)編碼開關(guān)和光電式旋轉(zhuǎn)編碼開關(guān)。所謂機(jī)械式旋轉(zhuǎn)編碼開關(guān),是指通過信號配合零件的規(guī)律轉(zhuǎn)動或(移動)形成觸點接觸而產(chǎn)生規(guī)律脈沖的編碼產(chǎn)品,其壽命具有較大的局限性;光電式旋轉(zhuǎn)編碼開關(guān),是指
57、通過光源耦合,形成的無接觸點接觸而產(chǎn)生規(guī)律脈沖的編碼產(chǎn)品,其壽命極長。</p><p> 上圖中的旋轉(zhuǎn)編碼器是比較常見的一種,具有左轉(zhuǎn),右轉(zhuǎn),按下三個功能。4、5腳是中間按下去的開關(guān)接線 1 、2、 3腳一般是中間2腳接地,1、3腳上拉電阻后,當(dāng)左轉(zhuǎn)、右轉(zhuǎn)旋紐時,在1、3腳就有脈沖信號輸出了。</p><p> 編碼器的信號采集非常簡單,只需在A(B)的上升沿和下降沿時,判斷
58、B(A)的高低電平即可。注意必須周期性的對A,B腳進(jìn)行掃描,頻率過低會導(dǎo)致偶爾檢測不到。</p><p> 旋轉(zhuǎn)編碼器信號采集程序:</p><p> 改程序功能是通過扭動旋轉(zhuǎn)編碼器,可以使變量num遞加或遞減。</p><p> bit Awlast; //存儲A腳上次檢測時的電平</p><p> unsigned int num
59、=100; //變量 </p><p> sbit Aw=P1^0;//旋轉(zhuǎn)編碼器A腳</p><p> sbit Bw=P1^2;//旋轉(zhuǎn)編碼器B腳</p><p> void scan()</p><p><b> {</b></p><p> if((Aw==1)&&
60、;(Awlast==0)) //A腳的上升沿</p><p><b> {</b></p><p><b> if(Bw==1)</b></p><p><b> num++;</b></p><p><b> if(Bw==0)</b><
61、;/p><p><b> num--;</b></p><p><b> }</b></p><p> if((Aw==0)&&(Awlast==1)) //A腳的下降沿</p><p><b> {</b></p><p>&l
62、t;b> if(Bw==1)</b></p><p><b> num--;</b></p><p><b> if(Bw==0)</b></p><p><b> num++;</b></p><p><b> }</b>&l
63、t;/p><p> Awlast=Aw;//存儲A的電平,供下次檢測用</p><p><b> }</b></p><p> 彩色液晶屏控制部分電路</p><p> 該部分電路采用了普通128*64單色液晶屏的標(biāo)準(zhǔn)接口,總共20腳,但實際電路中采用的是320*240的彩色液晶屏,該液晶屏在硬件接口上與128*64
64、液晶屏是可以兼容的,只需用到1~16腳。</p><p> 本電路中使用的是一塊高畫質(zhì)的 TFT 真彩 LCD 模塊,具有豐富多樣的接口、編程方便、易于擴(kuò)展等良好性能。 內(nèi)置專用驅(qū)動和控制 IC(SPFD5408),并且驅(qū)動 IC 自己集成顯示緩存,無需外部顯示緩存。</p><p> 彩色 TFT LCD 顯示模塊的基本參數(shù)如下表:</p><p> 該彩色
65、液晶模塊支持標(biāo)準(zhǔn) intel8080 總線,總線的最高速度可達(dá) 8MHz,也就是說,如果控制 MCU 速度足夠快的話,是可以支持視頻的顯示的。模塊的總線接口是 8 位的,也就意味著對顯存的某一個地址操作時,需要連續(xù)進(jìn)行兩次操作方可完成,先傳高字節(jié)再傳低字節(jié)。</p><p> 該彩色液晶模塊內(nèi)部有一個顯存地址累加器 在連續(xù)對屏幕顯示數(shù)據(jù)操作時非常有用,特別置為各種方向的累加方式,如通常情況下為對 換到下一行的開
66、始累加;還可以為對 Y Address 會切換到下一個 X Address 所對應(yīng)的列開始累加。另外,該模塊還提供了窗口操作的功能,可以對顯示屏上的某一個矩形區(qū)域進(jìn)行連續(xù)操作。</p><p> 對液晶模塊的操作主要分為兩種,一是對控制寄存器的讀寫操作,二是對顯存的讀寫操作;而這兩種操作實際上都是通過對 LCD 控制器(SPFD5408)的寄存器(register)進(jìn)行操作完成的,SPFD5408提供了一個索引
67、寄存器(Index register),對該 Index register 寄存器的寫入操作可以指定操作的寄存器索引,以便于完成控制寄存器、顯存操作寄存器的讀寫操作。 提供了 RS(有些資料稱 A0)控制線,并以此線的高低電平狀態(tài)來區(qū)別這對 Index register 操作還是對所指向的寄存器進(jìn)行操作:當(dāng) RS 為低電平時,表示當(dāng)前的總線操作是對 Index register 進(jìn)行操作,即指明接下去的寄存器操作是針對哪一個寄存器的;當(dāng)
68、 RS 為高電平時,表示為對寄存器操作。模塊內(nèi)部有控制寄存器,用戶在使用之前以及對其進(jìn)行操作過程當(dāng)中,需要對一些寄存器進(jìn)行寫操作以完成對 LCD 的初始化,或者是完成某些功能的設(shè)置(如當(dāng)前顯存操作地址設(shè)置等)。對控制寄存器進(jìn)行操作前,需要先對索引寄存器(Indexregister)進(jìn)行定入操作,以指明接下去的寄存器讀寫操作是針對哪一個寄存器</p><p> 1、 在 RS 為低電平的狀態(tài)下,寫入兩個字節(jié)的數(shù)據(jù)
69、,第一個字節(jié)為零,第二字節(jié)為寄存器索引值。</p><p> 2、 然后在 RS 為主電平的狀態(tài)下,寫入兩個字節(jié)數(shù)據(jù),第一字節(jié)為高八位,第二字節(jié)為低八位;如要讀出指定寄存器的數(shù)據(jù),則需要連續(xù)三次讀操作方能完成一次讀出操作,第一個字節(jié)為無效數(shù)據(jù),第二字節(jié)為高八位,第三字節(jié)為低八位。</p><p> 模塊的控制寄存器當(dāng)中,最常被調(diào)用的是寄存器除了對顯存操作的 0x22 寄存器外,還有當(dāng)前
70、顯存地址的寄存器display RAM bus address counter (AC),一共由兩個的寄存器組成,分別存放有XAddress和Y Adderss,表示當(dāng)前對顯存數(shù)據(jù)的讀寫操作是針對于該地址所指向的顯存單元;而每一個顯存單元在前面已經(jīng)用圖示意過,每個單元有 16 位,最高的 5 位為R(紅)的分量,最低的 5 位為B(藍(lán))的分量,中間 6 位為G(綠)分量。</p><p><b> 顯
71、存單元示意圖</b></p><p> 所以,當(dāng)需要對 LCD 顯示面板上某一個點(X,Y)進(jìn)行操作時,需要先設(shè)置 AC,以指向需要操作的點所對應(yīng)的顯存地址,然后連續(xù)寫入或者讀出數(shù)據(jù),才完成對該點的顯存單元的數(shù)據(jù)操作。而當(dāng)對某一個顯存單元完成寫入數(shù)據(jù)操作后,AC 會自動的進(jìn)行調(diào)整,或者是不進(jìn)行調(diào)整(根據(jù)控制寄存器中的設(shè)置而決定)保持原來指向。AC 的這個特性對于 模塊來說非常有用,可以根據(jù)此特性設(shè)計
72、出快速的 LCD 顯示操作功能函數(shù),以適應(yīng)不同用戶的需求。</p><p><b> 其它部分電路</b></p><p><b> 串口通訊電路</b></p><p> 該部分為串口通訊電路,負(fù)責(zé)單片機(jī)與PC機(jī)之間的通訊,主要用于單片機(jī)程序下載,也為以后升級為虛擬示波器提供硬件支持。由于STC12C5A60S2這
73、款單片機(jī)可以通過串口進(jìn)行程序下載,該電路采用了一片串口通訊芯片MAX232,實現(xiàn)串口電平轉(zhuǎn)換,通過一個雙刀雙擲開關(guān),決定PC機(jī)與哪一片單片機(jī)進(jìn)行通訊,使用時非常方便。</p><p> MAX232芯片簡介:</p><p> MAX232芯片是美信(MAXIM)公司專門RS-232標(biāo)準(zhǔn)串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。</p><p> 第
74、一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1
75、IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。</p><p> 符合所有的RS-232C技術(shù)標(biāo)準(zhǔn) </p><p> 只需要單一 +5V電源供電 </p><
76、;p> 片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10V和-10V電壓V+、V- </p><p> 功耗低,典型供電電流5mA </p><p> 內(nèi)部集成2個RS-232C驅(qū)動器 </p><p> 高集成度,片外最低只需4個電容即可工作。</p><p><b> 電源部分電路</b&g
77、t;</p><p> 該部分電路為整個電路板提供電源,主要用到7805和ICL7660兩塊集成電路,其中7805將外部輸入電壓穩(wěn)定在+5V左右,+5V電壓輸入極性反轉(zhuǎn)電源轉(zhuǎn)換器ICL7660,得到-5V供運算放大器使用。</p><p><b> 7805簡介:</b></p><p> 電子產(chǎn)品中,常見的三端穩(wěn)壓集成電路有正電壓輸出的
78、78××系列和負(fù)電壓輸出的79××系列。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。它的樣子象是普通的三極管,TO- 220 的標(biāo)準(zhǔn)封裝,也有9013樣子的TO-92封裝。用78/79系列三端穩(wěn)壓IC來組成穩(wěn)壓電源所需的外圍元件極少,電路內(nèi)部還有過流、過熱及調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價格便宜。該系列集成穩(wěn)壓IC型號中的78或79后面的
79、數(shù)字代表該三端集成穩(wěn)壓電路的輸出電壓,如7806表示輸出電壓為正6V,7909表示輸出電壓為負(fù)9V。因為三端固定集成穩(wěn)壓電路的使用方便,電子制作中經(jīng)常采用。</p><p> 在實際應(yīng)用中,應(yīng)在三端集成穩(wěn)壓電路上安裝足夠大的散熱器(當(dāng)然小功率的條件下不用)。當(dāng)穩(wěn)壓管溫度過高時,穩(wěn)壓性能將變差,甚至損壞。當(dāng)制作中需要一個能輸出1.5A以上電流的穩(wěn)壓電源,通常采用幾塊三端穩(wěn)壓電路并聯(lián)起來,使其最大輸出電流為N個1.
80、5A,但應(yīng)用時需注意:并聯(lián)使用的集成穩(wěn)壓電路應(yīng)采用同一廠家、同一批號的產(chǎn)品,以保證參數(shù)的一致。另外在輸出電流上留有一定的余量,以避免個別集成穩(wěn)壓電路失效時導(dǎo)致其他電路的連鎖燒毀。</p><p> ICL7660簡介:</p><p> ICL7660是Maxim公司生產(chǎn)的小功率極性反轉(zhuǎn)電源轉(zhuǎn)換器。該集成電路與TC7662ACPA,MAX1044的內(nèi)部電路及引腳功能完全一致,可以直接替
81、換。ICL7660的靜態(tài)電流典型值為170μA,輸入電壓范圍為1.5-10V,(Intersil公司ICL7660A輸入電壓范圍為1.5-12)工作頻率為10 kHz只需外接10 kHz的小體積電容,只需外接10μF的小體積電容效率高達(dá)98%合輸出功率可達(dá)700mW(以DIP封裝為例),符合輸出100mA的要求。</p><p> 2.8 原理圖與PCB圖</p><p><b&g
82、t; 示波器電路板原理圖</b></p><p><b> 示波器電路板原理圖</b></p><p><b> MCU軟件設(shè)計</b></p><p> 程序是電路的靈魂,沒有程序,那一堆堆的電路起不到任何作用,完全是一堆廢板子!就像一臺沒有裝操作系統(tǒng)的電腦一樣,只能費電。程序設(shè)計是整個示波器的關(guān)鍵,
83、也是難點。該示波器的程序全部是自己用C語言編寫的,開發(fā)環(huán)境為keil uvision4。</p><p><b> 2.1 程序流程圖</b></p><p><b> MCU1程序流程圖</b></p><p><b> MCU2程序流程圖</b></p><p>
84、2.2 單片機(jī)程序源代碼</p><p> #include"string.h"</p><p> #define Xaddr 0x0021 // 水平地址設(shè)置</p><p> #define Yaddr 0x0020 // 垂直地址設(shè)置</p><p><b> //液晶屏引腳</b
85、></p><p> sbit CS=P1^5; </p><p> sbit RES=P1^4; </p><p> sbit RS=P1^1; </p><p> sbit RW=P1^2; //顏色代碼 黑紅 綠 藍(lán) 青 紫黃 白</p&g
86、t;<p> unsigned int code</p><p> cdata[]={0x0000,0xf800,0x07e0,0x001f,0x07ff,0xf81f,0xffe0,0xffff};</p><p> // 0 1 2 3 4 56 7</p><p> code struct{<
87、;/p><p> unsigned char dat[36];//自定義24*24 ASCII碼字庫</p><p> }word[]={……};(花括號里面為自定義的24*24的常用字符的字庫,內(nèi)容非常多,這里就不寫出來了)</p><p><b> // 寫指令</b></p><p> void TFT_wc
88、(unsigned char DH,unsigned char DL)</p><p><b> {</b></p><p><b> CS=0;</b></p><p><b> RS=0;</b></p><p><b> P0=DH;</b>
89、</p><p><b> RW=0;</b></p><p><b> RW=1;</b></p><p><b> P0=DL;</b></p><p><b> RW=0;</b></p><p><b>
90、 RW=1;</b></p><p><b> CS=1;</b></p><p><b> }</b></p><p> //===================================================================</p><p>&
91、lt;b> //// 寫數(shù)據(jù)</b></p><p> void TFT_wd(unsigned int dat)</p><p><b> {</b></p><p><b> CS=0;</b></p><p><b> RS=1;</b><
92、;/p><p> P0=dat/256;</p><p><b> RW=0;</b></p><p><b> RW=1;</b></p><p> P0=dat%256; </p><p><b> RW=0;</b></p
93、><p><b> RW=1;</b></p><p><b> CS=1;</b></p><p><b> }</b></p><p><b> // 寫數(shù)據(jù)指令</b></p><p> void TFT_wcd(un
94、signed char x,unsigned int y)</p><p><b> {</b></p><p> TFT_wc(0x00,x);</p><p> TFT_wd(y);</p><p><b> }</b></p><p><b> //
95、延時函數(shù)</b></p><p> void delayms(unsigned int count)</p><p><b> {</b></p><p> int i,j;
96、 </p><p> for(i=0;i<count;i++) </p><p> for(j=0;j<260;j++);</p><p><b> }</b></p><
97、;p> //=============================================================</p><p><b> //液晶初始化</b></p><p> void TFT_initial(void)</p><p><b> {</b></p>
98、<p><b> CS=1;</b></p><p> delayms(5);</p><p><b> RES=0;</b></p><p> delayms(5);</p><p><b> RES=1;</b></p><p>
99、 delayms(5);</p><p> delayms(50);</p><p> TFT_wcd(0x0001,0x0100); </p><p> TFT_wcd(0x0002,0x0700); </p><p> TFT_wcd(0x0003,0x1030); </p><p> TFT_wcd(
100、0x0004,0x0000); </p><p> TFT_wcd(0x0008,0x0207); </p><p> TFT_wcd(0x0009,0x0000);</p><p> TFT_wcd(0x000A,0x0000); </p><p> TFT_wcd(0x000C,0x0000); </p><
101、p> TFT_wcd(0x000D,0x0000);</p><p> TFT_wcd(0x000F,0x0000);</p><p> TFT_wcd(0x0010,0x0000); </p><p> TFT_wcd(0x0011,0x0007); </p><p> TFT_wcd(0x0012,0x0000);
102、 </p><p> TFT_wcd(0x0013,0x0000); </p><p> TFT_wcd(0x0010,0x1290); </p><p> TFT_wcd(0x0011,0x0227);</p><p> TFT_wcd(0x0012,0x001d);</p><p> TFT_wcd(
103、0x0013,0x1500);</p><p> TFT_wcd(0x0029,0x0018); </p><p> TFT_wcd(0x002B,0x000D); </p><p> TFT_wcd(0x0030,0x0004);</p><p> TFT_wcd(0x0031,0x0307);</p><p&g
104、t; TFT_wcd(0x0032,0x0002);</p><p> TFT_wcd(0x0035,0x0206);</p><p> TFT_wcd(0x0036,0x0408);</p><p> TFT_wcd(0x0037,0x0507); </p><p> TFT_wcd(0x0038,0x0204);</p&g
105、t;<p> TFT_wcd(0x0039,0x0707); </p><p> TFT_wcd(0x003C,0x0405);</p><p> TFT_wcd(0x003D,0x0F02); </p><p> TFT_wcd(0x0050,0x0000); </p><p> TFT_wcd(0x0051,0x0
106、0EF);</p><p> TFT_wcd(0x0052,0x0000); </p><p> TFT_wcd(0x0053,0x013F); </p><p> TFT_wcd(0x0060,0xA700); </p><p> TFT_wcd(0x0061,0x0001); </p><p> TFT
107、_wcd(0x006A,0x0000); </p><p> TFT_wcd(0x0080,0x0000); </p><p> TFT_wcd(0x0081,0x0000); </p><p> TFT_wcd(0x0082,0x0000); </p><p> TFT_wcd(0x0083,0x0000); </p>
108、<p> TFT_wcd(0x0084,0x0000); </p><p> TFT_wcd(0x0085,0x0000); </p><p> TFT_wcd(0x0090,0x0010); </p><p> TFT_wcd(0x0092,0x0600); </p><p> TFT_wcd(0x0093,0x000
109、3); </p><p> TFT_wcd(0x0095,0x0110); </p><p> TFT_wcd(0x0097,0x0000); </p><p> TFT_wcd(0x0098,0x0000);</p><p> TFT_wcd(0x0007,0x0133);</p><p><b>
110、 }</b></p><p> //===============================================================</p><p><b> //液晶屏打點函數(shù)</b></p><p> static void TFT_draw(unsigned int x,unsigned
111、int y,unsigned char color)</p><p><b> { </b></p><p> TFT_wcd(Xaddr,x);//寫入水平坐標(biāo)</p><p> TFT_wcd(Yaddr,y);//寫入垂直坐標(biāo)</p><p> TFT_wc(0x00,0x22);</p&g
112、t;<p> TFT_wd(cdata[color]);//設(shè)置該點的顏色</p><p><b> }</b></p><p> //液晶屏漢字顯示函數(shù)</p><p> void TFT_word(unsigned int x,unsigned int y,unsigned char dat[],unsigned ch
113、ar color,char size) //該地址為漢字的左下角起始地址</p><p><b> { </b></p><p> unsigned char i,j;</p><p><b> y+=24;</b></p><p> for(i=0;i<12*size;i++
114、)</p><p><b> {</b></p><p> for(j=0;j<8;j++)</p><p><b> {</b></p><p> if(dat[3*i]%(1<<(8-j))/(1<<(7-j))==1)</p><p&g
115、t; TFT_draw(x+i,y-j,color); //</p><p><b> else</b></p><p> TFT_draw(x+i,y-j,0);</p><p> if(dat[3*i+1]%(1<<(8-j))/(1<<(7-j))==1)</p><p>
116、 TFT_draw(x+i,y-j-8,color); //加減號直接決定了文字的方向</p><p><b> else</b></p><p> TFT_draw(x+i,y-j-8,0);</p><p> if(dat[3*i+2]%(1<<(8-j))/(1<<(7-j))==1)</p>
117、<p> TFT_draw(x+i,y-j-16,color); //</p><p><b> else</b></p><p> TFT_draw(x+i,y-j-16,0);</p><p><b> }</b></p><p><b> }<
118、/b></p><p><b> }</b></p><p><b> //字符串顯示</b></p><p> void TFT_string(unsigned x,unsigned int y,unsigned char dat[],unsigned char color)</p><p
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計論文基于fpga技術(shù)的數(shù)字存儲示波器設(shè)計
- 數(shù)字存儲示波器畢業(yè)設(shè)計
- 基于labview的數(shù)字示波器設(shè)計畢業(yè)論文
- 畢業(yè)設(shè)計(論文)基于fpga的便攜式數(shù)字存儲示波器設(shè)計
- 畢業(yè)設(shè)計---基于fpga技術(shù)的數(shù)字存儲示波器設(shè)計
- 基于mcu的通用控制器設(shè)計畢業(yè)設(shè)計論文
- 簡易數(shù)字存儲示波器的設(shè)計【畢業(yè)論文】
- 簡易數(shù)字存儲示波器設(shè)計畢業(yè)論文
- 數(shù)字存儲示波器畢業(yè)論文
- 基于labview的虛擬示波器設(shè)計【畢業(yè)設(shè)計】
- 基于單片機(jī)的嵌入式簡易數(shù)字示波器設(shè)計【畢業(yè)設(shè)計】
- 基于fpga數(shù)字示波器設(shè)計
- 數(shù)字示波器的設(shè)計-通信工程專業(yè)畢業(yè)論文
- 基于雙CPU的數(shù)字存儲示波器的設(shè)計和實現(xiàn).pdf
- 基于fpga的數(shù)字示波器設(shè)計
- 基于fpga的數(shù)字時鐘設(shè)計畢業(yè)設(shè)計論文
- 基于fpga的mcu系統(tǒng)設(shè)計本科畢業(yè)設(shè)計
- 簡易等效采樣數(shù)字示波器的設(shè)計與實現(xiàn)【畢業(yè)論文】
- 畢業(yè)論文---基于labview的虛擬示波器的設(shè)計
- 基于fpga的數(shù)字存儲示波器的設(shè)計
評論
0/150
提交評論