触摸屏计算器设计方案
数电课程设计 触摸式计数器

数字电子技术课程设计报告题目:触摸式计数器班级:姓名触摸式计数器一、设计内容及要求● 1.1程设计应达到的目的1、综合运用相关课程中所学到的理论知识去独立完成某一设课题;2、通过查阅手册和相关文献资料,培养学生独立分析和解决问题的能力;3、进一步熟悉常用芯片和电子器件的类型及特性,并掌握合理选用器件的原则;4、学会电路的安装与调试;5、进一步熟悉电子仪器的正确使用;6、学会撰写课程设计的总结报告;7、培养严肃认真的工作作风和严谨的科学态度● 1.2 本课程设计课题任务的内容和要求1、触摸时或遮挡时的距离应小于感应距离。
2、能计数到最大值999。
3、LED数码管显示计数值。
4、具有提示功能。
二、方案设计及论证● 2.1 基本思路我们的设计思路是将基本部分与发挥部分统筹考虑,进行方案设计。
第一、触摸信号的采集,能否被接收会产生不同的信号,将其转换成高低电平;第二、计数器记录高低电平的变化,实现计数功能并响一声;第三、将计数用数码管显示;● 2.2 方案方案满足设计的基本要求,用光敏二极管做触摸传感器,接收对管判断是否有物体触摸,并且当物体触摸时输出一个高电平,然后触发后面的加法计数器,使其加一,为简单起见,计数器为一组 BCD码输出,输出由 BCD-七段数码管译码器译码,输入至数码管显示。
在该方案的具体器件选择上,又有许多方案,如脉冲发射电路中采用的振荡器有多种选择,可以采用元件构成,也可以采用集成电路构成,为简化电路,本设计采用 555 构成的多谐荡器,其结构简单,便于调试。
在计数器方面也有多种选择,计数器种类繁杂,有同步的,有异步的;有十进制的,有十六进制的,在满足要求的基础上,为尽量简化电路,减小各模块之间的联系,本设计采用三块 74LS161进行级联,实现模一千计数器。
在显示电路方面采用74ls48和数码显示管进行。
当电源接上5V电源时,触摸部分2脚与6脚相连,构成一个施密特触发器,当无遮挡时,触摸部分(D1=5.7kΩ)与电阻R1,R2串联,光敏电阻的电压为1.4V,此时C1充电,NE555 2,6脚的电压>2/3VCC,因此3脚输出为低电平,所以触发同步计数模十部分,74LS161的个位计数2脚的CP为低电平,数码管不具有计数功能;反之,当有遮挡物时,触摸部分(D1=58kΩ),此时C1放电,维持R1和R2电阻上的电压,NE555 2,6脚的电压<1/3VCC,此时3脚输出为高电平,继而触发同步计数模十部分,同时个位的2脚CP为高电平,产生数码管进位信号,周而复始,计数器部分显示到1000.方框图三、各单元电路设计与分析1.信号采集电路如图可知信号采集电路是由一个光敏电阻作为采集器,其输出信号在无物件遮挡住光线时,其电压较低,再有物件遮挡光线时,电压产生较高,因此控制后续计数电路。
触摸式计算器的设计

触摸式计算器的设计作者:刘川来源:《职业·中旬》2012年第03期一、硬件设计本设计的硬件电路包括:电源电路、显示电路、A/D转换电路及触摸屏接口电路。
电源电路为整个系统提供稳定的电压和电流,显示电路显示按键值和运算结果,A/D转换电路实现数据采样,触摸屏接口电路实现触摸屏与A/D转换芯片的连接。
1.电源电路设计该电源电路设计采用的是9V交流电源输入,整流桥采用2W08M,其最高耐压值是800V。
经过滤波电容C1、C3后直接接到三端稳压管输入端,然后三端稳压管的输出端就可以输出5V的稳定电压,最后接上一个LED发光二极管作为电源接通指示。
这样就完成了本设计的基本电源电路设计。
2.最小系统与外存扩展设计本设计所用到的外围电路都是在51单片机的最小系统基础上扩展的,对51系列单片机来说,最小系统一般应该包括单片机、晶振电路、复位电路。
MCS-51单片机有四个I/O口,共32条口线,但由于系统扩展的需要,真正能作为数据I/O使用的就只有P1口和P3口的部分口线。
3.显示电路设计本设计的显示电路采用七端数码管,显示方式是静态显示。
MCS-51单片机串行口方式0为移位寄存器方式,外接6片74LS164作为6位LED显示器的静态显示接口,把8051的RXD作为数据输出线,TXD作为移位时钟脉冲。
74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。
其中A、B(第1、2脚)为串行数据输入端,两个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。
T(第8脚)为时钟输入端,可连接到串行口的TXD端。
每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164 中。
R(第9脚)为复位端,当R=0时,移位寄存器各位复0;只有当R=1时,时钟脉冲才起作用。
Q1…Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hg•••a各段对应引脚。
基于嵌入式系统的触摸式计算器的设计

