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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机设计简易计算器.docx

1、单片机设计简易计算器简易计算器Simply Calculatori设计思想此计算器有键盘部分、单片机、显示部分三部分组成,键盘部分主要完 成输入功能;单片机主要完成数据处理功能,包括确定按键,完成运算,以 及输出数据;显示器部分主要完成单片机输出的显示。本设计的思路是利用单片机性能好,稳定性强的优点来实现系统的运行。 设计大致可以分为三个步骤:第一步,硬件的选取和设计;第二步,程序的 设计和调试;第三步,Protues系统仿真。硬件是设计的骨骼,不仅关系到设计总体方向的确定,还要综合考虑节 能,环保,以及稳定性和经济性等各种因素。因此需要花费大量的时间。硬 件的选取最为重要,包括选用的芯片,显

2、示设备的选取,输入设备的选取等。 本设计是通过单片机来实现的,因此选用了 ATMEGA1单片机作为主体,输入 设备选用矩阵键盘。程序是硬件的灵魂,是实现设计的中心环节。本设计使 用的程序语言是C语言,在“ ICC AVR中运行,调试,直到运行出正确结果, 然后输出后缀名为.HEX格式的文件,以备在Protues中仿真使用。程序是设 计的关键,程序的调试需要大量的时间,耐心,还够要有足的细心才能成功。 本设计中就出现了大量的错误,经过认真修改,最终才能运行出正确结果。 最后的系统仿真是设计是否成功的验证,是设计不可缺少的重要环节。这就 要求能掌握Protues的一些基本操作。2原理分析矩阵键盘的

3、扫描M 1 M 2 M 3 M 4PD 0P D 1SWM 5,BS WM 6 cs.BS WM 7BS WM 8PBSW BS W BS WBS WPBM 9M 10M 1 1M 1 2PD 2SW,BS WBS WBS WPBM 13M 14M 1 5M 1 6PD 3SW BS WBS WBS WPBPD 4PD 5PD 6图 矩阵键盘图如图所示,单片机的 8个 I/O 口和矩阵键盘相连,用 8 个 I/O 口来控制 矩阵键盘的16个按键是非常有意思的,首先我们设置单片机的 PD0-PD7为输出,且PD0- PD3依次设置为低电平,而 PD什PD7设置为高电平,然后我 们设置PD4- P

4、D7为输入,而PD0- PD3仍然为输出,假如此时 M1键按下,则 PD0与 PD4相连,因为PD0是低电平,而PD4是输入,所以PD4会被拉为低电 平,同理,如果M2被按下,则PD5会被拉低,M3按下,PD6会被拉低,M4按 下,PD7被拉低。这是判断有无键盘按下的过程,当我们判断是那一个键盘按 下时,我们首先设置8个I/O 口为输出,输出为FE,即,PD0为低电平,其他 全为高电平,然后我们设置 PD4-PD7为输入,如果M1被按下,则PD4会比 被拉为低电平,此时会变成 EE,同理可以知道M2被按下时会变为DE,M3被按 下时会变为BE,M4被按下时会变为7E。同理我们可以设置8个I/O

5、 口输出FD 来检测M5-M8是否被按下,设置8个I/O 口输出FC来来检测M9-M12,设置 8个I/O 口输出F7来检测M13-M16,如果M M4没有被按下,就继续检测 M4-M8,一次类推,就可以检测出 16个按键了。在这次设计中,16个按键 M M16所对应检测值分别为:EE, DE BE 7E, ED DD BD 7D, EB DB BB 7B E7 D7 B7 77。数字显示与计算本次设计选用的显示器是 1602液晶显示器 此液晶显示器能显示 32个字 符,VS張地,VDD接电源正极,E为时使能信号,R/W为读写选择端(H/L) , RS 为数据/命令选择端(H/L) ,D0 D

6、7为数据I/O 口。首先我们初始化液晶显示器,然后显示出第一个被按下的数,并且使光 标右移,如果有第二个数按下,则据继续显示,以此类推,然后把所有显示 出来的数换算成一个数,如果按下“ +”号,则显示出“ +”,并且同理显示 出“+”号后面按下的数字,然后调用加子程序,运算出结果,如果按下的是 “-”, 则调用减子程序,如果按下“ *”,则调用乘子程序,如果按下“ /”, 则调用除子程序。然后再调用显示结果子程序,显示出结果。3程序设计与说明流程图主程序流程图和运算子程序流程图为:图主程序流程图图运算子程序流程图键盘扫描流程图为:开始延时10ms1是否按键1對按下rDDRD=0XFEFPORT

7、D=0XF01rDDRD=0X0F“是否是第 按键写一排 建否DDRD=0XFD1rPORTD=0XF0r是DDRD=OXOF图键盘扫描子程序流程图程序说明本次设计采用模块化设计思想,包括主程序和初始化子程序、延时子程 序、输出数据子程序、检测是否有按键按下子程序、确定按键子程序、清第 二行屏与显示“ Welcome子程序、换算第一个数子程序、运算子程序、显示 结果子程序等子程序。运行程序后,首先调用子程序清屏第二行并显示“ Welcome,然后检测是否有按键按下,如果没有,继续检测,如果按下, 则判断是否是加减乘除键被按下,如果是加减乘除被按下,则显示相应的字 符并换算出字符前输入的数据和字

