12655|45

13

帖子

0

TA的资源

一粒金砂(高级)

分享一下自制的触摸摁键,有程序,有视频,有真相。 [复制链接]

 
废话不多说,先上图诱惑下大家下
然后自拍了个视频,效果可能不是很好,不要介意哈~


哈~看起来不错吧,下面上程序。
首先说明下我在structure.c做了点接口BIT位的小改动。为的是适应板子。好了,上程序。下面是主函数
  1. /*
  2. * main.c
  3. *
  4. *  Created on: 2012-8-12
  5. *      Author: maswell_xiao
  6. */
  7. #include "CTS_Layer.h"
  8. #include

  9. #define CS   BIT0
  10. #define SID  BIT7
  11. #define SCLK BIT6

  12. extern void LCDInit(void);
  13. extern void LCDShow(unsigned char Addr,char *s);

  14. struct CAPMSG
  15. {
  16.         unsigned int Up;
  17.         unsigned int Right;
  18.         unsigned int Down;
  19.         unsigned int Left;
  20.         unsigned int Middle;
  21.         unsigned int proximity;
  22. };

  23. void main(void)
  24. {
  25.         struct CAPMSG MSG;
  26.         WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  27.         BCSCTL1 = CALBC1_1MHZ;                // Set DCO to 1, 8, 12 or 16MHz
  28.         DCOCTL = CALDCO_1MHZ;
  29.         BCSCTL2 |= DIVS_2;                    // divide SMCLK by 4 for 2Mhz
  30.         BCSCTL3 |= LFXT1S_2;                  // LFXT1 = VLO

  31.         P2DIR = 0xFF;
  32.         P2SEL = 0;
  33.         P2SEL2 = 0;
  34.         P2OUT = 0;

  35.         LCDInit();
  36.         LCDShow(0x80,"欢迎使用电容式触");
  37.         LCDShow(0x90,"摸摁键。");
  38.         LCDShow(0x88,"  ");
  39.         LCDShow(0x98,"maxwell xiao");
  40.         _delay_cycles(500000);


  41.         TI_CAPT_Init_Baseline(&middle_button);
  42.         TI_CAPT_Init_Baseline(&wheel);
  43.         TI_CAPT_Init_Baseline(&proximity_sensor);

  44.         while (1)
  45.         {
  46.                 do
  47.                 {
  48.                         TACCR0 = 100;
  49.                         TACTL = TASSEL_1 + MC_1;
  50.                         TACCTL0 |= CCIE;
  51.                         __bis_SR_register(LPM3_bits+GIE);
  52.                         TACCTL0 &= ~CCIE;
  53.                         TI_CAPT_Custom(&proximity_sensor,&MSG.proximity);
  54.                 }
  55.                 while (MSG.proximity <= 100);
  56.                 TI_CAPT_Custom(&middle_button,&MSG.Middle);
  57.                 TI_CAPT_Custom(&wheel,&MSG.Up);//传个地址就行,首地址。
  58.                 if(MSG.Middle > 1000)
  59.                 {
  60.                         LCDShow(0x88,"摁下了中键");
  61.                 }
  62.                 if(MSG.Down > 1000)
  63.                 {
  64.                         LCDShow(0x88,"摁下了下键");
  65.                 }
  66.                 if(MSG.Left > 1000)
  67.                 {
  68.                         LCDShow(0x88,"摁下了左键");
  69.                 }
  70.                 if(MSG.Right > 1000)
  71.                 {
  72.                         LCDShow(0x88,"摁下了右键");
  73.                 }
  74.                 if(MSG.Up > 1000)
  75.                 {
  76.                         LCDShow(0x88,"摁下了上键");
  77.                 }
  78.                 __no_operation();

  79.         }
  80. }
  81. #pragma vector = TIMER0_A0_VECTOR
  82. __interrupt void Timer_A0_ISR(void)
  83. {
  84.       __bic_SR_register_on_exit(LPM3_bits+GIE);
  85. }

