資源簡介
嵌入式/單片機開發示例程序,包括從最基礎的led,鍵盤,到nand flash等相對深度的程序。

代碼片段和文件信息
/*
?*?FILE:?adc_ts.c
?*?ADC和觸摸屏的測試函數
?*/
#include?
#include?“adc_ts.h“
#include?“s3c24xx.h“
#include?“serial.h“
//?ADCCON寄存器
#define?PRESCALE_DIS????????(0?<14)
#define?PRESCALE_EN?????????(1?<14)
#define?PRSCVL(x)???????????((x)?<6)
#define?ADC_INPUT(x)????????((x)?<3)
#define?ADC_START???????????(1?<0)
#define?ADC_ENDCVT??????????(1?<15)
//?ADCTSC寄存器
#define?UD_SEN??????????(1?<8)
#define?DOWN_INT????????(UD_SEN*0)
#define?UP_INT??????????(UD_SEN*1)
#define?YM_SEN??????????(1?<7)
#define?YM_HIZ??????????(YM_SEN*0)
#define?YM_GND??????????(YM_SEN*1)
#define?YP_SEN??????????(1?<6)
#define?YP_EXTVLT???????(YP_SEN*0)
#define?YP_AIN??????????(YP_SEN*1)
#define?XM_SEN??????????(1?<5)
#define?XM_HIZ??????????(XM_SEN*0)
#define?XM_GND??????????(XM_SEN*1)
#define?XP_SEN??????????(1?<4)
#define?XP_EXTVLT???????(XP_SEN*0)
#define?XP_AIN??????????(XP_SEN*1)
#define?XP_PULL_UP??????(1?<3)
#define?XP_PULL_UP_EN???(XP_PULL_UP*0)
#define?XP_PULL_UP_DIS??(XP_PULL_UP*1)
#define?AUTO_PST????????(1?<2)
#define?CONVERT_MAN?????(AUTO_PST*0)
#define?CONVERT_AUTO????(AUTO_PST*1)
#define?XP_PST(x)???????(x?<0)
#define?NOP_MODE????????0
#define?X_AXIS_MODE?????1
#define?Y_AXIS_MODE?????2
#define?WAIT_INT_MODE???3
/*?設置進入等待中斷模式,XP_PUXP_DisXM_DisYP_DisYM_En
?*?(1)對于S3C2410,位[8]只能為0,所以只能使用下面的wait_down_int,
?*????它既等待Pen?Down中斷,也等待Pen?Up中斷
?*?(2)對于S3C2440,位[8]為0、1時分別表示等待Pen?Down中斷或Pen?Up中斷
?*/
/*?進入“等待中斷模式“,等待觸摸屏被按下?*/
#define?wait_down_int()?{?ADCTSC?=?DOWN_INT?|?XP_PULL_UP_EN?|?\
??????????????????????????XP_AIN?|?XM_HIZ?|?YP_AIN?|?YM_GND?|?\
??????????????????????????XP_PST(WAIT_INT_MODE);?}
/*?進入“等待中斷模式“,等待觸摸屏被松開?*/
#define?wait_up_int()???{?ADCTSC?=?UP_INT?|?XP_PULL_UP_EN?|?XP_AIN?|?XM_HIZ?|?\
??????????????????????????YP_AIN?|?YM_GND?|?XP_PST(WAIT_INT_MODE);?}
/*?進入自動(連續)?X/Y軸坐標轉換模式?*/
#define?mode_auto_xy()??{?ADCTSC?=?CONVERT_AUTO?|?XP_PULL_UP_DIS?|?XP_PST(NOP_MODE);?}
extern?void?(*isr_handle_array[50])(void);
/*?
?*?使用查詢方式讀取A/D轉換值
?*?輸入參數:
?*?????ch:?模擬信號通道,取值為0~7
?*/???????
static?int?ReadAdc(int?ch)
{
????//?選擇模擬通道,使能預分頻功能,設置A/D轉換器的時鐘?=?PCLK/(49+1)
????ADCCON?=?PRESCALE_EN?|?PRSCVL(49)?|?ADC_INPUT(ch);
????//?清除位[2],設為普通轉換模式
????ADCTSC?&=?~(1<<2);
????//?設置位[0]為1,啟動A/D轉換
????ADCCON?|=?ADC_START;
????//?當A/D轉換真正開始時,位[0]會自動清0
????while?(ADCCON?&?ADC_START);
????//?檢測位[15],當它為1時表示轉換結束
????while?(!(ADCCON?&?ADC_ENDCVT));
????//?讀取數據????
????return?(ADCDAT0?&?0x3ff);
}
/*?
?*?測試ADC
?*?通過A/D轉換,測量可變電阻器的電壓值
?*/???????
void?Test_Adc(void)
{
????float?vol0?vol1;
????int?t0?t1;
????printf(“Measuring?the?voltage?of?AIN0?and?AIN1?press?any?key?to?exit\n\r“);
????while?(!awaitkey(0))????//?串口無輸入,則不斷測試
????{
????????vol0?=?((float)ReadAdc(0)*3.3)/1024.0;??//?計算電壓值
????????vol1?=?((float)ReadAdc(1)*3.3)/1024.0;??//?計算電壓值
????????t0???=?(vol0?-?(int)vol0)?*?1000;???//?計算小數部分?本代碼中的printf無法打印浮點數
????????t1???=?(vo
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-10-21?14:27??hardware\
?????目錄???????????0??2016-10-21?14:27??hardware\adc_ts\
?????文件????????6088??2008-03-07?01:33??hardware\adc_ts\adc_ts.c
?????文件?????????293??2008-03-07?01:33??hardware\adc_ts\adc_ts.h
?????文件?????????382??2008-03-07?01:33??hardware\adc_ts\adc_ts.lds
?????文件????????2845??2008-03-07?01:33??hardware\adc_ts\head.S
?????目錄???????????0??2016-10-21?14:27??hardware\adc_ts\include\
?????文件????????1344??2008-03-07?01:33??hardware\adc_ts\include\ctype.h
?????文件?????????733??2008-03-07?01:33??hardware\adc_ts\include\gcclib.h
?????文件?????????187??2008-03-07?01:33??hardware\adc_ts\include\kernel.h
?????文件?????????686??2008-03-07?01:33??hardware\adc_ts\include\stdio.h
?????文件????????2001??2008-03-07?01:33??hardware\adc_ts\include\string.h
?????文件???????10005??2008-03-07?01:33??hardware\adc_ts\include\system.h
?????文件?????????195??2008-03-07?01:33??hardware\adc_ts\include\types.h
?????文件????????3497??2008-03-07?01:33??hardware\adc_ts\init.c
?????文件?????????742??2008-03-07?01:33??hardware\adc_ts\interrupt.c
?????文件??????????20??2008-03-07?01:33??hardware\adc_ts\interrupt.h
?????目錄???????????0??2016-10-21?14:27??hardware\adc_ts\lib\
?????文件????????1313??2008-03-07?01:33??hardware\adc_ts\lib\ctype.c
?????文件????????1217??2008-03-07?01:33??hardware\adc_ts\lib\div64.h
?????文件????????3977??2008-03-07?01:33??hardware\adc_ts\lib\div64.S
?????文件????????7442??2008-03-07?01:33??hardware\adc_ts\lib\lib1funcs.S
?????文件?????????241??2008-03-07?01:33??hardware\adc_ts\lib\Makefile
?????文件????????2854??2008-03-07?01:33??hardware\adc_ts\lib\muldi3.c
?????文件?????????816??2008-03-07?01:33??hardware\adc_ts\lib\printf.c
?????文件?????????130??2008-03-07?01:33??hardware\adc_ts\lib\printf.h
?????文件???????10882??2008-03-07?01:33??hardware\adc_ts\lib\string.c
?????文件???????18939??2008-03-07?01:33??hardware\adc_ts\lib\vsprintf.c
?????文件????????1658??2008-03-07?01:33??hardware\adc_ts\lib\vsprintf.h
?????文件?????????842??2008-03-07?01:33??hardware\adc_ts\main.c
?????文件?????????833??2008-03-07?01:33??hardware\adc_ts\Makefile
............此處省略210個文件信息
- 上一篇:南郵離散數學實驗全部源碼
- 下一篇:51單片機驅動74hc595去控制8位數碼管
評論
共有 條評論