单片机简易加法计数器.docx

上传人:罗晋 文档编号:11657767 上传时间:2021-08-28 格式:DOCX 页数:20 大小:236.61KB
返回 下载 相关 举报
单片机简易加法计数器.docx_第1页
第1页 / 共20页
单片机简易加法计数器.docx_第2页
第2页 / 共20页
单片机简易加法计数器.docx_第3页
第3页 / 共20页
单片机简易加法计数器.docx_第4页
第4页 / 共20页
单片机简易加法计数器.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《单片机简易加法计数器.docx》由会员分享,可在线阅读,更多相关《单片机简易加法计数器.docx(20页珍藏版)》请在三一文库上搜索。

1、名徽新华分痛ANHUI XINHUA UNIVERSITY单片机原理及应用课程课程设计题目 简易计算器的设计院(系)信息工程学院专 业班级11级计算机应用技术 1班学生姓名 XXXXX学 号 XXXXXXXX设 计地点计算机应用实验室指导教师 XXXX起止时间:2013年6月3日至2013年6月14日ii摘要随着科技的飞速发展, 单片机的应用正在不断深入, 同时带动传统控制检测技术日益更新。 在实时检测和自动控制的单片机应用系统中, 单片机往往作为一个核心部件来使用, 仅单片机方面知识是不够的, 还应根据具体硬件结构软硬件结合,加以完善。本题目是实现两位数的加减运算的简易计算器,实现键盘输入,

2、由七段LED数码管输出; 程序都是根据教材内和网络中的程序参考编写而成, 在功能上还并不十分完善,限制也较多。本设计重在设计构思,使得我们用专业知识、专业技能分析和解决问题,通过设计使得我们对所学知识彻底巩固。课程设计目的和意义:通过这次课程设计,进一步掌握单片机理论知识,知道AT89S52单片机的原理、编程和各种功能的应用 , 了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力。同时通过毕业设计加深了我们对单片机的认识和兴趣,发挥了我们的创新能力。在本次课程设计中, 充分调动了组员的积极性, 彼此之间通过相互合作, 共同努力,一起出色地完

3、成了任务!设计任务:能够实现09这 10个 1 位数的加减运算,用 10个按键模拟 09数字键, 用两个按键实现加减运算, 运算结果用 5 个数码管显示出来。 如: 5+3=8。关键词 : 单片机;数码管;矩阵键盘20目录1. 设计方案 41.1 设计思路 41.2 整体设计 42. 电路设计原理 62.1 键盘接口电路 62.2 数码管显示原理及译码电路 72.3 运算模块(单片机控制) 73. 功能程序仿真调试 103.1 编程调试环境 103.2 测试结果截图 114. 程序设计 124.1 软件程序设计 124.2 源程序 145. 总结 186. 参考文献 191 .设计方案1.1

4、设计思路根据计算器的功能要求,选才 AT89S52为主控机,通过扩展必要的外围接口 电路,实现对计算器的设计。外部主要由 4*4矩阵键盘和一个液晶显示屏构成, 内部由一块AT89C52单片机构成。计算器电路包括四个部分:选用数码管作为显 示部分,矩阵键盘作为输入部分,运算模块,单片机控制部分。图1.1模块图1.2 整体设计根据简易计算器的功能和指标要求,本设计系统选用MCS-5保列单片机AT89C5劾主控机。通过扩展必要的外围接口电路,实现对简易计算器的设计。计算器电路包括三个部分:显示电路、4*4键扫描电路、单片机微控制电路。具体设计如下:(1)由于要设计的是简单的计算器,可以进行加减运算,

5、为了得到较好的显示效果,采用七段数码管显示数据和结果。(2)另外键盘包括数字键(09)、符号键(+、-、二)、复位键,故需要14个按键即可。(3)执行过程:开机显示零,等待键入数值,当键入数字,通过数码管显示出来,当键入+、-运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。图1.2线路原理框图图1.3系统总流程图2.电路设计原理2.1键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式, 而是采用矩

6、阵键盘的方案。矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键 盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4X4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。矩阵键盘的工作原理:电路中采用4*4键盘作为输入电路模块的话,电路连线会比较简单,而且这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。但是在硬件电路设计的过程中,实验室没有提供矩阵键盘,所以我们将4*4的矩阵键盘换成了 16个独立按键。采用独立按键的方式的话,会占用大量的I/O 口资源,但是在这种情况下,编程会很简单。矩阵键盘内部电路图如图所示:O . GIURt图2

