




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數控數顯直流電源摘要: 本數控直流電壓源利用16位單片機SPCE061A為控制核心,可預置輸出電壓值并顯示在液晶顯示模塊(LCD)上,通過其內置的A/D輸出對PWM進行調制,再控制大功率開關管導通,再經過濾波輸出。同時通過采樣電路將實際輸出值反饋到單片機中構成閉環系統,進行比較、調整,提高了電源的輸出精度。輸出電壓范圍為0.01v10v,而且可以步進調整輸出的電壓值。關鍵詞: 數控 16位單片機 開關電壓源 PWM調制Digital Control Digital DC Power ShowWEN GuojianZhanjiang Normal University, Information
2、Technology And Science School, zhjiang, 524048Abstract This digital DC power supply using 16 Single-Chip Microcomputer SPCE061A to control the core voltage can be exported duty and show in LCD module (LCD), through its built-in modem for A/D export of PWM to control power switching control-Link, thr
3、ough the filter output. At the same time, through sampling circuit will be fed back into the actual export value of a loop system Single-Chip Microcomputer, comparison and adjustment, the increased power output precision. 0.01v10v scope for export voltage, and can adjust the output voltage motors va
4、lue.Keyword:digital control single chip computer PWM modulation.引言: 在我們現實的生活和實驗中,常常要用到各種各樣的電源,電壓要求多樣。如何設計一個電壓穩定,輸出電壓精度高,并且調節范圍大的電壓源,成了電子基礎應用的熱點。在市面上,各種電源產品各式各樣,有可調節的,有固定的。但是普遍存在如下問題:1、輸出精度不高,可調節的范圍過小,不能滿足特定電壓的要求。2、輸出不夠穩定,紋波電流過大。3、普遍采用可調電阻器調節,操作難度大。4、普遍采用電壓調節或者穩壓電路調節,輸出電壓穩定,電源供電不穩定。 為解決以上這些缺點,我們用16位凌
5、陽單片機作為控制核心,通過其內置的A/D輸出對PWM進行調制,大大提高電源的輸出精度。1、方案論證與設計1.1 系統整體方案論證 方案一: 采用A/D電壓放大器直接輸出。電路簡單,但是輸出電壓帶負載能力不強,電源電壓不穩定。 方案二: 采用PWM調制的開關電源輸出,輸出電壓穩定,并且提供負載能力強。綜上分析,采用方案二。1.2數據采集和處理器選擇 因為電壓源調節要用到A/D或者D/A進行數控電壓輸出和電壓采集。 方案一:采用51系列單片機控制方式。外加一個A/D和一個D/A電路,因為單片機只有8位,所以精度低,并且外加A/D和D/A,電路復雜。成本很高。 方案二:采用凌陽SPCE061A 十六
6、位單片機,處理能力強,I/O口豐富,可以用時進行鍵盤控制和LCD液晶顯示。并且內置了一個10位D/A和一個10位的A/D ,設計電路簡單,并且輸出電壓精度高,能滿足0.01v10v、步進0.01v的要求。 綜上分析,采用方案二。1.3 電源供電電路 由于系統電路要求 、 直流電源供電,而設計獨立的正、負電源給系統供電顯得不合實際,所以我們采用穩壓管7815、7915和7805、7905設計了一個、的直流穩壓電源電路,如圖10所示??紤]到輸出電流最大可達到2A,所以要獨立給恒流源電路提供獨立的電源電路,如圖11所示。1.4 顯示電路模塊 方案一:采用傳統的8位數碼管(LED)顯示相關信息。 方案
7、二:采用液晶顯示器(LCD)顯示相關信息。 以上兩種方案中,方案一編程簡單,但顯示信息量少,功耗較大。而方案二的液晶顯示器屬于低功耗器件,顯示界面友好,還可以同時顯示電流的給定值和實測值,從而系統更具智能化、人性化、直觀化。因此,選擇方案二。2、系統總體設計方案及設計框圖 本系統采用的處理器是SPCE061A 十六位單片機,整個系統包括單片機、正負電源供電電路、A/D轉換電壓調整、D/A轉換電壓調整、PWM調制,大功率開關電路,濾波電路、采樣電路、鍵盤、LCD顯示等幾個部分。系統框圖如圖 1:LCD顯示鍵盤單片機PWM調制電源D/A轉換A/D轉換負載電源取樣電路信號放大電壓衰減開關輸出濾波輸出
8、圖1系統框圖3、系統模塊電路分析3.1 SPCE061A 單片機最小系統概述SPCE061A 是繼nSP 系列產品SPCE500A 等之后凌陽科技推出的又一個16 位結構的微控制器。目前有兩種封裝形式:84 引腳的PLCC84 封裝和80 引腳的LQFP80 貼片封裝。主要性能如下:16 位nSP 微處理器;工作電壓:VDD 為2.43.6V(cpu), VDDH 為2.45.5V(I/O);CPU 時鐘:32768Hz49.152MHz ;內置2K 字SRAM、內置32K FLASH;可編程音頻處理;32 位通用可編程輸入/輸出端口;32768Hz 實時時鐘,鎖相環PLL 振蕩器提供系統時鐘
9、信號;2 個16 位可編程定時器/計數器(可自動預置初始計數值);2 個10 位DAC(數-模轉換)輸出通道;7 通道10 位電壓模-數轉換器(ADC)和單通道語音模-數轉換器;聲音模-數轉換器輸入通道內置麥克風放大器自動增益控制(AGC)功能;系統處于備用狀態下(時鐘處于停止狀態)耗電小于2A3.6V;14 個中斷源:定時器A / B,2 個外部時鐘源輸入,時基,鍵喚醒等;具備觸鍵喚醒的功能;使用凌陽音頻編碼SACM_S240 方式(2.4K 位/秒),能容納210 秒的語音數據;具備異步、同步串行設備接口;具有低電壓復位(LVR)功能和低電壓監測(LVD)功能;內置在線仿真電路接口ICE(
10、In- Circuit Emulator);具有保密能力;具有WatchDog 功能由SPCE061A單片組成的核心處理器如圖2所示:圖23.1.1 ADC 的控制SPCE061A有8 個10 位ADC通道,其中一個通道(MIC_In)用于語音輸入,模擬信號經過自動增益控制器和放大器放大后進行A/D轉換。其余7 個通道(Line_In)和IOA06 引腳共享,可以將輸入的模擬信號(如電壓信號) 轉換為數字信號。SPCE061A 的A/D轉換范圍是整個輸入范圍,即0VAVdd。并且由多個寄存器控制:其結構如圖3所示:圖33.1.2 DAC 的控制SPCE061A 為音頻輸出提供兩個DAC 通道:
11、DAC1 和DAC2,分別由經由DAC1和DAC2 引腳輸出。DAC 的輸出范圍從0x0000 到0xFFFF。如果DAC 的輸出數據被處理成PCM 數據,必須讓DAC 輸出數據的直流電位保持為0x8000,且僅有高10 位的數據有作用。DAC1 和DAC2 的輸出數據應寫入P_DAC1(寫) ($7017)和P_DAC2(寫)($7016)單元。上電復位后,兩個DAC 均被自動打開,此時會消耗少量的電流(幾毫安)。所以如不需要用它們,盡量將P_DAC_Ctrl(寫)($702AH)單元的第1 位設為1,關閉DAC 輸出。其結構如圖4所示: 圖43.1.3 IO 端口結構SPCE061A 提供
12、了位控制結構的I/O 端口,每一位都可以單獨用于數據輸入或輸出。每個獨立的位可通過以下3 種控制向量來作設定:1. 數據向量Data2. 屬性向量Attribution3. 方向控制向量Direction每3 個對應的控制向量組合在一起,形成一個控制字,用來定義相對應I/O 端口位的輸入輸出狀態和方式。例如,假設需要IOA0 是下拉輸入引腳,則相對應的Data、Attribution和Direction 的值均被設為“0”。如果需要IOA1 是帶喚醒功能的懸浮式輸入引腳,則Data、Attribution 和Direction 的值被設為“010”。與其它的單片機相比,SPCE061A 除了每
13、個I/O 口可以單獨定義其狀態外,每個對應狀態下的I/O 端口性質電路都是內置的,在實際的電路中不需要再外接。例:設A 口為帶下拉電阻的輸入端口,在連接硬件時不用再外接下拉電路。A 口和B 口的Data、Attribution 和Direction 的設定值均在不同的寄存器里,用戶在進行I/O 端口設置時要特別注意這一點。I/O 端口的組合控制設置如表1所示:I/O 端口的控制向量組合表1其結構如圖5所示:圖53.1.4 單片機端口資源的分配 IO07口:LCD數據總線。 IO815口:LCD控制總線。 IOb口:鍵盤輸入接口。3.2 電壓控制電路:電壓控制電路由五部分電路組成:1、ADC輸出
14、放大電路;2、PWM脈寬調制電路;3開關電路;4、濾波電路;5、輸入衰減電路;電路如圖6所示。用戶先在鍵盤中鍵入將要輸出的電壓值,剛處理器內部將通過數值轉換:(因為D/A輸出電壓范圍是以03.3V。如要輸出電壓為5V,在程序內部則需要將數值除以3倍輸出,再在電路外部放大3倍進行匹配),將匹配過的電壓從MC3405的2腳輸入。MC3405是一個電壓控制脈寬調制電路,輸出的脈寬波的占空比由輸入2腳的電壓決定,其脈寬波的頻率是由電路中的R1、Rf、R2決定,則輸出的波型應該是頻率固定,占空比為V2/Vcc的脈寬調制矩形波。經調制過的脈寬波經7腳輸出,控制由一個大功率的開關管(電視機的行輸出管)組成的
15、開關電路的導通狀態。由開關管射極輸出波型電壓上與輸出的波型相似,但電流上卻大大增大了。最后通過一個RC濾波電路將脈寬波濾成直流電壓輸入。但輸出的電壓因為調制電路誤差、輸出負載的變化。電壓極不穩定。因此有必要對其進行采樣比較,達到動態閉環調整的目的。在采樣電路中,與DAC相同,ADC的參考電壓只能是3.3V,所以要先對采樣的電壓進行匹配輸入(衰減3倍),本設計采用電阻串聯分壓的原理進行衰減。但是由于負載以及芯片內部電阻會對衰減造成影響,由需要在衰減器的前后加上兩個電壓跟隨器進行隔離。以輸入電壓為標準,如果輸入電壓大于設定的電壓值,則減小DA輸出電壓一位數值,再采樣回為比較,如此循環,直到輸入的電
16、壓等于設定的電壓值或者接近設定的電壓值(有時不可能完全相等)。同理,如果輸入電壓小于設定的電壓,則增大DA輸出電壓一位數值,再采樣回為比較,如此循環,直到輸入的電壓等于設定的電壓值或者接近設定的電壓值。這樣,就能達到閉環反饋的目的。圖63.2.1 ADC、DAC電壓調整電路為了方便計算,將pwm的調制器電壓設定為10V,即當控制電壓為10V時,輸出滿脈寬信號,當電壓為0時,輸出無脈寬信號。而且輸出電壓要求為010V,但SPCE061A 單片機的ADC、DAC參考電壓只能為3.3v以下的電壓。所以要對D/A電壓進行放大,對采樣的電壓進行衰減。3.2.2 脈寬調節電路的工作原理 MC3405包含有
17、兩個運算放大器和兩個比較器,利用一塊芯片即能組成脈寬調節電路,如圖7所示。電路中運算放大器1組成滯廻比較器,運算放大器2組成積分器,構成三角波發生器。其輸出送到比較器1反相端,比較器1的同相輸入端接OP-7-2的輸出端,因此比較器1的輸出脈沖的寬度與輸入電壓的大小成正比。比較器2對比較器1的輸出信號整形,使其上下沿更陡,兩個5K電阻分別作比較器1和2的開路門輸出集電極負載電阻。圖7下面分析怎么樣產生上圖波形:剛接通電源時,運放1同相端電位為0,小于反相端電位V(),使得運放1輸出SW是低電平EE,經電阻f、電容C充電,運放的輸出電壓線性增大,當Vt增大到VTH時,運放的同相端輸入電壓也為TH,
18、大于反相端的電平,則SW翻轉,變為高電平CC,這時運放對CC進行反向充電,輸出電壓逐步減少,當Vt減少到VTL時,則運放1的輸出SW為低電平,如此反復,將在運算放大器2的輸出端得到一線性變化的三角波電壓。產生波形如圖三(a)、(b)所示的。當輸入的電壓C大于t時,比較器輸出高電平CC,當C小于t時,比較器輸出低電平EE,由于t是一個三角波,從TL上升到TH,又從TH下降到TL,所以在t=C時,是轉折點,當Vt<C時,這段時間,比較器輸出高電平CC,等到t逐漸增大到t>C時,這段時間,比較器輸出低電平EE,這樣整個過程產生如圖(c)的波形,由于VC不同,使得輸出脈沖寬度不同,即占空比
19、不同, VC起到調節脈寬的作用.根據電路原理,進行公式推導:設:, (12)腳電位為:V1=剛接通電源,V1=0,V1<V,SW=EE。電容C進行充電。等到充到TH時,這時:,推得:當V1=V時,SW翻轉為高電平CC則:推得: 同理:當運放2輸出翻轉變為VEE時,電容C放電,當放到VTL,使V1=V時,SW為低電平EE則:推得:推得:振蕩頻率:占空比:3.2.3 脈寬調制電路參數的選擇占空比:DC=02是()腳輸入的電壓值 選取=,=300K,CC=,EE=-=-(-)=(v)則: 占空比:DC= 取, =0.01UF則: 3.2.4 開關管輸出的電路參數的選擇 當V 當02=0v時 0
20、=所以01在到6.27變化時輸出0在到15變化3.2.5 平滑電容電阻的參數選取由于和的時間常數必須大于等于周期的倍所以選=,=.F則: 完全滿足條件。3.3 鍵盤設計鍵盤設計如圖8所示:09數值鍵: 設置要輸出的電壓值復位鍵(Rst):重設輸出電壓值存儲鍵(Sav):把當前的電壓值保存到存儲器預設鍵(Prst):把存儲器的預設電壓輸出圖83.4 液晶顯示用總線方式控制1062液晶顯示屏,如圖9所示。圖91602采用標準的14腳接口,其中:第1腳:VSS為地電源第2腳:VDD接5V正電源第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”
21、,使用時可以通過一個10K的電位器調整對比度。第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數據。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。第714腳:D0D7為8位雙向數據線。 另外引腳"A"和"K"為背光引腳,"A"接正,"K"接負便會點亮背光燈.1602液晶模塊
22、內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,如表2所示,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。表21602液晶模塊內部的控制器共有11條控制指令,如表3所示,表3它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置指令2:光標復位,光標返回到地址00H 指令3:光標和顯示模式設置 I/
23、D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符 指令7:字符發生器RAM地址設置 指令8:DDR
24、AM地址設置 指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。 指令10:寫數據 指令11:讀數據 液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表4是DM-162的內部顯示地址.表4比如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是01000000B(40H)+100000
25、00B(80H)=11000000B(C0H)3.5 正負電源供電電路 圖10所示是由正輸出三端穩壓器和負輸出三端穩壓器共同組成的正、負對稱雙路輸出穩壓電路,變壓器采用副邊繞組有中心抽頭的變壓器。圖中的D1和D2是用來保護穩壓器的,當輸出端接有如圖所示的負載時(直接接在+Uo與-Uo之間,其中分布電容Co是一種無形的電容),如果某穩壓器的輸入端開路,例如圖中的A點斷開,這時7905無輸出,+Uo通過Rl加到7905的輸出端,可能造成7905的損壞。但該電路設置了D101,其導通管壓降僅為0.7V左右,使加在7905的最大電壓不超過0.7V,達到保護7905的目的,7805的保護作用同理。 圖1
26、1是供電給恒流源的,它最大的輸出電流要求達到2000mA,如果采用圖10的電源電路,穩壓管的功率不夠,可能會損壞穩壓管,所以必須采用獨立的能提供大電流的電源電路。A 圖10延時400mS初始化液晶讀出存儲器預設值顯示并輸出相應電壓值鍵盤掃描圖12圖114、軟件流程圖4.1 主程序 主程序流程圖如圖12所示。4.2 鍵盤程序鍵盤程序流程圖如圖13所示。4.3 閉環調整子程序閉環調整子程序流程圖如圖14所示。有鍵按下消抖09數值鍵 復位鍵存儲鍵預設值輸入鍵組成0256個數值閉環調整程序存儲子程序讀入預設值子程序顯示子程序重新輸入數值圖13圖13圖14(誤差范圍內)接近實際值小大取樣讀入調整值D/A
27、輸出電壓值A/D讀入電壓值比較讀入值與設定值減1后輸出加1后輸出5、系統測試和誤差分析0123456789+-RstSavPst空5.1 系統功能測試 (1)、系統操作及面板說明·09數值鍵: 預置要輸出的電壓值·“+”、“-”鍵:步進調整輸出,步進10mA·鍵入 Rst鍵,重設輸出電壓值,輸出電流即為最小值20mA,同時等待輸入下一步的指令,實現不同功能間的切換。·鍵入(Sav)鍵,把當前的電壓值保存到存儲器,方便從新開機后自動輸出預設電壓值。·鍵入(Pst)鍵,把存儲器的預設電壓輸出 (2)除了完成設計提出的基本功能要求,還很好地完成了發揮
28、部分的第2個要求。 (3)、擴展了可預設電壓值和保存電壓值的功能,方便用戶使用時快速設置需要的電壓值和下一次使用時輸出預設的電壓值。 (4)、擴展了輸出電壓過壓報警電路,當輸出電壓大于10V時,蜂鳴器發出警報聲。5.2 系統指標測試帶負載X歐時,測量儀器:輸出電壓測量采用VC9801型數字表。測量時間:2006年6月10日數據記錄(室溫):預置電壓V(液晶顯示)采樣電壓V(液晶顯示)實測電壓V說明:由于未能做出成品,所以系統測試數據記錄留空。5.3 系統誤差分析從電路的原理圖可以看出,系統的誤差主要來自三個方面:(1)、AD的量化誤差 AD558是10位電壓輸出D/A轉換器,滿量程為3.3V,
29、其量化誤差為。按滿度歸一化的相對誤差為。 (2)、基準電壓溫漂引入的誤差。 (3)、功率放大器引入的誤差。6、結束語 該設計采用閉環反饋調整的方法,設計出了實用的直流電壓源,其電壓輸出的設置的級數和調整精度與D/A、A/D的位數有緊密關系,本設計采用了10位的D/A和A/D,若采用12位或16位的D/A、A/D轉換器進行相應的閉環調整,直流電源的精度會進一步提高。 在這里,特別感謝我的導師林漢副教授,感謝他能在百忙之中抽時間來解決我的疑問和指導我的設計,感謝他提供我大量的資料,感謝他一絲不茍的作風、諄諄的教誨,使我對我的課題研究一直不斷地探索,追求。7、參考資料參考文獻 羅亞飛. 凌陽16位單
30、片機基礎M.北京:北京航空航天大學出版社,2005.423. 。 張培仁 張志堅 高修峰. 十六位單片微處理器原理及應用(凌陽SPCE061A)M.北京:清華大學出版 北京科海電子出版社,2005.364.。 雷思孝 李伯成 雷向莉.單片機原理及實用技術-凌陽16位單片機原理及應用M. 西安: 西安電子科技大學出版,2004.319. 。 張占松. 開關電源原理的原理與設計(修訂版)M. 電子工業出版社,2004.398.。 王鴻麟. 現代通信電源(修訂本)M. 人民郵電出版社,1998.400.。 郭強. 液晶顯示應用技術M. 電子工業出版社,2003.591.。附錄1 程序/=/ 工程名稱
31、:dianya.spj/ 功能描述:數控直流電壓源程序/ IDE環境:SUNPLUS u'nSP IDE 1.8.0/ 組成文件:main.c/SPCE061V004.H/ 作者 :溫國劍/ 更新日期:2006-6-4/=#include"SPCE061V004.H" /該文件已包括所有的頭文件#define uchar unsigned char#define uint unsigned int#define nop _nop_();#define bei 0.78125#define da 1#define wc 0xcfff /根據硬件譯碼而得到#define
32、 wd 0xdfff#define rc 0xefff#define busy 0x80 /用于檢測LCD狀態字中的Busy標識unsigned char code na = "volt-source" /開機歡迎文字unsigned char code st = "System-starting" unsigned char code homepage = "setting:" /設定值unsigned char code email = "Measure:" / 測量值unsigned char code sa
33、ve11 = "Start-saveing" /保存設定unsigned char code save12 = "Please-wait" unsigned char code save21 = "The-data"unsigned char code save22 = "was-saveed"unsigned char code load1 = "Load-the-data"unsigned char code ma = "V"unsigned char code erro
34、r1 = "Beyond-lowest" / 設定過小提示unsigned char code error2 = "Beyond-highest" /設定過高提示unsigned char code error3 = "select-again"unsigned char code num="0123456789abcdef" /數字編碼void displayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void displayLis
35、tChar(unsigned char X, unsigned char Y, unsigned char code *DData);void displaynum(uchar s,uchar n);uchar error(uchar);uchar control(void);void delay2ms(); uchar keycode;uchar shu,p;uchar setting;uchar volt;uchar ouput;sbit P32=P32;uchar jg,flag,int0flag;sbit p30=P30;void delay5ms(void) /-5ms延時 unsi
36、gned int TempCyc = 5552; while(TempCyc-); /-400ms延時void delay400ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); ; /=設置I/O口的方向,參數1為A、B口選擇,參數2為輸入、輸出選擇void ioinit(uchar x, uchar y) if(x=a) if(y=0) /設置A口為帶下拉電阻的輸入 Set_IOA_Dir(0x0000); Set_IOA_
37、Attrib(0x0000); Set_IOA_Data(0x0000); else /設置A口為同相低電平輸出 Set_IOA_Dir(0xffff); Set_IOA_Attrib(0xffff); Set_IOA_Data(0x0000); else if(x=b) if(y=0) /設置B口為帶下拉電阻的輸入 Set_IOB_Dir(0x0000); Set_IOB_Attrib(0x0000); Set_IOB_Data(0x0000); else /設置A口為同相低電平輸出 Set_IOB_Dir(0xffff); Set_IOB_Attrib(0xffff); Set_IOB_D
38、ata(0x0000); /=ADC程序uchar adc(void) unsigned int uiData; while(!(*P_ADC_MUX_Ctrl&0x8000); /wait,until ADC complete uiData=*P_ADC_LINEIN_Data; return(uiData&0xffc0);/=DAC程序void dac(uchar uiData) *P_DAC1=uiData;/=液晶顯示void waitLcd() /檢測LCD是否忙,不忙才能對其進行操作 char temp; bit flag=1; while(flag=1) /tem
39、p=XBYTECSaddr+RWaddr+adtn; temp=XBYTErc; if (temp>>7=0) flag=0; /-void WC_Lcd(bit isCheck,char c) /寫LCD控制字 if (isCheck=1) waitLcd(); /XBYTECSaddr+adtn=c; XBYTEwc=c; /-void WD_Lcd(char c) /寫LCD數據 waitLcd(); /XBYTECSaddr+RSaddr+adtn=c; XBYTEwd=c; /-LCd初始化void LcdInit() delay5ms(); delay5ms(); de
40、lay5ms(); WC_Lcd(0,0x38); /三次顯示模式設置,不檢測忙信號 delay5ms(); WC_Lcd(0,0x38); delay5ms(); WC_Lcd(0,0x38); delay5ms(); WC_Lcd(1,0x38); /顯示模式設置,開始要求每次檢測忙信號 WC_Lcd(1,0x08); /關閉顯示 WC_Lcd(1,0x01); /顯示清屏 WC_Lcd(1,0x06); / 顯示光標移動設置 WC_Lcd(1,0x0C); / 顯示開及光標設置 /-/按指定位置顯示一個字符void displayOneChar(unsigned char X, unsi
41、gned char Y, unsigned char DData) Y &= 0x1; X &= 0xF; /限制X不能大于15,Y不能大于1 if (Y) X |= 0x40; /當要顯示第二行時地址碼+0x40; X |= 0x80; /算出指令碼 WC_Lcd(0,X); /這里不檢測忙信號,發送地址碼 WD_Lcd(DData);/-/按指定位置顯示一串字符void displayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) unsigned char ListLength;
42、ListLength = 0; Y &= 0x1; X &= 0xF; /限制X不能大于15,Y不能大于1 while (DDataListLength>0x20) /若到達字串尾則退出 if (X <= 0xF) /X坐標應小于0xF displayOneChar(X, Y, DDataListLength); /顯示單個字符 ListLength+; X+; /-數字顯示void displaynum(uchar s,uchar n) unsigned char a,b,c; c=n/100; b=(n-c*100)/10; a=n%10;displayOneC
43、har(10, s, numc);displayOneChar(11, s, numb);displayOneChar(12, s, numa);displayOneChar(13, s, num0);displayListChar(14, s, ma); /=鍵盤程序 /-void delay2ms() uchar t=125; while(t-); t=52; while(t-);/- void delay10ms() uchar i=5; while(i-) delay2ms();void detectkey(void) /對端口操作之前要設定端口的方向和屬性,否則無效! uchar k
44、ey,line,col; ioinit(a,1); /設置端口方向為輸出! Set_IOA_Buffer(0x00f0); ioinit(a,0); key=Get_IOA_Data()&0xf0; if(key!=0xf0) delay10ms(); ioinit(a,1);Set_IOA_Buffer(0x00f0); ioinit(a,0); key=Get_IOA_Data()&0xf0;if(key!=0xf0) /confirm if(key=0xe0) line=0; if(key=0xd0) line=1; if(key=0xb0) line=2; if(key
45、=0x70) line=3; ioinit(a,1); Set_IOA_Buffer(0x00fe) ioinit(a,0); key=Get_IOA_Data()&0xf0; if(key!=0xf0) col=0; ioinit(a,1); Set_IOA_Buffer(0x00fd); ioinit(a,0); key=Get_IOA_Data()&0xf0; if(key!=0xf0) col=1; ioinit(a,1); Set_IOA_Buffer(0x00fb); ioinit(a,0); key=Get_IOA_Data()&0xf0; if(key!
46、=0xf0) col=2; ioinit(a,1); Set_IOA_Buffer(0x00f7); ioinit(a,0); key=Get_IOA_Data()&0xf0; if(key!=0xf0) col=3; keycode=(line*4+col);/the key ioinit(a,1) Set_IOA_Buffer(0x00f0); ioinit(a,0); key=Get_IOA_Data()&0xf0; while(key!=0xf0) ioinit(a,1); Set_IOA_Buffer(0x00f0); ioinit(a,0); key=Get_IOA
47、_Data()&0xf0; ;/wait until release /=按鈕確定void dkey(void) uchar e=0; uchar ex;keycode=16;detectkey();if(keycode!=16) /beep(); switch(keycode) case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if (keycode=0)&&(p=0) break; if (p>=3) break; if (shu>20)&&(keycode!=0) break
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工插花活動方案(4篇)
- 《民國的大學教育》課件
- 《兒童成長關鍵期》課件
- 《產品包裝設計》課件
- 學年校本培訓工作總結(30篇)
- 內科護士述職報告(16篇)
- 《精心規劃職業生涯:制作高效職業規劃課件》
- 小學數學蘇教版三年級下冊一 兩位數乘兩位數第四課時教學設計及反思
- Module 7Unit 3 Language practice教學設計2023-2024學年外研版九年級英語上冊
- 翔安隧道施工方案
- (二模)2025年深圳市高三年級第二次調研考試物理試卷(含標準答案)
- 小班健康活動:我會吃魚
- 2025年注冊會計師(專業階段)題庫完美版帶答案分析
- 專利代理師考試題庫含答案2024
- 湖北省武漢市2025屆高中畢業生四月調研考試物理試題及答案(武漢四調)
- 云南師大附中2025屆高三下學期第六次檢測物理試卷含解析
- DB12 T1230-2023 政務信息資源共享 總體框架
- 市政排水移交協議書
- 廣西壯族自治區馬山縣實驗高中-雙休背后:從“要我學”到“我要學”的轉變-高三家長會【課件】
- 中職世界歷史試題及答案
- ISO22000-2018和ISO22000-2005新舊版本標準條款的對照表
評論
0/150
提交評論