1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 kennychiu 于 2015-7-15 21:58 编辑
用Atmega16控制2.0寸电阻触摸屏做图形界面控制的方案,多页面操作,实时监控类的用途;各位高手有设计图,程序么,小弟学习学习。2.0寸TFT显示屏,XPT2046做触摸采集,通过232与其他设备通讯,请教各位高手,做通讯机制的有啥标准的编程。 |
|
相关推荐
1个回答
|
|
给一个参考: 触摸屏是四线电阻式的,驱动芯片采用了很常见的ADS7846。ADS7846的典型应用电路图如下图所示。 在笔者的应用中,pin7和pin8都直接连接到GND,即不使用辅助输入通道,pin9和pin10连接在一起,即使用了VCC做为ADS7846的模数转换参考电压源。pin11所接的上拉电阻可以不要,但要设置相应的AVR输入端口上拉电阻使能。pin13做为转换结束指示,可以通过判断此脚电平来决定是否可以读出转换数据,也可以简单的使用延时的方法来留够转换时间。pin16、pin15、pin14、pin12做为一个标准的SPI从机接口与mega16芯片相连接。 ADS7846支持8位精度和12位精度,即触摸分辨率可以达到1/256或者1/4096,根据不同分辨率的LCD来选择相应的触摸精度。比如128×64的LCD可以采用8位精度,320×240的LCD需要采用12位精度。采集后的数据分两次读出,8位精度的先得到前7位再得到最后一位,12位精度的先得到前7位再得到后5位。 程序段如下:(编译器使用ICCAVR) /******************************************************************** SPI Interface file crystal: 8MHz ********************************************************************/ #include #include /*=================================================================== // function: initialize spi interface // in: void // retun: void // date: 2005/8/10 ===================================================================*/ void spiinit(void) { DDRB = (1 << PB4) | (1 << PB5) | (1 << PB7); // MOSI and SCK port out PORTB |= (1 << PB4); SPCR = (1 << SPE) | (1 << MSTR) | (0 << SPR0); // enable spi,master mode, MCLK/4,spi 0 mode } /*=================================================================== // function: send data form spi interface // in: unsigned char real data // retun: void // date: 2005/8/10 ===================================================================*/ void sendspi(unsigned char data) { SPDR = data; // send data while( !(SPSR & (1 << SPIF)) ); // wait data transfer end } /*=================================================================== // function: receive data form spi interface // in: void // retun: unsigned char // date: 2005/8/10 ===================================================================*/ unsigned char readspi(void) { return SPDR; } /******************************************************************** touch data read file crystal: 8MHz write by han, hanembed@126.com, http://embed.hanyuer.net ********************************************************************/ #include #include #include "..incspi.h" unsigned int positionx; unsigned int positiony; unsigned char flgtouch; /*========================Extern Interrupt==========================*/ #pragma interrupt_handler keydown: iv_INT1 /*=================================================================== // function: initialize all used port // in: void // retun: void // date: 2005/8/10 ===================================================================*/ void portini(void) { spiinit(); endspi(); DDRD &= ~(1 << PD3); // port input PORTD |= (1 << PD3); // pull-up resistance //MCUCR |= 1< } /*=================================================================== // function: small delay // in: unsigned char delay times // retun: void // date: 2005/8/10 ===================================================================*/ void smalldelay(unsigned char tmp) { unsigned char i; while(tmp--) { for(i = 0; i < 250; i++) { NOP(); } } } /*=================================================================== // function: read touch data // in: void // retun: void // date: 2005/8/10 ===================================================================*/ void keydown(void) { unsigned char tmp; // temporary data smalldelay(20); // delay wait tranquilization startspi(); // begin data transfer smalldelay(1); sendspi(0x90); // difference conversion, x data smalldelay(2); // delay wait x conversion sendspi(0x00); tmp = readspi(); // first 7 bit x data if(tmp == 0x7F) // error read return; positionx = tmp; positionx <<= 5; // left shift 5 bit sendspi(0xD0); // difference conversion, y data tmp = readspi(); // last 5 bit x data tmp >>= 3; // right shift 3 bit positionx += tmp; // real x data smalldelay(2); // delay wait y conversion sendspi(0x00); tmp = readspi(); // first 7 bit y data positiony = tmp; positiony <<= 5; sendspi(0x00); // only for read last y data tmp = readspi(); tmp >>= 3; positiony += tmp; // real y data endspi(); } 经过简单调试,编写了一个PC端软件以显示在触摸屏上滑过的字符,一块8×5cm的触摸屏上约可以写四行汉字 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写原理
321 浏览 0 评论
请问SPH0641LU4H这款麦克风如何在不使用I2S的情况下,单纯通过GPIO来进行驱动且正常读取数据呢
325 浏览 0 评论
296 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十六章 照相机实验
313 浏览 0 评论
STM32模拟eeprom只有起始地址0x8001000正常其他地址都会造成单片机运行不正常怎么回事
276 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12077 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 01:51 , Processed in 0.389202 second(s), Total 42, Slave 34 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号