嵌入式- 触摸屏实验

合集下载

嵌入式应用实验报告,实验四LCD显示实验信科10级cumt(共5篇)

嵌入式应用实验报告,实验四LCD显示实验信科10级cumt(共5篇)

嵌入式应用实验报告,实验四LCD显示实验信科10级cumt(共5篇)第一篇:嵌入式应用实验报告,实验四 LCD显示实验信科10级cumt 实验四 LCD显示实验一、LCD显示原理LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。

光源的提供方式有两种:透射式和反射式。

笔记本电脑的LCD显示屏即为透射式,屏后面有一个光源,因此外界环境可以不需要光源。

而一般微控制器上使用的LCD为反射式,需要外界提供光源,靠反射光来工作。

LCD的驱动控制–总线驱动方式: 一般带有驱动模块的LCD显示屏使用总线驱动方式,这种LCD可以方便地与各种低档单片机进行接口,如8051系列单片机。

由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。

驱动模块具有八位数据总线,外加一些电源接口和控制信号。

而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。

由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。

扫描器控制方式LCD显示屏没有驱动电路,需要与驱动电路配合使用。

这种LCD体积小,但需要另外的驱动芯片。

通常可以使用带有LCD驱动能力的高档MCU驱动,如ARM系列的S3C44B0。

S3C44B0中具有内置的LCD控制器,它具有将显示缓存中的图象数据传输到外部LCD驱动电路的逻辑功能。

S3C44B0中内置的LCD 控制器可支持灰度LCD和彩色LCD。

可以支持单色、4 级灰度和16 级灰度模式的灰度LCD以及256级彩色。

对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。

触摸屏实验报告

触摸屏实验报告

触摸屏实验报告一、实验目的本次触摸屏实验的主要目的是深入了解触摸屏的工作原理、性能特点以及应用场景,并通过实际操作和测试,掌握触摸屏的基本使用方法和相关技术参数的测量。

二、实验设备1、触摸屏实验装置一套,包括触摸屏、控制器、数据线等。

2、电脑一台,用于运行测试软件和数据处理。

3、测量工具,如游标卡尺、万用表等。

三、实验原理触摸屏是一种可接收触头等输入讯号的感应式液晶显示装置。

从技术原理来区别触摸屏,可分为五个基本种类:电阻技术触摸屏、电容技术触摸屏、红外线技术触摸屏、表面声波技术触摸屏和近场成像技术触摸屏。

电阻触摸屏的屏体部分是一块多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层(ITO 膜),上面再盖有一层外表面硬化处理、光滑防刮的塑料层。

它的工作原理是通过压力使上下两层导电层在触摸点位置接触,从而实现触摸位置的检测。

电容触摸屏是利用人体的电流感应进行工作的。

电容屏是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂有一层 ITO(纳米铟锡金属氧化物),最外层是一薄层矽土玻璃保护层,夹层 ITO 涂层作为工作面,四个角上引出四个电极,内层 ITO 为屏蔽层以保证良好的工作环境。

当手指触摸在金属层上时,由于人体电场,用户和触摸屏表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。

这个电流分别从触摸屏的四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置。

四、实验步骤1、连接设备将触摸屏实验装置与电脑正确连接,确保数据线连接牢固,设备电源正常接通。

2、安装驱动和测试软件在电脑上安装触摸屏的驱动程序,并运行相应的测试软件。

3、校准触摸屏按照测试软件的提示,进行触摸屏的校准操作,以确保触摸位置的准确性。

4、进行触摸测试使用手指或专用的触摸笔在触摸屏上进行点击、滑动、缩放等操作,观察触摸屏的响应情况,并记录相关数据。

南昌大学 嵌入式 实验报告 实验三

南昌大学 嵌入式 实验报告  实验三

