基于51单片机的简易计算器设计_第1页
基于51单片机的简易计算器设计_第2页
基于51单片机的简易计算器设计_第3页
基于51单片机的简易计算器设计_第4页
基于51单片机的简易计算器设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的简易计算器设计摘要 2关键字 :80C51 LCD1602 4*4 矩阵键盘 计算器 2第一章 绪论 31、1 系统开发背景 . 31、2 系统开发意义 . 31、3 设计目的 . 31、4 设计任务 3第二章 单片机发展现状 42、1 目前单片机的发展状况 42、1、1 单片机的应用场合 42、2 计算器系统现状 . 52、3 简易计算器系统介绍 . 5第三章 系统硬件设计及说明 63、1 系统组成及总体框图 . 73、2 AT89S52单片机介绍 73、 3 其它器件介绍及说明 103、3、1 LCD1602液晶显示 103、 3、 2 4*4 矩阵扫描按键 13第四章PRoT

2、EU模拟仿真 14第五章 系统硬件设计及说明 16第六章 软件设计 17& 1汇编语言与C语言的特点及选择 176、 2 源程序代码 17摘要近年来随着科技的飞速发展 ,单片机的应用正在不断深入 , 同时带动传统控 制检测技术日益更新。在实时检测与自动控制的单片机应用系统中 , 单片机往往 作为一个核心部件来使用 ,但仅单片机方面的知识就是不够的 , 还应根据具体硬 件结构、软硬件结合 , 来加以完善。计算机在人们的日常生活中就是比较常见的电子产品之一。 可就是它还在发 展之中,以后必将出现功能更加强大的计算机 , 基于这样的理念 ,本次设计主要以 80C51单片机为控制芯片,用C语言

3、进行编程实现,通过4*4矩阵键盘控制,输出 用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。关键字:80C51 LCD1602 4*4矩阵键盘计算器第一章 绪论1、1 系统开发背景随着社会的发展 ,科学的进步 ,人们的生活水平在逐步的提高 ,尤其就是微电 子技术的发展 , 犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。 计算器在人们的日常中就是比较的常见的电子产品之一。 如何使计算器技术更加 的成熟,充分利用已有的软件与硬件条件 , 设计出更出色的计算器 , 使其更好的为 各个行业服务 , 成了如今电子领域重要的研究课题。1、2 系统开发意义今天, 人们的日常

4、生活中已经离不开计算器了 , 社会的各个角落都有它的身影 比如商店,办公室,学校O因此设计一款简单实用的计算器会有很大的实际意 义。1、3 设计目的通过本次硬件与软件相结合的实践,运用单片机基础、MCS-51系列单片 微型计算机及其应用所学知识及查阅相关资料 , 完成简单专用计算器的设计 , 达到理论知识与实践更好的结合、提高综合运用所学知识与设计能力的目的。通过本次设计训练,可以使我们在基本思路与基本方法上对基于 MCS-51单 片机的嵌入式系统设计与按键操作有一个比较感性的认识 , 并具备一定程度的设 计能力。1 、 4 设计任务在本次设计实践中 , 主要完成如下方面的设计任务 :1)简要

5、综述单片机技术发展的国内外现状及液晶屏显示与矩阵键盘基本原 理;2)掌握MCS-51系列某种产品(例如AT89S52的最小电路及外围扩展电路的 设计方法 ;3)了解单片机数据转换功能及工作过程 ;4)完成主要功能模块的硬件电路设计及必要的参数确定;第二章 单片机发展现状2、1 目前单片机的发展状况单片机的发展趋势:低功耗CMo化;微型单片化;主流与多品种共存;单片机 从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼 容的 , 但它们各具特色 , 互成互补 , 为单片机的应用提供广阔的天地。 纵观单片机的发展过程 , 可以预示单片机的发展趋势 ,大致有:1) 信低功

6、耗CMO化MCS-51系列的8051推出时的功耗达630mW而现在的单片机普遍都在IOOmW 左右, 随着对单片机功耗要求越来越低 , 现在的各个单片机制造商基本都采用了 CMOS互补金属氧化物半导体工艺)。象80C51就采用了 HMOS即高密度金属氧化 物半导体工艺)与CHMO互补高密度金属氧化物半导体工艺)。CMOSl然功耗较 低,但由于其物理特征决定其工作速度不够高,而CHMOSW具备了高速与低功耗 的特点, 这些特征, 更适合于在要求低功耗象电池供电的应用场合。 所以这种工艺 将就是今后一段时期单片机发展的主要途径。2) 微型单片化现在常规的单片机普遍都就是将中央处理器(CPU)、随机

