中国触摸屏网
首页
触摸屏
一体机
触摸显示器
供求商机
产品展示
厂商资料
资讯中心
触摸软件
触摸论坛
触摸屏资讯 | 触控一体机 | 触摸屏屏幕 | 触摸屏机柜 | 触摸显示器 | 触摸控制器 | 自助终端 | 呼叫系统 | 触摸屏软件| 全国经销商
触摸屏外设 | 考勤排队机 | 触摸屏新品 | 解决之方案 | 选购与维护 | 驱动与软件 | 数字城市 | POS 系统 |LED电子大屏| 触摸屏论坛
导航: 首页 >> 选购与维护 >> 触摸屏技术 >> 正文 全国触摸屏销售热线:(点击查看)
全国触摸屏经销商 全国触摸屏经销商
·广东广州 ·广东深圳
·福建福州 ·福建厦门
·福建泉州 ·湖南长沙
·江西南昌 ·上 海 市
·江苏南京 ·江苏苏州
·北 京 市 ·山西太原
·山东济南 ·四川成都
·重 庆 市 ·云南昆明
·>>> 经销商加入指南
·>>> 经销商加入指南
AT91RM9200读取ADS7843触摸屏源代码  
AT91RM9200读取ADS7843触摸屏源代码
副标题:AT91RM9200读取ADS7843触摸屏源代码
日期:2008-5-27 23:05:31     来源:jiuzhuaxiong   编辑:51Touch 
 AT91RM9200读取ADS7843触摸屏源代码(gliethttp)
//--------------------------------------------------------------
typedef struct __xTouch_value
{
    uint16 x;
    uint16 y;
}_xTouch_value;
typedef struct __xTouch
{
    boolean IRQ_Mod;
    boolean down;
    boolean up;
_xTouch_value
     value;
}_xTouch;
//--------------------------------------------------------------
_xTouch xxTouch = { true,false,false,{0xffff,0xffff} };
_xTouch *xTouch = &xxTouch;
//--------------------------------------------------------------
//触摸屏
#define Touch_DCLK    (uint32)(0x01<<11)/*PC11*/
#define Touch_CS    (uint32)(0x01<<12)/*PC12*/
#define Touch_DIN    (uint32)(0x01<<13)/*PC13*/
#define Touch_busy    (uint32)(0x01<<14)/*PC14*/
#define Touch_DOUT    (uint32)(0x01<<15)/*PC15*/
#define Touch_PIRQ    (uint32)(0x01<<26)/*PA26*/