7、.1矩阵键盘内部电路图停止At89s52是一种低功耗、高性能 CMOS脑微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非 易失性存储器技术制造,与工业80C51产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程, 亦适于 常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统 可编程Flash , 使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。AT89S52M有以下标准功能:8k字节Flash , 256字节RAM 32位I/O 口线, 看门狗定时器,2个数据指针,三个16位 定时器/计数器,一个6向量2级中 断结构,全双工用

8、行口, 片内晶振及时钟电路。另外,AT89S52可降至0Hz静 态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允 许RAM定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAWJ容被 保存,振荡器被冻结,单片机一切工作,直到下一个中断或硬件复位为止。8位 微控制器8K字节在系统可编程Flash AT89S522.2 数码管显示原理及译码电路本系统输出结果选用8个数码管显示。数码管有共阴共阳之分,本系统采用8段共阳型fiTiaiLED),其原理图如下图所示: a01b0cae d com c dp符号和引脚共阳极图2.2LED数码管结构共阳数码管就是把每个LED灯的

9、阳极接在共同接点com,而每个LED灯的阴 极分别为a,b,c,d,e,f,g,dp;通过控制LEW的亮灭来显示数字。数码管跟据接收到的字形码显示数字。2.3 运算模块(单片机控制)单片机是在一块芯片中集成了 CPU RAM ROM定日器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU、数据存储器(RAM、程序存储器(ROM/EPROM并行I/O 口、串行口、定时器/计数器、 中断系统及特殊功能寄存器(SFR 。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊(T2)PI 0一 (T2EX)Pl 1 P

10、1.2一 PI 3 PI 4 (MOSl)Pl 5 一 (MISO)P1 6一 (SCK)Pl 7 RST一 (RXD)P3 0 (TXL)P3 I (INT0)P3 2 (INTIJP3 3 (T0)P3 4 一 (TI)P3 5一 (WR)P3 6 一 (RDJP3 7 XTAL2 一 XTAI.I - GND - 3甥437536h35134833s AT89S52321031p单片机3015281427152616”17241819222021VCC1 POO(AL0)P。l(ADl)P0 2(AD2)-PO.HAD3)-P0 4(AD4)P0 向 AIM) 一EA/VDD AI.E/

11、PRQG 一PStN-P2 7(415)P2.N A 14)P2 5fAi3)P2 4(AI21一P23(AI 1) P2 2(410)P2 I(A9) 一P2 0(A8)的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性! 因此我们采用单片机AT89S52乍为计算器的主要功能部件,可以很快地实现运算功能。PO.M1*07( AD7)图2.3硬件电路原理图图2.4 AT89S52单片机实物图% 5-XMW14一 T3.-Tr 一q-ri-TO XT闻XIPJ IM府g)31,JM.lt必嗯3.功能程序仿真调试3.1 编程调试环境Keil uVision3 是美国 K

12、eil Software 公司出品的 51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期 ,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近 于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近 CPU本身,及其它的衍生产品。C51已被完全集成到uVision2 的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,

13、项目管理器,调 试器。系统功能:Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows界面,使您能在很短的时间内就能学会使用keil c51来开发您的单片机应用程序。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在 开发大型软件时更能体现高级语言的优势。3.2测试结果截图图3.2减法计算4.程序设计4.1 软件程序设计( 1)按键部分代码void key()uchar temp;P1=0xf0;temp=P1;if(temp!=0xf0)消除按键抖动按行进行按键扫描,先扫

14、描第一行delay(13);/if(temp!=0xf0)P1=0xfe;/temp=P1;switch(temp)case(0xee):i=0;c=0;break;case(0xde):i=1;c=0;break;case(0xbe):i=2;c=0;break;case(0x7e):i=3;c=0;break;按行进行按键扫描,扫描第二行P1=0xfd;/temp=P1;switch(temp)case(0xed):i=4;c=0;break;case(0xdd):i=5;c=0;break;case(0xbd):i=6;c=0;break;case(0x7d):i=7;c=0;break

15、;按行进行按键扫描,扫描第三行P1=0xfb;/temp=P1;switch(temp)case(0xeb):i=8;break;case(0xdb):i=9;break;case(0xbb):i=10;break;case(0x7b):i=11;break;/按行进行按键扫描,扫描第四行P1=0xf7;temp=P1;switch(temp) case(0xe7):i=12;break;case(0xd7):y=0;break;( 2)功能键部分代码void display(uchar i,uchar j,uchar k) uchar f2,t,e,q;if(k=10)e=i+j;f0=e/

16、10;q=i+j;f1=q%10;if(k=11)e=i-j;f0=e/10;q=i-j;f1=q%10;for(t=0;t2;t+)P2=tab1t;P0=tab2ft;delay(2);(3) LE国码管驱动部分代码void display1(uchar i)P2=0xfe;P0=tab20;delay(2);P2=0xfd;P0=tab2i;delay(2);4.2 源程序#include#define uchar unsigned char /数据类型的宏定义#define uint unsigned int/数据类型的宏定义uchar a,b,d,i,w,y=1;uchar c=2;

17、uchar tab1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchartab2=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x 8E,0xBF;void delay(uchar z)uchar x;for(;z0;z-)for(x=200;x0;x-);void key()uchar temp;P1=0xf0;temp=P1;if(temp!=0xf0)delay(13);/消除按键抖动if(temp!=0xf0)P1=0xfe;/按行进行按键扫

18、描,先扫描第一行temp=P1;switch(temp)case(0xee):i=0;c=0;break;case(0xde):i=1;c=0;break;case(0xbe):i=2;c=0;break;case(0x7e):i=3;c=0;break;P1=0xfd;/ 按行进行按键扫描,扫描第二行temp=P1;switch(temp)case(0xed):i=4;c=0;break;case(0xdd):i=5;c=0;break;case(0xbd):i=6;c=0;break;case(0x7d):i=7;c=0;break;/按行进行按键扫描,扫描第三行/按行进行按键扫描,扫描第

19、四行P1=0xfb;temp=P1;switch(temp)case(0xeb):i=8;break;case(0xdb):i=9;break;case(0xbb):i=10;break;case(0x7b):i=11;break;P1=0xf7;temp=P1;switch(temp)case(0xe7):i=12;break;case(0xd7):y=0;break;void display(uchar i,uchar j,uchar k)uchar f2,t,e,q;if(k=10) e=i+j;f0=e/10;q=i+j;f1=q%10;if(k=11)e=i-j;f0=e/10;q=

20、i-j;f1=q%10;for(t=0;t2;t+)P2=tab1t;P0=tab2ft;delay(2);void display1(uchar i)P2=0xfe;P0=tab20;delay(2);P2=0xfd;P0=tab2i;delay(2);void main(void)while(1)key();if(c=0&w=1)c=2;b=i;if(i=10|i=11)w=1;d=i;if(c=0)a=i;c=2;if(i=12)display(a,b,d);if(i!=10&i!=11&i!=12)display1(i);if(y=0)y=1;a=0;c=2;w=0;b=0;d=0;i

21、=0;) )5.总结课程设计是培养学生综合运用所学知识, 发现、提出、分析和解决实际问题,锻炼实践能力的重要环节, 是对学生实际工作能力的具体训练和考察过程。 随着科学技术发展的日新日异, 单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为电子信息工程专业的学生来说掌握单片机的开发技术是十分重要的。我的题目是简易计算器, 对于我们这些实践中的新手来说, 这是一次考验。 怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性, 而不会忙无一用?这都是我们所要考虑和努力的。 这次课程设计我学到很多很多的东西, 学会了怎么

22、样去制定计划, 怎么样去实现这个计划, 并掌握了在执行过程中怎么样去克服心理上的不良情绪。 不仅巩固了以前所学过的知识, 而且学到了很多在书本上所没有学到过的知识, 掌握了一种系统的研究方法, 可以进行一些简单的编程。 通过这次课程设计使我懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的, 只有把所学的理论知识与实践相结合起来, 从理论中得出结论, 才能真正为社会服务, 从而提高自己的实际动手能力和独立思考的能力。 同时在设计的过程中发现了自己的不足之处, 对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过我们小组的努力终于顺利完成了, 在设计中遇到了很多编程问题, 最后在老师的辛勤指导下, 终于迎刃而解, 在此我表示感谢!同时, 对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!6.参考文献1李建忠.单片机原理及应用 M西安:西安电子科技大学出版社,2008年 2 月,第二版2阎石.数字电子技术基础MT高等教育出版社,2007年3月,第五版3 zlttaogede . LCD1602J百度文库,2010年 7 月 27 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1