資源簡介
基于AD采集的電容觸摸 用51單片機帶有AD采樣的就可以

代碼片段和文件信息
#include?“includes.h“?
#include?“zyt_uart.h“
#include?“ZYT_AIN.h“
#define?KEYNUM??5??????????????????//定義按鍵的個數
#define?pressThreshold?0x12 //按下去的差值
#define?releaseThreshold?0x05???????????//釋放按鍵的閥值為按下的50%以下
typedef?struct
{
INT16U?nowkeyvalue;?????????????????????//采集的當前值
INT16U?basekeyvalue;???????????????????//?基準值
INT16U?averagevalue;??????????????????//?無按鍵按下的平均值
INT16U?dvalue;???????????????????????//?每次采集的差值
????INT8U??keyflag;??????????????????????//按鍵按下標志
????INT8U??Channel_Num;??????????????????//每一個KEY的通道號
????INT8U??baseoffset;???????????????????//設置偏移量
}touchkey;??
??
?xdata?touchkey?keyenum[KEYNUM];
??void?sys_enter_critical(void)
{
EA?=?0;
}
void?sys_exit_critical(void)
{
EA?=?1;
}??
void?inittime0(void)
{
???AUXR|=0XC0; ???//12T模式
???TMOD|=0x02;???//16位定時計數器
???TH0?=?230; ??//5ms中斷 ??0xc8
???TR0=1;???????//開始計數
???ET0=1;??????//允許中斷
}
???int8s?system_init(void)
{
//?關閉系統所有中斷
sys_enter_critical();
????inittime0();
//串口初始化
UART_Init(9600);??
AIN_Init?();???
//?打開系統中斷
sys_exit_critical();
return?0;
}
???
???void?initbaseline(void)
{
???INT8U?i;
???INT32U?dataline;
? ???for(i=0;i ????{
??? ????dataline=AIN_Vol_Read?(keyenum[i].Channel_Num500); ??//大端模式?高位在低地址
????keyenum[i].basekeyvalue=((INT16U*)&dataline)[1];
????????keyenum[i].averagevalue=keyenum[i].basekeyvalue;
????????UART_Write((INT8U*)&(keyenum[i].basekeyvalue)?2);
????????}
}
???
???void?updatabaseline(void)??//更新基準值
??? {
??? ?INT8U?i;
???for(i=0;i {
?keyenum[i].basekeyvalue?=keyenum[i].averagevalue;
?UART_Write((INT8U*)&(keyenum[i].basekeyvalue)?2);
?}
??? }
???
/*
???void?updataaverageline(void)
?? {
?? ?INT8U?i;
?for(i=0;i {
?keyenum[i].averagevalue=(keyenum[i].averagevalue?+?keyenum[i].nowkeyvalue)/2;
?}
?? }?*/
???void?updataaverageline(INT8U?mode)
?? {
?? ?INT8U?i;
?for(i=0;i {
?switch(mode)
?{
???????case?1:
??????????keyenum[i].averagevalue=(keyenum[i].averagevalue?+?keyenum[i].nowkeyvalue)/2;
??????????break;
??case?2:?//avg?=?avg?-?(25%?*?avg)?+?(25%?*?reading)???
?? ??????keyenum[i].averagevalue-=(keyenum[i].averagevalue>>2);
??keyenum[i].averagevalue+=(keyenum[i].nowkeyvalue>>2);
??break;
??case?3:?//avg?=?avg?-?(12.5%?*?avg)?+?(12.5%?*?reading)???
?? ??????keyenum[i].averagevalue-=(keyenum[i].averagevalue>>3);
??keyenum[i].averagevalue+=(keyenum[i].nowkeyvalue>>3);
??break;
??case?4:??//average-average/16+now/16
?? ??????keyenum[i].averagevalue-=(keyenum[i].averagevalue>>4);
??keyenum[i].averagevalue+=(keyenum[i].nowkeyvalue>>4);
??break;
?}
?}
?? }
???void?releasekey(INT8U?key)??//釋放按鍵
?? {
??????INT8U?keynum;
??INT16U?tmpdata;
??INT32U?tmdata;
??keynum=key;
??while(1)?
{
??????tmdata=AIN_Vol_Read?(keyenum[keynum].Channel_Num10);
??????tmpdata=((INT16U*)&tmdata)[1];
??????if(tmpdata>(keyenum[keynum].bas
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4737??2011-03-01?18:45??基于AD采集的電容觸摸\includes.h
?????文件???????6376??2011-08-04?11:51??基于AD采集的電容觸摸\STARTUP.A51
?????文件??????10680??2011-08-04?11:51??基于AD采集的電容觸摸\STARTUP.LST
?????文件????????750??2011-08-04?11:51??基于AD采集的電容觸摸\STARTUP.OBJ
?????文件??????17799??2010-12-06?16:02??基于AD采集的電容觸摸\STC12C5A60S2.H
?????文件??????40049??2011-08-06?17:02??基于AD采集的電容觸摸\touchkey
?????文件???????5103??2011-08-06?17:01??基于AD采集的電容觸摸\touchkey.c
?????文件???????9551??2011-08-06?17:02??基于AD采集的電容觸摸\touchkey.hex
?????文件?????????81??2011-08-06?17:02??基于AD采集的電容觸摸\touchkey.lnp
?????文件??????10911??2011-08-06?17:02??基于AD采集的電容觸摸\touchkey.LST
?????文件??????32705??2011-08-06?17:02??基于AD采集的電容觸摸\touchkey.M51
?????文件??????19521??2011-08-06?17:02??基于AD采集的電容觸摸\touchkey.OBJ
?????文件???????2859??2011-08-06?17:47??基于AD采集的電容觸摸\touchkey.Opt
?????文件???????4079??2011-08-06?17:47??基于AD采集的電容觸摸\touchkey.plg
?????文件???????2377??2011-08-06?11:51??基于AD采集的電容觸摸\touchkey.Uv2
?????文件???????2849??2011-08-06?16:43??基于AD采集的電容觸摸\touchkey_Opt.Bak
?????文件???????2377??2011-08-06?11:48??基于AD采集的電容觸摸\touchkey_Uv2.Bak
?????文件???????8192??2011-08-05?18:20??基于AD采集的電容觸摸\Unti
?????文件????????408??2011-08-05?18:20??基于AD采集的電容觸摸\Unti
?????文件???????8192??2011-08-06?16:47??基于AD采集的電容觸摸\Unti
?????文件????????408??2011-08-06?16:47??基于AD采集的電容觸摸\Unti
?????文件?????????28??2011-08-06?17:46??基于AD采集的電容觸摸\Unti
?????文件????????776??2011-08-06?17:46??基于AD采集的電容觸摸\Unti
?????文件???????2696??2011-08-05?18:20??基于AD采集的電容觸摸\Unti
?????文件??????14680??2011-08-05?18:20??基于AD采集的電容觸摸\Unti
?????文件??????45748??2012-10-19?09:10??基于AD采集的電容觸摸\Unti
?????文件????????346??2011-08-05?17:06??基于AD采集的電容觸摸\Unti
?????文件??????24332??2012-10-19?09:10??基于AD采集的電容觸摸\Unti
?????文件????????116??2011-08-06?11:59??基于AD采集的電容觸摸\UNTITL~1.SearchResults
?????文件???????4741??2011-08-06?16:46??基于AD采集的電容觸摸\ZYT_AIN.c
............此處省略11個文件信息
評論
共有 條評論