ImageVerifierCode 换一换
格式:DOCX , 页数:108 ,大小:2.11MB ,
资源ID:7864148      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7864148.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于STM的简易电子计算器设计与实现完整资料.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于STM的简易电子计算器设计与实现完整资料.docx

1、基于STM的简易电子计算器设计与实现完整资料基于STM的简易电子计算器设计与实现(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)四川师范大学成都学院通信工程学院基于TM32的简易电子计算器设计与实现-实验综合设计报告学生姓名陶龑学 号2016301033所在学院通信工程学院专业名称嵌入式系统课程设计班 级014级软件班指导教师刘强成 绩四川师范大学成都学院二一六年十一月基于STM32的简易电子计算器设计与实现内容摘要:电子计算器即将传统意义上的计算器进行电子化和数字化,为其减少时间误差和体积,并提供更多的扩展实用功能,从而使电子计算器的应用更加广泛。在经过资料的查找与收集后,本论文以

2、该理念设计了一款基于ST32芯片作为核心控制器,使用Ki平台,以C语言为基础进行软件编程的简易电子计算器,其内在F-LC液晶屏进行输出,以四个按键进行输入,从而实现显示输入数据以及加减乘除运算的基本功能。通过软件程序的编写、硬件电路原理的实现、电子计算器正常工作的流程、原理图仿真实现、硬件实物的安装制作与硬件实物的调试过程,该简易电子计算器现可用于日常生活和工作中。关键词:简易电子计算器 TM32 C语言 Keil5Dsgn nd implemettin f Mtiuctio lctron lck baedon ST2bstrc: Te raditionl eectonic calculatr

3、 calcuator for electrind digital, to educe he tme eror ad le,a provide moetended utiy functio,so ha th more etenive apliction o electronic lculors。 tr searig and colcting data, n h ppr, te cocept of a design ased o STM3 ch as thecorectolle, using Kil5platorm,iple lectrnic calcular bae on languaeowe

4、roamin, the TFTCDL sceen fo inpu adupt, wihfur keys, t reaze te pay o iput dat and basic the funcion f ad, subrat, multiply ddivide opations。Thrugh he softwre prgra, ardre circuitprncileof the eectroiclulator rliztion, normal work roes ad the rinciplof rap siaion,harare instalatio and ardwar euging

5、rocess,e sime eleronic caulatr in dily lfen work.ewords: Sieelectronc calculor STM3 lnguageC Keil5 目 录前言11 设计要求设计目的与作用23所用设备及软件4。1 系统总体设计25 系统硬件设计51系统整体设计4.2 各单元电路设计45.电源电路4.2。3 简易电子计算器电路552。4 按键电路5.5 蜂鸣器电路5。2.6 复位电路.27串口电路 系统软件设计61 主程序设计66.2子程序设计76。21 显示模块7。23 实时简易电子计算器万年历模块87 仿真调试分析98设计中的问题及解决方法10

6、 学习心得10附录附录2:系统总体结构电路原理图1参考文献20基于TM32的简易电子计算器设计与实现前 言最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头、兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带.直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同.1世纪初,西方国家的计算工具有了较大的发展。英国数学家纳皮尔发明了“纳皮尔算筹,英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具为现

7、代计算器的发展奠定了良好的基础。14年,年仅岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器。在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是只能做加减计算。194年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,到了2世纪5年代末,电子计算器问世。而现在我们所说的计算器一般是指“电子计算器”,该名词由日文传入中国.计算器是能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操作简单、价格低廉,因而广泛运用于商业交易中,也是必备的办公用品

8、之一。随着电子技术的飞速发展,为了进行大量的运算,电子计算器应用于各个领域,从而使电子计算器的应用更为广泛,不仅改变传统意义的手持计算器功能,使计算器支持彩屏的显示,界面更友好,可扩展性能更强,为生活和工作带来了便捷。本设计的简易电子计算器以SM32微控制器芯片作为核心控制器,由于其基于ARM Cortex3处理器,可用于满足大部分通用型应用的需求,故选用TM32。具体需要硬件的调试以及软件程序的编写和实现来完成.1 设计要求具有通过四个按键来选择的功能; 具有彩屏显示以及界面功能;具有显示输入的第一位数字和第二位数字的功能;具有除法保留小数位数的功能;具有基本的加减乘除功能;2 设计目的与作