#define set_dclk()    AT91F_PIO_SetOutput(AT91C_BASE_PIOC, Touch_DCLK)
#define clr_dclk()    AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, Touch_DCLK)
#define set_din()    AT91F_PIO_SetOutput(AT91C_BASE_PIOC, Touch_DIN)
#define clr_din()    AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, Touch_DIN)
#define set_chcs()    AT91F_PIO_SetOutput(AT91C_BASE_PIOC, Touch_CS)
#define clr_chcs()    AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, Touch_CS)
#define Set_InputMod() AT91C_BASE_PIOA->PIO_PER = Touch_PIRQ
#define Set_IRQMod()    AT91C_BASE_PIOA->PIO_PDR = Touch_PIRQ
#define Get_TouIRQ()    (AT91C_BASE_PIOA->PIO_PDSR & Touch_PIRQ)
//--------------------------------------------------------------
void Touch_write(uint8 data)//触屏传输速率最大125Kbits
{uint8 i;
    for(i = 0;i < 8;i++)
    {
        clr_dclk();            //低电平改变数据数据
        if(data & 0x80)set_din();
        else clr_din();
        data <<= 1;
        set_dclk();
    }
    clr_dclk();
}
//--------------------------------------------------------------
uint16 Touch_read(void)//触屏传输速率最大125Kbits
{uint8 i;
uint16 result = 0;
    for(i = 0;i < 12;i++)
    {
        result <<= 1;
        set_dclk();            //仅有下降沿读取数据
        clr_dclk();
        if(AT91C_BASE_PIOC->PIO_PDSR & Touch_DOUT)result++;
    }
    return result;
}
//---------------------------------------------------------------
uint16 Get_X(void)
{
    Touch_write(0x90);
    return Touch_read();
}
uint16 Get_Y(void)
{
    Touch_write(0xD0);
    return Touch_read();
}
//---------------------------------------------------------------
void Touch_IRQ_proc(void)
{
    AT91C_BASE_AIC->AIC_ICCR = ( 1 << AT91C_ID_IRQ1 );
    AT91F_AIC_DisableIt(AT91C_BASE_AIC, AT91C_ID_IRQ1);
    Set_InputMod();
    xTouch->down = true;
    xTouch->up = false;
    xTouch->IRQ_Mod = false;
    xxxdprintf("\r\nTouch按下\r\n");
}
//---------------------------------------------------------------
#define XTOUCH_DEBGU 1
#if XTOUCH_DEBGU
static char data[50];
#endif
void xTouchproc(void)
{
    if(xTouch->down == true)
    {
        if( Get_TouIRQ() )
        {//触屏抬起
        {uint32 count;for(count = 0;count < 0xfff;count++);}
            if( Get_TouIRQ() )
            {
                xTouch->down = false;
                xTouch->up = true;
               
                #if XTOUCH_DEBGU
                xxxdprintf("\r\nTouch抬起\r\n");
                #endif
            }
        }else
            {uint16 x,y;OS_CPU_SR cpu_sr;
                clr_chcs();
                x = Get_X();
                y = Get_Y();
                OS_ENTER_CRITICAL();
                xTouch->value.x = x;
                xTouch->value.y = y;
                OS_EXIT_CRITICAL();
                set_chcs();
               
                #if XTOUCH_DEBGU
                sprintf(data,"x=%d,y=%d\r\n",
                xTouch->value.x,xTouch->value.y);
                xxxdprintf(data);
                #endif
            }
    }
    if(xTouch->up == true)
    {
        if(xTouch->IRQ_Mod == false)
        {
            xTouch->IRQ_Mod = true;
            Set_IRQMod();
            AT91C_BASE_AIC->AIC_ICCR =
                                ( 1 << AT91C_ID_IRQ1 );
            AT91F_AIC_EnableIt(AT91C_BASE_AIC,
                                AT91C_ID_IRQ1);
        }
    }
}
对这篇文章您有更多的想法? 请去论坛发表意见吧   
“AT91RM9200读取ADS7843触摸屏源代码” 的相关新闻
全球最新触摸屏电容式感应IC技术问世科技城触摸屏芯片ADS7846/ADS7843驱动程序(单片机C51)
触摸屏及相关厂家
广东洪毅触摸设备
台湾嵩达光电科技
广东深越光电技术
台湾理义科技股份
北京联控兴业科技
台湾宇宙光电股份
3M中国触控系统部
南京华睿川电子科技
>> 触摸屏相关厂商加入
站内搜索 站内搜索
软件开发 软件开发
Toucher2.2在线演示
时代广场软件首页
荣威触摸屏查询软件首页
眉山经济贸易委员会软件首页
推荐新闻 推荐新闻
友达、华映将推新品,电
触摸屏浏览器Toucher V4
触控屏技术能否开启手机
专门为零售商开发的触摸
触摸屏浏览器Toucher触摸
在便携设备中应用电容式
KTV市场触摸屏 又掀娱乐
加入收藏网站地图友情链接联系我们  |  广告联系全国销售网络
    网站广告、经销商加盟、触摸屏软件销售:028-87439508 13183843395 028-66219290 联系人:张小姐 传真:028-87439508 全国各地经销商如下:
   广 州   020-87599875 深 圳   0755-21949677 福 州   0591-87818596 厦 门   0592-5615268 泉 州   0595-88150378
   湖 南   15863470449 江 西   0791-6283683 上 海   13916222245 南 京   025-83610010 苏 州   0512-65581867
   北 京   010-62631382 山 西   0351-8390152 济 南   13396407999 四 川   028-81934978 重 庆   023-68609756
   云 南   0871-5109466 其 他… 028-87439508   >>> 经销商加入指南    
电子邮件: 51touch(A)126.com 请将地址中的"(A)"改成"@",避免垃圾邮件出此下策,望谅
版权所有 Copyright© 2003-2008 中国触摸屏网 地址:成都市晋吉南路146号 电话:028-87439508  13183843395  028-66219290

在线咨询QQ: 

触摸屏、触摸屏软件、触控一体机咨询 43361182 触摸屏、触摸屏软件、触控一体机咨询 893008608 MSN 帐号:touch8(A)gmail.com 将"(A)"改成"@"即可