7、存取数据存储(RAM)只读程序存储器(ROM)并行与串行通信接口 ,中断系统、定时电路、时 钟电路集成在一块单一的芯片上,增强型的单片机集成了如 A/D转换器、PMW脉 宽调制电路)、WDT瞧门狗)、有些单片机将LCD液晶)驱动电路都集成在单一的 芯片上 , 这样单片机包含的单元电路就更多 , 功能就越强大。 甚至单片机厂商还可 以根据用户的要求量身定做 , 制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、 重量轻,这就要求单片机除了功能强与功 耗低外 , 还要求其体积要小。现在的许多单片机都具有多种封装形式, 其中SMD表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化

8、方向发展。3) 主流与多品种共存现在虽然单片机的品种繁多 ,各具特色 ,但仍以 80C51 为核心的单片机占主 流,兼容其结构与指令系统的有PHILIPS公司的产品,ATMEL公司的产品与中国台 湾的 Winbond 系列单片机。所以 C8051 为核心的单片机占据了半壁江山。而 MiCrOChiP公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的 HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场 分额。此外还有MOTOROi公司的产品,日本几大公司的专用单片机。在一定的时 期内, 这种情形将得以延续 , 将不存在某个单片机一统天下的垄断局面 ,走的

9、就是 依存互补 ,相辅相成、共同发展的道路。2、 1、 1 单片机的应用场合智能仪器仪表单片机用于各种仪器仪表 , 一方面提高了仪器仪表的使用功能与精度 , 使仪器仪 表智能化 ,同时还简化了仪器仪表的硬件结构 , 从而可以方便地完成仪器仪表产 品的升级换代。如各种智能电气测量仪表、智能传感器等。1)智能仪器仪表 机电一体化产品就是集机械技术、 微电子技术、自动化技术与计算机技术于一体 , 具有智能化特征的各种机电产品。 单片机在机电一体化产品的开发中可以发挥巨 大的作用。典型产品如机器人、数控机床、自动包装机、点钞机、医疗设备、打 印机、传真机、复印机等。2) 实时工业控制 单片机还可以用于

10、各种物理量的采集与控制。电流、电压、温度、液位、流量等 物理参数的采集与控制均可以利用单片机方便地实现。在这类系统中 , 利用单片 机作为系统控制器 , 可以根据被控对象的不同特征采用不同的智能算法 , 实现期 望的控制指标 , 从而提高生产效率与产品质量。典型应用如电机转速控制、温度 控制、自动生产线等 。3) 家用电器 家用电器就是单片机的又一重要应用领域 , 前景十分广阔。如空调器、电冰箱、 洗衣机、电饭煲、高档洗浴设备、高档玩具等。另外,在交通领域中 ,汽车、火车、飞机、航天器等均有单片机 的广泛应用。如汽车自动驾驶系统、航天测控系统、黑匣子还有分 布式系统的前端模块等等 。2、2 计

11、算器系统现状 计算器一般由运算器、控制器、存储器、键盘、显示器、电源与一些 可选外围设备及电子配件通过人工或机器设备组成。低档计算器的运算器、 控制器由数字逻辑电路实现简单的串行运算 , 其随机存储器只有一、二个单 元, 供累加存储用。高档计算器由微处理器与只读存储器实现各种复杂的运 算程序 , 有较多的随机存储单元以存放输入程序与数据。键盘就是计算器的 输入部件 , 一般采用接触式或传感式。为减小计算器的尺寸 , 一键常常有多 种功能。显示器就是计算器的输出部件 , 有发光二极管显示器或液晶显示器 等。除显示计算结果外 , 还常有溢出指示、错误指示等。计算器电源采用交 流转换器或电池 , 电

12、池可用交流转换器或太阳能转换器再充电。为节省电能 计算器都采用CMoS工艺制作的大规模集成电路(见互补金属-氧化物-半导体集成电路 ), 并在内部装有定时不操作自动断电电路。计算器可选用的外 围设备有微型打印机、盒式磁带机与磁卡机等。2、3 简易计算器系统介绍本计算器就是以 51系列 8051单片机为核心构成的简易计算器系统。 该系统 通过单片机控制 ,实现对 4*4 键盘扫描进行实时的按键检测 , 并把检测数据存储 下来。整个计算器系统的工作过程为 :首先存储单元初始化 , 显示初始值与键盘扫 描,判断按键位置 , 查表得出按键值 , 单片机则对数据进行储存与相应处理转换 , 之后送入LCD

