資源簡介
模擬量電容式觸摸
單片機型號STC12C2052AD 使用ADC功能 內(nèi)部RC時鐘
P1.1接口引線接一塊金屬片。
可實現(xiàn)對P1.6 P1.7的控制。
測試程序時可以在P1.6或P1.7在VCC之間連接LED,方可測試。
P1.6為鎖存 P1.7為不鎖存。實現(xiàn)效果見實驗
可自行控制5V繼電器實現(xiàn)自己要做的東西。
程序出自杜洋工作室。 希望各位網(wǎng)友多點支持

代碼片段和文件信息
說明:
模擬量電容式觸摸
STC12C2052AD?使用ADC功能?內(nèi)部RC時鐘???
P1.1接口引線接一塊金屬片。
可實現(xiàn)對P1.6?P1.7的控制。
測試程序時可以在P1.6或P1.7在VCC之間連接LED,方可測試。
P1.6為鎖存?P1.7為不鎖存。實現(xiàn)效果見實驗
/*********************************************************************************************/
#include??//STC12Cx052或STC12Cx052AD系列單片機頭文件
#include? //51基本運算(包括_nop_空函數(shù))
sbit?LED1?=?P1?^?7;?//I/O設置為強推高電平?(無鎖存功能)
sbit?LED2?=?P1?^?6;?//I/O設置為強推高電平?(鎖存功能)
/*********************************************************************************************
函數(shù)名:毫秒級CPU延時函數(shù)
調(diào)??用:DELAY_MS?(?);
參??數(shù):1~65535(參數(shù)不可為0)
返回值:無
結(jié)??果:占用CPU方式延時與參數(shù)數(shù)值相同的毫秒時間
備??注:應用于1T單片機時i<600,應用于12T單片機時i<125
/*********************************************************************************************/
void?DELAY_MS?(unsigned?int?a){
unsigned?int?i;
while(?--a?!=?0){
for(i?=?0;?i?600;?i++);
}
}
/*********************************************************************************************/
/*********************************************************************************************
函數(shù)名:8位A/D轉(zhuǎn)換函數(shù)
調(diào)??用:??=?Read?(?);
參??數(shù):輸入的端口(0000?0XXX?其中XXX是設置輸入端口號,可用十進制0~7表示,0表示P1.0,7表示P1.7)
返回值:8位的ADC數(shù)據(jù)
結(jié)??果:讀出指定ADC接口的A/D轉(zhuǎn)換值,并返回數(shù)值
備??注:適用于STC12C2052AD單片機
/**********************************************************************************************/
unsigned?char?Read?(unsigned?char?CHA){
unsigned?char?AD_FIN=0;?//存儲A/D轉(zhuǎn)換標志
????CHA?&=?0x07;????????????//選擇ADC的8個接口中的一個(0000?0111?清0高5位)
????ADC_CONTR?=?0x00; //ADC轉(zhuǎn)換的速度(0XX0?0000?其中XX控制速度,請根據(jù)數(shù)據(jù)手冊設置)
????_nop_();
????ADC_CONTR?|=?CHA;???????//選擇A/D當前通道
????_nop_();
????ADC_CONTR?|=?0x80;??????//啟動A/D電源
????DELAY_MS(1);????????????//使輸入電壓達到穩(wěn)定(1ms即可)
????ADC_CONTR?|=?0x08;??????//啟動A/D轉(zhuǎn)換(0000?1000?令ADCS?=?1)
????while?(AD_FIN?==0){?????//等待A/D轉(zhuǎn)換結(jié)束
????????AD_FIN?=?(ADC_CONTR?&?0x10);?//0001?0000測試A/D轉(zhuǎn)換結(jié)束否
????}
????ADC_CONTR?&=?0xE7;??????//1111?0111?清ADC_FLAG位?關(guān)閉A/D轉(zhuǎn)換?
return?(ADC_DATA);??????????//返回A/D轉(zhuǎn)換結(jié)果(8位)
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:觸摸按鍵處理函數(shù)
調(diào)??用:??=?Read_R?();
參??數(shù):無
返回值:bit?1表示有感應物,0表示沒有感應物
結(jié)??果:
備??注:需要根據(jù)實現(xiàn)應用調(diào)協(xié)靈敏度和其他參數(shù)
/**********************************************************************************************/
bit?Read_R?(void){
unsigned?char?Riim=0ijk;
bit?aa;
for(ii=0;ii<3;ii++){?//循環(huán)檢查防干擾
j=0;k=0;
for(i=0;i<10;i++){?//一次采集數(shù)據(jù)的數(shù)量
DELAY_MS?(3);
R?=?Read?(0);
if(R?0x2F){?//此參數(shù)可調(diào)整感應靈敏度值在0x01到0x2F
k++;
}
if(R?==?0xFF){?
j++;
}
}
if(k>1?&&?j>1){
m++;
}else{
m=0;
}
}
if(m>2){
aa?=1;
}else{
aa=0;
}
LED1?=?~aa;
return(aa);
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:主函數(shù)
調(diào)??用:無
參??數(shù):無
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4386??2010-06-20?19:04??ADC電容式\EASY_TOUCH_ADCC
?????文件???????4077??2012-03-23?15:32??ADC電容式\EASY_TOUCH_ADCC.c
?????文件????????627??2010-06-20?19:04??ADC電容式\EASY_TOUCH_ADCC.hex
?????文件?????????62??2010-06-20?19:04??ADC電容式\EASY_TOUCH_ADCC.lnp
?????文件???????7076??2010-06-20?19:04??ADC電容式\EASY_TOUCH_ADCC.LST
?????文件???????9502??2010-06-20?19:04??ADC電容式\EASY_TOUCH_ADCC.M51
?????文件???????4903??2010-06-20?19:04??ADC電容式\EASY_TOUCH_ADCC.OBJ
?????文件???????1049??2010-06-20?22:48??ADC電容式\EASY_TOUCH_ADCC.Opt
?????文件???????2684??2010-06-20?22:48??ADC電容式\EASY_TOUCH_ADCC.plg
?????文件???????2126??2010-06-20?18:42??ADC電容式\EASY_TOUCH_ADCC.Uv2
????.......??????1042??2010-06-20?18:58??ADC電容式\EASY_TOUCH_ADCC_Opt.Bak
????.......?????????0??2010-06-20?18:37??ADC電容式\EASY_TOUCH_ADCC_Uv2.Bak
?????目錄??????????0??2010-06-20?22:48??ADC電容式
-----------?---------??----------?-----??----
????????????????37534????????????????????13
- 上一篇:基于百度地圖的地圖分區(qū)三級聯(lián)動插件
- 下一篇:2.tcl
評論
共有 條評論