网购了一块TTP229的触摸模块。模块中实际使用的是8229BSF集成块。本人用STC89C52搭建了测试电路。用12864液晶显示。
显示01-16,表示16个按钮的对应值。

制作出来的实物图如下:
TTP229.jpgTTP229_1.jpg

单片机源程序如下:

/*********************************************************************************

* 【作    者】: 

* 【版    本】: 

* 【函数功能】: 利用单线制DS18B20温度传感器, 并在液晶12864上显示

* 【使用说明】: 触摸板P1的第一和第三跳线短接

**********************************************************************************/

#include

#include

#include

#include

#include


#define uchar unsigned char

#define uint  unsigned int


// 液晶现实属区区

uchar code pic1[];

uchar code pic2[];

uchar code pic3[]; 

/* 液晶控制接口 -----------------------------------------------*/

sbit RS  = P0^7;

sbit WRD = P0^6;

sbit E   = P0^5;

sbit PSB = P0^4;

sbit RES = P0^3;


sbit sign = P1^0;

sbit sign1 = P1^1;


// TTP229接口

sbit SDA=P1^2;

sbit SCL=P1^3; 


// 温度传感器接口

sbit DQ=P3^7; //数据传输线接单片机的相应的引脚 

/* 温度测量用变量定义 -----------------------------------------------*/

unsigned char tempL=0; //设全局变量

unsigned char tempH=0; 

unsigned int sdate;//测量到的温度的整数部分

unsigned char xiaoshu1;//小数第一位

unsigned char xiaoshu2;//小数第二位

unsigned char xiaoshu;//两位小数

bit  fg=1;        //温度正负标志


// 液晶处理函数

void TransferData(char data1,bit DI);

void display(void);

void display_grapic(void);

void delayms(uint n);

void DisplayLine(uchar line1,uchar line2);

void DisplayGraphic(uchar *adder);

void delay(uint m);

void lcd_mesg(uchar *adder1);


void delay1ms(unsigned int t);


// 18B20温度传感器函数

void ReadTemperature(void);

void Init_DS18B20(void);

unsigned char ReadOneChar();

void WriteOneChar(unsigned char dat);

void Delay10us(unsigned int t);

void Initial_com(void);


// 扫描TTP229电容触摸键盘模块

unsigned int TTP229B(void);


/********************************************************************

* 名称 : Convert(uchar In_Dat)

* 功能 : 因为电路设计时,P2.0--P2.7接法刚好了资料中的相反,所以设计该函数。

* 输入 : 1602资料上的值

* 输出 : 送到1602的值

***********************************************************************/

unsigned char Convert(uchar In_Dat) {

    uchar i, Out_Dat;

    for(i=0; i<8; i++){

                Out_Dat=  In_Dat;

    }

    return Out_Dat;

}


void initinal(void)  {         //LCD字库初始化程序

        delay(40);             //大于40MS的延时程序

        PSB=1;                 //设置为8BIT并口工作模式

        delay(1);              //延时

        RES=0;                 //复位

        delay(1);              //延时

        RES=1;                 //复位置高

        delay(10);

        TransferData(0x30,0);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF

        delay(100);            //大于100uS的延时程序

        TransferData(0x30,0);  //Function Set

        delay(37);             ////大于37uS的延时程序

        TransferData(0x08,0);  //Display on Control

        delay(100);            //大于100uS的延时程序

        TransferData(0x10,0);  //Cursor Display Control光标设置

        delay(100);            //大于100uS的延时程序

        TransferData(0x0C,0);  //Display Control,D=1,显示开

        delay(100);            //大于100uS的延时程序

        TransferData(0x01,0);  //Display Clear

        delay(10);             //大于10mS的延时程序

        TransferData(0x06,0);  //Enry Mode Set,光标从右向左加1位移动

        delay(100);            //大于100uS的延时程序

}


/********************************************************************

* 名称 : initina2()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

***********************************************************************/

void     initina2(void)           //LCD显示图片(扩展)初始化程序

          {

           delay(40);             //大于40MS的延时程序

           PSB=1;                 //设置为8BIT并口工作模式

           delay(1);              //延时

           RES=0;                 //复位

           delay(1);              //延时

           RES=1;                 //复位置高

           delay(10);


           TransferData(0x36,0);  //Extended Function Set RE=1: extended instruction

           delay(100);            //大于100uS的延时程序

           TransferData(0x36,0);  //Extended Function Set:RE=1: extended instruction set

           delay(37);             ////大于37uS的延时程序

           TransferData(0x3E,0);  //EXFUNCTION(DL=8BITS,RE=1,G=1)

           delay(100);            //大于100uS的延时程序

           TransferData(0x01,0);  //CLEAR SCREEN

           delay(100);            //大于100uS的延时程序

          }


/********************************************************************

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

***********************************************************************/