13、显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫 描;功能模块二丄CD显示;功能模块三,计算。第三章 系统硬件设计及说明为了更好的实现系统得功能 , 硬件电路的设计应该遵循以下原则 :1、优化硬件电路采用软件设计与硬件设计相结合的方法 ; 尽管采用软件来实现硬件系统的功 能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU的时间; 但就是,用软件实现硬件的功能可以简化硬件结构 ,提高电路的可靠性。所以 ,在 设计本系统得时候 , 在满足可靠性与实时性的前提下 , 尽可能的通过软件来实现 硬件功能。2、可靠性及抗干扰设计根据可靠性设计理论 , 系统所用芯片数量越少 ,

14、 系统的平均无故障时间越长。 而且, 所用芯片数量越少 , 地址与数据总线在电路板上受干扰的可能性也就越小。 因此 , 系统的设计思想就是在满足功能的情况下力争使用较少数量的芯片。3、灵活的功能扩展功能扩展就是否灵活就是衡量一个系统优劣的重要指标。 一次设计往往不能 完全考虑到系统的各个方面 , 系统需要不断完善以及进行功能升级。进行功能扩 展时 , 应该在原有设计的基础上 , 通过修改软件程序与少量硬件完成。 对于本系统 而言 , 就就是要求在系统硬件不变的情况下 , 能够通过修改软件程序 , 完成功能的 升级与扩展。根据第提出的系统设计方案 , 结合以上三条原则 , 确定了系统硬件的设计。

15、 计 算器主要由以下一些功能模块构成:非编码键盘模块、LCDS晶显示屏模块等。该系统的硬件设计采用了模块化的设计方法。 AT89S52单片机与LCDS晶显 示屏显示电路就是整个电路的核心 , 它们实现系统的功能要求。简易计算器主要包括 : 键盘电路 , 显示电路。下图为总体硬件结构前面叙述了该系统的设计说明,系统采用了比较简单的设计方案,所以该系 统的硬件设计的总外围电路不会产生过多的干扰。在下面的阐述中 ,对系统的外 围电路分别予以介绍。键盘部分采用编码键盘,显示部分采用LCDS晶显示屏完全 能够很好的实现显示方面的要求。3、1系统组成及总体框图线路原理框图3、2 AT89S52单片机介绍图

16、 3、2、1-1 单片机 AT89S521、主要性能: ? 8031 CPU 与 MCS-51 兼容? 8K字节可编程FLASH存储器(寿命:1000写/擦循环)?全静态工作:0Hz-33MHz?三级加密程序存储器? 128*8位内部RAM? 32条可编程I/O线?三个16位定时器/计数器?八个中断源?全双工UART串行通道?低功耗的闲置与掉电模式?掉电后中断可唤醒?瞧门狗定时器?双数据指针?掉电标识符?片内振荡器与时钟电路(2)管脚说明:VCC供电电压。GND接地。2、AT89S52的功能特性描述AT89S52就是一种低功耗、高性能CMoS位微控制器,具有8K在系统可编程Flash存储器。使

17、用Atmel公司高密度非易失性存储器技术制 造,与工业80C51产品指令与引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU与 在系统 可编程 Flash, 使得 AT89S52 为众多嵌入式控制应用系统提 供高灵 活、超有效的解决方案。AT89S52具有以下标准功能:8k字节FIaSh,256 字节RAM, 32位I/O 口 线,瞧门狗定时器 ,2 个数据指针 ,三个 16 位 定时器/计数器,一个 6向量 2 级中断结构 , 全双工串行口 , 片内晶振及时钟电路。此外 , AT89S52 可降至 0Hz 静态逻 辑操作 , 支持 2

18、种软件可选择节电 模式。空闲模式下,CPU停止工作,允许RAM定时器/计数器、串口、中断 继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切 工作停止 , 直到下一个中断或硬件复位为止。 8 位微控制器 8K 字节在系统 可编程Flash。同时该芯片还具有 PDIP、TQFP与 PLCC等三种封装形式,以 适应不同产品的需求。4、AT89S5的编程方法编程前,须按编程模式表设置好地址、数据及控制信号 ;顺序如下: 在地址线上加上要编程单元的地址信号。 在数据线上加上要写入的数据字节。 激活相应的控制信号。 将EA/Vpp端加上+12VS程电压。 每对 Flash 存储阵列写

