毕业设计论文-基于单片机的电子的计算器内容摘要:
2 光标复位 指令码 02H, 光标返回到地址 00H位置 ; 指令 3 光标和显示模式设置 14 I/D位 → 光标移动方向,高电平右移,低电平左移; S 位 → 屏幕上所有文字是否左移或者右移,高电平有效,低电平无效; 指令 4 显示开关控制 D 位 → 控制整体显示的开与关,高电平表示开显示,低电 平表示关显示; C 位 → 控制光标的开与关,高电平表示有光标,低电平表示无光标; B 位 → 控制光标是否闪烁,高电平闪烁,低电平不闪烁 ; 指令 5 光标或显示移位 S/C位 → 高电平时移动显示的文字,低电平时移动光标 指令 6 功能命令设置 DL位 高电平时为 4位数据总线,低电平时为 8位总线; N— 位低电平时为单行显示,高电平时为双行显示; F— 位低电平时显示 5x7的点阵字符 ,高电平时为 5x10的点阵字符; 指令 7 字符发生器 RAM地址设置 指令 8 DDRAM地址设置 指令 9 读忙信号和光标地址 BF位 → 为忙标志位,高电平表示忙,此时模块不能接收命令或者数据 指令 10 写数据 指令 11 读数据 LCD的特点: ( 1)低压微功耗; ( 2)平板型结构; ( 3)被动显示型 (无眩光,不刺激人眼,不会引起眼睛疲劳 ); ( 4)显示信息量大 (因为像素可以做得很小 ); ( 5)易于彩色化 (在色谱上可以非常准确的复现 ); ( 6)无电磁辐射 (对人体安全,利于信息保密 ); ( 7)长寿命 (这种器件几乎没有什么劣化问题,因此寿命极长,但是液晶背光寿命有限,不过背光部分可以更换 )。 4 设计原理分析 15 设计方案的确定 本设计需要使用 LCD液晶显示屏和编码键盘。 故选择静态显示和用编码键盘。 使用 LCD液晶显示屏 显示运算结果。 主程序进行初始化,其他的程序选择模块式的方式。 首先对每个模块进行调试 , 当模块调试成功后,逐一的加入主程序中,最后完成整个软件部分的设计。 计算器硬件方案及硬件资源分配 硬件资源分配 主要用到的硬件: AT89S52 LCD液晶显示屏 编码键盘 硬件分配: P0、 P3口:做为输出口,控制 LCD液晶显示屏 显示数据的结果。 P1口:做为输入口, 与键盘连接,实现数据的输入。 LCD液晶显示屏 显示输出。 系统的硬件设计 为了更好的实现系统得功能,硬件电路的设计应该遵循以下原则: ( 1) 优化硬件电路 采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器 (MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。 所以,在设计本系统得时候,在满足可靠性和实时性的前提下,尽可能的通过软件来实现硬件功能。 ( 2) 可靠性及抗干扰设计 根据可靠性设计理论,系统所用芯片 数量越少,系统的平均无故障时间越长。 而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。 因此,系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。 ( 3) 灵活的功能扩展 功能扩展是否灵活是衡量一个系统优劣的重要指标。 一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。 进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。 对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。 根据第提出的系统设计方案,结 合以上三条原则,确定了系统硬件的设计。 计算器主要由以下一些功能模块构成:非编码键盘模块、 LCD液晶显示屏 模块等。 该系统的硬件设计采用了模块化的设计方法。 AT89S52 单片机与 LCD液晶显示屏显示 电路是整个电路 16 的核心,它们实现系统的功能要求。 简易计算器主要包括:键盘电路,显示电路。 下图为总体硬件结构。 (如图 所示为整个系统的原理图) 图 计算器原理图 前面叙述了该系统的设计说明,系统采用了比较简单的设计方案,所以该系统的硬件设计的总外围电路不会产生过多的干扰。 在下面的阐述中,对 系统的外围电路分别予以介绍。 键盘部分采用 编码键盘, 显示部分采用 LCD液晶显示屏 完全能够很好的实现显示方面的要求。 键盘电路的设计 17 键盘可分为两类:编码键盘和非编码键盘。 编码键盘是较多按键( 20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。 通用计算机使用的标准键盘就是编码键盘。 在智能仪器中,使用并行接口芯片 8279或串行接口芯片 HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。 当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。 非编码键盘成本低廉。 从成本角度出发,本设计选用的是非编码键盘。 如图 图 编码键盘 电路 显示电路的设计 当系统需要显示少量数据时,采用 LCD液晶显示屏 进行显示是一种经济实用的方法。 P0口作为液晶显示的数据端口, ,控制 LCD液晶显示屏 显示输出数据。 最终电路如图 : 图 LCD液晶显示屏 显示 18 5 计算器的软件设计 计算器的软件规划 简易计算器的程 序主要包括以下功能模块: 定时查键模块,分为读键程序、判键程序段、运算操作子程序等部分; 基于 LCD液晶显示屏的 显示模块; 主模块,为系统的初始化。 键盘扫描的程序设计 键盘扫描子程序,首先读出 P1的低四位,然后读出 P1口的高四位。 然后键值并显示缓存。 然后将键如的值转换为 ASCII码然后就可以软件来设置硬件按键各个键代表的内容。 读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。 第一次所有行线均输出低电平,从所有读入键盘信息(列信息);第二次所有列线均输出低电平,从所有行 线读入键盘信息(行信息)。 系统中连接的是 4*4行列式按键键盘,其中“ 09”为数字键;“ +、 、 *、 /、 =”为符号键;“ ON/C”为功能键(清屏键),在程序中会加入一个记忆功能键,而与其搭配的硬件按键为符号键中的“ =”,以为求方便。 数字键按下则将相应的数字送入数字缓冲区;符号键按下则将送入符号缓冲区;功能键按下则执行相应的程序;最终进行运算后,综合结果将送入结果缓冲区,并在 LCD液晶显示屏上显示出来。 键盘模块程序也可相当于一个中断服务子程序,如图 441所示。 19 有 键 输 入。 数 字 键。 符 号 键。 功 能 键。 清 零。 记 忆。 数 值 输 入 , 送 数值 缓 冲 区符 号 输 入 , 送 符号 缓 冲 区综 合 结 果 送 综 合缓 冲 区输 入 清 零 键 , 送清 零 缓 冲 区输 入 记 忆 键 , 送记 忆 缓 冲 区返 回YYYNNNNYNN 图 521 中断服务程序框图 通过以上的中断服务程序框图,来编写其子程序: void keyscan() //键盘扫描程序 { uchar temp,uu=0xf7。 uint i。 for(i=0。 i4。 i++) {uu=_crol_(uu,1)。 //_crol_为左移函数 „„„„ { case 0xee: key=0。 break。 case 0xde: key=1。 break。 „„„„„„ case 0x77: key=15。 break。 „„„„ } 20 在以上的程序中 , 其中的 “ key=0„„ key=15” 是按键 “ 0 +、 、 *、 /、 =、 ON/C” 16个键。 而“ case 0xee: key=0。 break。 ”中,被赋值为“ 0xee”,则是因为行信息是 P3口的低四位,若是按键按下为“ 0”,则 “ 0”, “ 1”;同时,列信息是 P3口的高四位,若是按键按下为“ 0”,则 “ 0”,“ 1”;由此可得,其被赋值为“ 0xee”。 以此类推,之后一直到“ case 0x77: key=15。 break。 ”为止,都是采用相同的方法去赋值的。 显示模块的程序设计 显示模块程序首先要对显示模块进行初始化;然后控制光标的位置;定义液晶显示的控制端口,用 SBIT指令完成;然后设置清屏、关闭显示、归位、开显示、显示位置的首地址等等。 显示模块的流程图如图 : 开 始初 始 化 参 数初 始 化 L C D 显 示本 次 功 能 键。 读 取 键 码数 字 键 清 零 键 功 能 键键 入 数 值 状 态 清 零根 据 上 次 功 能 键 和 输 入的 数 据 计 算 结 果结 果 送 显 示 缓 冲L C D 显 示有 否 有 键 值。 数 值 送 显 示 缓 冲结 果 送 显 示 缓 冲等 待 数 值 键 入 等 待 数 值 键 入结 果 送 显 示 缓 冲等 待 数 值 键 入YNYN 图 模块的流程图 21 主程序的设计 主程序主要是用来对 LCD液晶显示屏进行初始化的。 在考虑主程序编写之前,先应对计算器的运作流程有一个大致的了解,之后依次 为依据画出大致的流程图(如图 541),以便于编写其主模块的程序,这样看来,会比较清晰、更加方便。 开 始初 始 化 参 数初 始 化 L C D 显 示数 值 运 算L C D 显 示 图 541 主程序框图 软件的可靠性设计 提高本仪器其可靠性措施主要有: (1) 为防止程序跑飞,软件中设置了软件陷阱。 (2) 为防止程序死循环,软件中使用了看门狗技术。 仿真与实物图 22 结束语 通过基于 89S52单片机简易计算器的设计,加深了我对单片机的了解,学以致用,不但回顾了过去所学,更 使我了解现在的不足,弥补了一些知识漏洞。 在硬件的制作过程中,我走了很多弯路。 主要是在系统还没有到设计完全的时候就开始很心急地买元器件及动手焊板子。 后来发现与设计的要求还有偏差,而后反复地改了好几次,浪费了大量的时间和精力。 板子按照自己的设计焊完之后,应开始设计自己的软件程序了。 一开始,本想用汇编语言来编程的,可是当编了一部分之后才发现,用汇编语言来编程的话,相当繁复冗长;之后就想试着用 C语言来编程。 在图书馆查阅了一些相关资料后,就开始写程序。 在编写程序的过程中,发现硬件居然出现了不少问题。 所以,在编写程 序的过程中,也就完善了硬件的设计。 编程时,已充分使用了结构化的思想。 这样一来,因为语句较少,程序调试也比较方便,功能模块可以逐一地调试,充分体现了结构化编程的优势。 当每个模块都完成时,将其功能加到一起就完成了整体的设计。 更重要的是在实际设计和试验中形成了更加科学合理的认识,不断形成更为合理和具有科学性的思想方式。 在这次设计中借助了互联网等途径查询相关信息,并在图书馆查阅了大量单片机资料。 这不但扩展了有关单片机领域的眼界,而且完善了以往的知识体系。 提高了运用知识的综合能力。 23 致谢 本次毕业设计得到指导老师孙老师的热心指导,在这里对孙老师表示最衷心的感谢。 孙老师平易近人,对学生的设计进度和学习很关心。 在毕业设计的前期,首先给我们分析了一下课题的基本含义,也介绍了不少有用的资料和书籍;在硬件设计等方面给予悉心地指导;在调试的过程中,孙老师给每个出现的问题也给予了及时的指导。 在写毕业设计论文的阶段,孙老师先跟我们讲了一下大体的结构思路、内容字体、格式上的及一些其他问题。 待人平和、工作认真、治学严谨的她给我留下了很深刻的印象。 更重要的是,她善于与学生沟通,不仅在毕业设计上给了我 及时的指导,更为我大学最后阶段的学习提出了许多宝贵的意见。 这一切都在潜移默化地影响着我,为我以后进入工作岗位树立了良好的榜样。 同时,还应该感谢完成毕业设计期间共同努力相互学习和帮助的同学们,在整个毕业设计的过程中,正因为有了与同学之间的共同探讨,让我在独立完成任务的同时,体会到团队中智慧的强大。 最后再次向所有帮助和关心过我的人表示衷心感谢。 参考文献 [1]张靖武 ,周灵杉 .单片机系统的 PROTEUS设计与仿真 [M].北京:北京电子。毕业设计论文-基于单片机的电子的计算器
相关推荐
P 1 12P 1 23P 1 34P 1 45P 1 56P 1 67P 1 78P 0 039P 0 138P 0 237P 0 336P 0 435P 0 534P 0 633P 0 732P 2 021P 2 122P 2 223P 2 324P 2 425P 2 526P 2 627P 2 728P S E N29A L E / P30T X D11R X D10U1A T 8 9 C
字符那样用字符模块即可显示,要想显示汉字必须用图形模块。 本课设所选择的 LCD 是 AMPIRE12864 的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接如图 8所示。 智能仪表综合课程设计 17 ADC0804A/D转换器 与单片机的接口电路 ADC0804 引脚图如下: 引脚功能及应用特性如下: CS 、 RD 、 WR (引脚 3):是数字控制输入端,满足标准 TTL
单位为 g/mm;减光率是利用光束穿过烟雾时光强度产生衰减量的百分数来表示烟雾的浓度。 温度 火灾是一种失去控制的燃烧反应,在其孕育、发生、发展的不同阶段,都伴随着热量的产生和温度的升高。 在火灾的初始阶段,一方面有大量的烟雾产生,另一方面由于物质在燃烧过程中释放出热量,使得周围环境的温度上升,但 是由于普通可燃物质在此阶段燃烧速度缓慢,周围温度的升高速度是比较缓慢的,在火灾的发展阶段
表 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据 /命令选择 12 D5 数据 5 R/W 读 /写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 7 第 1 脚:
警系统的设计与制作 8 系数为 ℃。 湿度 监测 模块 结构 如图 27所示。 该模块的中心是将传感器接入一个 555非稳态电路,输出一个频率信号并由单片机直接采集、处理。 由按键输入极限值,超出该值则触发蜂鸣报警。 图 27 湿度 监测 模块 框 图 电源模块设计 系统供电总共需要 两 种电源, AD590 的工作电压为 9V, 小系统及各种芯片的工作电压为 5V,风扇供电 5V。
……………………… ………………………… …… END CASE。 END IF。 END PROCESS。 END ART。 ② BCD 七段译码器 LIBRARY IEEE。 USE。 USE。 ENTITY BCD7 IS PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0))。