- #include <p18f4520.h> //納入微控制器定義檔
- #include <delays.h> //納入時間延遲函式庫定義檔
- #include "evm_lcd.h" //納入LCD函式庫定義檔
- #include <stdio.h>
- #include <adc.h> //納入類比訊號轉換函式庫定義檔
- // 設定微處理器相關結構位元
- #pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF
- // 定義時序頻率
- #define OSC_CLOCK 10
- // 宣告時間延遲函式原型
- void delay_ms(long A);
- void main() {
- unsigned int ADC_result=0;
- char buf[17];
- int adnum=0;
- float adf;
- OpenLCD(); // 初始化LCD模組
- OpenADC(ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_20_TAD,
- ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD &
- ADC_VREFMINUS_VSS, 14);
- while(1) {
- Delay10TCYx(5); //時間延遲以完成採樣
- WriteCmdLCD(0X01);
- LCD_Set_Cursor(0,0);
- delay_ms(1);
- ADC_result=get_ad();
- sprintf(buf,"%u",ADC_result);
- putsLCD(buf);
- delay_ms(1);
- LCD_Set_Cursor(0,5);
- putrsLCD("mV");
- delay_ms(500);
- }
- }
- // 時間延遲函式
- void delay_ms(long A) {
- //This function is only good for OSC_CLOCK higher than 4MHz
- long i;
- int us2TCY;
- us2TCY=(10*OSC_CLOCK)>>2;
- for(i=0;i<A;i++) Delay100TCYx(us2TCY);
- }
- int get_ad()
- {
- float adf;
- int adnum;
- ConvertADC() ; //進行訊號轉換
- while(BusyADC()); //等待轉換完成
- adnum = ReadADC();
- adf=adnum/1024.0*5;
- adnum=adf*1000;
- return adnum;
- }
2013年10月22日 星期二
ADC TO LCD 偵測電壓值輸出至LCD
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言