19、入一个字节或每写入一个程序机密位 , 加上一个 ALE/PRO编程脉冲。每个字节写入周期就是自身定时的,大多数约为50us。改变 编程单元的地址与写入的数据 , 重复步骤 , 直到全部文件编程结束。单片机的现状及发展方向 :单片机就是为了工业控制需要满足而诞生的 , 就是自动控制系统的核心部件 因而也主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小 , 功能 多、价格低、使用方便、 系统设计灵活等优点 , 应用领域不断扩大 , 除了工业控制 , 智能化仪表,通讯,家用电器外,在智能化高档电子玩具产品中也大量采用单片机 芯片作为核心控制部件。由于单片机主要面向工业控制 ,工作环境比较恶

20、劣 ,入高温,强电磁干扰 ,甚 至含有腐蚀性气体 ,在太空中工作的单片机控制系统 ,还必须具有抗辐射能力 ,这 决定了单片机CPU于通用微机CPU具有不同的技术特征与发展方向:(1) 可靠性高 ;(2) 控制功能往往很强 , 数值计算交叉 ;(3) 指令系统比通用微处理器慢的多;(4) X系列芯片取代;(5) 抗干扰性强,工作温度范围宽。3、3其它器件介绍及说明3、3、1 LCD1602液晶显示字符型液晶显示模块就是一种专用于显示字母、数字、符号等点阵式LCD目前常用16*1,16*2,20*2与40*2行等的模块。下面以长沙太阳人电子有限公 司的1602字符型液晶显示器为例,介绍其用法。一般

21、1602字符型液晶显示器 实物如下图所示:1602字符型液晶显示器实物图1602LCD的基本参数及引脚功能1602LCD分为带背光与不带背光两种,基控制器大部分为HD44780带背光的 比不带背光的厚,就是否带背光在应用中并无差别,两者尺寸差别如下图所示:«0 0r64 5 h 5 亠 L 5 u1602LCD尺寸图LCD1602接口电路1602LCD主要技术参数:显示容量:16 × 2个字符 芯片工作电压:4。 55、5V工作电流:2、0mA(5 0V)模块最佳工作电压:5、0V字符尺寸:2、95 × 4、35(W× H)mm引脚功能说明1602LCD

22、采用标准的14脚(无背光)或16脚(带背光)接口 ,各引脚接口说明如下 表1所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据f>D二使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表10-13:引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VDD接 5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最 高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位

23、器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器, 因此,与AT89S52单片机的P2、0/A8相连接。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS与 R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W 为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。因此, 与AT89S52单片机的P2、1/A9相连接第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令,所以,与AT89S52单片机的P2、2/A10相连接第714脚:D0D7为8位双向数据线,在本设计中,与AT89S52单

24、片机的P0 口 与上拉电阻相连。第15脚:背光源正极。第16脚:背光源负极。1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置JP2写指令OCH显示开及光标设置3、3、2 4*4 矩阵扫描按键键盘可分为两类:编码键盘与非编码键盘。编码键盘就是较多按键(20个以上) 与专用驱动芯片的组合 , 当按下某个按键时 ,它能够处理按键抖动、连击等问题 , 直

25、接输出按键的编码 , 无需系统软件干预。通用计算机使用的标准键盘就就是编 码键盘。在智能仪器中,使用并行接口芯片8279或串行接口芯片HD727均可以组 成编码键盘 , 同时还可以兼顾数码管的显示驱动 , 其相关的接口电路与接口软件 均可在芯片资料中得到。 当系统功能比较复杂 , 按键数量很多时 , 采用编码键盘可 以简化软件设计。非编码键盘成本低廉。从成本角度出发 , 本设计选用的就是非编码键盘。键盘就是单片机系统中最常用的人机对话输入设备 ,用户通过键盘向单片机 输入数据或指令。 键盘控制程序需完成的任务有 : 监测就是否有键按下 , 有键按下 时, 在无硬件去抖的动电路时 , 应用软件延