9、用设计目的:简易电子计算器设计首要的工作是结合以往所学C语言的编写理论和编写规则来编写简易电子计算器的软件部分,编写时要结合STM32开发板的管脚功能和其他硬件电路,如输入模块和TF-LCD液晶显示屏。利用开发板硬件电路实现软硬件结合,能够掌握简易电子计算器的设计、组装与调试方法。设计作用:通过对简易电子计算器的设计与实现,巩固和加深嵌入式系统应用的知识面,更近一步了解STM2的具体使用,并能够掌握简易电子计算器的设计思路,提高及灵活运用所学知识.在设计与实现的过程中,熟悉软硬件设计的方法、内容及步骤,提高动手实践能力、提高科学的思维能力,对于论文的编写,培养书写综合实验报告的能力.3 所用设

10、备及软件本次设计采用的设备为TM32开发板,以及il MDK软件和C语言的编写。4 系统设计方案 系统总体设计本设计采用意法半导体基于ortexM3的TM32103,意法半导体的板子具有良好的性价比、低功耗、易开发等特点,而且其体系和架构资料丰富,用它能够快速的开发出整个系统。显示屏的选择,现有的液晶显示屏的种类很多,本设计选用的是.8寸带触摸的彩屏,分辨率为32024,支持1位色,这个就足够本设计使用了.可把数据利用软件来进行处理,从而把数据传输到LCD液晶显示模块,实现简易电子计算器用户操作界面的显示,在开发板上可使用四个独立按键进行光标上下左右的移动,根据软件程序的设置,开发板加减乘数的

11、计算功能。系统整体框图如图1所示: STM32电源简易电子计算器电路复位电路蜂鸣器电路串口电路LCD液晶显示模块独立按键处理模块图4 系统整体框图4。2简要阐述系统工作原理整个系统用TM2单片机作为中央控制器,由单片机执行采集内部RT值,简易电子计算器信号通过单片机I/O传给L显示屏,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LCD显示屏的显示及相关的控制功能。系统设有按键模块用于对数字进行调整。系统流程图如图。2所示:图4。2 系统流程图 系统硬件设计5.1 系统整体设计本数字简易电子计算器设计计时采用开发板自带RT模块,使用4个独立按键实现对时间的调整,个按键进行复

12、位操作,蜂鸣器对于整点报时及闹铃进行响应。系统总体结构电路原理图见附录2。5 各单元电路设计该多功能数字简易电子计算器电路原理设计是基于最小系统包括电源电路、复位电路、按键电路、计算电路、LC液晶显示电路、蜂鸣器电路、串口电路。5。2。1 电源电路本数字简易电子计算器设计使用开发板配置的数据线与电脑USB接口直接连接进行通电,作为硬件电路电源。电源电路图如图5.2.1所示:图5。21电源电路图5。LD液晶显示电路本数字简易电子计算器设计所需显示屏为TF-LCD液晶显示屏,通过软硬件的结合,可实现计算及数字的显示。LCD液晶显示电路图如图.2所示:图.2.2 CD液晶显示电路图5.2.3 简易电

13、子计算器电路本数字简易电子计算器显示采用STM32自带TC模块,RC模块拥有一组连续计数的计数器,通过软件的编写,可实现简易电子计算器的功能,在系统复位或待机唤醒后,简易电子计算器电路图如图5。所示:图5。2。3 简易电子计算器电路图5.2.4 按键电路本数字简易电子计算器设计四个按键用于进行显示时间的调整,芯片的4个I/O口与开发板的独立按键直接相连,通过软件编写,芯片可控制按键的开关,以达到时间调整的要求.按键电路图如图5。2.所示:图5。24按键电路图5。2。5 蜂鸣器电路本数字简易电子计算器设计可进行整点报时与闹铃的功能,经过软硬件的结合,由软件指使芯片控制蜂鸣器的响应。电路图如图5.

14、25所示:图5。5蜂鸣器电路图52.6复位电路本数字简易电子计算器设计一个按键用于对整个程序及硬件进行重新复位的功能,以芯片与按键和其他部件组成的复位电路直接相连。复位电路图如图5。.6所示:图5.2。 复位电路图5。.7 串口电路本数字简易电子计算器所用T32开发板支持USB下载,由UB转串口TTL电路进行自动下载控制,由此可将程序下载于开发板上。串口电路图如图5。2。7所示:图5。2。7串口电路图系统软件设计整个软件系统采用模块化思想,将TFTLCD液晶屏和RTC实时简易电子计算器分别集成一体,使程序模块化,结构层次分明.本设计的软件系统分为五个部分:FTLCD显示子程序、整点闹铃子程序、