void    main(void) {

    uchar init18B20[]={

                "温度传感器18B20 "  

                "初始化中......  "

                "                "

                "                "

        };

        

        uchar curtemp[]={

                "当前温度:      "  

                "                "

                "                "

                "                "

        };

        uchar IC_DAT2[]={

            "白日依山尽,    "                        //0x80

            "欲穷千里目,    "                        //0x90

            "黄河入海流。    "                        //0x88

            "更上一层楼。    "                        //0x98

        };

        unsigned int key=0;


        // 初始化串口

        Initial_com();


        initinal();                    //调用LCD字库初始化程序

        delay(100);            //大于100uS的延时程序 

        lcd_mesg(IC_DAT2);     //显示中文汉字2

        delayms(80);


        sign = 0;

    // 显示温度传感器18B20初始化中

        initinal();                    //调用LCD字库初始化程序

        delay(100);            //大于100uS的延时程序

        lcd_mesg(init18B20);      //显示中文汉字1

        delay(240);

        delay(240);


        Init_DS18B20(); //初始化

        sign = 1;

        delayms(80);


        SDA=1;

    SCL=1;


        while(1) {

                sign1 = 0;

                // 初始化温度传感器并取得当前温度

                ReadTemperature();

                          

                sign1=1;


                SBUF=sdate;

                delayms(20);

                SBUF=xiaoshu;


                // 转换温度数据为字符串

                // 整数部分

                curtemp[10]=48+sdate/10;

                curtemp[11]=48+sdate%10;

[1] [2] [3]
关键字:TTP229  触摸模块  51单片机  驱动程序 引用地址:TTP229触摸模块的51单片机驱动程序

上一篇:单片机按键&串口控制步进电机正反转调速含程序和仿真
下一篇:AT89S52单片机16LED摇摇棒设计

推荐阅读

  C&D技术公司签订了一项协议,购买特洛伊电池公司(Trojan Battery Company LLC),从而创建一家收入超过10亿美元(8.7亿欧元)的大型电池制造商。   该消息是由拥有该买家的基金经理KPS Capital Partners LP周二宣布的。这笔未披露价值的交易预计将在年底前完成,但需获得某些审批。Trojan将被Charlesbank Capital Partners LLC和其他股...
汽车从发动机向纯电动转变的时代正在临近,但纯电动化也面临着技术上必须跨越的障碍,其中之一就是电池。目前的电池在续航距离、充电性能和安全性能等方面存在课题。作为解决课题的新一代电池受到关注的是“全固态电池”。日本为了确保汽车产业的优势地位,日本政府与民营企业正在携手致力于实用化。据日本经济新闻中文网10月31日消息称,全固态电池是锂离...
11月3日-5日,首届慕尼黑华南电子展在深圳国际会展中心(宝安新馆)拉开序幕。此次展会上,上海瀚薪科技有限公司(简称“上海瀚薪”)携多款重磅碳化硅新品亮相,吸引了众多参展人士的眼球。上海瀚薪是一家致力于研发与生产第三代宽禁带半导体功率器件及功率模块的高科技企业,也是国内唯一一家能大规模量产车规级碳化硅MOS管、二极管并规模出货给全球知名...
近日,三星、SK海力士两大韩国芯片制造商将于8日前向美国提交芯片相关资料。人们再次将目光投向台积电,据悉,台经济部门负责人跟美国驻台机构开会,劝说台积电:美国能有什么坏心眼呢?只是,11月8日的最后期限将至,台积电究竟能否挺住?据韩媒报道,美国要求台积电、三星交出资料,谁也无法保证这不会流向英特尔,成为美国企业竞争的利器。韩媒更是援引...

史海拾趣

问答坊 | AI 解惑

线路板emc设计技术

线路板emc设计技术…

查看全部问答∨

自动化中的纳米传感器技术

纳米是一种长度单位,纳米材料的尺寸非常小,一纳米等于十亿分之一米,千分之一微米。所谓纳米技术,就是以纳米尺度为研究对象的新技术。纳米技术通过操纵原子、分子、原子团、分子团使其重新排列组合,形成新的物质,制造出具有新功能的机器。由于 ...…

查看全部问答∨

Evc4.0 中设置not using atl属性

各位大侠,如题,请帮忙,谢谢。…

查看全部问答∨

2440,CE系统下使用不同厂家的LCD时系统要做哪些修改

大家好,之前使用友善的开发板,带3.5寸NEC竖屏,;现在采用核心板直接点屏,选了信利的3.5寸横屏,两家屏的LCD驱动芯片应该是不一样的。我现在按照对应的线已经接好了,但是屏幕黑屏,信利的屏用的是HX8238-A,要通过SPI口初始化。 问题一 像这样 ...…

查看全部问答∨

不用eboot怎么给nand分区???

用的是uboot,如何实现nand分区,比如part1放内核与uboot,只读;part2设为fat32,自动mount。怎么做??谢谢…

查看全部问答∨

求支持VxWorks的开发板?

1.求支持VxWorks的开发板型号? 2.能否讲讲整个基于类似这种开发的软硬件环境,有哪些环节? 本人对这块较有兴趣,但苦于无从下手,有请大侠指点迷津,不甚感激.…

查看全部问答∨

STM32技术参考手册中文翻译第10版

以下是《STM32技术参考手册中文翻译第10版》,希望对各位有帮助…

查看全部问答∨

第一次使用CCS4,遇到些问题

求高手指教 lib加载后全是乱码?怎么回事,难道是误操作有问题?…

查看全部问答∨

如何在ram中调试和运行程序啊?

lm3s9b92的芯片我参照论坛里面的帖子,linker没动,startup.s也没动。就添加了一个ini脚本文件,结果还是不行。脚本文件内容如下:Load blinky.AXF incrementalFUNC  void Setup (void) { _WDWORD(0xE000ED08,0x20000000); SP = _RD ...…

查看全部问答∨

求助!! 求助!!MSP430F149 AD转换的问题

自己用MSP430F149做了块板子,用来采集数据,现在片内AD转换出的数据就第一个还接近于被测值,其余的AD转换的数据都在2V左右,很纳闷,不知道原因,望高手指点啊!!…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved