| 触摸屏在S3C2410上的应用实例 | ||
| www.52RD.com 2005年12月11日 我爱研发网 21IC | ||
| <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> | ||
| 摘要:给出S3C2410上触摸屏的实现原理、硬件结构和软件程序;对软件进行优化,改进软件滤波的实现方法。其算法使用C语言实现,可移植到任何操作系统的触摸屏驱动程序中。 关键词:触摸屏 S3C2410 滤波
引言
随着个人数字助理(PDA)、瘦容户机等的普及,触摸屏作为终端与用户交互的媒介,在我们的生活中使用得越来普遍。触摸屏分为电阻式、电容式、声表面波式和红外线扫描式等类型,使用得最多的是4线电阻式触摸屏。
本文以三星公司ARM9内核芯片S3C2410触摸屏接口为基础,通过外接4线电阻式触摸屏构成硬件基础。在此基础上,开发了触摸屏面图板程序。
1 触摸屏原理
S3C2410接4线电阻式触摸屏的电路原理如图1所示。整个触摸屏由模向电阻比和纵向电阻线组成,由nYPON、YMON、nXPON、XMON四个控制信号控制4个MOS管(S1、S2、S3、S4)的通断。S3C2410有8个模拟输入通道。其中,通道7作为触摸屏接口的X坐标输入(图1的AIN[7]),通道5作为触摸屏接口的Y坐标输入(图1的AIN[5])。电路如图2所示。在接入S3C2410触摸屏接口前,它们都通过一个阻容式低通滤器滤除坐标信号噪声。这里的滤波十分重要,如果传递给S3C2410模拟输入接口的信号中干扰过大,不利于后续的软件处理。在采样过程中,软件只用给特殊寄存器置位,S3C2410的触摸屏控制器就会自动控制触摸屏接口打开或关闭各MOS管,按顺序完成X坐标点采集和Y坐标点采集。
2 S3C2410触摸屏控制器
S3C2410触摸屏控制器有2种处理模式:
①X/Y位置分别转换模式。触摸屏控制器包括两个控制阶段,X坐标转换阶段和Y坐标转换阶段。
②X/Y位置自动转换模式。触摸屏控制器将自动转换X和Y坐标。
本文使用X/Y位置自动转换模式。
3 S3C2410触摸屏编程
由于触摸屏程序中参数的选取优化需要多次试验,而加入操作系统试验参数,每次编译下载耗费时间过多,不易于试验的进行,因而我们直接编写裸机触摸屏程序。三星公司开放了S3C2410测试程序2410test(可在三星网站下载),提供了触摸屏接口自动转换模式的程序范例ts_auto.c,见本刊网站www.dpj.com.cn。本文在此范例的基础上编写了触摸屏画图板程序——在显示屏上画出触摸笔的流走痕迹。
针对坐标点采样时产生的噪声,本文采用噪声滤波算法,编写了相应的噪声滤波程序,滤除干扰采样点。整个触摸屏画图板程序的处理流程如图3所示。
3.1 程序初始化
初始化触摸屏控制器为自动转换模式。其中寄存器ADCDLY的值需要根据具体的试验选取,可运行本文提供的程序看画线的效果来选取具体的参数。触摸屏中断处理程序Adc_or_TsAuto是判断触摸屏是否被按下了。触摸屏被按下,给全局变量Flag_Touch赋值为Touch_Down,否则赋值为Touch_Up。
![]() 初始化脉宽调制计时器(PWM TIMER),选择计时器4为时钟,定义10ms中断1次,提供触摸屏采样时间基准,即10ms触摸屏采样1次。计数器中断处理程序Timer4Intr中判断Flag_Touch被赋值为Touch_Down,则给全局变量gTouchStartSample置位,以控制触摸屏采样。
之后清除触摸屏中断和计时器中断屏蔽位,接受中断响应,同时计时器开始计时。
3.2 触摸屏采样程序
如果gTouchStartSample为TRUE,触摸屏接口开始对坐标X和Y的模拟量进行采样,根据试验选取适合的的采集次数。本文中使用9次采集,分别记入到ptx[TouchSample]和pty[TouchSample]数组中,TouchSample为采集次数。
为了减少运算量,将ptx[]和pty[]分别分三组取平均值,存储在px[3]和py[3]中。这里以处理X坐标为例:
px[0]=(ptx[0]+ptx[1]+ptx[2])/3;
px[1]=(ptx[3]+ptx[4]+ptx[5])/3;
px[2]=(ptx[6]+ptx[7]+ptx[8])/3;
计算以上三组数据的差值:
dlXDiff0=px[0]-px[1];
dlXDiff1=px[1]-px[2];
dlXDiff2=px[2]-px[0];
然后对上述差值取绝对值,所得结果简称绝对差值:
dlXDiff0=dlXDiff0>0?dlXDiff0:-dlXDiff0;
dlXDiff1=dlXDiff1>0?dlXDiff1:-dlXDiff1;
dlXDiff2=dlXDiff2>0?dlXDiff2:-dlXDiff2;
判断上述计算的色对差值是否都超过差值门限,如果这3个绝对差值都超过门限值,判定这次采样点为野点,抛弃采样点,程序返回等待下次采样。其中的差值门限需要根据试验测试得到,本文取值为2。
找出其中绝对差值最小的2组数据,再将它们作平均,同时赋值给tmx:
if(dlXDiff0<dlXDiff1){
if(dlXDiff2<dlXDiff0){
tmx=((px[0]+px[2]>>1);
}
else{
tmx=((px[0]+px[1])>>1);
}
}
else if(dlXDiff2<dlXDiff1){
tmx=((px[0]+px[2])>>1);
}
else{
tmx=((px[1]+px[2])>>1);
}
函数Touch_Coordinate Conversion完成触摸屏采样值转换成显示坐标,根据不同的硬件有不同的转换方法。本触摸屏采样坐标及显示坐标如图4、图5所示。其中TOUCH_MAX_X和TOUCH_MIN_X是触摸屏X坐标采样值的最大和最小值;Y坐标同理。可以运行本文程序,同时使用触摸笔在触摸屏的4个角取得最大最小采样值。这里使用的是320×240的TFT屏,所以TOUCH_X值为320。下面是X坐标的转换程序:
Touch_CoordinateConversio(int*px){
TmpX=(tmx>=TOUCH_MAX_X)?(TOUCH_MAX_X):*px;
TmpX-=TOUCH_MIN_X;
TmpX=(TmpX)?TmpX:0;
*px=(TmpX*TOUCH_X)/(TOUCH_MAX_X-TOUCH_MIN_X);
}
3.3 坐标滤波程序
坐标滤波程序Touch_Pen_filtering,考虑人机界面中对触摸屏的操作有3种:
*触摸笔在触摸屏上的位置不变;
*触摸笔在触摸屏上连续滑过;
*触摸笔在触摸屏上有大幅度的跳跃。
假设三次连续采样时刻为T1、T2、T3(T3>T2>T1),采样间隔为10ms。由于采样间隔远小于人的反应时间,所以在前两种操作模式下,如果采样点有效,将T1和T3时刻的采样值作平均。其平均值和T2时刻的采样值比较一般不会大于某个门限,否则判定此次采样点为野点。而对于第三种模式下,采样点数据会有很大的跳变。跳变过程中的数据是不稳定的,虽然记入了数据,但被判定成无效的采样点,所以需要在程序中定义一个静态数组x[2]记录相邻的两次采样数据。只有当前后数据持续稳定一段时间,才认为这时的采样点有效。程序中使用的间隔门限FILTER_LIMIT是需要经过试验来选取的。这里只给出X坐标的滤波过程。
//*px为T3时刻的采样值,count是记录连续有效采样点次数的静态变量,标志当前数据持续稳定时间,一旦发现大于//FILTER_LIMIT,count的值又要从0开始计数。
Int Touch_Pen_filtering(int *px){
BOOL retVal;
Static int count=0;
count++;
//如果连续有效采样点次数大于2次,开始进行滤波算法
if(count>2){
count=2;
//将T3时刻采样值和T1时刻采样值作平均
TmpX=(x[0]+*px)/2;
//计算平均值和T2时刻采样值的差值
dx=(x[1]>TmpX)?(x[1]-TmpX):(TmpX-x[1]);
![]() //如果差值大于门限值,说明T3的采样值无效,判为野点返回值为FALSE。为了避免过大的跳跃,认为触摸笔坐标沿变,使用T2时刻采样值来代替本次采样点,同时静态变量x[]中的数据不变,count重新开始记录连续有效采样点次数
if((dx>FIL TER_LIMIT)){
*px=x[1];
retVal=FLASE;
count=0;
}
//否则采样点有效返回值为TRUE,将T3的采样点记入到x[1]中,T2的采样点移到x[0]中
else{
x[0]=x[1];
x[1]=*px;
retVal=TRUE;
}
}
else{
//连续有效采样次数小于2,将T3的采样值记入到x[1],T2的采样值移动到x[0],并不进行滤波处理
x[0]=x[1];
x[1]=*px;
retVal=FLASE;
}
return retVal;
}
3.4 后续处理
经过上述的筛选和滤波,如果被判定采样值有效,则将其滤波值送给操作系统进行后续处理,否则程序返回,等待下一次采样。在2410 test程序中,可以结合LCD的画点函数,将有效的采样点在LCD上画出,以此检验参数设置是否合理。
结语
本文以三星公司ARM9内核芯片S3C2410和4线电阻式触摸屏为硬件基础。基于此硬件结构,开发了触摸屏画图板程序。通过软件滤波,提高了系统性能,得到了很好的处理效果,有很强的实用性。用此算法实现的Windows CE触摸屏驱动,在汉王手写输入软件的测试下得到了很高的识别率。软件使用C语言实现,可以方便地移植到任何操作系统上
|
相关推荐
S3C2410触摸屏测试程序
S3C2410触摸屏测试程序 有研究或探讨或开源的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn
s3c2410触摸屏驱动的介绍
. S3C2410的触摸屏控制 (1).基础知识 要正确使用触摸屏,首先就要正确获取触摸屏的坐标。上一节我们已经介绍了触摸屏的硬件原理,了解到,需要分时给触摸屏的X层或Y层外加电压,再通过测量触点电压得到触点坐标。那么触摸屏控制器的作用就是要实现为触摸屏的X层或Y层分时提供电压,同时还要获取触点电压,并通过模数转换器(ADC
s3c2410数据手册 中文版 全部
最全s3c2410中文版数据手册 中断异常处理,USB,UART,IO端口,看门狗定时器,nand flash控制器
触摸屏在S3C2410上的应用实例——转载
触摸屏在S3C2410上的应用实例来源:我爱研发网 作者: 时间:2007-01-06 发布人:admin 引言 随着个人数字助理(PDA)、瘦容户机等的普及,触摸屏作为终端与用户交互的媒介,在我们的生活中使用得越来普遍。触摸屏分为电阻式、电容式、声表面波式和红外线扫描式等类型,使用得最多的是4线电阻式触摸屏。 本文以三星公司ARM9内核芯片S3C2410触摸屏接口为
基于S3C2410的触摸屏驱动程序设计
本文介绍了基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏控制器芯片完成触摸屏模块的设计。具体包括在嵌入式Linux操作系统中的软件驱动开发,采用内核定时器的下半部机制进行了触摸屏硬件中断程序设计,采用16个时钟周期的坐标转换时序,实现触摸点数据采集的方法,给出了坐标采集的流程。设计完成的触摸屏驱动程序在博创公司教学实验设备UP-NETARM2410-S平台上运行效果良好。
告别付费!手把手教你用DataV.GeoAtlas获取全国街道级GeoJSON数据(附完整避坑指南)
本文详细介绍了如何免费使用阿里云DataV.GeoAtlas工具获取全国街道级GeoJSON数据。通过可视化选取、格式转换、数据校验等步骤,提供了一套完整的避坑指南和工作流,帮助前端和可视化开发者高效解决高精度地图数据获取难题,节省成本并提升开发效率。
基于s3c2410嵌入式实验报告c语言,嵌入式技术应用教程基于S3C2410第三章.doc
嵌入式技术应用教程基于S3C2410第三章第三章 汇编语言与C语言3.1 C语言与汇编语言的比较本课程全程使用C语言来开发S3C2410A。目前很少有用汇编语言来开发ARM系统了。相比较而言汇编语言的优势是执行效率高,但其劣势是代码效率较低,而C语言正好相反,其代码效率较高,执行效率较低。什么是执行效率?什么是代码效率?在嵌入式设计领域,一般执行效率就是程序的执行时间可以精确控制,从而可以使程...
STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析
本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。
S3C2410 UART 的驱动实例
S3C2410 串口硬件描述 S3C2410 内部具有 3 个独立的 UART 控制器,每个控制器都可以工作在 Interrupt(中断)模式或 DMA(直接内存访问)模式,也就是说 UART 控制器可以在 CPU 与UART 控制器传送资料的时候产生中断或 DMA 请求。S3C2410 集成的每个 UART 均具有 16 字节的 FIFO,支持的最高波特率可达到 230.4Kbit/s。
Beyond the Spec: Decoding Samsung‘s LPDDR6 Sub-Channel and Wide-NRZ Innovations
本文深入解析了三星LPDDR6内存的两大核心技术:Sub-Channel架构与Wide-NRZ信号技术。Sub-Channel架构通过将物理通道划分为多个独立子通道,实现了内存访问的细粒度控制,大幅提升了能效,尤其适用于AI与边缘计算场景。Wide-NRZ则通过增加并行数据线而非采用PAM4,在提升带宽的同时保持了优异的信号完整性与低功耗特性。
手把手教你离线部署Jupyter Notebook及高效插件配置
本文详细介绍了如何在离线环境中部署Jupyter Notebook及配置高效插件,包括离线安装步骤、依赖管理、核心扩展安装及常见问题排查。特别针对金融、科研等封闭网络场景,提供完整的whls包和requirements.txt解决方案,帮助开发者和数据分析师突破网络限制,提升工作效率。
S3C2410上触摸屏的应用实例
2007-12-25 10:27:55 摘要:给出S3C2410上触摸屏的实现原理、硬件结构和软件程序;对软件进行优化,改进软件滤波的实现方法。其算法使用C语言实现,可移植到任何操作系统的触摸屏驱动程序中。关键词:触摸屏 S3C2410 滤波引言随着个人数字助理(PDA)、瘦容户机等的普及,触摸屏作为终端与用户交互的媒介,在我们的生活中使用得越来普遍。触摸屏
同花顺Supermind量化交易 技术面分析专题(一)-- 相似k线的形态验证与选股
W底”,“多头上涨”,“趋势回踩”,”上涨中继“这些都是常见的K线形态,以”上涨中继“为例,当股价快速上涨后,出现盘整形态而非顶部形态,预示股价还会进一步上涨,那么本节主要讲述”上涨中继”形态是否能够预测未来股价上涨,以及如何应用“上涨中继”形态,来快速选股。"相似K线"技术相比于传统的K线组合而言更具技术性,其还有较多的运用空间,比如:运用顶部形态来监控个股潜在的下跌风险,运用相似度来监控个股是否脱离大盘走势,研究各类形态的上涨预测能力,并应用于选股等等。第一步:选取一段标准的“上涨中继”形态K线图。
转:基于S3C2410的触摸屏驱动程序设计
摘要: 本文介绍了基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏控制器芯片完成触摸屏模块的设计。具体包括在嵌入式Linux操作系统中的软件驱动开发,采用内核定时器的下半部机制进行了触摸屏硬件中断程序设计,采用16个时钟周期的坐标转换时序,实现触摸点数据采集的方法,给出了坐标采集的流程。设计完成的触摸屏驱动程序在博创公司教学实验设备UP-NETARM2410-S平台上运行效果
从BSCAN到BAP:深度解析Tessent MBIST逻辑的协同工作机制与设计考量
本文深入解析了Tessent MBIST逻辑中BSCAN Interface、Logic Group Def、Controller与BAP模块的协同工作机制。文章以一条测试指令的完整路径为例,详细阐述了数据流与控制流如何跨模块、跨时钟域协同工作,并重点探讨了MBIST BAP在协议转换与流量管理中的核心桥梁作用,为芯片内建自测试的集成与调试提供了关键的设计考量和实战技巧。
MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版
只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...
s3c2410触摸屏驱动
最近时间比较紧,因为板子的LCD驱动出了些问题,未能做完全测试,但保证按下触摸屏时会有调试信息输出,问题应该不大下面是驱动代码s3c2410_ts.c文件的内容#include #include #include #include #include #include #include #include #include #includ
学Simulink——基于AI融合与智能调度的场实例:联邦学习支持的多卫星协同通信建模
本文介绍了一种基于联邦学习的多卫星协同通信Simulink建模方法。系统采用"星-星协同+星-地协调"架构,每颗卫星本地训练LSTM链路预测模型,地面中心通过FedAvg算法聚合模型参数。建模过程包括卫星通信模型构建、联邦学习机制设计、协同决策系统开发等步骤,支持隐私保护、高效协同和智能决策。仿真结果表明,该方法在预测准确率(89%)、吞吐量(56.7Mbps)等方面优于独立训练模式,接近集中式训练性能。该方案为大规模卫星星座的智能协同提供了仿真验证平台,未来可拓展去中心化联邦学习、异构
s3c2410 linux触摸屏驱动移植日志
s3c2410_ts.c#include #include #include #include #include #include #include #include #include #include #include #include #include #include // 自己添加#include #include MODULE_AUTHOR("Arna
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
Linux设备驱动工程师之路——触摸屏驱动s3c2410_ts.c分析
Linux设备驱动工程师之路——触摸屏驱动s3c2410_ts.c分析 K-Style 转载请注明来自于衡阳师范学院08电2 K-Style http://blog.youkuaiyun.com/ayangke,QQ:843308498 邮箱:yangkeemail@qq.com 一、触摸屏硬件知识 1.模块原理图 S3C2440有8路的ADC通道其中触摸屏控制器接口XP,XM,YP
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。



4458



被折叠的 条评论
为什么被折叠?