学生姓名: xx 学号: x3 专业班级:xx班实验类型:□验证 综合□设计□创新实验日期:实验成绩:综合实验三触摸屏控制一、实验项目名称触摸屏控制二、实验目的了解触摸屏的基本工作原理,学会s3c2410ADC的配置三、实验基本原理:通过设置GPIO口及液晶触摸屏控制器等相关寄存器来达触摸相应菜单键来控制直流步进电机的转动,加速减速和改变方向,并同步超级终端。

程序思路和部分代码:1. 本次实验主要是设置触摸屏中断和ADC转换中断来实现将触摸屏触点转换成坐标。

在写下笔中断和抬笔中断时一定要在最开始写rINTSUBMSK |= (BIT_SUB_ADC|BIT_SUB_TC);来禁止ADC中断和触摸屏中断,否则按下一次有可能会多次中断,这是不允许的。

2. 实验通过在中断中处理AD转换后的坐标值,并设置了一个全局变量,通过改变这个全局变量的值达到不同的效果。

通过比较液晶屏上规划好的各个触摸范围,来跳转到相应的功能。

其具体函数如下://左上角按钮表示步进电机加速if(point_adcx>=0&&point_adcx<=500&&point_adcy>=0&&point_a dcy<=300){step_delay=step_delay-1;学生姓名: xx 学号: x3 专业班级:xx班实验类型:□验证 综合□设计□创新实验日期:实验成绩:UART_SendStr("电机加速");sprintf(disp_buf, "delay is %d \n", step_delay);UART_SendStr(disp_buf);if(step_delay<=1)step_delay=1;}//上中角按钮表示步进电机减速if(point_adcx>=0&&point_adcx<=500&&point_adcy>=300&&point _adcy<=600){step_delay=step_delay+1;UART_SendStr("电机减速");sprintf(disp_buf, "delay is %d \n", step_delay);UART_SendStr(disp_buf);if(step_delay>=10)step_delay=10;}//右上角按钮表示步进电机正反转if(point_adcx>=0&&point_adcx<=500&&point_adcy>=600){sprintf(disp_buf, "STEP_Motoflag is %d \n", STEP_Motoflag);UART_SendStr(disp_buf);学生姓名: xx 学号: x3 专业班级:xx班实验类型:□验证 综合□设计□创新实验日期:实验成绩:if(STEP_Motoflag==0)STEP_Motoflag=1;else STEP_Motoflag=0;DelayNS(50); // 停止步进电机,延时UART_SendStr("步进电机正反转\n");sprintf(disp_buf, "STEP_Motoflag is %d \n", STEP_Motoflag);UART_SendStr(disp_buf);//左下角按钮表示直流电机加速if(point_adcx>=500&&point_adcy>=0&&point_adcy<=300){pwm_duty= pwm_duty + 255/6; // 改变当前电机的速度if(pwm_duty>255){pwm_duty = 255/6;}rTCMPB0 = pwm_duty;UART_SendStr("直流电机加速");}//下中角按钮表示直流电机减速if(point_adcx>=500&&point_adcy>=300&&point_adcy<=600)学生姓名: xx 学号: x3 专业班级:xx班实验类型:□验证 综合□设计□创新实验日期:实验成绩:{pwm_duty= pwm_duty - 255/6; // 改变当前电机的速度级别if(pwm_duty<10){ pwm_duty = 255;}rTCMPB0 = pwm_duty;UART_SendStr("直流电机减速");}//右下角按钮表示直流电机正反转if(point_adcx>=500&&point_adcy>=600){if(DC_Motoflag==0)DC_Motoflag=1;else DC_Motoflag=0;UART_SendStr("直流电机正反转");}四、主要仪器设备及耗材实验箱一台,PC机一台,JTAG一个。

嵌入式实验报告_触摸屏驱动实验

嵌入式实验报告_触摸屏驱动实验

贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间05.06 指导教师余佩嘉成绩实验项目名称触摸屏驱动实验实验目的1.了解触摸屏基本概念与原理。

2.理解触摸屏与 LCD 的密切配合。

3.编程实现对触摸屏的控制。