复制代码
还有个12864的驱动。
顺便贴上吧  。休眠模式没调出来,害羞啊,脸红啊。。。
  1. /*
  2. * 12864.c
  3. *
  4. *  Created on: 2012-8-12
  5. *      Author: maswell_xiao
  6. */
  7. #include

  8. #define CS BIT0
  9. #define SID BIT7
  10. #define SCLK BIT6

  11. inline void delay_ms(unsigned int t)
  12. {
  13.         int i;
  14.         for(i = 0; i < t; i++)
  15.                 _delay_cycles(100);
  16. }
  17. void sendbyte(unsigned char zdata)
  18. {
  19.         unsigned int i;
  20.         for(i=0; i<8; i++)
  21.         {
  22.                 if((zdata << i) & 0x80)
  23.                 {
  24.                         P2OUT |= SID;
  25.                 }
  26.                 else
  27.                 {
  28.                         P2OUT &= ~SID;
  29.                 }
  30.                 P2OUT &= ~SCLK;
  31.                 _delay_cycles(1);
  32.                 P2OUT |= SCLK;
  33.         }
  34. }
  35. void write_com(unsigned char cmdcode)
  36. {
  37.         P2OUT |= CS;
  38.         sendbyte(0xf8);
  39.         sendbyte(cmdcode & 0xf0);
  40.         sendbyte((cmdcode << 4) & 0xf0);
  41.         _delay_cycles(7);
  42.         P2OUT &= ~CS;
  43. }
  44. void write_data(unsigned char Dispdata)
  45. {
  46.         P2OUT |= CS;
  47.         sendbyte(0xfa);
  48.         sendbyte(Dispdata & 0xf0);
  49.         sendbyte((Dispdata << 4) & 0xf0);
  50.         _delay_cycles(7);
  51.         P2OUT &= ~CS;
  52. }
  53. void LCDInit(void)
  54. {
  55.         delay_ms(40);
  56.         write_com(0x30);//四位MPU接口,使用基本指令集
  57.         delay_ms(5);
  58.         write_com(0x0c);//开整体显示,关游标,正常显示。
  59.         delay_ms(5);
  60.         write_com(0x03);//地址计数器归零。
  61.         delay_ms(5);
  62.         write_com(0x01);//请全屏显示
  63. }

  64. void hzkdis(char *s)
  65. {
  66.         while(*s > 0)
  67.     {
  68.                 write_data(*s);
  69.                 s++;
  70.                 _delay_cycles(8);//数据稳定建立时间。
  71.     }
  72. }
  73. void LCDShow(unsigned char Addr,char *s)
  74. {
  75.         write_com(Addr);
  76.         _delay_cycles(8);//数据稳定建立时间。
  77.         hzkdis(s);
  78. }
  79. void LCDSleep(void)
  80. {/*
  81.         write_com(0x20);
  82.         _delay_cycles(80);//数据稳定建立时间。
  83.         write_com(0x24);//使用扩充指令集
  84.         _delay_cycles(80);//数据稳定建立时间。
  85.         write_com(0x34);
  86.         _delay_cycles(80);//数据稳定建立时间。
  87.         write_com(0x0c);//进入睡眠状态
  88.         _delay_cycles(80);//数据稳定建立时间。
  89.         write_com(0x30);//四位MPU接口,使用基本指令集*/
  90. }
  91. void LCDWakeUp(void)
  92. {/*
  93.         write_com(0x34);//使用扩充指令集
  94.         _delay_cycles(80);//数据稳定建立时间。
  95.         write_com(0x08);//退出睡眠状态
  96.         _delay_cycles(80);//数据稳定建立时间。
  97.         write_com(0x30);//四位MPU接口,使用基本指令集*/
  98. }
复制代码
OK,就这样了。
的.jpg

最新回复

谢谢分享!  详情 回复 发表于 2016-3-29 10:59

点评

#include \"CTS_Layer.h\" #include 头文件怎么写的那么奇怪?什么意思啊?:)  详情 回复 发表于 2012-8-25 01:11
不错给力!!:victory:  详情 回复 发表于 2012-8-13 15:15

回复
举报

6066

帖子

90

TA的资源

裸片初长成(初级)

谢谢分享!

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

回复 楼主 maswell_xiao 的帖子

不错给力!!

点评