26、时方法消除按键抖动影响 ; 当有多个键 同时按下时 , 只处理一个按键 , 不管一次按键持续多长时间 , 仅执行一次按键功能 程序。矩阵按键扫描程序就是一种节省 IO 口的方法, 按键数目越多节省 IO 口就越 可观, 思路: 先判断某一列 (行)就是否有按键按下 , 再判断该行 (列)就是那一只键 按下。但就是 , 在程序的写法上 , 采用了最简单的方法 , 使得程序效率最高。本程 序中 , 如果检测到某键按下了 , 就不再检测其它的按键 , 这完全能满足绝大多数需 要,又能节省大量的CPU寸间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU效率,也 不用中断来扫描键盘 ,

27、 节省了硬件资源。另外 , 本键盘扫描程序 , 每次扫描占用 CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。键盘就是单片机系统中最常用的人机对话输入设备 ,用户通过键盘向单片机 输入数据或指令。 键盘控制程序需完成的任务有 : 监测就是否有键按下 , 有键按下 时,在无硬件去抖的动电路时 ,应用软件延时方法消除按键抖动影响 ;当有多个键 同时按下时 , 只处理一个按键 , 不管一次按键持续多长时间 , 仅执行一次按键功能 程序。矩阵按键扫描程序就是一种节省 IO 口的方法, 按键数目越多节省 IO 口就越 可观, 思路: 先判断某一列 (行)就是否有按键按下 , 再判断

28、该行 (列)就是那一只键 按下。但就是 , 在程序的写法上 , 采用了最简单的方法 ,使得程序效率最高。本程 序中 , 如果检测到某键按下了 , 就不再检测其它的按键 , 这完全能满足绝大多数需 要,又能节省大量的CPU时间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU效率,也 不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用 CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。l*jD r O-I6b-j5T5-s7°-I_ 科 °.0©rUPIO _務L曲_Q 二 _J U 1LJRif图3、3、2按

29、键接线图键值与功能对应表键值0123456789+-×/=ON/C功能0123456789+-×÷=清零第四章PRoTEU模拟仿真84S29hfji*u 'cHiq MX 二Ge*0"*0fa3a2 Fe s5r 二_- 1-tf*w 目妄 rtH* U 冃“ ;.-Ii*-5s s i i? W-JJ-【二二 I ,hH; iE ?W3*CSLSLX-X s¾ *xXrs- Wn f 3TXt»>?匚二上Ir SM <<亀 HI ¼ 4MQIM&G *yy÷:旬 Qe "

30、;pc ts ->s 去E -F -®S fw P<H £1 C&JCIW' WBl>! MMtI 丄 KnV-TI KB>> Jm J2 InEJnI H4Lf BBM IMPl WF*'I *母 £ E 0性:+ 卡 1- 。它 H <n* XdhBI%t£tLi JI4F»> MAEl ZfcT *OCiLl 海 S IEMI VA-Ji #2 甘适 JL :÷ + A-? e 富丄醫 X 产 XA- t H CJl屯 1 T “ T £>. Il

31、HKMPri4 .JMMftfH. LIIjiJLKAJIJ4JMl*1tij :i. 第五章系统硬件设计及说明为了更好的实现系统得功能,硬件电路的设计应该遵循以下原则:1、优化硬件电路采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功 能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间; 但就是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在 设计本系统得时候,在满足可靠性与实时性的前提下,尽可能的通过软件来实现 硬件功能。2、可靠性及抗干扰设计根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。 而且, 所用芯片数

32、量越少 , 地址与数据总线在电路板上受干扰的可能性也就越小。 因此, 系统的设计思想就是在满足功能的情况下力争使用较少数量的芯片。3、灵活的功能扩展功能扩展就是否灵活就是衡量一个系统优劣的重要指标。 一次设计往往不能 完全考虑到系统的各个方面 , 系统需要不断完善以及进行功能升级。进行功能扩 展时, 应该在原有设计的基础上 , 通过修改软件程序与少量硬件完成。 对于本系统 而言, 就就是要求在系统硬件不变的情况下 ,能够通过修改软件程序 , 完成功能的 升级与扩展。根据第提出的系统设计方案 ,结合以上三条原则 ,确定了系统硬件的设计。 计 算器主要由以下一些功能模块构成:非编码键盘模块、LCC

33、液晶显示屏模块等。第六章 软件设计6 1汇编语言与C语言的特点及选择本设计就是硬件电路与软件编程相结合的设计方案 , 选择合适的编程语言就 是一个重要的环节。在单片机的应用系统程序设计时 , 常用的就是汇编语言与 C 语言。机硬件,程序可读性与可移植性比较差。而 C语言虽然执行效率没有汇编 语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化 ,数据结构类 型丰富,具有结构化的控制语句 ,程序设计自由度大 ,有很好的可重用性 ,可移植 性等特点。由于现在单片机的发展已经达到了很高的水平 , 内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑就是一个理想的选择