8、符后输入的数字,然后检测是否有等号按 下,如果有则完成相应的运算并显示相应的结果,然后检测是否有清屏键按 下,如果有则清屏,相应的流程图如图 2所示。其中运算子程序的流程图如图3所示。4调试Protues系统仿真打开Protues,按设计思想放相应的零部件并连好线,把 HEX文件加载到单片机中运行,检测结果是否正确。硬件连线图如图所示。UJC1L图 Protues 仿真图调式过程编写完程序后保存程序,在“ ICC AVR中运行,调试,直到运行出正确 结果,然后输出后缀名为 .HEX 格式的文件。刚开始有错误,是一些语法规则 上的错误,不过经过几次的修改,最终输出了后缀名为 .HEX格式的文件。

9、把后缀名为.HEX格式的文件加载到单片机后,刚开始只是显示出 “Welcome的一部分字符,仔细观察发现,程序的前后空格不对称,经过修 改,最终得到了预期结果,最终运行结果如图所示。5 总结优缺点分析本计算器能完成加减乘除运算,结构简单,硬件较少,成本较低,另外 本程序采用模块化设计思想,可读性强,具有很强的可移植性,便于调用。 在处理多任务时,可以用中断服务来实现多线程,通过设置中断,启动中断 服务子程序使其自己执行任务,而 CPU可以做自己的工作,当有停止中断的 请求产生时,CPU再停下自己的工作做相应处理。但是也有很多不足之处。首先,程序有很多相同的代码,本来可以用调 用的方法实现,减少

10、代码长度,但是考虑到本程序不是很长,而且用调用的 方法必然会增加算法的复杂度和逻辑思维强度,所以在这里没有采用!其次,为了节省空间,程序设计的注释部分不够详细,使读程序不是很方便。再次, 本计算器不能完成小数运算,也不能完成科学计算器的一些功能,而要完成 这些功能,需要设置更多的键盘,加更多的程序,比较复杂,因为我时间有 限,在此不再处理。心得体会通过课程设计 ,我掌握了计算器的工作原理以及设计方法,我通过对 计算器的几个模块的深入理解, 我掌握了计算器的组成和制作过程, 并通过 自己的努力,制作出了自己的计算器,提高了我的动手能力和实践能力,同 时我对单片机有了更深入的理解, 也学会了使用单

11、片机的方法, 加深了对课 本知识的进一步理解。加强了我思考和解决问题的能力,认识来源于实践, 实践是认识的动力和最终目的,实践是检验真理的唯一标准!在设计过程中, 经常会遇到一些问题, 就是心里想老着这样的接法可以行 得通,但实际接上电路,总是实现不了。所以这几天不管是吃饭还是睡觉, 脑子里总是想着如何解决这些问题,功夫不负有心人,我通过认真思考,请 教同学,查找资料 , 最后终于熟练掌握了基本理论知识,而且领悟诸多平时学 习难以理解掌握的较难知识,学会了如何思考的思维方式,找到了设计的灵 感。在寻找答案的过程中 , 我学到了很多平时缺少的东西,对于理论知识学习 不够扎实的我深感“书到用时方恨

12、少”!认真思考才能找到出路,当初没有思路,诚如举步维艰,茫茫大地,不见 道路。在对理论知识梳理掌握之后,茅塞顿开,柳暗花明,思路如泉涌,高 歌“条条大路通罗马”。顿悟,没有思考便无出路,雨后才能见彩虹。失败是成功之母。不经历多次调试,是不可能得到完好的程序的。至善至美,是人类永恒的追求。但是,不从忘却“金无足赤,人无完人”,我们换种思维方式,去恶亦是至善,改错亦为至美。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的调试环节,本身就是在 践行“过而能改,善莫大焉”的知行观。实践课诚然是一门专业课, 给我很多专业知识以及专业技能上的提升, 同 时又是一门讲道课,一门思辨课

13、,给了我许多道,给了我很多思,给了我莫 大的空间。至于建议,一言以蔽之,大学教育当如此。我是一个急性子的人,看到那么复杂知识,我就不想做了,不过为了搞 好课程设计,我硬是耐心完成每一个细节,我坚持一天呆在实验室 10 多个小 时,虽然晚上眼睛比较酸痛,但是我感觉值。这么多天的努力没有白费,我 最后很好的完成了任务 , 很有成就感!我相信我在以后的生活和学习中会更耐 心,更认真的!参考文献:1陈冬云 等.ATmega 128单片机原理与开发指导.机械工业出版社,20062李群芳 等. 单片微型计算机及接口技术(第二版) . 电子工业出版社 ,20053周航慈 . 单片机程序设计基础 . 北航出版

14、社 ,20054何立民.MCS-51单片机应用系统设计.北航出版社,20025马潮高档8位单片机ATmega128原理与开发应用指南.北京航空航天大学 出版社, 2004附录 程序#include #include #include const unsigned char tab1= Welcome const unsigned char tab3=90+-*/= ;unsigned char key10;unsigned int temp1=0,temp2=0;unsigned char count1 = 0;unsigned char wei;void delay(unsigned int ms)unsigned int i,j;for(i=0;ims;i+)for(j=0;j1141;j+);void int_port()DDRA=0XFF;DDRB=DDRB|0X07;PORTB&=BIT(PB0);DDRD=0XFF;PORTD=0XFF;DDRD=0XF0;PORTD=PORTD&0X0F;void com_lcd(unsigned char com)PORTB&=BIT(PB2);PORTB&=BIT(PB1);PORTA=com;PORTB|=BIT(PB0);delay(1);PORTB&=BIT(PB0);void da

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

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