实验原理1.触摸屏原理触摸屏按其工作原理的不同分为表面声波屏、电容屏、电阻屏和红外屏几种。

常见的又数电阻触摸屏。

如图 3-20 所示,电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。

如图 3-21 所示,当手指或笔触摸屏幕时(图 c),平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层(顶层)接通 X 轴方向的 5V 均匀电压场(图a),使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行 A/D 转换,并将得到的电压值与 5V 相比即可得触摸点的 X 轴坐标为(原点在靠近接地点的那端): Xi=Lx*Vi / V(即分压原理)同理得出 Y 轴的坐标,这就是所有电阻触摸屏共同的最基本原理。

2.电阻触摸屏的有关技术电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层叫 ITO 的透明导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层导电层(ITO 或镍金)。

电阻触摸屏的两层 ITO 工作面必须是完整的,在每个工作面的两条边线上各涂一条银胶,一端加 5V 电压,一端加 0V,就能在工作面的一个方向上形成均匀连续的平行电压分布。

在侦测到有触摸后,立刻 A/D 转换测量接触点的模拟量电压值,根据5V 电压下的等比例公式就能计算出触摸点在这个方向上的位置。

嵌入式系统linux下触摸屏实验报告

嵌入式系统linux下触摸屏实验报告

一.硬件平台1、处理器:三星S3C2410,200MHZ2、内存:SDRAM,64M3、外存:NAND FLASH,64M4、LCD&触摸屏:SHARP,640×480,TFT5、串口:RS232,RS485二.处理器结构1、处理器核心MMU,DCACHE,ICACHE,JTAG2、系统总线SDRAM,FLASH,LCD,中断,USB3、外部总线串口,USB,GPIO试验一:bootloader (ads、引导)1、熟悉ADS 1.2开发工具创建、编译、下载、调试工程2、串口通讯串口控制器初始化、收/发数据3、配置主机端的nfs服务器配置主机端的nfs服务器,以连接linux核心4、下载并运行linux核心使用自己的串口程序下载并运行linux核心主要内容:•编写串口接收数据函数•编写串口发送数据函数•打印菜单,等待用户输入•下载并运行linux核心•配置主机的nfs服务器,与linux核心连接其他部分代码从教师用机中拷贝linux核心从教师机中拷贝主要步骤:•修改bootloader:菜单、串口收发、命令行;•使用ads1.2编译bootloader;•使用uarmjtag下载、调试bootloader;•使用axd查看变量、内存,单步跟踪;•配置超级终端,与bootloader通讯;•使用超级终端下载Linux核心映像;•启动Linux核心运行,察看结果;(bootloader调试成功后再继续以下步骤)•主机重起到ubuntu,配置nfs,配置cutecom;•重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统。