34、。 所以在本设计中采用C语言编写软件程序。6、 2 源程序代码#include<reg51 、 h> / 头文件#define uint unsigned int /#define uchar unsigned charsbit lcden=P20; / 定义引脚sbit rs=P23;sbit rw=P24;sbit busy=P07;char i,j,temp,num,num_1;long a,b,c; /a, 第一个数 b, 第二个数 c, 得数float a_c,b_c;uchar flag,fuhao;/flag 表示就是否有符号键按下 ,fuhao 表征按下的就是哪个u

35、char code table=7,8,9,0,4,5,6,0,1,2,3,0, 0,0,0,0;uchar code table1= 7,8,9,0x2f-0x30, 4,5,6,0x2a-0x30, 1,2,3,0x2d-0x30, 0x01-0x30,0,0x3d-0x30,0x2b-0x30;void delay(uchar z) /延迟函数uchar y; for(z;z>0;z-)for(y=0;y<110;y+);void check() /do判断忙或空闲P0=0xFF;rs=0; /指令rw=1; /读lcden=0; /禁止读写delay(1); /等待, 液晶

36、显示器处理数据lcden=1; /允许读写while(busy=1); /判断就是否为空闲 ,1 为忙 ,0 为空闲写指令函数void write_com(uchar com) /Po=COm; /com 指令付给 Po 口rs=0;rw=o;lcden=o;check(); lcden=1;void write_date(uchar date) /写数据函数Po=date;rs=1;rw=0; lcden=0; check();lcden=1; void init() / 初始化num=-1;lcden=1; / 使能信号为高电平write_com(0x38); /8 write_com(0

37、x0c); / write_com(0x06); / write_com(0x80); / write_com(0x01); /位,2 行显示开, 光标关 , 不闪烁 */ 增量方式不移位 显竟獗暌贫 柚? 检测忙信号显示开, 光标关 , 不闪烁num_1=0;i=0;j=0;a=0; /第一个参与运算的数b=0; /第二个参与运算的数c=0;flag=0; /flag 表示就是否有符号键按下 , fuhao=0; / fuhao 表征按下的就是哪个符号 void keyscan() / 键盘扫描程序P3=0xfe;if(P3!=0xfe)delay(20); /延迟 20msif(P3!=0

38、xfe)temp=P3&0xf0;switch(temp)case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break;case 0x70:num=3;break;while(P3!=0xfe);if(num=0|num=1|num=2)/ 如果按下的就是 '7','8' 或 '9 if(j!=0) write_com(0x01); j=0;if(flag=0)/ 没有按过符号键a=a*10+tablenum;else/ 如果按过符号键b=b*10+tablenum;else/

39、 如果按下的就是 '/'flag=1;fuhao=4;/4 表示除号已按i=table1num; write_date(0x30+i);P3=0xfd;if(P3!=0xfd)delay(5);if(P3!=0xfd)temp=P3&0xf0;switch(temp)case 0xe0:num=4; break;case 0xd0:num=5;break;case 0xb0:num=6; break;case 0x70:num=7; break; while(P3!=0xfd);或'6'if(num=4|num=5|num=6&&num!

40、=7)/ 如果按下的就是 '4',' if(j!=0) write_com(0x01); j=0;if(flag=0)/ 没有按过符号键 a=a*10+tablenum;else/ 如果按过符号键 b=b*10+tablenum;else/ 如果按下的就是 '/'flag=1;fuhao=3;/3 表示乘号已按 i=table1num; write_date(0x30+i);P3=0xfb;if(P3!=0xfb)delay(5);if(P3!=0xfb) temp=P3&0xf0; switch(temp) case 0xe0:num=8; b

41、reak;case 0xd0:num=9; break;case 0xb0:num=10; break;case 0x70:num=11; break; while(P3!=0xfb);或'3'if(num=8|num=9|num=10)/ 如果按下的就是 '1',' if(j!=0) write_com(0x01); j=0;if(flag=0)/ 没有按过符号键 a=a*10+tablenum;else/ 如果按过符号键 b=b*10+tablenum;else if(num=11)/ 如果按下的就是 '-'flag=1;fuhao=2;/2 表示减号已按 i=table1num; write_date(0x30+i);P3=0xf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论