首页 毕业设计论文_基于单片机的科学计算器设计

毕业设计论文_基于单片机的科学计算器设计

举报
开通vip

毕业设计论文_基于单片机的科学计算器设计毕业设计论文_基于单片机的科学计算器设计 攀枝花学院本科毕业设计(论文) 摘 要 基于单片机的科学计算器设计 摘要 在现代科技迅猛发展的当今,计算器依然是人们日常生活中不可或缺的电子产品之一。计算器始终在不断发展及完善之中,功能必将更加强大。基于这样的理念,本设计采用AT89C51单片机作为主控芯片,使用C语言为系统进行编程,采用4*4矩阵键盘作为输入模块,输出模块采用LCD1602液晶显示,从而实现基于单片机的基本功能。 本设计重点说明以下几个方面内容: 1. 基于单片机的计算器所具备哪些基本功能,对...

毕业设计论文_基于单片机的科学计算器设计
毕业设计论文_基于单片机的科学计算器设计 攀枝花学院本科毕业设计(论文) 摘 要 基于单片机的科学计算器设计 摘要 在现代科技迅猛发展的当今,计算器依然是人们日常生活中不可或缺的电子产品之一。计算器始终在不断发展及完善之中,功能必将更加强大。基于这样的理念,本设计采用AT89C51单片机作为主控芯片,使用C语言为系统进行编程,采用4*4矩阵键盘作为输入模块,输出模块采用LCD1602液晶显示,从而实现基于单片机的基本功能。 本设计重点 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 以下几个方面内容: 1. 基于单片机的计算器所具备哪些基本功能,对矩阵键盘输入原理及液晶 显示原理进行简单的阐述。 2. 介绍系统的整体设计理念,展示系统设计的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 框图,并对功能模块的 划分,及所选用的元器件性能参数进行详细说明。 3. 对系统的每个功能模块的软硬件设计,进行详细说明。 关键词 单片机,AT89C52,LCD1602液晶,矩阵键盘,C语言 I 攀枝花学院本科毕业设计(论文) ABSTRACT ABSTRACT In the rapid development of modern science and technology today, the calculator is still one of the electronic products is an integral part of people's daily life. The calculator always among the continuous development and improvement, the function will certainly be more powerful. Based on this concept, the design uses AT89C51 microcontroller as the master chip, using the C programming language for the system, with 4 * 4 matrix keyboard as an input module, output module LCD1602 LCD display, in order to achieve the basic functions of the MCU. This design highlights the following aspects: 1.microcontroller-based calculator with basic functions, the principle of a simple exposition of principle and LCD matrix keyboard input. 2.describes the system's overall design concept, showing the flow diagram of the system design, the and function module framing, and optional Component performance parameters described in detail. 3.of each functional module of the system hardware and software design in detail. Key words microcontroller AT89C52,LCD1602 LCD,matrix keyboard,C language II 攀枝花学院本科毕业设计(论文) 目 录 目 录 摘要..................................................................................................................................I ABSTRACT.................................................................................................................... II 1 绪论 ........................................................................................................................... 1 .......................................................... 1 1.1课题的研究背景及意义 ................................1.2本课题研究的主要内容 .......................................................................................... 2 2 设计任务及 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ........................................................................................................... 3 2.1设计任务 ............................................................................................................... 3 2.2设计方案 ............................................................................................................... 3 3 系统硬件设计 ............................................................................................................. 4 .............................................................. 4 3.1单片机最小硬件系统 ................................ 3.1.1主控芯片AT89C52单片机简介 .................................................................. 4 3.1.2复位电路 .................................................................................................. 9 3.1.3时钟电路 ................................................................................................ 10 3.2键盘接口电路 ...................................................................................................... 10 3.3液晶显示电路 .......................................................................................................11 4 系统软件设计 ............................................................................................................. 15 ........................................................ 15 4.1键盘扫描部分程序设计 ................................4.2运算部分程序设计 ............................................................................................... 15 4.3显示部分程序设计 ............................................................................................... 16 4.4主函数程序设计 ................................................................................................... 17 5仿真和调试 ................................................................................................................. 19 5.1 KEIL系统概述 ..................................................................................................... 19 5.2 KEIL使用步骤 ...................................................................................................... 19 5.3PROTEUS 7.1 介绍 ................................................................................................... 20 5.4 PROTEUS 对于本设计的仿真步骤 ............................................................................ 20 5.5仿真结果 ............................................................................................................. 21 6 结论 ......................................................................................................................... 22 参考文献........................................................................................................................ 23 附录A: 源程序 ........................................................................................................... 24 附录B:系统总图 .......................................................................................................... 34 致 谢 ............................................................................................................................. 35 III 攀枝花学院本科毕业设计(论文) 1 绪 论 1 绪论 1.1课题的研究背景及意义 计算器一般由运算器,存储器,控制器,键盘,显示器,电源和一些外围设备及电子配件组成。低档的计算器的运算器,控制器由数字逻辑电路实现简单的串行运算。其随机存储器只有一到二个单元,供累加存储用。高档计算器由只读存储器和微处理器一同实现各种复杂的运算程序。且有较多的随机存储单元用来存放输入程序和数据。键盘是计算器的输入部件,采用接触式或传感式。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等显示。计算器电源采用电池或者交流转换器池。为节省电能,计算器都采用CMOS工艺制作的大规模集成电路(见互补金属-氧化物-半导体集成电路),并在内部装有定时不操作自动断电电路。计算器可选用的外围设备有盒式磁带机,微型打印机,磁卡机等等。 计算器的基本类型: 1. 算术型计算器:可进行加、减、乘、除等简单的四则运算,又称简 单计算器。 2. 科学型计算器:可进行乘方、开方、指数、对数、三角函数、统计 等方面的运算,又称函数计算器。 3. 程序计算器:可以编程序,把较复杂的运算步骤贮存起来,进行多 次重复的运算。 当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。 计算器这一程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于商业等日常生活中,极大的方便了人们对于数字的整合运算。起源和发展最早的计算工具诞生在中国。筹策是中国古代最早采用的一种计算工具,又被称之为做算筹。这种算筹的制作材料多是竹子,木头,或兽骨(一束约二百七十枚,使用时可以放在布袋里面随身携带。直到科技发达的今天,中国群众任然有很多在使用珠算盘,珠算盘是中国古代计算工具领域中的另一项发明,到明代时期。珠算盘的结构已经几乎与现代的珠算盘相同。 在17世纪初期,计算工具在西方国家的有了非常大的发展,英国数学 1 攀枝花学院本科毕业设计(论文) 1 绪论 家-纳皮尔发明了纳皮尔算筹,英国牧师-奥却德发明了圆柱型对数计算尺,这种计算尺能够实现多种计算功能,不仅能够实现基本的四则运算,也可以进行乘方和开方运算。更为强大的是,这种计算尺还可以计算三角函数,指数函数和对数函数。这些计算工具积极推动了计算器的发展,为现代计算器的发展奠定了非常良好的基础,慢慢演变,成为现代社会中广泛应用的计算工具。 在1642年, 19岁的法国科学家-帕斯卡引用了算盘的原理,发明了世界上第一部机械式计算器,他的计算器装置中有一些齿轮互相联锁,当其中此轮转过十位之后,就会使与其相连接的另一个齿轮转过一位,使用者可以像使用电话号码拨盘那样,直接把数字拨进去,此后计算结果就可以出现在另一个窗口中,但是只可以做加减计算,不能做乘除运算。 在1694年,德国的莱布尼兹将机械式计算器进行了改进,使其可以进行乘除运算。自此此后,一直等到20世纪50年代末,电子计算器才开始出现。 1.2本课题研究的主要内容 本设计主要研究的是,基于单片机的简易计算器,采用AT89C52单片机作为主控器件,矩阵键盘输入,液晶显示器讲计算过程及结果显示输出,通过C语言编程,实现建议简易计算器的功能。 2 攀枝花学院本科毕业设计(论文) 2 设计任务及方案 2 设计任务及方案 2.1设计任务 1.对计算器硬件系统进行设计,利用AT89C52作为主控器件,组成一个能进行简单四则运算的计算器,能进行数据归零,按键提示。 2.运用keil进行计算器软件系统的设计。 3.在protues仿真平台上,对软件进行调试及仿真。 2.2设计方案 按照系统设计的功能的要求,确定设计系统由主控模块、显示模块、键盘扫描接口电路、按键提示电路4个模块组成。 系统构成框图如图2.1所示: 键盘输入单片机最LCD液晶显 电路小系统示电路 按键提示 电路 图2.1—系统构成框图 3 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 3 系统硬件设计 3.1单片机最小硬件系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和时钟电路。 3.1.1主控芯片AT89C52单片机简介 AT89C52引脚图如图3.1所示: 图3.1—AT89C52引脚图 AT89C52是ATMEL公司生产的51系列单片机,是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可以反复擦写的Flash 只读程序存储器和256 bytes的随机存取数据存储器(RAM)。 4 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 AT89C52的主要功能特性: 兼容MCS51指令系统 8k可反复擦写 Flash ROM 32个双向 I/O口 及 256x8bit 内部RAM 3个16位 可编程定时/计数器 中断 时钟频率0-24MHz 2个 串行 中断 ,可编程 UART串行通道 2个 外部 中断源 , 共6个 中断源 2个 读写 中断口线 , 3级 加密位 低功耗 空闲和掉电 模式 ,软件设置睡眠及唤醒功能 AT89C52的主要管脚有: XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。外接12MHz 晶振。 :为供电端口,分别接+5V电源的正负端。 VCC和VSS RST/Vpd:为复位输入端口,外接电阻电容组成的复位电路。 P0 口:8 位漏极开路型双向I/O 口, 地址/数据总线复用口。作为输出口用时,每位可以用吸收电流的方式来驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可以作为高阻抗输入端使用。在访问外部数据存储器或者程序存储器的时候,分时转换地址低8 位,和数据总线复用。在访问期间激活内部的上拉电阻。 P1 口:带有内部上拉电阻的8 位 双向I/O 口, P1的输出缓冲级 可以驱动(吸收电流或输出电流)的4 个TTL 逻辑门电路。对端口写“1”时,通过内部的上拉电阻可以把端口拉到高电平,可作输入口使用。当作为作输入口使用时,因为内部存在有上拉电阻,因此某个引脚被外部信号拉低,会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。参见 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 1: 表1: 引脚 功能特性 P1.0 T2 时钟输出 P2.0 T2EX (定时器/计数器2) P2 口:为带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可以驱动(吸收电流或输出电流)4 个TTL逻辑门电路。当对端口P2 写“1”时,通过内部的上拉电阻可以把端口拉到高电平去,此时可作输入口使用, 5 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 当作输入口使用时,因为其内部存在有上拉电阻,当某个引脚被外部信号拉低的时候会输出一个电流(IIL)。 P3 口:为带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收电流或输出电流)4 个TTL逻辑门电路。当对P3 口写入“1”时,它们会被内部上拉电阻拉高并且可以作为输入端口。此时,当被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能P3 口还可以接收一些用于Flash 闪速存储器编程及程序校验的控制信号。 ALE/PROG:当访问数据存储器或者外部程序存储器的时候,ALE(地址锁存)允许输出脉冲用在锁存地址的低8 位字节。一般情况之下,ALE 仍然以时钟振荡频率的六分之一来 输出固定的脉冲信号。因此它可以用来为外部输出时钟或者用来作为定时目的。值得大家注意的是:每当来访问外部的数据存储器时,将会跳过一个ALE 脉冲。在对Flash 存储器编程的期间,该引脚还可以用于输入编程脉冲(PROG)。如果有必要,还可通过对特殊功能寄存器(SFR)区域中的8EH 单元的D0 位置位,可以禁止ALE 操作。在该位置位后,只有一条MOVX 和MOVC指令才可以将ALE 激活。此外,该引脚还会被微微拉高一些,当单片机执行外部程序时,应该设置ALE 禁止位无效。 PSEN:程序存储允许外部程序读取内存频闪(PSEN)的方式,当AT89C52取从外部程序存储器读取指令时(或数据),每个机器周期两次有效PSEN。作为外部数据存储器的访问,并在同一时间传递信号,跳过PSEN两次。 EA/VPP:允许外部访问,意图使CPU只访问外部程序的存储器(地址范围为0000H-FFFFH),EA端必须保持低电平(接地)。注意:如果当加密位LB1被编程时,EA端状态会在复位时被内部锁存。如果EA管脚接为高电平(连接Vcc端)时,CPU执行内部程序存储器的指令。 当Flash存储器编程时,此引脚和+12 V的编程允许电源VPP,当然,这必须是该设备使用12V编程电压Vpp。 特殊功能寄存器:在AT89C52的芯片内的存储器中,一共有128个单元的的80H-FFH的特殊功能寄存器(SFE)。不是所有的地址都能被定义,总共有128个字节从80H-FFH只有一部分会被定义,以及有相当一部分还没有被定义。针对该单位对没有提供的定义的部分读写将是无效的,读出的数值将是不确定的,而写的数据也将会丢失。不应将数据“1”被写入没有被定义的单位,因为可能会在未来中的产品,在这些单元中的赋予了新的功能,这而在样的情况下,复位后,这些单位在数值始终为“0” 6 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 数据存储器:AT89C52内部RAM有256字节。 80H-FFH,高128字节特殊功能寄存器(SFR)地址重叠,也就是说,高128字节的RAM,与特殊功能寄存器有相同的地址,它们是分开的,在物理上来说。当一个指令访问的7FH内部地址单元以上的部分,指令寻址模式是不同的,该决定寻址访问高位128字节的RAM或访问特殊功能寄存器。如果指令是直接寻址访问,那么访问的是特殊功能寄存器。 定时器2:定时器2是一个16位的定时器/计数器。它无论是作为一个计时器,还是作为外部事件计数器,都是可行的。它的工作原理所选择的特殊功能寄存器T2CONC/T2。定时器2的工作模式有三种:捕捉,自动重装模式(向上或向下计数)和波特率发生器,工作T2CON控制位选择。定时器2由两个8位寄存器TH2和TL2定时器工作,在定时器的工作方式中,每个机器周期TL2寄存器的值加1,一个机器周期由12个振荡器时钟构成,因此,计数率是振荡频率的1/12。在计数器工作的时候,当T2引脚的外部输入信号时,1-0下降沿产生,寄存器的值加1,在这样的工作之下,在每个机器周期5SP2期间,外部输入进行采样。通过在第一个机器周期所采样到 ,下一个机器周期所采样到的值是0,随后的寄存器中,就在下一的值为1 个周期的S3P1期间加1。确定1-0过渡占用两个机器周期(24个振荡周期),因此,最大计数率的振荡频率的1/24。是必需的,以确保正确的采样的输入电平的变化时刻之前保持至少一个完整的周期,以确保输入信号被至少一次采样。 捕获方式:在捕获模式下,T2CON控制位EXEN2来选择两个不同的工作方式。当EXEN2=0,定时器2就是是一个16位的定时器或者计数器。当计数溢出的时候,溢出标志TF2在 T2CON中设置,此时中断在同一时间激活。如果EXEN2=1,定时器2做同样的操作,T2EX引脚的外部输入信号1-0负跳变发生时,TH2和TL2中的值被捕获到RCAP2H和RCAP2L中。此外,T2EX引脚信号跳变使T2CON的EXF2置位,TF2的类似,EXF2激活中断。当定时器处于自动重装模式,可以通过编程来向上或向下计数,这个功能可以DCEN位特殊功能寄存器T2CON(允许自动重装(向上或向下计数器)倒计时)选择。复位的时候,DCEN位置“0”,默认设置定时器计数。当DCEN设置,定时器2可以向上计数,取决于T2EX引脚的值,,当DCEN=0时,定时器2会自动设置为计数摸索,且向上,在此模式控制位EXEN2 T2CON中有两个选项,如果EXEN2 =0,定时器2计数到0FFFFH溢出集,TF2激活中断,而16位计数寄存器RCAP2H和RCAP2L的重装RCAP2H和RCAP2L的值由软件预置。如果EXEN2=1,定时器2的16-位重载溢出或外部输入端子的T2EX触 7 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 发从1-0的的的下降沿。这个脉冲信号使EXF2设置的中断被启用时,如果一个中断被允许,同样也会产生中断。定时器2的中断入口地址是:002BH - 0032H。当DCEN= 1时的。并允许定时器2向上计数或者向下计数,通过这种方式,用T2EX引脚来控制计数器的计数方向。该T2EX引脚到一个逻 ”时,使得该定时器计数高达0FFFFH时,产生溢出,置位TF2,同时辑“1 把16-位的的计数的寄存器RCAP2H与RCAP2L重新-加载成TH2和TL2中。当T2EX引脚到逻辑“0”的时候,就将定时器2的向下计数,当TH2和TL2的值是等于到包含在RCAP2H和RCAP2L中的值的时候,计数溢出,把 TF2置位,与此同时,在定时寄存器中,重新装入0FFFFH。 中断:AT89C52共有6个中断源:两个外部中断(INT0和INT1),三个定时中断(定时器0,1,2)和串行端口中断。通过设置特殊寄存器IE设置或清除控制每个中断源的允许或禁止。 IE的总禁止位是EA,它用来控制所有中断的允许或禁止。程序员不可以把1写入保留位,它们是用来在未来AT89系列产品中被用作为扩展的。在定时器2中,受T2CON,TF2和EXF2的逻辑的影响来产生中断,这些标志不能被硬件清除,服务程序被确定为TF2或EXF2产生中断。并且是由软件来清除所产生的中断标志。TF0和TF1定时器0和定时器1标志S5P2机器周期定时器溢出状态位设置,并在下一个机器周期的中断标志查询之前查询到该标志。然而,定时器2标志TF2 S2P2机器周期定时器溢出状态位被设置,并在同一个机器周期查询标志。 时钟振荡器:AT89C52有一个高增益的反相放大器,用于构成内部振荡器。引脚XTAL2和引脚XTAL1是放大器的输出端和输入端。此放大器的反馈元件芯片石英晶体或陶瓷谐振器一起构成一个自激振荡器的振荡电路,一个外部晶体(或陶瓷谐振器)和电容器C1,C2构成并联连接到放大器的反馈回路中的振荡电路。外部电容器C1,C2的选择,虽然不是很严格的要求,但电容的大小由电平的振荡频率受到轻微影响,振荡器的工作的稳定性,启动程序的难度和温度稳定性,并且如果我们使用石英晶体,那么电容选取30pF?10pF的范围比较合适,如果是选择陶瓷谐振器来使用,那么建议选择40PF?10F的范围比较合适。用户也可以使用外部时钟。在这种情况下,外部时钟脉冲接到XTAL1端,也可称之为,内部时钟产生电路的输入端,此时,把XTAL2引脚悬空。外部时钟信号通过2分频路作为内部时钟信号的触发器,因此对外部时钟信号的占空比无特殊要求应符合技术条件的要求低的最低高电平持续时间和最大持续时间。 空闲节电模式:在空闲模式操作时,此时CPU处于睡眠状态,所有片上外设仍然活跃在软件这种方式。在这种情况下,芯片上的RAM和特殊功能 8 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 寄存器的内容冻结。空闲模式可以终止任何启用的中断请求或硬件复位。由硬件复位终止空闲,只需要短短两个机器周期有效复位信号,在这种状态下,片上硬件抑制访问内部RAM,但访问的端口引脚,当复位到终止空闲的端口,以避免可能产生无意的写指令的指令后,进入空闲模式不应该是单端口或外部存储器写指令。 掉电模式:在掉电模式下,振荡器停止,而进入掉电模式的指令是最后一条指令被执行,片上RAM以及特殊功能寄存器的内容将会在终止掉电模式前被冻结住。只有采取硬件复位的方式,才能退出掉电模式是。一个硬件复位之后,所有的特殊功能寄存器将被重新定义,但RAM中的内容不会被改变,在VCC的正常工作电平被恢复之前,应为无效复位,并必须保持目标时间,才能使振荡器重新启动并稳定工作。 3.1.2复位电路 复位电路如图3.2 图3.2—复位电路 采用按键方式,电阻分别选取100Ω和10K,电容选取0.1μF。 上电复位是复位电路的第一功能。通用的微机电路正常的的工作电源电压为5V?5,,即4.75V至5.2V。复位电路是用来让微型计算机系统保持稳定可靠的工作状态的不能缺少的部分。总所周知,微型计算机电路是有时序的数字电路,它需要一个稳定的时钟信号,所以当电源开启时,只有当VCC超过4.75V的时候或者VCC低于5.25V的时候,并且要晶体振荡器工作状态持续稳定,复位信号才可以被撤销,计算机电路才能开始正常工作。 上电复位原理:当VCC上电时,电容C充电,而在10K的电阻上出现电压,使得单片机可以复位;几个毫秒之后,电容C被充满,10K的电阻上的电流被降为0,电压此时也为0,从而使得单片机开始进入工作状态。 手动复位原理:工作期间,按下按键S,电容C放电。按键S松手,电容C又充电,此时在10K电阻上出现电压,从而使得单片机复位。几个毫秒后,单片机开始进入工作状态。 9 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 3.1.3时钟电路 时钟电路如图3.3: 图3.3—时钟电路 时钟电路是计算机的心脏,它控制着计算机的工作节奏就是通过复杂的时序电路完成不同的指令功能的。单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。 内部时钟方式:内部有一个用于构成振荡器的高增益反相放大器,引脚分别为此放大器的输人端和输出端, 在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振的取值范围一般为0~24MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。一些新型的单片机还可以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用20~30pF的瓷片电容。 外部时钟方式:是在单片机XTAL1引脚上外接一个稳定的时钟信号源,它一般适用于多片单片机同时工作的情况,使用同一时钟信号可以保证单片机的工作同步。 3.2键盘接口电路 键盘接口电路如图3.4所示: 10 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 图3.4—键盘接口电路 4*4矩阵键盘工作原理:矩阵键盘又称为行列式键盘,它由4条I/O线为行线,4条I/O线做列线组成,在行线和列线的每个交叉点上设置一个按键。这样键盘中的按键数为4*4个,所以称之为4*4矩阵键盘,这种行列式的键盘结构大大提高了I/O口的利用率。 在本设计中: 行线置高电平,接P1口的低四位P1.3- P1.0 列线置低电平,接P1口的高四位P1.7- P1.4 高四位为输入,低四位为输出 1.检测当前是否有键按下,采用逐行扫描法,检测方法为先将P1.7-P1.4依次置 0,检测P1.3-P1.0状态,若全为1则无键闭合,否则有键闭合。 2.取出键抖动,当检测到有键按下后,延时一段时间再做下一步判断。 3.若有键按下,应判断究竟是哪一键按下。方法是对键盘的行线进行扫描 将P1.7-P1.4依次置0时,P1.3-P1.0状态表3.2: P1.3 1 1 1 0 P1.2 1 1 0 1 P1.1 1 0 1 1 P1.0 0 1 1 1 闭合状态 第一行闭合 第二行闭合 第三行闭合 第四行闭合 表3.2—P10-P13状态表 3.3液晶显示电路 本设计液晶显示部分采用LCD1206电路如图3.5: 11 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 图3.5—LCD1206电路 液晶显示原理: 线段的显示:图象形式的液晶显示装置有M×N个基本的显示单元,假设LCD显示64行,每行有128列,一字节的8位对应每8位,即组成方式是由每行16字节,共16×8=128个点而组成的,64×16显示单元与RAM的显示区对应于1024个字节,以对应于每一个显示位置上的每个字节的显示的亮暗程度。例如,屏幕亮和暗的第一行的内容由16个字节的RAM区内容来决定,而当000H - 00FH(000H)= FFH时显示在屏幕左上角的短亮线,长度是8个小点,而当(3FFH)= FFH,就在屏幕的右下角会显示一个简短的亮线;(000H)= FFH(001H)=00H(002H)=00H,...... (00EH)=00H(00FH)= 00H,第8段亮线和8个暗线,在屏幕顶部显示一条虚线。这是液晶显示器(LCD)显示的基本原理。 字符的显示:一个字符在液晶显示中显示是比较复杂的,因为一个字符是由6×8或者8×8的点阵构成的,不仅要找到和显示在屏幕上的显示RAM的8个字节的位置对应的字节,而且还要使每个字节不同的位是“1”,另一个是“0”,把“1”点亮,而“0”是不亮。用这样的方法来组成一个字符。但是显示字符对于内带有字符发生器的控制器,是比较简单的,可以允许控制器工作在文本模式中,根据液晶屏上开始显示的行和列的号,和就可以找出RAM所对应的地址,设置一个游标,发送这个字符所对应的代码就可以了。 汉字的显示:对于汉字的显示一般是采用图形的方式,将要显示的中国汉字的点阵码(字模提取软件)从微机中提取,每个汉字占32B,分为左,右两半,每半各16B,左边是基数1,3,5„„右边是偶数2,4,6„..正确的显示中文 12 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 字符,根据在LCD上现实的行列号,及行列数可以找出在RAM上所对应的的地址,在光标的位置上加1,发送的第二个字节,先换行再按列对齐,给第三个字节......直到32B完全被显示,就可以在液晶显示屏上得到一个完整的中文字符。 LCD1206引脚如图3.6所示: 图3.6—LCD1206引脚图 LCD1602采用标准的16脚接口,但在proteus仿真中无字库,故为14脚 第1脚:VSS为电源接地 第2脚:VCC接5V电源的正极 第3脚:V0为液晶显示器的对比度调整端,当接正电源的时时候对比度最弱,而接地电源时对比度最高(而当对比度过高时会 ,就会产生“鬼影”,使用时可以通过接一个10K的电位器来调整对比度)。 第4脚:RS为寄存器选择脚,当高电平1时就选择数据寄存器,当低电平0时就选择指令寄存器。 第5脚:RW是读写信号线,当高电平时进行读操作,当低电平时进行写操作。 第6脚:E(或EN)端为使能端,当高电平1时读取信息,当负跳变时执行指令。 第7,14脚:D0,D7为8位双向数据端。 在单片机系统中应用晶液显示器作为输出器件有以下几个优点: 1.显示质量高:液晶显示器的每一个点从一收到信号那一刻后,就始终保持相同的色彩和亮度,保持恒定发光,而阴极射线管显示器(CRT)却需要不断刷新来亮点。因而液晶显示器的显示画质更加清晰稳定。液晶显示器都是数字式的,当其和单片机系统连接时,系统更加简单可靠,操作更加的方便。 2.体积小、重量轻:液晶显示器主要是通过改变显示屏上的电极控制液晶分子的状态来达到显示的目的,因此在重量上比相同显示面积的传统显示器要轻很多。 3.功耗低:液晶显示器的功耗消耗最大的地方主要是在其内部的电极和驱动IC上,因此液晶显示器的耗电量比其它的显示器要少得多。 LCD1602的指令码如表2所示: 13 攀枝花学院本科毕业设计(论文) 3 系统硬件设计 指令码 功能 令 R R D D D D D D D D S /W 7 6 5 4 3 2 1 0 清除显0 0 0 0 0 0 0 0 0 1 将DDRAM填满"20H",并且设定 示 DDRAM的地址计数器(AC)到"00H" 地址归0 0 0 0 0 0 0 0 1 X 设定DDRAM的地址计数器(AC)到 位 "00H",并且将游标移到开头原点 位置;这个指令不改变DDRAM 的内 容 显示状0 0 0 0 0 0 1 D C B D=1: 整体显示 ONC=1: 游标ON 态 B=1:游标位置反白允许 开/关 进入点0 0 0 0 0 0 0 1 I S 指定在数据的读取与写入时,设定 设定 /游标的移动方向及指定显示的移 D 位 游标或0 0 0 0 0 1 S R X X 设定游标的移动与显示的移位控 显示移/C /制位;这个指令不改变DDRAM 的内 位控制 L 容 功能设0 0 0 0 1 D X R X X DL=0/1:4/8位数据RE=1: 扩充指 定 L E 令操作RE=0: 基本指令操作 设定0 0 0 1 A A A A A A 设定CGRAM 地址 CGRAMC C C C C C 地址 5 4 3 2 1 0 设定0 0 1 0 A A A A A A 设定DDRAM 地址(显示位址)第 DDRAMC C C C C C 一行:80H,87H第二行:90H,97H 地址 5 5 3 2 1 0 读取忙0 1 B A A A A A A A 读取忙标志(BF)可以确认内部动 标志和F C C C C C C C 作是否完成,同时可以读出地址计 地址 6 5 5 3 2 1 0 数器(AC)的值 写数据1 0 将数据D7——D0写入到内部的 到RAM RAM (DDRAM/CGRAM/IRAM/GRAM) 读出1 1 从内部RAM读取数据D7—— RAM的D0(DDRAM/CGRAM/IRAM/GRAM) 值 表2—LCD1602的指令码 14 攀枝花学院本科毕业设计(论文) 4 系统软件设计 4 系统软件设计 4.1键盘扫描部分程序设计 键扫程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。 流程图如图4.1 开始 N 是否有键按下返回 NY 去抖动 确有键按下 Y 判断行号 N 释放 Y 结束 图4.1-键盘扫描流程图 4.2运算部分程序设计 算术运算程序的过程为:首先判断当前输入的运算符是以下运算符中的哪一个+、-、*、/ ,如果是+或者是*,则要先判断运算结果是否会溢出,如果结果溢出则不显示运算结果,没溢出就显示运算结果,若是/,则要先判断除数是否为零,为零就不显示结果,不为零则显示运算结果,若是-,则直接显示运算结果。 其流程图如图4.1所示: 15 攀枝花学院本科毕业设计(论文) 4 系统软件设计 开始 运算符是, 加乘除减 NN 运算结果溢出除数为零 YY 显示错误 数值送显 示缓冲 图4.2-运算流程图 4.3显示部分程序设计 显示程序的过程为:显示开始时,先进行LCD的初始化,判断是否显示汉字或ACSII码或图形,若不显示,则返回,若显示的是汉字或ACSII码,则进行相应功能的设置,然后送地址和数据,再判断是否显示完,显示完则返回,没有显示完则继续送地址,若显示的是图形,则先进行相应功能的设置,再送行地址和列地址,然后送数据,最后判断是否显示完,显示完则返回,没有显示完则继续送行地址和列地址。 其流程图如图4.3所示: 16 攀枝花学院本科毕业设计(论文) 4 系统软件设计 开始 液晶初始化 是否显示字符 Y 相应功能设置 送地址N N送数据 是否显示完 Y 返回 图4.3-显示流程图 4.4主函数程序设计 主函数流程图如图4.4所示 17 攀枝花学院本科毕业设计(论文) 4 系统软件设计 开始 初始化参数 初始化LCD N是否按键 Y 读取键码 数字按键C功能 输入数值状态清零根据上次功能键和输 入的数据计算结果 数值送显本次功能键示缓存 是‘=’其他键 计算结果保存结果及功能键 结果送显 示缓存 LCD液晶显示等待数值 图4.4-主函数流程图 程序清单详见附录1 18 攀枝花学院本科毕业设计(论文) 5 仿真和调试 5仿真和调试 5.1 keil系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,其生成的汇编代码结构紧凑,读者理解起来比较容易。在开发大型软件时由此更能体现高级语言的优势。 Keil C51工具包的整体结构中,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 5.2 Keil使用步骤 1.在windows下运行keil软件,进入keil开发环境; 2.在keil uVision 选择 project/new project建立一个新工程项目3.给工程 项目取名为calculator,然后保存在文件夹下; 3.紧接着自动弹出器件选择框,选择ATMEL公司的AT89C52; 4.在keil uVision中选择file/new,打开程序编辑器,输入程序检查无误后保 存文件calculator.c在工程项目相同的目录中; 5.保存好后把文件加入到工程项目中,在project workspace 窗口中,选择 source Group1条目并单击右键在弹出的菜单选择add files to group ‘source group1’; 6.接着编译工程项目; 7.接下来生成HEX文件,在project workspace 窗口中,选择target1条目并 单击右键,在弹出的菜单中选择option for target 1,准备为target1配 置编译环境; 8.在output页为created HEX file 项打勾,已便于输出单片机烧写用HEX格 19 攀枝花学院本科毕业设计(论文) 5 仿真和调试 式文件; 9.选项配置好后,在keil中选择project---build target,再次编译工程项目, 编译结果显示在output windows,有错返回修改,无措就进行软件调试; 10.在keil中选择debug—start---stop debug session进入软仿真调试。 5.3proteus 7.1 介绍 Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可对各种电路和IC进行仿真,能支持单片机,其元件库齐全,使用起来方便,是不可多得的优秀的专业单片机软件仿真系统。 该软件具有如下的特点: 1. 能满足我们所提出的对单片机软件仿真系统的所有标准,并且在同类产 品中具有非常明显的优势。 2. 具有数字电路仿真、模拟电路仿真、单片机及其外围电路组成的系统的 仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿 真的功能;有各种虚拟仪器,如示波器、如示波器、逻辑分析仪、信号 发生器等。目前支持的单片机类型有: 8051系列、AVR系列、68000系 列、PIC12系列、PIC18系列、Z80系列、PIC16系列、HC11系列以及各 种外围芯片。支持大量的存储器和外围芯片。该软件是一款集单片机和 SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。 5.4 Proteus 对于本设计的仿真步骤 1.进入proteus ISIS 集成环境,在工作前,在systerm菜单下设置界面的颜色、 图形界面大小等项目,我采用了系统默认值。 2.从库中选择元件命令,在pick devices窗口中选择电路所需的元件,放置元 件到编辑区并调整其相对位置,进行元件参数设置。 3.元器件间连线,连线并加上需要的说明,并完成仿真原理图,加载程序,将编 译调试完成的简易计算器机器码程序(hex文件)加载到AT89C51单片机中。 4.单击仿真工具栏中的仿真键,观察仿真结果。可以按暂停、继续、单步、等按 钮,查看效果如图5.1 20 攀枝花学院本科毕业设计(论文) 5 仿真和调试 图5.1—proteus仿真图 5.5仿真结果 图5.2—仿真结果 21 攀枝花学院本科毕业设计(论文) 6 结论 6 结论 随着时代的发展,单片机控制的电子产品对人们的生产生活各个方面都有着重要的影响。本文设计的简易计算器,基于AT89C52单片机,选用4*4矩阵键盘作为输入模块,LCD1602液晶显示模块能实现基本的四则运算,通过这次设计的学习,着重培养了我独立思考、综合运用所学有关知识的能力,能更好的巩固单片机、C 语言、模拟电路、数字电路学习的内容。 通过设计,不仅完成了一个作品,更重要的是在实际设计和试验中形成了更加科学合理的认识,不断形成更为合理和具有科学性的思想方式。在这次设计中接住了互联网等途径查询相关信息,并在图书馆查阅了大量单片机资料。这不但扩展了有关单片机领域的眼界,而且完善了以往的知识体系。提高了运用知识的综合能力。 22 攀枝花学院本科毕业设计(论文) 参考文献 参考文献 [1] 邱关源.电路(第四版)[M].北京:高等教育出版社,2006.9. [2] 康华光.电子技术基础模拟部分(第五版)[M].北京: 高等教育出版社,2008.1. [3] 马刚.用Proteus和Keil整合构建单片机虚拟仿真平台[J],现代电子技 术,2006.24:129-131 [4] 张迎.单片微型计算机原理、应用及接口技术[M].国防工业出版社.2007.1 [5] 戴佳.单片机C语言应用程序设计实例精讲[M],电子工业出版社,2006. [6] 胡汉才. 单片机原理及接口技术[M]. 清华大学出版社 [7] 华成英. 模拟电子技术基础[M]. 高等教育出版社 [8] 凌志浩.AT89C52单片机原理与接口技术[M].高等教育出版社,2011.3 [9] 阎石. 数字电子技术基础. 高等教育出版社[M] [10] 徐爱钧.智能化测量控制仪表原理与设计(第二版).北京航天航空大学出版社,2004.9 [11] 孙育才 等.MCS-51系列单片微型计算机及其应用(第4版).东南大学出版社,2004.3 [12] 李萍 等.智能仪器实验指导书.大连交通大学出版社,2007.9 [13] 周立功.单片机实验与实践.北京航天航空大学出版社,2004.3 [14] 龚运新单片机C语言开发技术.清华大学出版社,2006.10 [15] 朱定华.单片机原理与接口技术.电子工业出版社,2001.4 [16] 李陪金.C语言程序设计案例教程.西安电子科技大学出版社,2008.1 [17] Hanna.E,The role of Antarctic sea ice in global climate change[J],Oceanographic Literature Review,1997. [18] Dallas semiconductctor data book[M].Dallas Semiconductor Corporation,1995. [19] Chen,C,S.Network based temperature measurement system[J].Proceedings of the 51st International Instrumentation Symposium,2005. 23 攀枝花学院本科毕业设计(论文) 附录A:源程序 附录A: 源程序 //p1口接矩阵键盘 #include #include #include #include #include #define uchar unsigned char #define uint unsigned int sbit pinRS = P2^0; //数据命令选择端 sbit pinRW= P2^1; //读写数据端 sbit pinE= P2^2; //使能端 //#include "LCD1602.h" void shortdelay(uchar i)//短延时 { for(;i>0;i--); } //长延时 void longdelay(uint i) { uint j; for(;i>0;i--) {for(j=100;j>0;j--);} } //延时程序 void delay(int i) {int j; for(;i>0;i--) for(j=0;j<100;j++); } //初试状态 void io_init() 24 攀枝花学院本科毕业设计(论文) 附录A:源程序 {P1=0xff; } //---------------------------键盘扫描部分-----------------------------// unsigned char key_scan() { unsigned char key; unsigned char temp; uint flag; io_init(); //初始化 P1=0xf0; //高四位输入 行为高电平 列为低电平 flag=0; loop: temp=P1^0xf0; //屏蔽低四位 while(temp) { P1=0xfe; delay(1); if((P1&0xfe)!=0xfe) switch(P1) { case 0xee: key=0x11;flag=1;break; case 0xde: key=0x12;flag=1;break; case 0xbe: key=0x13;flag=1;break; case 0x7e: key=0x14;flag=1;break; } if(flag) goto exit; else P1=0xfd; delay(1); if((P1&0xfd)!=0xfd) switch(P1) { case 0xed: key=0x21;flag=1;break; case 0xdd: key=0x22;flag=1;break; case 0xbd: key=0x23;flag=1;break; 25 攀枝花学院本科毕业设计(论文) 附录A:源程序 case 0x7d: key=0x24;flag=1;break; } if(flag) goto exit; else P1=0xfb; delay(1); if((P1&0xfb)!=0xfb) switch(P1) { case 0xeb: key=0x31;flag=1;break; case 0xdb: key=0x32;flag=1;break; case 0xbb: key=0x33;flag=1;break; case 0x7b: key=0x34;flag=1;break; } if(flag) goto exit; else P1=0xf7; delay(1); if((P1&0xf7)!=0xf7) switch(P1) { case 0xe7: key=0x41;flag=1;break; case 0xd7: key=0x42;flag=1;break; case 0xb7: key=0x43;flag=1;break; case 0x77: key=0x44;flag=1;break; } exit: return key; } if(temp==0) goto loop; } //--------------------------------- 键盘扫描完 26 攀枝花学院本科毕业设计(论文) 附录A:源程序 //--------------------------------- 显示初始化 //P0 口初始化 void initpindata(bit i) { //uchar pindata,pinRS,pinRW,pinE; if(i==1) P0=0xff; else P0=0X00; } //数据命令选择设置 void setRS(bit i) { if(i==1) pinRS=1; //RS高电平选择数据寄存器 else pinRS=0; //RS低电平选择指令寄存器 } //读写操作控制 void setRW(bit i) { if(i==1) pinRW=1; //RW高电平选择读 else pinRW=0; //RW低电平选择写 } //使能信号 void setE(bit i) { if(i==1) pinE=1; else pinE=0; // 下降沿执行 } //读BF 以及AC 的值 uint read_BF_AC() //忙标志位和地址计数器AC命令 BF为1表示忙 { uint temp; initpindata(1); //初始化 setRS(0); //数据命令选择设置 setRW(1); //读写操作控制设置 setE(1); //以上是忙标志设置 27 攀枝花学院本科毕业设计(论文) 附录A:源程序 shortdelay(1); temp=P0; shortdelay(10); setE(0); //E下降沿开始执行 return(temp); } //判忙 bit statuscheck() { return((bit)(read_BF_AC()&0x80)); // 判最高位是否为1 } //写指令函数 void writeinstruc(uint instruc) { while(statuscheck()); initpindata(0); setRS(0); setRW(0); //00写指令 setE(0); P0=instruc; //short delay(1); setE(1); shortdelay(10); setE(0); //下降沿开始执行 } //写数据到RAM void writedata(uint data1) { initpindata(0); setRS(1); setRW(0); //10写数据 setE(0); P0=data1; setE(1); 28 攀枝花学院本科毕业设计(论文) 附录A:源程序 shortdelay(10); setE(0); //下降沿开始执行 } //从RAM 中读数据函数 uint readdata(void) { uint temp; initpindata(1); setRS(1); setRW(1); //数据寄存器读出 setE(1); shortdelay(1); temp=P0; shortdelay(10); setE(0); //下降沿开始执行 return(temp); } //显示程序 X 为行号,Y 为列号,date 为要显示的数据 void dispcharacter(int x,uint y,uint data1) { uint temp; while(statuscheck()); //判忙 temp=y&0x0f; //不忙此语句执行 高四位被置0 x&=0x01; //高七位被置0 if(x) temp|=0x40; writedata( data1); //setDDRAM_Add(temp); } //LCD 初始化 void initLCD() { writeinstruc(0x01); //LCD 复位函数 29 攀枝花学院本科毕业设计(论文) 附录A:源程序 writeinstruc(0x06);//增量方式,不移位 writeinstruc(0x0c);//显示开,光标关,闪烁关 writeinstruc(0x38);//8 位,2 行,5*7 } //-----------------------------------准备工作完成 //-----------------------------------计算器 compute(char key1,i) { signed char m,n,c,act; long int num1,num2,result; signed char str[4][4]={{'7','8','9','/'}, {'4','5','6','*'}, {'1','2','3','-'}, {'c','0','=','+'}}; signed char str1[11],string1[2]; m=(key1&0xf0); //屏蔽低四位 m=m/16; m=m-1; n=key1&0x0f; //屏蔽高四位 n=n-1; c=str[m][n]; sprintf(string1,"%c",c); strcat(str1,string1); if((c=='+')||(c=='-')||(c=='*')||(c=='/')) { act=c; num1=atoi(str1); memset(str1,0,11); memset(string1,0,2); } if(c=='=') { num2=atoi(str1); switch(act) 30 攀枝花学院本科毕业设计(论文) 附录A:源程序 { case'+':result=num1+num2;break; case'-':result=num1-num2;break; case'*':result=num1*num2;break; case'/':result=num1/num2;break; } } if(c=='c') { act=0; num1=str1[0]; num1=str1[8]; memset(str1,0,11); memset(string1,0,2); num1=str1[0]; num1=str1[8]; } longdelay(350); switch(key1) {case 0x11: dispcharacter(0,i,'7');i++;break; case 0x12: dispcharacter(0,i,'8');i++; break; case 0x13: dispcharacter(0,i,'9');i++; break; case 0x14: dispcharacter(0,i,'/');i++;break; case 0x21: dispcharacter(0,i,'4');i++;break; case 0x22: dispcharacter(0,i,'5');i++;break; case 0x23: dispcharacter(0,i,'6');i++;break; case 0x24: dispcharacter(0,i,'*');i++;break; case 0x31: dispcharacter(0,i,'1');i++;break; case 0x32: dispcharacter(0,i,'2');i++;break; case 0x33: dispcharacter(0,i,'3');i++;break; case 0x34: dispcharacter(0,i,'-');i++;break; case 0x41: writeinstruc(0x01); break; case 0x42: dispcharacter(0,i,'0');i++;break; case 0x44: dispcharacter(0,i,'+');i++;break; 31 攀枝花学院本科毕业设计(论文) 附录A:源程序 case 0x43: dispcharacter(0,i,'=');i++; //上面为各个运算符号所对的按键 m=result/10000; //取模值 result=result%10000; //取余数 if(m!=0||result==0) //模制不为1或余数为0 { n=0; m=m+'0'; dispcharacter(0,i,m);i++; // } m=result/1000; result=result%1000; if(m!=0||n==0) { m=m+'0'; n=0; dispcharacter(0,i,m);i++; // } m=result/100; result=result%100; if(m!=0||n==0) { m=m+'0'; n=0; dispcharacter(0,i,m);i++; // } m=result/10; //取模值 result=result%10; //取余值 if(m!=0||n==0) { m=m+'0'; n=0; dispcharacter(0,i,m);i++; // } m=result; 32 攀枝花学院本科毕业设计(论文) 附录A:源程序 if(m!=0||n==0) m=m+'0'; dispcharacter(0,i,m);i++;break; // //case 0x44: dispcharacter(0,i,'+');i++;break; } return(i); } //---------------------------------------------------------------------------------// //-------------------------------------主函数---------------------------------------// void main() { char key1,i; start:initpindata(0); //设置RS RW E 的值 //P2=0X00; initLCD(); //初始化LCD TMOD=0x11; //T1定时,且在工作方式1;T0定时,且在工作方式1 00010001 EA=1; //开定时器中断 ET0=1; //允许T0中断 ET1=1; // 允许T1中断 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; i=0; scan:key1=key_scan(); //扫描键盘 i=compute(key1,i); //执行计算 if(key1==0x41) goto start; else goto scan; } 33 攀枝花学院本科毕业设计(论文) 附录B:系统总图 附录B:系统总图 34 攀枝花学院本科毕业设计(论文) 致 谢 致 谢 本次毕业设计能够顺利的完成首先要感谢我的指导教师-刘衍平老师,从设计初的设计内容的选择到最终论文的定稿,刘老师都给予了我很大的帮助,并且在设计过程中对我的设计思路和方法及论文格式以及软件的使用和使用中遇到的问题都耐心的指导。同时我也要感谢我的同学和领导,在我遇见困难的时候,都给予了我热情的帮助,让我在焦灼之中逐步找到思路,静下心来完成毕业设计。 在这短短几个月的毕业设计中,我学会了许多以前在学习中都没有掌握的专业知识;通过查阅有关设计的资料,我进一步了解了单片机的内部结构和各个部分之间的衔接,掌握了C语言的编程设计方法,充分燃烧起了对进一步学习更高级单片机的欲望。 毕业设计使我们大学的一个总结,是最后一次作业,当我们静下心来认真完成这件事情的时候,我们会发现学习竟然是那么的有意思,也许你几年来都没有如此地紧张过,当你看到你的设计成果了,你的心中会无比地喜悦和激动。大学毕业对于我们来说,不是学习的结束结束,而是学习之路的另一个开端。今后人生路漫漫,必须要时时刻刻坚持学习,才不会退步。在这个即将离开校园的时候,我要感谢辛勤培育我的老师和母校,是你们让我学习到了更深层次的专业知识和技能,让我知道了知识的无穷魅力,更让我学会了怎样做人。在这里我渡过了我人生中最精彩、最重要的四年大学生活,更与同学和老师们结下了深厚的友谊,我会把它作为我最珍贵的回忆好好珍惜。 在今的工作中,我一定会将自己所学的知识和技能应用到实际工作中,理论联系实际,更好的服务于社会、报答恩师、回报母校。最后,我衷心的祝愿母校的明天会更加美好~ 35 攀枝花学院本科毕业设计(论文) 致 谢 序号 名称 规格型号 单位 数量 备注 一 制冷系统 1 压缩机组 4AV10 台 4 2 冷凝器 LN-70 台 1 3 贮氨器 ZA-1.5 台 1 4 桶泵组合 ZWB-1.5 台 1 5 氨液分离器 AF-65 台 1 6 集油器 JY-219 台 1 7 空气分离器 KF-32 台 1 8 紧急泄氨器 JX-108 台 1 9 冷风机 KLL-250 台 8 10 冷风机 KLD-150 台 4 11 冷风机 KLD-100 台 2 12 阀门 套 86 13 电磁阀 套 6 14 管道及支架 吨 18.6 3 15 管道及设备保温 m22 16 管道保温包扎 镀锌板 吨 1.6 17 附件 套 1 二 气调系统 1 中空纤维制氮机 CA-30B 台 1 2 二氧化碳洗涤器 GA-15 台 1 3 气动电磁阀 D100 台 14 4 电脑控制系统 CNJK-406 台 1 5 信号转换器 8线 台 1 6 果心温度探头 台 7 37 库气平衡袋 5 m 个 7 8 库气安全阀 液封式 个 7 9 小活塞空压机 0.05/7 台 1 10 PVC管 套 1 11 附件 套 1 三 水冷系统 1 冷却塔 DBNL-100 台 2 3 2 水泵 SBL80-160I 台 2 3 水泵 SBL50-160I 台 2 4 阀门 套 30 5 管道及支架 吨 2.8 6 附件 套 1 四 电仪控系统 1 电器控制柜 套 1 2 照明系统 套 1 3 电线电缆 套 1 4 桥架管线 套 1 5 附件 套 1 36 攀枝花学院本科毕业设计(论文) 致 谢 37
本文档为【毕业设计论文_基于单片机的科学计算器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321575
暂无简介~
格式:doc
大小:235KB
软件:Word
页数:0
分类:
上传时间:2018-10-14
浏览量:9