第25卷第1期2007年1月北京工商大学学报(自然科学版)Journal of Beijing Technology and Business University (Natural Science Edition )Vol 125No 11Jan.2007 文章编号:167121513(2007)0120055204基于嵌入式系统的触摸式计算器的设计陈裕涛, 乔继红(北京工商大学信息工程学院,北京100037)摘 要:在U P 2N ETARM 24102S 实验平台上,采用Linux 操作系统,利用M IN IGU I 作为图形界面支持系统,编程语言采用C 语言,利用V I 文本编辑器,交叉编译器采用armv4l 2unknown 2linux 2gcc 完成了基于嵌入式的触摸式计算器的设计.利用M IN IGU I 软件,实现了触摸式计算器的设计,触摸式计算器具有简单科学计算器的功能.关键词:嵌入式系统;M IN IGU I ;触摸屏中图分类号:TP368 文献标识码:A 收稿日期:20060705作者简介:陈裕涛(1983—),男,湖南永州人,硕士研究生,从事电子产品开发. 嵌入式技术无处不在,ARM 几乎成为嵌入式技术的代名词.到目前为止,嵌入式微处理器及其技术已经深入到各个领域,如:工业控制领域、无线通信领域、网络应用领域、消费类电子产品领域、成像和安全领域等等,而且将来还会取得更广泛的应用[125].嵌入式技术作为一门实践性很强的技术,做实验是学习嵌入式技术一种有效的方法,能够增进对嵌入式系统的开发流程的了解.本文在U P 2N E 2TARM 24102S 实验平台上,设计实现了一个基于嵌入式系统的触摸式计算器的设计,该触摸式计算器具有简单的计算功能.1 触摸式计算器的总体设计方案111 设计原理在设计中,采用的硬件实验平台是北京博创科技有限公司生产的基于s3c2410芯片的U P -N E 2TARM 24102S 实验平台.在软件上,采用Linux 操作系统,利用M IN IGU I 作为图形界面支持系统,编程语言采用C 语言,利用V I 文本编辑器,交叉编译器采用armv4l 2unknown 2linux 2gcc 来完成基于嵌入式的触摸式计算器的设计.在设计上,主要是利用了U P 2N ETARM 24102S 实验平台对于嵌入式L INUX 的良好支持及北京飞漫软件有限公司开发的M IN IGU I 软件优良的图形支持界面[6];同时,M IN IGU I 软件支持C 语言开发,可以利用C 语言与M IN IGU I 函数相结合,可以实现相应的功能.112 设计思路触摸式计算器可以分解为21个不同的控件(如图1),其中之一为编辑框,用来显示所输入的内容;剩下20个按钮各有不同的功能,按下C 键可以全部清除编辑框里的内容,按下0~9数字键能显示相应的数字,按下+,-,3,/,小数点,(,)等则显示相应的符号,而按下‘=’号时将显示‘=’号,同时,系统将通过对话框系统回调函数进行计算.图1 计算器界面113 设计总体流程计算器的主要模块分为定义模块、显示模块、处理消息模块3个模块.其中定义模块主要是对计算器所要用到的对话框、编辑框、按钮控件进行定义,55包括风格、扩展风格、大小、显示位置、注册ID 号等等进行定义.定义好之后通过显示模块就可以显示出计算器的界面,此时,系统就进入了等待消息时间.当有按钮被按下时,就进入了处理消息模块,当按下不同的按钮时,系统通过处理消息模块进行相应的处理,如图2.可以看出,计算器功能的实现分成了定义模块、界面建立模块和处理系统消息模块(因为等待系统消息是由系统自动建立的,不用人为干预).图2 系统总流程处理系统消息模块又分成了下面5个模块:判断是否有键按下模块、按键识别模块、编辑框清空模块、显示模块、计算模块.其中计算模块又分别为计算模块1和计算模块2,它们所处理的消息不同,因此功能也不一样.2 系统模块的划分触摸式计算器程序因为采用了M IN IGU I 图形界面支持系统,所以采用了M IN IGU I 编程的架构,主要分为控件定义模块、界面建立模块、消息处理模块3个模块.211 控件定义模块控件定义模块的主要功能是对计算器所用到的控件进行定义.而控件定义模块又可以分为对话框定义模块和控件定义模块.对话框定义模块是对计算器的外围对话框进行如风格、大小等的定义,而控件定义模块则是对21个不同的控件的大小、风格、ID 号注册等等进行定义.212 界面建立模块在定义完了对话框和控件之后,需要定义对话框的回调函数,并调用DialogBoxIndirect Param 函数建立对话框.这样可以建立起来对话框和控件的联系,就可以实现在U P 2NetARM24102S 实验平台上的触摸屏上显示出计算器的界面来.接下来所要进行的工作,就进入了计算器处理消息的核心部分,即消息处理模块.图3 消息处理模块流程213 消息处理模块消息处理模块是计算器的核心模块,工作流程如图3.消息处理模块的主要任务就是等待消息的来临和进行消息的处理.如果没有消息来临的时候,它就处于等待状态,一直等到有按键被按下去为止.一旦有按键被按下,系统就会立即侦测到系统状态:系统会自动判断哪个按键被按下,并作出相应的处理.消息处理模块包含以下5个模块:判断是否有键被按下模块、按键识别模块、编辑框清空模块、显示模块、计算模块.经过处理控件定义模块、界面显示模块、消息处理模块3个模块之后,计算器的定义、显示以及正常的工作,对消息的处理和对数据进行正确地运算等等功能就可以实现了.3 下载调试311 对源程序进行交叉编译进行交叉编译之前要写几个与交叉编译相关的文件,主要是为M IN IGU I 应用程序编写Au 2tomake/Autoconf 脚本.对所设计的计算器进行交65北京工商大学学报(自然科学版) 2007年1月叉编译是参照MDE的Automake/Autoconf脚本来建立项目脚本.首先在根目录下建立一个samples目录作为项目的根目录,并为项目取名为samples.然后在sam2 ples目录下建立一个子目录,取名为src.将计算器的源程序calculator.c放入src子目录下.接下来从mde2116中复制configure.in文件.首先,修改con2 figure.in文件,dnl在下面的宏中指定项目名称samples和项目版本号(110)AM-IN IT-AU2 TOMA KE(samples,110),将AC-OU TPU T里面修改为:Makefile;src/Makefile.这样,生成的Makefile 文件将在下面的宏中列出.利用这个configure.in 生成的configure脚本和Makefile文件将完成如下工作[6]:1)生成适于进行交叉编译的configure脚本;2)检查系统中是否安装了M IN IGU I;3)检查系统中已安装的M IN IGU II被配置成M IN IGU II2Lite还是M IN IGU II2Threads,并适当设置程序要连接的函数库;4)根据M IN IGU II的配置选项确定其它需要链接的依赖函数库;5)生成项目根目录下的Makefile文件以及src/子目录中的Makefile文件.建立项目根目录下的Makefile.am文件.该文件内容如下:SUBDIRS=src上述文件内容告诉Au2 tomake系统进入src/目录继续处理.接下来建立src/子目录下的Makefile.am文件,该文件内容如下:noinst-PRO GRAMS=calculatorhelloworld-SOURCES=calculator.c上述文件内容告诉Automake生成一个用来从calculator.c建立calculator程序的Makefile文件.最后,回到项目根目录下建立一个autogen.sh文件,内容如下:#!/bin/shaclocalautomake2add2missingautoconf该文件是一个shell脚本,依次调用了aclocal、automake和autoconf命令.注意在建立该文件之后,要运行chmod命令使之变成可执行文件:$chmod+x autogen.sh至此,就可以运行如下命令生成项目所需的Makefile文件了:$./autogen.sh$./configure运行完上述命令之后,项目根目录下多了许多自动生成的文件.然后执行make命令:这样,通过make命令就可以产生可执行文件了.312 下载可执行文件到实验平台当生成可执行文件之后,将此文件下载到实验箱上.首先,在PC机和U P2N ETARM24102S实验平台之间建立局域网.将PC机上的samples/src/ calculator和实验平台实现共享.同时在实验平台上动态加载触摸屏的驱动程序[7](该程序是由U P2 N ETARM24102S实验平台提供的),这时在实验平台上执行生成的计算器可执行文件,可以将计算器显示在触摸屏上.通过下载实现了计算器的点击显示,单步计算,对运算式进行四则法则的运算等.4 结论本文在U P2N ETARM24102S实验平台上,采用Linux操作系统,利用M IN IGU I作为图形界面支持系统,编程语言采用C语言,利用V I文本编辑器,交叉编译器采用armv4l2unknown2linux2gcc完成了基于嵌入式的触摸式计算器的设计.利用M IN IGU I软件,实现了触摸式计算器的设计,触摸式计算器具有简单科学计算器的功能.参考文献:[1] 陈赜,秦贵和,徐华中,等.ARM9嵌入式技术及Lin2ux高级实践教程[M].北京:北京航空航天大学出版社,2005.[2] 王田苗.嵌入式系统设计与实例开发———基于ARM微处理器与uC/OS2Ⅱ实时操作系统[M].北京:清华大学出版社,2003.[3] 马忠梅.ARM嵌入式处理器结构与应用基础[M].北京:北京航空航天大学出版社,2003.[4] 杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2001.[5] 魏永明,钟书毅,潘为国.Linux/uClinux+MIN IGU I2I:嵌入式系统开发原理、工具及过程[EB/OL].www.MIN IGU ,20050503.[6] 北京飞漫软件有限公司.MIN IGU Ii编程指南[EB/OL].www.MIN IGU ,20050415.[7] 北京博创科技有限公司.U P2N ETARM24102S实验指导书[EB/OL],20050502.75第25卷第1期 陈裕涛等:基于嵌入式系统的触摸式计算器的设计DESIGN OF T OUCH SCREEN CALCU LAT ORBASED ON EMBEDDED SYSTEMCHEN Yu2tao, Q IAO Ji2hong(College of Inf ormation Engineering,Beijing T echnology and B usiness University,Beijing100037,China)Abstract:A touch screen calculator is designed.The graphical interfaces are designed using M IN IGU I on Linux operating system.The programmer language is C.The editor is V I of Linux operating sys2 tem.The intercrossing compiler is armv4l2unknown2linux2gcc.The touch screen calculator has main function of science calculator.All the experiment is realized on U P2N ETARM24102S.K ey w ords:embedded system;M IN IGU II;touch screen(责任编辑:王 宽) (上接第45页)[5] Roska T,Chua L O.Cellular neural networks with non2line and delay2type templete elements and nonuniform grids[J].Int J Circuit Theory Application,1992(20): 469481.[6] 彭世国.变时延细胞神经网络模型的全局指数稳定性[J].工程数学学报,2002,19(2):131134.[7] 傅朝金.变时滞细胞神经网络的指数稳定的一个充分条件[J].数学杂志,2002,22(3):266270.[8] 胡军浩,赵新泉,田凡.具有变时滞的细胞神经网络的定性分析[J].中南民族大学学报(自然科学版), 2002,21(3):7981.[9] 韩力群.人体感觉机制的模型化与数字化[J].中国医学影像技术,2003,19(8):6366.CE LL U LAR NEURAL NETWORK S AN D BIOLOGICAL VISUAL INFORMATION PR OCESSING MODE LWEN G Y i2fang1, J U Lei2, WAN G Jian1(1.College of Inf orm ation Engi neeri ng,Beiji ng Technology and B usi ness U niversity,Beiji ng100037,Chi na; m unication Engi neeri ng Depart ment,Beiji ng Instit ute ofScience and Technology,Beiji ng100070,Chi na)Abstract:The mathematical models of continuous2time,discrete2time and time2delay Cellular Neural Networks(CNN)were investigated in the aspect of image processing.A kind of biological visual infor2 mation processing model composed of several different CNNs was proposed according to the principle of human rision generation in brain.It makes full use of the parallel processing ability of CNN,therefore the model is fast in dealing with visual information.It could be the basic work in emulation human vi2 sion for Robot.K ey w ords:cellular neural networks;biological vision;information processing;model(责任编辑:邓清燕)85北京工商大学学报(自然科学版) 2007年1月。
[arm]嵌入式系统计算器设计
![[arm]嵌入式系统计算器设计](https://img.taocdn.com/s3/m/2c51f0244b35eefdc8d33384.png)
嵌入式系统设计报告题目:触摸式计算器设计姓名:姜涛学号:x05610117班级:05电子(11)班指导老师:沈军民一、课程任务本电子系统的功能是借助ARM 7教学实验箱,使用S3C44B0三星处理器能及触摸屏及LCD显示屏等硬件编写程序来实现计算器的设计。
实验要求:1、要用触摸屏来实现2、能够具有触摸按键选择功能,并且具有显示数字功能3、可以实现四则运算功能二、软件实现流程图三、主程序:#include "44b.h"#include"uhal.h"#include "option.h"#include"def.h"#include "tchScr.h"#include"myuart.h"#include "tchScr.h"#include "maro.h"#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihostingextern U32 LCDBuffer[240][320];U32 jcolor;int number =0;//记录数字int number1=0;char signal;int main(void){int i,j,k;int m,n;ARMTargetInit(); //开发版初始化LCD_Init(); //LCD初始化/* for (i=0;i<9;i++){ switch (i){ case 0: jcolor=0x00000000; //RGB均为0 黑色break;case 1: jcolor=0x000000e0; //R 红色break;case 2: jcolor=0x0000d0e0; //R and G 橙色break;case 3: jcolor=0x0000e0e0; //R and G 黄break;case 4: jcolor=0x0000e000; //G 绿色break;case 5: jcolor=0x00e0e000; //G B 青色break;case 6: jcolor=0x00e00000; //B 蓝色break;case 7: jcolor=0x00e000e0; //R and B 紫色break;case 8: jcolor=0x00e0e0e0; //RGB 白色break;}*/jsqInit();getNum(235,7,0);LCD_Refresh() ;while(1){TchScr_Test();Delay(1000);}return 0;}getNum(int x,int y,int num){int i,j;for(i=x;i<=x+8;i++)for(j=y;j<=y+14;j++){LCDBuffer[j][i]=0x00000000;switch(num){case 0:if(i==x||i==x+8) LCDBuffer[j][i]=0x0000e000;if(j==y||j==y+14) LCDBuffer[j][i]=0x0000e000;break;case 1:if(i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 2:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if((i==x&&j>=y+7)||(i==x+8&&j<=y+7))LCDBuffer[j][i]=0x0000e000;break;case 3:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if(i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 4: if(j==y+7) LCDBuffer[j][i]=0x0000e000;if(i==x&&j<=y+7) LCDBuffer[j][i]=0x0000e000;if(i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 5:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if((i==x&&j<=y+7)||(i==x+8&&j>=y+7))LCDBuffer[j][i]=0x0000e000;break;case 6:if(j==y||j==y+7||j==y+14)LCDBuffer[j][i]=0x0000e000;if(i==x||(i==x+8&&j>=y+7))LCDBuffer[j][i]=0x0000e000;break;case 7:if(i==x+8) LCDBuffer[j][i]=0x0000e000;if(j==y) LCDBuffer[j][i]=0x0000e000;break;case 8:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if(i==x||i==x+8) LCDBuffer[j][i]=0x0000e000;break;case 9:if(j==y||j==y+7||j==y+14) LCDBuffer[j][i]=0x0000e000;if((i==x&&j<=y+7)||i==x+8)LCDBuffer[j][i]=0x0000e000;break;}}}getOp(){int i,j;for(i=235;i<=243;i++)for(j=7;j<21;j++){switch(signal){case '+':if(j==14||i==239) LCDBuffer[j][i]=0x00e00000;break;case '-':if(j==14) LCDBuffer[j][i]=0x00e00000;break;case'*':if(j+i==245||j-i==221)LCDBuffer[j][i]=0x00e00000;break;case '/':if(j-i==221)LCDBuffer[j][i]=0x00e00000;break;}}}jsqInit(){int k,i,j;for (k=0;k<260;k++)for (j=i*32;j<i*32+32;j++){LCDBuffer[2][k+10]= 0x00e00000;LCDBuffer[42][k+10]= 0x00e00000;LCDBuffer[215][105]= 0x00e00000;//'.'LCDBuffer[107][235]= 0x00e00000;//'/'LCDBuffer[117][235]= 0x00e00000;//'/'}for (k=0;k<10;k++)for (j=i*32;j<i*32+32;j++){LCDBuffer[57][k+100]= 0x00e00000;//‘2’的位置 LCDBuffer[67][k+100]= 0x00e00000;LCDBuffer[77][k+100]= 0x00e00000;LCDBuffer[57][k+165]= 0x00e00000;//‘3’的位置 LCDBuffer[67][k+165]= 0x00e00000;LCDBuffer[77][k+165]= 0x00e00000;LCDBuffer[112][k+35]= 0x00e00000;//‘4’的位置LCDBuffer[102][k+100]= 0x00e00000;//‘5’的位置 LCDBuffer[112][k+100]= 0x00e00000;LCDBuffer[122][k+100]= 0x00e00000;LCDBuffer[102][k+165]= 0x00e00000;//‘6’的位置 LCDBuffer[112][k+165]= 0x00e00000;LCDBuffer[122][k+165]= 0x00e00000;LCDBuffer[147][k+35]= 0x00e00000;//‘7’的位置LCDBuffer[147][k+100]= 0x00e00000;//‘8’的位置 LCDBuffer[157][k+100]= 0x00e00000;LCDBuffer[167][k+100]= 0x00e00000;LCDBuffer[147][k+165]= 0x00e00000;//‘9’的位置 LCDBuffer[157][k+165]= 0x00e00000;LCDBuffer[167][k+165]= 0x00e00000;LCDBuffer[192][k+35]= 0x00e00000;//‘0’的位置 LCDBuffer[212][k+35]= 0x00e00000;LCDBuffer[157][k+230]= 0x00e00000;//‘-’的位置LCDBuffer[202][k+165]= 0x00e00000;//‘+’的位置LCDBuffer[200][k+230]= 0x00e00000;//‘=’的位置 LCDBuffer[204][k+230]= 0x00e00000;LCDBuffer[112][k+230]= 0x00e00000;//'/'}for (k=0;k<60;k++)for (j=i*32;j<i*32+32;j++){LCDBuffer[47][k+10]= 0x00e00000;LCDBuffer[87][k+10]= 0x00e00000;LCDBuffer[47][k+75]= 0x00e00000;LCDBuffer[87][k+75]= 0x00e00000;LCDBuffer[47][k+140]= 0x00e00000;LCDBuffer[87][k+140]= 0x00e00000;LCDBuffer[47][k+205]= 0x00e00000;LCDBuffer[87][k+205]= 0x00e00000;LCDBuffer[92][k+10]= 0x00e00000; LCDBuffer[132][k+10]= 0x00e00000;LCDBuffer[92][k+75]= 0x00e00000; LCDBuffer[132][k+75]= 0x00e00000;LCDBuffer[92][k+140]= 0x00e00000; LCDBuffer[132][k+140]= 0x00e00000;LCDBuffer[92][k+205]= 0x00e00000; LCDBuffer[132][k+205]= 0x00e00000;LCDBuffer[137][k+10]= 0x00e00000; LCDBuffer[177][k+10]= 0x00e00000;LCDBuffer[137][k+75]= 0x00e00000; LCDBuffer[177][k+75]= 0x00e00000;LCDBuffer[137][k+140]= 0x00e00000; LCDBuffer[177][k+140]= 0x00e00000;LCDBuffer[137][k+205]= 0x00e00000; LCDBuffer[177][k+205]= 0x00e00000;LCDBuffer[182][k+10]= 0x00e00000; LCDBuffer[222][k+10]= 0x00e00000;LCDBuffer[182][k+75]= 0x00e00000; LCDBuffer[222][k+75]= 0x00e00000;LCDBuffer[182][k+140]= 0x00e00000; LCDBuffer[222][k+140]= 0x00e00000;LCDBuffer[182][k+205]= 0x00e00000; LCDBuffer[222][k+205]= 0x00e00000;}jcolor=0x00e00000;for (i=0;i<40;i++){if (i==80||i==160)jcolor<<=8;for (j=288;j<320;j++){LCDBuffer[i+2][10]=0x00e00000; LCDBuffer[i+2][270]=0x00e00000;LCDBuffer[i+47][10]=0x00e00000;LCDBuffer[i+47][70]=0x00e00000; LCDBuffer[i+47][75]=0x00e00000; LCDBuffer[i+47][135]=0x00e00000; LCDBuffer[i+47][140]=0x00e00000; LCDBuffer[i+47][200]=0x00e00000; LCDBuffer[i+47][205]=0x00e00000; LCDBuffer[i+47][265]=0x00e00000;LCDBuffer[i+92][10]=0x00e00000; LCDBuffer[i+92][70]=0x00e00000; LCDBuffer[i+92][75]=0x00e00000; LCDBuffer[i+92][135]=0x00e00000; LCDBuffer[i+92][140]=0x00e00000; LCDBuffer[i+92][200]=0x00e00000; LCDBuffer[i+92][205]=0x00e00000; LCDBuffer[i+92][265]=0x00e00000;LCDBuffer[i+137][10]=0x00e00000;LCDBuffer[i+137][70]=0x00e00000;LCDBuffer[i+137][75]=0x00e00000;LCDBuffer[i+137][135]=0x00e00000;LCDBuffer[i+137][140]=0x00e00000;LCDBuffer[i+137][200]=0x00e00000;LCDBuffer[i+137][205]=0x00e00000;LCDBuffer[i+137][265]=0x00e00000;LCDBuffer[i+182][10]=0x00e00000;LCDBuffer[i+182][70]=0x00e00000;LCDBuffer[i+182][75]=0x00e00000;LCDBuffer[i+182][135]=0x00e00000;LCDBuffer[i+182][140]=0x00e00000;LCDBuffer[i+182][200]=0x00e00000;LCDBuffer[i+182][205]=0x00e00000;LCDBuffer[i+182][265]=0x00e00000;}}jcolor=0x00e00000;for (i=0;i<10;i++){if (i==80||i==160)jcolor<<=8;for (j=288;j<320;j++){LCDBuffer[i+67][100]=0x00e00000;// ‘2’ LCDBuffer[i+57][110]=0x00e00000;LCDBuffer[i+102][35]=0x00e00000;// ‘4’LCDBuffer[i+102][100]=0x00e00000;// ‘5’LCDBuffer[i+112][110]=0x00e00000;LCDBuffer[i+112][175]=0x00e00000;// ‘6’LCDBuffer[i+147][165]=0x00e00000; // ‘9’LCDBuffer[i+197][170]=0x00e00000; // ‘+’}}jcolor=0x00e00000;for (i=0;i<20;i++){if (i==80||i==160)jcolor<<=8;for (j=288;j<320;j++){LCDBuffer[i+62][40]=0x00e00000;//‘1’LCDBuffer[i+57][175]=0x00e00000;//‘3’LCDBuffer[i+102][40]=0x00e00000;//‘4’LCDBuffer[i+102][165]=0x00e00000;//‘6’LCDBuffer[i+147][45]=0x00e00000;//‘7’LCDBuffer[i+147][100]=0x00e00000;//‘8’ LCDBuffer[i+147][110]=0x00e00000;LCDBuffer[i+147][175]=0x00e00000;//‘9’LCDBuffer[i+192][35]=0x00e00000;//‘0’ LCDBuffer[i+192][45]=0x00e00000;}}//return;// }}tchNum(int x,int y){int i;int x1,y1;x1=(x-5)/65;y1=(y-42)/45;if(number<99999999||(x1==1&&y1==3)||(x1==2&&y1==3)||x1==3){switch(x1){case 0:switch(y1){case 0:number=number*10+1;return;case 1:number=number*10+4;return;case 2:number=number*10+7;return;case 3:number=number*10;return;}case 1:switch(y1){case 0:number=number*10+2;return;case 1:number=number*10+5;return;case 2:number=number*10+8;return;case 3:signal='*';clear();getOp();number1=number;number=0;return;}case 2:switch(y1){case 0:number=number*10+3;return;case 1:number=number*10+6;return;case 2:number=number*10+9;return;case 3:signal='+';clear();getOp();number1=number;number=0;return;}case 3:switch(y1){case 0:number=0;number1=0;clear();getNum(235,7,0);return;case 1:signal='/';clear();getOp();number1=number;number=0;return;case 2:signal='-';clear();getOp(); number1=number;number=0;return;case 3:operation();return;}}}}showNum(){//tchNum();int ws=1;int n;n=number;Uart_Printf("$$$$$$$$number=%d",n);Uart_Printf("$$$$$$$$number=%d",number);if(number<0) {isFu();n=-n;}while(n!=0||n/10!=0){switch(ws){case 1:getNum(235,7,n%10);break;case 2:getNum(220,7,n%10);break;case 3:getNum(205,7,n%10);break;case 4:getNum(190,7,n%10);break;case 5:getNum(175,7,n%10);break;case 6:getNum(160,7,n%10);break;case 7:getNum(145,7,n%10);break;case 8:getNum(130,7,n%10);break;case 9:getNum(115,7,n%10);break;}ws++;n=n/10;}}clear(){int i,j;for(i=115;i<=235;i=i+15)getNum(i,7,10);for(i=100;i<=108;i++)for(j=7;j<21;j++){if(j==14) LCDBuffer[j][i]=0x00e0e0e0;break;}}operation(){switch(signal){case '+': number = number+number1;clear();break;case '-':number = number1-number;clear();break;case '*':number = number*number1;clear();break;case '/':number = number1/number;clear();break;}}isFu(){int i,j;for(i=100;i<=108;i++)for(j=7;j<21;j++){if(j==14) LCDBuffer[j][i]=0x00e0e0e0;break;}}四、实验结果显示五、实验心得1、在做计算器时,第一步关键是要将触摸屏校准,使用触摸屏实验程序,通过超级终端将坐标打印出来,从而去调整TchScr_Xmax, TchScr_Xmin, TchScr_Ymax, TchScr_Ymin四个坐标值,使得触摸屏与LCD显示屏能够正确的对应2、在坐标对应的过程中,首先要确定实际触摸屏的X、Y坐标方向,以及程序中的X、Y坐标方向是不是已经和实际坐标对应起来,否则容易出现后面按键时出现按键错位。
基于触摸屏的简易计算器设计

基于触摸屏的简易计算器设计【摘要】本次毕业设计的课题是基于触摸屏的简易计算器设计,简单的说就是利用可编程控制器编写一段能简单实现“+-*/”逻辑法则的程序,之后利用软件制作一个具有简易计算器功能的这样一个画面,然后通过触摸屏的显示,其基本原理是通过触摸屏和PLC的通信实现实时的数据交换的计算器系统,能够对触摸屏上的各种输入都及时作出响应。
需要用到的主要硬件有F940GOT和三菱可编程控制器,这次毕业设计的要求就是要通过有效的编程,合理的制作,正确的连接,最终能够在触摸屏上实现具体的操作。
【关键词】可编程控制器触摸屏计算器基于触摸屏的简易计算器设计毕业设计论文【Abstract】The graduation design topic was based on touch screen simple calculator design, simply say is using the programmablecontroller writing a simple to realize "+ - * /" logic rules of procedure, after using the software has produced a simple calculator function of such a picture, then through touch screen display, its basic principle is through touch screen and PLC communications realize real-time data exchange calculator systems, able to touch screen on the various input both timely respond. The main hardware needs to use theF940GOT and mitsubishi programmable controller, the graduation design requirement is to through effective programming, reasonable production, correct connection, finally can realize in the touch screen concrete operation.【Keywords】programmable controller Touch screen calculators2毕业设计论文基于触摸屏的简易计算器设计目录1 绪论 ..................................................................... . (4)2 设计方案 ..................................................................... .. (5)3 硬件简介及组装 ..................................................................... .. (6)3.1 PLC简介 ..................................................................... ..........................................6 3.2 三菱FXPLC的特点 ..................................................................... ..........................8 3.3 F940GOT简介 ..................................................................... ..................................9 3.4 硬件的连接 ..................................................................... ...................................... 11 4 软件程序 ..................................................................... (14)4.1 触摸屏的界面与制作 ..................................................................... ..................... 14 4.2 PLC编程流程图如图4-11所示 ..................................................................... .. 224.3 计算器程序梯形图 ..................................................................... ......................... 22 5 调试过程 ..................................................................... (23)6 结论与效果展示 ..................................................................... (24)6.1结论与总结 ..................................................................... ....................................... 24 6.2实物效果图 ..................................................................... ....................................... 25 参考文献 ..................................................................... . (26)致谢 ..................................................................... . (27)附录A 计算器程序梯形图 ..................................................................... . (28)3基于触摸屏的简易计算器设计毕业设计论文 1 绪论PLC (Programmable logic Controller的简称),可编程逻辑控制器,一种数字运算操作的电子系统,专为在工业环境应用而设计的。
基于嵌入式系统的触摸式计算器的设计

术的代名 词 .到 目前 为止 , 入 式 微 处理 器及 其 技 嵌 术 已经 深入到 各 个 领域 , : 业控 制 领 域 、 如 工 无线 通
信领 域 、 网络 应用 领 域 、 费 类 电子 产 品领 域 、 像 消 成
和安 全 领 域 等 等 , 且 将 来 还 会 取 得 更 广 泛 的 应 而
维普资讯
5 6
北京工商大学学报( 自然 科学 版 )
20 0 7年 1月
包括 风格 、 展风格 、 小 、 扩 大 显示 位 置 、 册 I 号 等 注 D 等进 行 定义 .定 义好之后 通过 显 示 模块 就 可 以显 示 出计算: 的 界 面, 时, 统 就 进 入 了 等 待 消息 时 器 此 系 间 .当有 按钮被 按 下时, 进 入 了处理 消息模 块 , 就 当 按 下不 同的按 钮 时, 系统 通 过 处 理 消 息模 块 进 行 相 应 的处理 , 图 2 如 .可 以看 出, 箅 器功 能 的 实 现 分 计 成 了定义模 块 、 面建 立 模块 和 处理 系统 消 息模 块 界
实验 平 台对于 嵌入 式 I NUX的 良好 支持 及 北京 飞 I 漫软 件有 限公 司开 发 的 MI G 软件 优 良的 图形 NI U!
收 稿 日期 :20 —0 0 0 6 7— 5
作者 简介 :陈裕 涛 (9 3 ) 男, 南 永 州 人 , 士 研 究生 ,从 事 电 子产 品 开 发 18 一 , 湖 硕
VO . I25 No. 1
J n.2 0 a 0 7
5 5
文章 编号 :6 11 1 (0 7【 一0 50 17 —5 3 2 0 ) l 5 —4 J0
基 于 嵌 人 式 系 统 的触 摸式 计算 器 的设 计
arm触摸屏简易计算器

嵌入式系统课程设计报告设计题目:触摸屏简易计算器班级:姓名:学号:指导教师:调试地点:调试时间:成绩:一、设计任务及要求设计任务:设计一个能在触摸屏上进行操作的计算器。
设计要求:(1)支持整数以及小数基本加减乘除运算;(2)支持触摸屏输入;(3)程序任务开始后,等待触摸屏的输入。
输入键有0~9数字键、+-*/运算符、clear清屏键、“=”等号键、‘.’小数点键,输入后能在LCD上显示运算,计算得出结果,能将内容和结果显示在LCD上。
每当有字符输入时, LCD屏幕上显示相应字符。
当输入“clear”清屏键时,LCD上显示初始状态。
当输入'='号后,得出计算结果,结果显示于表达式的下一行。
二、总体设计思路及功能描述(一)硬件设计本次设计方案就是利用ARM的多功能性的特点来设计的,具体思路为利用S3C2410和触摸屏的驱动对产生的信号进行触摸屏显示,设计框图如下图。
总体框图本次课题是由嵌入式系统S3C2410作为核心控制器,具有在线编程功能、低功耗;通过程序在屏幕绘制按键,然后对按键进行处理,并将处理记过在LCD触摸屏。
LCD触摸屏工作原理S3C2410 中具有内置的LCD 控制器,它能将显示缓存(在SDRAM存储器中)中的LCD 图像数据传输到外部的LCD驱动电路上的逻辑功能。
它支持单色、4级、16级灰度LCD显示,以及8位彩色、12位彩色LCD显示。
在显示灰度时,它采用时间抖动算法(time-based dithering algorithm)和帧率控制 (Frame Rate Control)方法,在显示彩色时,它采用RGB的格式,即RED、GREEN、BLUE,三色混合调色。
通过软件编程,可以实现332的RGB 调色的格式,565全彩输出,5551全彩输出等。
对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD 控制器中的相应寄存器写入不同的值,来配置不同的LCD 显示板。
简易计算器的设计

简易计算器的设计报告一、课题要求根据所学的单片机知识,设计一简易计算器,要求能进行加减乘除等简单运算。
二、设计方案应用矩阵键盘,LCD1602,Atmega16单片机,利用所学的LED 显示和键盘的输入等知识设计简易计算器。
1、Atmega16单片机的PA 口与键盘相连,实现按键的输入;2、Atmega16单片机的PB 口与液晶显示屏相连,实现LED 的显示。
三、单元模块的设计1、LED 的显示LED 数码显示器是单片机嵌入式系统中经常使用的显示器件LED , 数码显示器有共阳极和共阴极两种结构形式。
此设计所用的LED 数码显示器为LCD1602液晶显示屏。
该液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
该液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA 移动通信工具等众多领域。
在仿真软件的连接中,将LCD1602的4,5,6,10,11,12,13,14的引脚分别与PB 端口相连,7,8,9引脚分别与4,5,6引脚共用一个PB 端口。
(如仿真图所示)LED 显示这一模块所涉及的主要程序如下: while (1){// Place your code here do {result = is_key_pre(); }while (result != 1);keypressed = which_key();result = date_or_ope(keypressed); if (result == 1) {deal_date();} else{deal_ope();} lcd_clear(); display();delay_ms(300); };2、键盘的输入D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016L在单片机嵌入式系统中,按键和键盘是一个基本和常用的接口,它是构成人机对话通道的一种常用的方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微控制器课程设计方案
基于STM32的多功能计算器
一、总体方案设计:
1、基本功能:
利用触摸屏实现加减乘除四则运算的单次或连续地整型、浮点型数据运算,并将表达式和结果实时显示在液晶屏上;支持带优先级的表达式求值;实现三角函数的运算;当输入错误的表达式时,将对应的错误信息显示出来,提醒用户纠正。
2、扩展功能:
进行十六进制的数值运算,并显示以十六进制表示的答案。
二、系统硬件设计:
微控制器:stm32开发板;
触摸屏模块:stm32开发板配套液晶屏(4.5寸)。
三、系统软件设计:
1、系统初始化:
系统时钟初始化—>延时初始化—>LCD初始化—>触摸屏初始化—>显示计算器输入界面。
2、显示模块设计:
由LCD初始化程序设置界面。
通过屏幕绘制将按键显示出来,其次由定时器中断程序定时刷新显示的表达式,将表达式于显示窗口实时显示出来。
3、计算功能程序设计:
(1)运算功能的实现:
i基本运算
通过扫屏得到输入信息,将指令分为数字类、符号类、命令类三类指令。
对于数字类指令(如1、2、3、.、-、4……),创建数组,用以保存输入的数值,并在满足输入终止的判断条件(出现符号或命令类指令)后,重新排序,用相应函数将数组转为数字,以便进行下一步计算;对于符号类指令(如+、-、*、%……),将其作为数字类指令输入结束的判断,同时在下一个符号结束后进行第一个符号两边数字的运算;对于命令类指令(主要针对=),进行最终的计算,并将相应结果显示在对应位置。
ii科学运算(包含优先级)
在基本运算的基础上,在得到命令类指令之前,不进行任何运算,将得到的数字和符号都储存到数组中,在得到命令类指令后,将符号类的指令进行优先级排序,然后依次找出符号两边的数字进行计算,并将得到的结果存入处理后的数组中,重复以上步骤直到得到最终结果。
总体运算过程流程图如下:
iii三角函数运算
利用#include <math.h>直接调用三角函数相关程序。
考虑调用三角函数运算时,括号里面实际不是所输入的数字,而是输入实际的弧度值,即将数字转换成弧度值:
#define pi 3.141592653f
float ToRad(float degree)
{
return (degree*pi/180.0);
}。
iv浮点型数运算
为得到的数字进行类型定义。
v十-十六进制转换
拟直接利用C中原有的算法进行进制转换,或采用除n取余法。
(2)实时显示功能实现
将得到的数字、符号类指令及时在显示栏显示出来,并在相应位置加上注释,如十六进制、科学型等。
对于显示函数,先判断当前进制数,然后再将需要显示的数字转换为当前进制数再显示。
(3)错误提示功能实现
编写判断程序,若出现连续输入两个运算符号,或除数为0等情况时判断为错误信息,将在显示区域以“error”予以标注,从而提醒用户重新输入。
四、重难点分析
1、对输入指令的判断
拟根据读取触摸按键位置判断按键类型,然后再进一步确定具体符号或数字,从而获知用户具体操作目的。
2、将连续输入的多个单个数转为多位数
拟创建数组保存依次输入的单个数和少量特殊符号如“-”、“.”等,在接收到结束信息后,将数组进行逆序排列,并使用相应函数将数组转化为数字。
3、含有优先级的科学运算的实现。
拟创建两个数组,一用于存储转化后的数字,另一用于存储依次得到的符号,在第二个数组中按照先乘除后加减的原则进行优先级排列,得到符号顺序后依次调用符号两边的数进行计算,并将计算得到的数存入第一个数组,重复直至得到最终结果。
4、对于错误输入的判断
首先对于可能的错误输入有清晰的界定,然后再考虑判断条件,尽可能使微处理器自行判断手误和逻辑错误,并作出相应调整,如对于连续重复输入“.”、“+”等符号,则默认输入一次,而对于连续输入不同符号或输入数字超过处理范围则直接发出警告,即于显示屏显示“error”。
5、其他细节问题
如得到的计算结果的精确度等。