需要补充的代码:接收串口数据并做相应处理while(1){打印菜单并等待用户输入;switch(ch) //根据用户输入做相应处理{case '1':imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);if(imgsize==0) //下载出错;else //下载成功;break;case '3':nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);case '2':BootKernel(); //这里是不会返回的,否则出错;break;default:break;}}打印菜单:Uart_puts("Menu:\n\r");Uart_puts("1.Load kernel via Xmodem;\n\r");Uart_puts("2.Boot linux; \n\r");Uart_puts("3.Load kernel from flash and boot; \n\r");Uart_puts("Make your choice.\n\r");do{ch=Uart_getc();}while(ch!='1' && ch!='2' && ch!='3');串口读写:void Uart_putc(char c){while(!SERIAL_WRITE_READY());((UTXH0) = (c));}unsigned char Uart_getc( ){while(!SERIAL_CHAR_READY());return URXH0;}设置Linux核心启动命令行char *linux_cmd="noinitrd init=/init root=/dev/nfs nfsroot=,tcp ip= console=ttySAC0"; nfs服务器设置编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)启动nfs服务器:/etc/init.d/nfs-kernel-server restart测试nfs服务器:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt•试验二:linux kernel (gcc、make)1、熟悉基本的linux命令文件操作、文件编辑串口工具、程序开发2、配置linux核心make menuconfig3、交叉编译linux核心make zImage主要工作•熟悉基本的linux命令•配置linux核心•交叉编译linux核心•调试自己编译的核心•挂载nfs上的root(根目录)•编写一个小程序在目标板上运行主要步骤:•用root用户登录ubuntu (合理使用权限);•解压缩源码包到/home/下;•察看解压缩后的/home/arm_os目录:Linux核心、编译器、root等;•配置并测试nfs;•配置cutecom:115200,XModem,No line end;•配置核心:make menuconfig;•编译核心:make;•下载并运行核心,加载root文件系统;•重新设置cutecom为LF line end;•熟悉基本的Linux命令;•编写一个小程序在目标板上运行,察看结果。

嵌入式实验报告模板

嵌入式实验报告模板

武汉大学计算机学院08级嵌入式系统设计实验报告班级: 08级计科5班指导老师:武小平学期: 2011-2012第1学期小组成员:姓名学号组长2008301500174成员成员目录一、设计题目选择 (3)二、实验目的 (3)三、实验内容 (3)四、实验设备 (3)五、实验步骤 (5)六、实验结果及测试 (5)七、实验总结 (5)一、设计题目选择触摸屏驱动实验或液晶显示数字电子时钟设计二、实验目的综合运用ARM平台,掌握驱动程序设计方法,了解触摸屏工作原理。

(触摸屏)综合运用ARM平台,掌握LCD显示接口原理及电子钟实现方法,了解驱动程序的设计方法和触摸屏的工作原理(电子时钟)三、实验内容在现有ARM平台上实现触摸屏功能。

编制触摸屏驱动,设计一个简单的按钮程序,通过触摸屏点击触发按钮动作。

(触摸屏)在ARM实验平台上设计实现电子时钟,并编制触摸屏驱动,设计一个简单的按钮程序,可通过触摸点击改变当前时钟状态。

(电子时钟)四、实验设备实验平台:硬件部分:PC计算机(宿主机)、ARM2410实验台。

软件部分:PC机Linux系统、实验台内核Linux系统、实验驱动程序、实验应用程序、开发工具软件等。

基本配置:配置名称型号说明CPU ARM920T结构芯片工作频率203MHz三星S3C2410XFLASH SAMSUNG K9F1208 64M NANDSDRAM HY57V561620AT-H 32M×2=64MEtherNet网卡AX88796 10/100M自适应LCD LQ080V3DG01 8寸16bit TFT触摸屏SX-080-W4R-FB FM7843驱动USB 接口4个HOST /1个DEVICE AT43301构成USB HUB从处理器的UART2引出UART/IrDA 2个RS232,1个RS485,1个IrDA扩展卡插槽168Pin EXPORT 总线直接扩展PS2 PC键盘和鼠标由ATMEGA8单片机控制CAN BUS 由MCP2510和TJA1050构成Double DA MAX504 一个10位DAC端口调试接口JTAG 14针、20针五、实验步骤六、实验结果及测试七、实验总结。

嵌入式系统实验说明

嵌入式系统实验说明


课程综合设计
设计目的


利用所学知识在实验平台基础上,设计 实现一个简单的嵌入式系统应用,以加 深对嵌入式系统的理解和掌握。设计报 告的内容格式与平时实验一样,以下2个 主题任选一个或者自选其它相关主题。 基于ucosII的嵌入式系统及其实际应用 基于wince的嵌入式系统及其实际应用 其它与嵌入式相关的题目 预计实验次数:4~6次
常见问题



PC电脑的网线、PC与嵌入式系统实验箱之间 的USB线、串口线以及ICE仿真器的并口线接 触不良,可以稍微活动一下这些连线的接口部 分,反复尝试直到问题解决。 ADS1.2开发环境的使用,以自学为主,参见 实验说明中的文档“选做实验 汇编指令编程 C语言编程.doc”,结合ADS1.2的F1帮助说 明来学习掌握。 从服务器上下载的有关资料以及后续各自的实 验程序等内容,要存放到PC的D:盘或E:盘的 USER目录中,每组分别建立各自的子目录存 放各自的实验程序。
实验二 接口编程

实验目的: 掌握IO口的使用 掌握中断处理程序的编写 掌握定时器的使用 预计实验次数:2次
实验三 触摸屏 LCD接口

实验目的: 触摸屏实验 LCD接口实验 预计实验次数:2次
实验四 WINCE的平台定制及镜像文件下载
实验目的: PLATFORM BUILDER的安装 PLATFORM BUILDER建立工程项目 下载WinCE映像到NANDFLASH 预计实验次数:1次
嵌入式系统实验说明
实验概况



实验分组: 每组2人,每次实验20组左右 具体分组名单见BBS系版说明 实验时间: 周日或周六,晚上19:00~22:00 第四周~本学期末 实验地点: 电四楼209~211室

嵌入式触摸屏实验

嵌入式触摸屏实验

触摸屏实验一、实验目的1.了解触摸屏的基本概念与原理。

2.理解触摸屏工作原理。

二、实验设备计算机;博创UP-3000实验箱三、实验步骤1.新建工程,将“\3000的ADS实验\Exp8 触摸屏实验”中的文件添加到工程中。

2.定义头文件中的宏定义。

3.阅读触摸屏读取触摸点x,y电压值、坐标程序,画出流程图。

4.编写触摸点坐标及动作判断函数U32 TchScr_GetOSXY(int *x, int *y),返回值为触摸动作,画出程序流程图。

5.提高部分:与LCD结合,实现手写板功能,在触摸屏上画线,在LCD上显示出来。

6.提高部分:与LCD结合,实现按钮功能,在LCD上画一矩形按钮,点击该按钮,实现某个操作。

四、程序流程图,程序源代码及注释和程序运行结果(截屏)。

触摸点坐标判断函数:U32 TchScr_GetOSXY(int *x, int *y) {//获得触摸点坐标并返回触摸动作static U32 mode=0;static int oldx,oldy;int i,j;for(;;){if((mode!=TCHSCR_ACTION_DOWN) && (mode!=TCHSCR_ACTION_MOVE)){if(!TCHSCR_IsPenNotDown){//有触摸动作TchScr_GetScrXY(x,y,TRUE);//得到触摸点坐标for(i=0;i<40;i++){if(TCHSCR_IsPenNotDown)//抬起break;Delay(100);}if(i<40){ //在规定的双击时间之内抬起,检测是不是及时按下for(i=0;i<60;i++){if(!TCHSCR_IsPenNotDown){if (i<10) {i=60;break;}//如果单击后很短时间内按下,不视为双击mode=TCHSCR_ACTION_DBCLICK;for(j=0;j<40;j++) Delay(100);//检测到双击后延时,防止拖尾break;}Delay(100);}if(i==60)//没有在规定的时间内按下mode=TCHSCR_ACTION_CLICK;}else{ //没有在规定的时间内抬起mode=TCHSCR_ACTION_DOWN;}break;}}else{if(TCHSCR_IsPenNotDown){ //抬起mode=TCHSCR_ACTION_UP;*x=oldx;*y=oldy;return mode;}else{TchScr_GetScrXY(x, y,TRUE);if(ABS(oldx-*x)>4 ||ABS( oldy-*y)>4){//有移动动作mode=TCHSCR_ACTION_MOVE;break;}}}Delay(50);}oldx=*x;oldy=*y;//编写该函数return mode;}画线函数:void TchScr_Test(){U32 mode1,mode2;int x1,y1,x2,y2,i,j,p,q;float k;Uart_Printf("\nplease touch the screen\n");//画直线for(;;){mode1=TchScr_GetOSXY(&x1,&y1);//获得触摸点坐标并返回触摸动作if(mode1==TCHSCR_ACTION_CLICK){Uart_Printf("Action=click:x=%d,\t y=%d\n",x1,y1);Delay(1000);Uart_Printf("please touch another click");mode2=TchScr_GetOSXY(&x2, &y2);//获得触摸点坐标并返回触摸动作Uart_Printf("Action=click:x=%d,\t y=%d\n",x2,y2);Delay(1000);if(x1==x2) //无斜率情况{for(i=y1;i<=y2;i++){LCDBuffer[i][x1]=0x0000e000;}}elseif(abs(x1-x2)>=abs(y1-y2)){k=(y2-y1)/(x2-x1);if(x1<x2){for(j=x1;j<=x2;j++){ i=(int)(y1+k*(j-x1));LCDBuffer[i][j]=0x0000e000;}}else{for(j=x2;j<=x1;j++){ i=(int)(y1-k*(x1-j));LCDBuffer[i][j]=0x0000e000;}}}else{k=(y2-y1)/(x2-x1);if(y1<y2){for(i=y1;i<=y2;i++){j=(int)(x1+(i-y1)/k);LCDBuffer[i][j]=0x0000e000;}}else{for(i=y2;y<=y1;y++){j=(int)(x1-(y1-i)/k);LCDBuffer[i][j]=0x0000e000;}}}LCD_Refresh();}}}矩形按键控制步进电机函数:void TchScr_Test(){U32 mode,mode1,mode2;int x,y,x1,y1,x2,y2,i,j,p,q;float k;//////////////A, AB, B, BC, C CD, D, DAintstepdata[]={0x10,0x30,0x20,0x60,0x40, 0xc0,0x80,0x90};//正向转动时的位控制数组intstepdata1[]={0x90,0x80,0xc0,0x40,0x60 ,0x20,0x30,0x10};//反向转动时的*** Uart_Printf("\nplease touch the screen\n");//控制电机for(i=70;i<=120;i++)for(j=150;j<=210;j++){LCDBuffer[i][j]=0x0000e000;}LCD_Refresh();for(;;){mode=TchScr_GetOSXY(&x,&y);if(x>=150&&x<=210&&y>=70&&y<=120) //区域判断{if(mode==TCHSCR_ACTION_CLICK)//单击正转{for(j=0;j<20000;j++)//设置转动次数,尽量大会效果明显{for(i=0;i<8;i++)//步距角为360/512/8,所以即使四相步机转一次也不会有明显转动现象{SETEXIOBITMASK(stepdata[i],0xF0);//通过宏定义空位EXIO的高四位来控制步进机正向转动Delay(3000);}}}else if(mode==TCHSCR_ACTION_DBCLICK)//双击反转{for(j=0;j<20000;j++){for(i=0;i<8;i++){SETEXIOBITMASK(stepdata1[i],0xF0);//反向转Delay(3000);}}}}}}结果截图:五、实验心得通过本次实验,了解的触摸屏的基本实现原理,我们所用的实验箱的触摸屏为电阻式,基本原理是检测触摸点被压下后的电压值来返回坐标,还有一种触摸屏为电容式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

触摸屏实验
实验目的:了解ARM处理器触摸屏的处理机制,掌握在S3C2440A平台下进行触摸屏应用编程需要完成的任

实验器材:Sinosys-EA2440实验箱PC机
实验原理:触摸屏的4 根信号线直接和S3C2440A 的TSYM、TSYP、TSXM 和TSXP 四个引脚相连,由S3C2440A 内部来控制电平的转换和AD 的转换测量。

触摸屏的硬件连接图如图1.1:
图1.1 触摸屏信号连接图
s3c2440 一共有4 种触摸屏接口模式,其中,自动(连续)XY 坐标转换模式和等待中断模式应用地比较常见。

等待中断模式是在触笔落下时产生一个中断,在这种模式下,A/D 触摸屏控制寄存器ADCTSC 的值应为0xD3,在系统响应中断后,XY 坐标的测量模式必须为无操作模式,即寄存器ADCTSC 的低两位必须清零。

自动(连续)XY 坐标转换模式是系统依次转换触点的X 轴
坐标和Y 轴坐标,中X 轴坐标值写入寄存器ADCDAT0 的低10 位中,Y 轴坐标写入寄存器ADCDAT1的低10 位中,在这种模式下,系统同样会产生中断信号。

在一般情况下,为实现触摸屏功能,先是设置为等待中断模式,在产生中断后,再设置为自动(连续)XY 坐标转换模式,依次读取触点的坐标值。

实验总结:利用ADS1.2 工具(ADS 工具的使用请参照前面的实验)打开“\SourceCode\Interface\touchpanel_test”的工程文touchpanel_test.mcp 工程文件。

在Touchpanel.c 的
Test_Touchpanel 子函数中对触摸屏相关的寄存器进行设置和初始化。

rADCDLY=50000; //Normal conversion mode delay about
(1/3.6864M)*50000=13.56ms
rADCCON=(1<<14)+(ADCPRS<<6); //ADCPRS En, ADCPRS Value Uart_Printf("ADC touch screen test\n");
rADCTSC=0xd3; //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En pISR_ADC = (int)AdcTsAuto;//指定触摸屏中断的入口地址rINTMSK=~BIT_ADC; //ADC Touch Screen Mask bit clear rINTSUBMSK=~(BIT_SUB_TC);
触摸屏中断服务程序在对寄存器进行设置和指定中断服务程序
的入口地址后,程序进入等待状态,当用触摸笔点按触摸屏时,处理器接受中断,并进入中断服务程序的执行。

中断服务程序源码如下:
int i; U32 saveAdcdly;
if(rADCDAT0&0x8000)
{
//Uart_Printf("\nStylus Up!!\n");
rADCTSC&=0xff; // Set stylus down interrupt bit }
rADCTSC=(1<<3)|(1<<2); //Pull-up disable, Seq. X,Y postion measure.
saveAdcdly=rADCDLY;
rADCDLY=40000; //Normal conversion mode delay about
(1/50M)*40000=0.8ms
rADCCON|=0x1; //start ADC 启动AD 转换
while(rADCCON & 0x1); //check if Enable_start is low
while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high, This line is
necessary~!!
while(!(rSRCPND & (BIT_ADC))); //check if ADC is finished with interrupt bit
xdata=(rADCDAT0&0x3ff);//AD 转换结束后得到(x,y)坐标ydata=(rADCDAT1&0x3ff);
//YH 0627, To check Stylus Up Interrupt.
rSUBSRCPND|=BIT_SUB_TC;
ClearPending(BIT_ADC);
rINTSUBMSK=~(BIT_SUB_TC);
rINTMSK=~(BIT_ADC);
rADCTSC =0xd3; //Waiting for interrupt
rADCTSC=rADCTSC|(1<<8); // Detect stylus up interrupt signal. while(1) //to check Pen-up state {
if(rSUBSRCPND & (BIT_SUB_TC)) //check if ADC is finished with interrupt bit
{
//Uart_Printf("Stylus Up Interrupt~!\n");
break; //if Stylus is up(1) state
} } //等待直到触摸笔离开触摸屏时往串口输出坐标值
Uart_Printf("count=%03d XP=%04d, YP=%04d\n",
count++, xdata, ydata);
rADCDLY=saveAdcdly;
rADCTSC=rADCTSC&~(1<<8); // Detect stylus Down interrupt signal. rSUBSRCPND|=BIT_SUB_TC; rINTSUBMSK=~(BIT_SUB_TC); ClearPending(BIT_ADC);
通过DNW软件将程序下载到实验箱中,点击触摸屏,可以在图上观察到不同坐标的变化,如图1.3
图1.3 触摸屏实验结果。

相关文档
最新文档