版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、引言当今时代,是一个新技术层出不穷的时代。在电子领域,尤其是自动化智能控制领域,传统的分 立元件或数字逻辑电路构成的控制系统正以前所未见的速度被单片机智能控制系统所取代。 单片机具 有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目 前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。过去习惯于传统电子 领域的工程师、 技术员正面临着全新的挑战, 如不能在较短时间内学会单片机, 势必会被时代所遗弃, 只有勇敢地面对现实,挑战自我,加强学习,争取在较短的时间内将单片机技术融会贯通,才能跟上 时代的步伐。它所给人带来的方便也是不可否定的,它在
2、一块芯片内集成了计算机的各种功能部件,构成一 种单片式的微型计算机。 20世纪 80年代以来, 国际上单片机的发展迅速, 其产品之多令人目不暇接, 单片机应用不断深入,新技术层出不穷。 20 世纪末,电子技术获得了飞速的发展,在其推动下,现 代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高, 同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。本设计是由单片机实现的模拟计算器, 它不仅能实现数据的加减乘除运算, 而且还能使数据及其计 算结果在数码管上显示出来,能够实现 0-256 的数字四则运算。本设计是用单片机 AT89C51 来控制, 采
3、用 LCD 显示,软件部分是由 C 语言来编写的。设计任务:利用键盘和 LCD 设计一个简单的数学计算器,可以完成简单的如加,减,乘,除的 四则运算,并将运算结果在 LCD 上显示出来。1.方案论证1.1 方案一根据功能和指标要求, 本系统选用MCS-51系列单片机AT89C51为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。计算器电路包括三个部分:显示电路、4*4 键扫描电路、单片机微控制电路。用七段数码管作为显示电路,矩阵键盘作为输入电路。模块图如图1.1 所示。1 / 18图1.1方案一模块图1.2方案二根据计算器的功能要求,选择AT89C51为主控机,通过扩展必要的外围接口电
4、路,实现对计算器的设计。外部主要由4*4矩阵键盘和一个液晶显示屏构成,内部由一块AT89C51单片机构成。计算器电路包括四个部分:选用LCD乍为显示部分,矩阵键盘作为输入部分,运算模块,单片机控制部分。模块图如图1.2所示。图1.2方案二模块图1.3对比选择从电路结果的准确角度来说方案二要优于方案一,因为方案二用LCD作为显示电路,显示结果清楚明了,比用方案一的准确度更高,而且电路连线相对比较简单。为了得到更好的结果,所以选择2 / 181.4整体设计根据简易计算器的功能和指标要求,本设计系统选用MCS-5係列单片机AT89C5伪主控机。通过扩展必要的外围接口电路,实现对简易计算器的设计。计算
5、器电路包括三个部分:显示电路、4*4键扫描电路、单片机微控制电路。具体设计如下:(1) 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用七段 数码管显示数据和结果。(2) 另外键盘包括数字键 (09)、符号键(+、-、X、十)、清除键和等号键,故只需要 16个 按键即可。(3) 执行过程:开机显示零,等待键入数值,当键入数字,通过LCD!示出来,当键入+、-、*、 /运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LC上输出运算结果。(4) 错误提示:当计算器执行过程中有错误时,会在LC上显示相应的提示,如:当输
6、入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LC上提示溢出;当除数为0时,计算器会在七段数码管上提示错误。线路原理框图如图1.3所示。图1.3线路原理框图22 / 182电路设计原理图1.4系统总流程图第4页共18页2.1键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编 程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个 交叉点上设置一个按键。这样键盘上按键的个数就为4X 4个。这种行列式键盘结构能
7、有效地提高单片 机系统中I/O 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图 2.1所示:一般有16个键组成,在单片机中正好可以用一个 P口实现16个按 键功能,这种形式在单片机系统中也最常用。图2.1矩阵键盘布局图电路中采用4*4键盘作为输入电路模块的话,电路连线会比较简单,而且这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。但是在硬件电路设计的过程中,实验室没有提供矩阵键盘,所以我们将4*4的矩阵键盘换成了 16个独立按键。采用独立按键的方式的话,会占用大量的I/O 口资源,但是在这种情况下,编程会很简单。矩阵键盘内部电路图如图 2.2所示(见下页)。2.2显示模块本
8、设计采用LCD1602液晶显示屏来显示输出数据。通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。LCD160 2管脚图如图2.3所示。1jLo. o1-o TofS'11_55-i1Oi厂B1O0*94i5TSWIJ图2.2矩阵键盘内部电路图二2.3运算模块(单片机控制)MCS-51单片机是在一块芯片中集成了 CPU RAM ROM定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU、数据存储器(RAM、程序存储器(ROM/EPROM、并行I/O 口、串行口、定时器/计数器、中断系统及特
9、殊功 能寄存器(SFR 。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的 一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片 机AT89C51 乍为计算器的主要功能部件,可以很快地实现运算功能。P1.0 P】I Pl. 2 i'hJ Pl.n, 5riP bFl.?rst|阳川工D rnoiFli 伽旧川 (IhDP3t 31CTO)他 4(TIJF3, | 临岷5 (1fl5)P 71XTAUSTALE IrO. V IADS PO. I/1ADI)PO. J; 1呦 1U4/塔D畀 PO.5/UD5)FO.
10、V INDMP(kT/ 1AD?)IK/WME/Fft%P2.VU15f n.H Uli) P2.5/UBJ mmP2. 3/ IA1U 円.>/un) 円.l/U9l 叫.Muis 1图2.4AT89C51管脚图管脚说明:VCC:供电电压。GND接地。P0 口: P0 口为一个 8位漏级开路双向I/O 口,每脚可吸收 8TTL门电流。当 P0 口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1 口: P1 口是一个内部提供
11、上拉电阻的8位双向I/O 口,P1 口缓冲器能接收输出4TTL门电流。P1 口管脚写入 1后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1 口作为第八位地址接收。P2 口: P2 口为一个内部上拉电阻的 8位双向I/O 口,P2 口缓冲器可接收,输出4个TTL门电流,当P2 口被写“ 1”时, 其管脚被内部上拉电阻拉高,且作为输入。 并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“
12、 1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在FLASH编程和校验时接收高八位地址信号和控制信号。P3 口: P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4个TTL门电流。当P3 口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL )这是由于上拉的缘故。P3 口也可作为 AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 /INTO(外部中断 0)P3.3 /INT1(外
13、部中断 1)P3.4 TO (记时器0外部输入)P3.5 T1 (记时器1外部输入)P3.6 /WR (外部数据存储器写选通)P3.7 /RD (外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个
14、ALE脉冲。如想禁止 ALE的输出可在 SFR8EH地址上置0。此时,ALE只有在执行 MOVX MOVC旨令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP :当/EA保持低电平时,则在此期间外部程序存储器(OOOOH-FFFFH ),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为 RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引
15、脚也用于施加12V编程电源(VPP)。XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 :来自反向振荡器的输出。3仿真调试Proteus软件是英国Labce nter electro nics公司出版的 EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但 已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协
16、同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR ARM 8086 和 MSP430等,2010 年即将增加 Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。其功能特点:(1 )原理布图(2)PCB自动或人工布线(3)SPICE电路仿真Keil uVision3 是美国Keil Software公司出品的 51系列兼容单片机
17、C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVisi on2 的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。系统功能:Keil C51软件提供丰富的
18、库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keil c51来开发您的单片机应用程序。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3.1测试结果截图减法计算加法计算图3.1加法计算结果乘法计算图3.3乘法计算结果18-9=9SD ED E S W0 1 2 3 4 5 6 7V V rrE ddddddddLCD1LM016L123|卜昭89中34图3.2减法计算结果除法计算999/333=3SSVD ED E
19、S w0 1 2 3 4 5 6V VRREDDDDDDD7 D234 5 6 7 H;123TLCD1LM016L图3.4除法计算结果3.2故障及处理遇到的主要问题出现在 LCD1602上,在不加芯片调试时,LCD1602只显示一排全黑,一般说明该元件是好的。(但也不一定,我那时就一直认为我的元件没坏);给15,16管脚分别接上+5v和0v,测试背光是否完好;给 VEE接上电位器,检查对比度是否可调。一般LCD易出现的现象,我在做实验的时候遇到过以下几种情况: 状态1上电之后,1602的第一行全黑,即16个5x7黑块产生原因:液晶根本就没有进行初始化操作,需要检查连线或者程序。有的情况下就是
20、整块 LCD是坏的。 状态 2 屏上显示两排灰格产生原因:程序中对液晶初始化不正常,应是部分初始化指令没有正常接收,建议按照标准初始 化步骤调整程序,或者调整指令之间的延时(加大一些试试) ,也有可能是对比度太大,建议优 先调整对比度电阻。 状态 3显示乱码原因是接线存在问题。4.总结课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重 要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经 成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为电子信息工程专 业的学生来说掌握单片机的开发技术是十分重要的。我
21、的题目是简易计算器,对于我们这些实践中的新手来说,这是一次考验。怎么才能找到课堂所 学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性, 而不会 忙无一用?这都是我们所要考虑和努力的。 这次课程设计我学到很多很多的东西, 学会了怎么样去制 定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固 了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法, 可以进行一些简单的编程。 通过这次课程设计使我懂得了理论与实际相结合是很重要的, 只有理论知 识是远远不够的,只有把所学的理论知识与实践相结合起来,从
22、理论中得出结论,才能真正为社会服 务,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处, 对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过我们小组的努力终于顺利完成了, 在设计中遇到了很多编程问题, 最后在老师 的辛勤指导下,终于迎刃而解,在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再 次表示忠心的感谢!5附录5.1 附录 A 总体硬件电路原理图5.2 附录 B 源程序#include<reg51.h>LCD_write_command(0x01)#define CLEARSCREEN#
23、define uint unsigned int#define uchar unsigned char*定义接口 *#define LCDIO P0 #define KEYBOARD P1/ 保留sbit LCD1602_RS=P2P;sbit LCD1602_RW=P2A1;sbit LCD1602_EN=P2A2;*code uchar mayuan16='0','1','2','3','4','5','6','7','8','9'
24、,'0','/','*','-','+','='/ 不错,这个比较明了 unsigned char code keycode=0x11,0x21,0x41,0x81,0x12,0x22,0x42,0x82, 0x14,0x24,0x44,0x84,0x18,0x28,0x48,0x88;/ 键盘编码值 ()int i,j,k=1,s;/int t,t1,t2,a;/void delay(uchar);/ 延时/*定义函数 */void LCD_init(void);/ 初始化函数void delay
25、_nms(unsigned int n);/ 延时函数void LCD_write_command(unsigned char command);/ 写入指令函数 void LCD_write_dat(unsigned char dat);/ 写入数据函数 void delay_10ms();initial();uchar keyscan();/ 键盘扫描函数 calc(uchar);/ 计算函数uchar num,temp,key,keynum;void main()/ 主函数LCD_init();delay_nms(100);while(1)initial();/ 有中断KEYBOARD
26、=0xf0;/ 键盘的列值全置高电平 *开中断*initial()EA=1;/ 总开关EX0=1;/ 中断方式 0 开启IT0=0;/*中断函数*void inter0() interrupt 0 unsigned char n; delay_10ms();/ 延时 if(INT0=0)/ 没键按下 EX0=0;/ 关中断 n=keyscan(); calc(n); EX0=1;/ 开中断 KEYBOARD=0xf0;/ 键盘的列值全置高电平 /*calc(uchar n)if(n<10)/ 键值小于 10t1=t1*10+n;LCD_write_command(0x00);/ 写命令语
27、句LCD_write_dat(mayuann);/ 写数据函数elseif(n=10)LCD_init();t1=0;t2=0,t=0;k=1; elseif(n<15)t2=t1;t1=0;j=n;LCD_write_command(0x00);LCD_write_dat(mayuann); elseLCD_write_command(0x00);LCD_write_dat(mayuann);switch(j)case 11:t=t2/t1; break; case 12:t=t2*t1; break;case 13: t=t2-t1; break;case 14:t=t2+t1;br
28、eak;if(t<=9) LCD_write_command(0x00);LCD_write_dat(t+48); if(t>9)while(t>9) s=t%10; t=t/10; ak=s; k+;if(t<=9) LCD_write_command(0x00);LCD_write_dat(t+48); for(i=k-1;i>=1;i-) LCD_write_command(0x00); LCD_write_dat(ai+48);*键盘扫描函数*uchar keyscan()/ 键盘扫描KEYBOARD=0xf0;/ 键盘的列值全置高电平 delay_10ms();/ 延时if(KEYBOARD!=0xf0)/ 有键按下temp=KEYBOARD;/ 保存键盘此刻的键植delay_10ms();/ 延时if(KEYBOARD=temp)/ 再次确认键盘是否被按下 uchar i;KEYBOARD=0x0f;/ 键盘的行值全置高电平 delay_10ms();/10MS 时间延时 keynum=temp | KEYBOARD;/ 保存键盘的行值 while(KEYBOARD!=0x0f);/ 松手检测 for(i=0;i<16;i+) if(keycodei=k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医用高频仪器设备项目提案报告模范
- 生命小学作文15篇
- 2024-2025学年许昌市魏都区三年级数学第一学期期末综合测试试题含解析
- 2024-2025学年新源县三上数学期末检测试题含解析
- 2025年水用电磁阀项目立项申请报告模范
- 个人辞职报告19篇
- 个人年终总结合集15篇
- 2024年校园护卫人员标准聘用合同模板版B版
- 员工离职证明书(15篇)
- 2023行政主管年终工作报告五篇
- 仓库管理员月度绩效考核表
- 户外广告设施设置申请表+审批表(城市管理资料2022新版)
- 国家开放大学电大专科《刑法学(1)》期末题库及答案
- 焦炉砌筑规程
- 聚酰亚胺基础知识-1(横田力男)
- ATS(发动机智能冷却系统)
- 毕业论文饮料罐装生产流水线系统设计与调试
- 项目工程施工安全生产管理流程图
- CAD的乐趣(漂亮的自定义线型)
- 某某油库投产试运行方案
- 业障病因果病对照表
评论
0/150
提交评论