• 大小: 75KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签:

资源简介

基于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采集的电容触摸\Untitled Project.IAB

     文件        408  2011-08-05 18:20  基于AD采集的电容触摸\Untitled Project.IAD

     文件       8192  2011-08-06 16:47  基于AD采集的电容触摸\Untitled Project.IMB

     文件        408  2011-08-06 16:47  基于AD采集的电容触摸\Untitled Project.IMD

     文件         28  2011-08-06 17:46  基于AD采集的电容触摸\Untitled Project.PFI

     文件        776  2011-08-06 17:46  基于AD采集的电容触摸\Untitled Project.PO

     文件       2696  2011-08-05 18:20  基于AD采集的电容触摸\Untitled Project.PR

     文件      14680  2011-08-05 18:20  基于AD采集的电容触摸\Untitled Project.PRI

     文件      45748  2012-10-19 09:10  基于AD采集的电容触摸\Untitled Project.PS

     文件        346  2011-08-05 17:06  基于AD采集的电容触摸\Untitled Project.SearchResults

     文件      24332  2012-10-19 09:10  基于AD采集的电容触摸\Untitled Project.WK3

     文件        116  2011-08-06 11:59  基于AD采集的电容触摸\UNTITL~1.SearchResults

     文件       4741  2011-08-06 16:46  基于AD采集的电容触摸\ZYT_AIN.c

............此处省略11个文件信息

评论

共有 条评论