15、电子计算器子程序和按键处理子程序。6.主程序设计本文所设计的简易电子计算器的在系统最初开始主程序扫描,由最初的显示子程序初始化,在使用计算器计算时,需要判断当前是采用加减乘除哪种运算,在程序中通过当手指触摸到其中一个运算符号(如“”),使用一个标识位来进行标识,然后在进行运算时候,通过这个标识位来判断是进行哪种运算.最后在运算完成之后,清除相应的标志位,以免影响下一次判断。,蜂鸣器进行相应操作,之后进入按键扫描,判断按键是否有变动,并进行实现相应的功能,最后返回主程序重新一次扫描,主程序流程图如下图6。1所示:实时简易电子计算器数据处理模块开始显示模块初始化按键处理模块图6。1主程序流程图在通

16、电后将初始化后的时分秒和年月日调入显示子程序中,依次开始调用实时简易电子计算器万年历子程序、整点闹铃子程序和按键处理子程序,在所有子程序调用完成后,返回程序开始循环运行.6 子程序设计在主程序的调用下根据不同的子程序模块功能进行编写,其中包括显示模块,按键处理模块,实时简易电子计算器万年历模块,整点闹铃模块等.6。.1 显示模块使用TFT-LCD显示屏显示,编程实现功能简洁,将RTC实时简易电子计算器的数据送入LCD中进行显示,显示内容包含背景界面,以及加减乘除等选项。显示子程序流程图如下图6.2.所示:初始化显示背景显示界面显示当前选项开始图62.1 显示子程序流程图6.2. 按键处理模块该

17、子程序进行按键处理的功能判断分别对加减乘除等运算法则等进行调整,在正常情况下1和S2分别是控制界面选择的上下左右选项,而S3键位是确认当前的所选择的操作,为了方面用户使用和理解,并没有使用S4键位,该流程图如图。2。2所示:NNN按下S4键?按下S3键?按下S2键?按下S1键?开始退出N上下移动操作Y左右移动操作Y执行相应功能Y不用Y图6.2.2 按键处理模块流程图6。2 实时简易电子计算器万年历模块该子程序需要对加减乘除等运算过程的读写操作,在串口通信时对时序要求比较高,需保证传输的连续性,不允许出现中断,利用RTC计算两次数据的走针。该流程图如图6。2。3所示:图62。3 实时简易电子计算

18、模块流程图 仿真调试分析该论文是用STM32开发板实现软硬件的结合,分别对软件与硬件进行调试,其中硬件主要通过在开发板上进行显示电路与按键电路的调试,软件通过ki MK进行调试。硬件调试:使用STM3开发板,为其通电,查看电源电路是否正常;成功开机后,查看显示电路是否正常;连接UB口,查看串口电路是否正常;根据时间走针判断简易电子计算器电路是否正常;通过独立按键的相应操作,查看功能是否正确,由此判断独立按键处理电路是否正常;操作复位键,查看复位电路是否正常。经过所有测试,电路均正常.软件调试:因在硬件调试中,结合软硬件,已完成显示子程序、实时简易电子计算器万年历子程序和按键处理子程序的调试,只

19、需完成余下整点闹铃子程序的调试,通过实时简易电子计算器万年历子程序调整时间为整点前一分钟,设置成功后,等待一分钟后,判断蜂鸣器是否相应,由此判断整点闹铃子程序能否正常运行。最终经过测试,该子程序能正常运行。 设计中的问题及解决方法在本次设计中出现过几次小Bu,具体如下:第一个问题:同时按下S与2按键时,无法正常使用按键解决办法:在Kei软件中的调试工具,发现在main函数中无法调用选择数字的子程序,通过函数外部调用,问题成功解决。第二个问题:从编辑框获取文本存储失败。这个问题产生的原因,是在我从编辑框内读取数据之前,有个if()语句,如满足条件,清除编辑框的内容,从而当我再次读取编辑框的内容就