爬虫你的触摸调的怎么样了?等分享呢!:tongue:  详情 回复 发表于 2012-8-13 16:19

回复

1246

帖子

18

TA的资源

五彩晶圆(初级)

回复 板凳 IC爬虫 的帖子

爬虫你的触摸调的怎么样了?等分享呢!

点评

2452和2553IIC通信遇到一点问题,别着急!呵呵呵 而且这段时间又有别的事要搞了,要过一段时间弄了!!  详情 回复 发表于 2012-8-13 16:29

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

回复 4楼 anananjjj 的帖子

2452和2553IIC通信遇到一点问题,别着急!呵呵呵

而且这段时间又有别的事要搞了,要过一段时间弄了!!

回复

1万

帖子

16

TA的资源

版主

不错哟,顶

个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

365

帖子

9

TA的资源

一粒金砂(高级)

谢谢分享

回复

116

帖子

0

TA的资源

一粒金砂(高级)

楼主的液晶不是3.3V的吧,板子该不是自己刻蚀的吧 !

点评

呵呵~都猜对了。板子是自己做的,液晶是5V的,用了个场效应管的芯片驱动,效果不错。  详情 回复 发表于 2012-8-22 21:41

回复

13

帖子

0

TA的资源

一粒金砂(高级)

回复 8楼 智波景严 的帖子

呵呵~都猜对了。板子是自己做的,液晶是5V的,用了个场效应管的芯片驱动,效果不错。

回复

14

帖子

0

TA的资源

一粒金砂(中级)

楼主按键怎么做出来的,能不能分享一下

点评

就用Altium Designer 画个圆孔连根线出来就可以了。然后拿去打印转印腐蚀一下就行了。:titter:  详情 回复 发表于 2012-8-24 19:08

回复

13

帖子

0

TA的资源

一粒金砂(高级)

回复 10楼 hnhdzzc 的帖子

就用Altium Designer 画个圆孔连根线出来就可以了。然后拿去打印转印腐蚀一下就行了。

回复

705

帖子

0

TA的资源

纯净的硅(中级)

回复 楼主 maswell_xiao 的帖子

#include "CTS_Layer.h"
#include
头文件怎么写的那么奇怪?什么意思啊?

点评

这个是官方给的例程里面的头文件,里面包含了一些官方的API函数,比如下方TI_CAP_Init_Baseline、Custom等等。  详情 回复 发表于 2012-8-25 14:42

回复

13

帖子

0

TA的资源

一粒金砂(高级)

回复 12楼 awarenessxie 的帖子

这个是官方给的例程里面的头文件,里面包含了一些官方的API函数,比如下方TI_CAP_Init_Baseline、Custom等等。

点评

他下面那就include后面什么都没包含啊  详情 回复 发表于 2012-8-25 23:06

回复

705

帖子

0

TA的资源

纯净的硅(中级)

回复 13楼 maswell_xiao 的帖子

他下面那就include后面什么都没包含啊

点评

咦~居然没有粘贴上?难道这个编辑器有点问题?  详情 回复 发表于 2012-8-26 10:34

回复

13

帖子

0

TA的资源

一粒金砂(高级)

回复 14楼 awarenessxie 的帖子

咦~居然没有粘贴上?难道这个编辑器有点问题?

点评

应该就是包含开发板的头文件了吧 include  详情 回复 发表于 2014-8-3 09:05
用的IAR还是CCS啊?  详情 回复 发表于 2012-8-26 22:39

回复

46

帖子

0

TA的资源

一粒金砂(中级)

自制触摸板,省钱了,哈哈

回复

705

帖子

0

TA的资源

纯净的硅(中级)

回复 15楼 maswell_xiao 的帖子

用的IAR还是CCS啊?

点评

CCS的呢:handshake  详情 回复 发表于 2012-9-1 14:43

回复

8

帖子

0

TA的资源

一粒金砂(中级)

求楼主的PCB,谢谢了!

回复

2

帖子

0

TA的资源

一粒金砂(初级)

很不错

回复

13

帖子

0

TA的资源

一粒金砂(高级)

回复 17楼 awarenessxie 的帖子

CCS的呢

回复
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表