20、为空了,当然什么数据也存储不了了。第三个问题:字符串转化成浮点数和浮点数转化成字符串的问题。这两个功能都有相对的库函数tli中的相干函数可以实现,但是奇怪的是,我调用这些函数,单独直接用的时候都的,但是如果多几个传递参数,就完全失效了。找了N久的转化函数,统统没有用,到最后,只能自己写算法来实现,花了很多时间来写、验证、完善。第四个问题:碰到浮点数减整数,得到的小数点与原先的小数点不相等.当然如:4.2-40。2,但是我们定义floata,2,则小数为(int)a,得到的小数部位0。2,而是为0.199998之列的,这里就涉及到个类型之间的转化存在丢失部分数据的问题。这是我超级郁闷的地方。想了

21、很多种办法多没有解决。最后只能选择效果最好的一种:就是小数点=(*1000(in)a10000)/0000,这种方法虽然没有本质上解决问题,但是效果好多了. 学习心得本次课程设计是用STM2单片机及接口电路设计一个简易电子计算器,经过两个星期的调试,结果满足设计要求,验证无误通过单片机硬件电路的调试,实现了预先设定的功能.设计主要用到了多种芯片,程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于按键处理模块分配的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。在调试电路的过程中也积累了一些宝贵的经验。将理论与实践相结合从而提高自己的实际动手能力和独立思考的能力。这次的课程设

22、计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计与调试过程中,遇见过乱码,开发板无法显示等问题,一点点去了解,一点点去解决。我在这其中学会了坚持不懈,不轻言放弃。同时还要感谢在我遇见困难时给予我帮助和指导的老师与同学.附 录附录1:主程序代码hle(1)EY_ask(); /按键修改时间dtDte(); /获取时间djst_RX_uffe(); /处理来自串口的数据g_b= uoba(); genum gtnum(); or(i = 0, j= 20, k = 3;i 0; +) /如果i的值等于坐标的值,则显示红色 i( %4= & i ! 0)

23、 j= 2;k + 3; prinf(”); if(get_zb =i) srinf(Buff,%d,); GI_CH16_rin(j,k,(u8 *)Buff,Red,Whte); j+=; else sprint(Bff,%d”,i); GUICH16_rig(j,,(u8 *)Buff,Black,Whie); j+=0; fr(i , j= 20, k = 2; 16; +) / 5037i(= 12) = 20;k 37;pintf(”n);swit(i)cs 10:spintf(Buff,c,); bek; /在屏幕上输出字符e 1:spintf(uf,”%c”,-); eak;a

24、se12:spritf(Buf,%c,*);bre;ce 13:sprintf(Buff,c,/); brak;case 14:sprtf(Buff,c”,=); break;case 15:sprintf(Buff,%,c); ak;i(gt_zb = i) UI_NH6sting(j,k,( )B,Rd,Whie);/打印换行j +=50;lse INC16_strg(j,,(u )B,Back,Whi);j+= 5;核心算法部分:int zy 0; /左右选择i x = 0; /上下选择int h; 确认按键in um; /通过按键得到命令n1 = 0;int n =0;doble n3

25、 = 0;chr Buff128;it flag =0;it f = ;int s = 0;void KEY_ask(void) if(S4 =0)/不按下s时,1,s2, f(1=0)/按下s 两个按键,分别是选择上下和左右 Dla_nm(10); if(S1=) hile(1=0); (zy= 0 & zy 3) y +; ee y = ; if(!S)/按下 Dly_nms(10); if(!2) wile(!S2); if(s & x 3) x +; else s = ; i(!S3) /按键选择Dea_ms(10);(!S)wile(!S3);switch(y + sx )) se

26、0:num =; rek; case 1:num=1;brea; cae 2:um= 2;eak; case:num = 3; brea; cse4:nm 4; brea; ae 5:um = 5; brea;case6:um = ; break; case:num = ; break;cas :num =8; bea; ce 9:num= 9; break; cse0: nm 10; ek;s 1: um = 11; beak;case 12: m = 12; ba; cae 13:um =3; brea; cse 4:num= 1; brek; ase 15: num = 1; brak;(f =0)fla = 1;els flag3;e /按下4时 if(m 10 fa = 1)/输入第一个数,并显示出来i(n1 0) n1 =num;ele n= 10 num;srintf(Bu,%”,n1); GUICNC6_trng(25,80,(u )Buff,Blac,hte);flg =; if(num =10 nu 14) /选择运算功能 wth(num) case :sm =um;k ;sprtf(Buff,d,al(n1, 2, sum) ;brek;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1