基于STC89C52的简易计算器设计..

合集下载

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器一、引言计算器是一种用于进行数学运算的设备。

在现代社会中,计算器被广泛应用于各个领域,包括教育、科学研究、工程设计等。

本篇文章将介绍基于STC89C52单片机的计算器设计。

二、设计目标本设计的目标是实现一个简单的、功能齐全的四则运算计算器。

该计算器具有基本的加、减、乘、除运算功能,可以进行整数和小数的运算。

同时,该计算器还具备清零、撤回、保存结果等辅助功能。

三、硬件设计1.单片机选择本设计选择STC89C52单片机作为主控芯片。

STC89C52是一款具有低功耗、高性能的单片机,拥有8位宽的数据总线和16位宽的地址总线,适用于本设计所需的计算器功能。

2.显示器选择本设计选择8位共阳数码管作为显示器。

由于STC89C52单片机的IO 口输出电流较小,为了驱动数码管显示,需要通过数码管驱动芯片进行扩展以增大驱动电流。

3.按键选择本设计选择矩阵键盘作为输入设备。

根据计算器所需的功能,可以设置数字键、运算符键、功能键等按键。

四、软件设计1.指令集设计本设计根据计算器功能的需求,设计了一套适合STC89C52单片机的指令集。

包括加法指令、减法指令、乘法指令、除法指令等,以及相应的操作数寻址方式。

2.界面设计本设计通过8位共阳数码管显示器和矩阵键盘构建了计算器的界面。

通过编程实现数码管显示数字和结果,以及按键的检测和响应。

3.运算功能实现本设计通过编程实现了加法、减法、乘法、除法等基本运算功能。

通过数码管显示输入的数字和结果,实现了计算器的正常运算。

4.辅助功能实现本设计通过编程实现了清零、撤回、保存结果等辅助功能。

通过按下相应的功能键,可以实现清除当前输入、撤回上一步操作或保存当前结果等操作。

五、实验验证六、结论通过本次设计,成功实现了基于STC89C52单片机的四则运算计算器。

该计算器具有基本的加、减、乘、除运算功能,可以进行整数和小数的运算。

同时,该计算器还具备清零、撤回、保存结果等辅助功能。

基于STC89C52单片机的简易计算器

基于STC89C52单片机的简易计算器

基于STC89C52单片机的简易计算器目录内容摘要 (2)关键词 (2)ABSTRACT (2)1绪论 (2)2系统设计 (4)2.1设计任务与要求 (4)2.2总体设计方案 (5)3系统硬件设计 (6)3.1控制器模块 (6)3.2按键模块 (7)3.3时钟日期模块 (9)3.4液晶显示屏显示模块 (12)3.5硬件元件清单 (14)4软件设计与仿真 (14)4.1主程序设计 (15)4.2仿真结果 (18)4.3系统调试 (19)5参考文献 (19)内容摘要:该计算器以STC89C52单片机为核心控制芯片,实现了简单的加、减、乘、除功能,采取的是键盘输入和液晶显示屏的输出结果显示。

主要硬件构成部分由五个:一个STC89C52单片机芯片,一个液晶显示屏(LCD),一个4*4矩阵键盘和一个时钟芯片(DS1302)一个蜂鸣器,可以实现8位的整数数值操作计算。

附加时钟显示的功能。

关键词:单片机STC89C52 液晶显示屏LCD 时钟芯片DS1302 Abstract:The calculator with STC89C52 single chip as the core control chip, the realization of a simple addition, subtraction, multiplication, in addition to function, is taken by the keyboard input and liquid crystal display outputThe desigh. is taken by the keyboard input and liquid crystal display output. The main hardware components from five: a STC89C52 chip, a liquid crystal display ( LCD ), a 4 x 4 matrix keyboard and a clock chip ( DS1302 ) a buzzer, can achieve a 8 bit integer numerical operation calculation. Additional clock display function.Keywords:The single chip computerSTC 89 C52 Liquid crystal display (LCD) LED the Clock DS1302 chip1.绪论:单片机是指一个集成在一块芯片上的完整计算机系统。

基于STC89C52RC单片机的简易计算器设计

基于STC89C52RC单片机的简易计算器设计

目录一、可行性研究 (3)二、设计方案简述 (4)2.1、功能介绍 (4)基本功能 (4)扩展功能 (4)2.2、总体设计方案 (5)总体设计思路 (5)方案论证与比较 (6)系统组成 (7)三、详细设计 (12)1.各个模块设计 (12)输入模块:键盘扫描 (13)运算模块:单片机控制 (14)显示模块:LCD1602显示 (15)2.硬件电路设计 (16)硬件连接 (16)3.元件的介绍 (17)STC89C52单片机组成 (17)复位和复位电路 (18)LCD1602显示器 (19)4.PCB设计以及结果显示 (22)五、总结 (24)附录主要程序代码 (25)一、设可行性分析:1.2.1 经济可行性由于只是实验性质的编程,所以在设计和开发都不需要过多的经费,但是系统投入运行以后,硬件维护和损耗所造成的耗费是必须的,但是数目也不会很大。

所以经过初步分析,经济上基本上是可行的1.2.2技术可行性在技术方面,因为都学习了C语言,硬件课程设计等课程,对于开发语言c语言也有一定的掌控能力,应该能够完成相应的任务。

1.2.3 运行可行性该成果简单易操作,非常容易使用。

1.2.4 法律可行性由于我们需要完成的功能相对简单,没有太多涉及到很专业方面的内容,更没有计划将系统利用到商业用途,所以不存在侵权或者版权纠纷方面的问题。

1.2.5结论该系统的软硬件都比较容易理解和实现,所以,具有实现一计算器的可行性。

二、设计方案简述2.1功能概述系统基本功能:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。

(2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。

(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器一、引言计算器作为一种常见的电子设备,经常被人们用于日常的数学计算。

本文将介绍一种基于STC89C52单片机的计算器的设计与实现。

该计算器具有基本的四则运算功能,并且支持浮点数的运算。

二、硬件设计1.单片机选择本文选择STC89C52单片机作为计算器的核心处理器。

STC89C52是基于8051架构的单片机,具有强大的计算和控制能力,适合用于计算器的设计。

2.显示器设计本文选用16x2LCD液晶显示器作为计算器的显示器。

液晶显示器具有容量小、功耗低、反射型等优点,非常适合计算器的显示要求。

3.按键设计本文选用矩阵按键设计。

通过矩阵按键设计,可以设计出较多的按键功能,并且能够节省IO口的使用。

4.电源设计计算器使用直流电源供电,可以选择使用电池或者外部电源适配器供电。

三、软件设计计算器的软件设计主要包括界面设计和计算功能设计两个方面。

1.界面设计计算器的界面设计主要包括显示数字和调用函数。

a.显示数字通过将用户输入的数字显示到LCD液晶屏上,实现数字的显示功能。

液晶屏可以显示16个字符,可以一次性显示一个较长的数字。

b.调用函数通过监测用户按键的输入,调用相应的函数实现计算功能。

可以设置加、减、乘、除等函数,并通过按键的组合调用相应的函数。

2.计算功能设计计算器的计算功能设计主要包括四则运算和浮点数运算两个方面。

a.四则运算通过四个函数实现加、减、乘、除的功能。

在用户按下相应的运算符号键后,调用相应的函数对输入的数字进行相应的运算,并将结果显示在LCD液晶屏上。

b.浮点数运算在用户输入的数字或运算结果存在小数的情况下,可以设计相应的浮点数运算函数,通过运算可以得到带有小数点的结果,并将结果显示在LCD液晶屏上。

四、系统实现五、总结基于STC89C52单片机的计算器设计和实现包括硬件设计和软件设计两个方面。

通过合理的硬件设计和功能完善的软件设计,可以实现一款功能强大的计算器。

基于STC89C52单片机的简易数字电压表设计【毕业设计】

基于STC89C52单片机的简易数字电压表设计【毕业设计】

基于STC89C52单片机的简易数字电压表设计【毕业设计】存档编号华北水利水电大学North China University of Water Resources and Electric Power 毕业设计题目基于单片机的数字电压表设计学院信息工程学院专业通信工程姓名学号200912303指导教师完成时间2013年5月20日教务处制目录摘要 (I)Abstract (I)绪论 ...................................................................................................................... I I 一设计背景 .. (III)二设计意义 (IV)第一章数字电压表 (5)1.1 数字电压表的优点 (5)1.2 数字电压表发展趋势 (6)1.3 设计平台 (6)1.3.1 KEIL C51开发平台 (6)1.3.2 Proteus 7 Professional设计软件 (7)第二章总体设计方案 (8)2.1数字电压设计的两种方案 (8)2.1.1 由数字电路及芯片构建 (9)2.1.2 由单片机系统及A/D 转换芯片构建 (9)2.2 设计要求 (9)2.3 技术要求 (10)2.4 设计方案 (10)第三章硬件简介 (11)3.1 本设计单片机的选择 (11)3.1.1常用单片机的特点比较 (11)3.1.2 单片机的选择 (12)3.1.3 STC89C52单片机介绍 (13)3.2 本设计显示器件选择 (18)3.2.1 常用显示器件简介 (18)3.2.2 显示器件的选择 (19)3.2.3 1602字符型LCD简介 (19)3.3A/D芯片 (24)3.3.1常用的A/D芯片 (24)3.3.2 ADC0809芯片 (25)第四章接口电路 (28)4.1 显示电路 (28)4.2 ADC0809与单片机接口电路 (29)第五章硬件电路系统模块设计 (30)5.1 总电路模块 (30)5.2 硬件系统电路简介 (30)第六章系统软件设计 (31)6.1 主程序 (31)6.2 A/D转换子程序 (32)6.3 显示子程序 (32)第七章调试及性能分析 (33)7.1 调试与测试 (33)7.2 性能分析 (34)总结 (35)参考文献 (36)致谢 (38)附录 (39)附录I(外文翻译) (39)外文译文 (49)附录II(任务书) (57)附录III(开题报告) (59)附录IV(图表) (62)I Proteus仿真图 (62)II 硬件总电路图 (63)III 实物图 (64)附录V(程序清单) (66)摘要随着时代的进步,用指针式万用表测量小幅度直流电压已经显得有些不太方便。

基于单片机的简易计算器的设计

基于单片机的简易计算器的设计

基于单片机的简易计算器的设计
摘 要 单片机是采用超大规模集成电路技术,把一台计算机的主要部件集成在一个芯片上所构成的一种集成电路芯片,因此单片机被称为单片微型计算机。由于单片机体积小、价格低、可靠性高、适用面宽以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。很多大专、本科院校都开设了关于单片机原理与应用方面的课程。
I
关键词: 单片机,计算器,运算,扩展
ABSTRACT
SCM is a integrated circuit chips that integrated the main cmponents of a
computer in a chip by using the large scale integrated circuit technology.So theቤተ መጻሕፍቲ ባይዱSCM is called the single chip computer. In various fields, SCM has been widely used for its small size, low price, high reliability, and wide application etc. Many college and universities opened the courses about the principle and application of SCM.
本设计就是依据单片机的原理来进行简易计算器的设计的,设计采用了STC89C52RC单片机作为计算器的主控制器,TC1602液晶作为显示器,4×4矩阵键盘作为输入按键,通过软硬件相结合,来实现整数的“加”、“减”、“乘”、“除”运算。并在计算器顺利完成的基础上,对系统进行了简单的扩展,增加了电子表功能,使系统完善化和多功能化。

基于STC89C52的计算器设计与仿真_宋慧超

基于STC89C52的计算器设计与仿真_宋慧超

……
//算 数 运 算
3 仿真及结果分析 硬件和软件设计分别利用Prot eus与Kei l集成开发环境
实现。C语言程 序 代码由Ke i l 编写并 编译,将产生的可执行 文件加载到Prot eus中[5],实现仿真功能。
系统 仿真 总体电 路图如图2 所 示,系统 启 动后屏 幕上 显 示 欢 迎信息“We l c o m e!”。具体 结 果 演 示 如图3所 示,计 算 器可 以 进行 较 高 精度 的 加 减 乘 除 运 算,支 持小 数 运 算,结 果 保留 到小数点后5位,其中,图3(a)为大数量的加法运算,结果用科 学 记 数 法 显 示;图3 ( b) 为 减 法 运 算,结 果 为负 数;图3 (c) 和图 3(d)分别为乘法、除法运算,结果均保留到小数点后5位。
摘 要:单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,已广泛应用在生活的各个领
域,该文提出一种基于单片机的高精度计算器设计方案,核心控制系统采用STC89C52单片机,利用LCD1602液晶显示屏显示运
算过程与结果,设计4×4键盘构成按键模块,用来模拟0~9及加、减、乘、除、清零按键。软件程序利用单片机C语言编写,并在
4×4 键盘又称为行列式键盘,它是4条I/O线作为行线, 4 条I/O线作为列线组 成的键 盘,在行线和列线的每 一个交 叉点上设置一个按 键 [3],这种结构可以有效地提高单片机系 统中I/O口的利用率。4 条行线 分别接单片 机 P1.3~P1.0,4 条列线接单片机 P1.4~P1.7,每位按键对应的功能可参见图 2系统硬件仿真图。
公共交 通枢 纽 站的服务范围和服务区域。(2)对 枢 纽的服务 区域 内的 客 流 分布进 行 详 细 分 析,确 定 公共 交 通 枢 纽布置 的 备 选 点,原 则 上 选 取 客 流 量 较 大,换 乘 频 率 较 高 的 客 流 交汇 地 点作为公共 交 通 枢 纽备 选 地 点。(3) 根 据已知 客 流 量,通 过 优化方法在被选枢纽选址中确定交通枢纽的最终地址。

单片机课程设计_简易计算器设计

单片机课程设计_简易计算器设计

单片机课程设计报告选题名称:基于STC89C52单片机的简易计算器设计系(院):物理与电气工程学院专业:电子信息科学与技术班级:12级电信(4)班姓名:储飞学号:080212177汪中苗 080212159 指导老师:王陈宁完成时间:2014/6/9目录一.课程任务二.设计方案三.硬件介绍及硬件电路图 3.1单片机最小系统3.2键盘电路图3.3数码管显示电路图四.软件编程4.1 程序设计框图4.2 4*4按键电路原理4.3 数码管显示电路原理4.4 计算器键盘定义4.5 实现程序五.系统仿真及调试六.课程小结七.指导老师评价一.课程任务及性能指标基于STC89C52单片机的简易计算器,采用12MHZ晶振,设计要求:(1)计算器用一位显示,计算10以内的加减法。

(2)计算器第一次显示0,第一次按数字键显示D1,第二次按符号键不显示,第三次按数字键显示D2,最后按等号键显示D3. (3)两数相加或相减结果应在0~18范围,超过该结果则返回显示错误。

减法的结果不存在负数。

二.设计方案按照系统设计的功能的要求,初步确定设计系统由主控模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图1.1所示,主控芯片使用51系列AT89C52单片机,采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。

它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。

监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。

键盘电路采用4*4矩阵键盘电路。

显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。

整个单片机的接口电路:P0:用于显示输出;P3:用于键扫描输入;三.硬件介绍及硬件电路图3.1单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。

主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。

基于STC89C52的计算器设计与仿真

基于STC89C52的计算器设计与仿真

基于STC89C52的计算器设计与仿真宋慧超【摘要】Single chip microcomputer has the advantages of smallsize,strong control function,low power consumption,strong adaptability to environment,flexible and easy to use.It has been widely used in various fields.This paper presents a design scheme of high precision calculator based on Single chip microcomputer.Control system is STC89C52 microcontroller.Operation process and results are displayed in theLCD1602 LCD screen.The key module is composed of 4*4 keyboard which is used to simulate the 0-9 and add,subtract,multiply,divide ,reset button. Software program is written in C language and compiled by C51 Keil and verified by Proteus simulation.%单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,已广泛应用在生活的各个领域,该文提出一种基于单片机的高精度计算器设计方案,核心控制系统采用STC89C52单片机,利用LCD1602液晶显示屏显示运算过程与结果,设计4×4键盘构成按键模块,用来模拟0~9及加、减、乘、除、清零按键.软件程序利用单片机C语言编写,并在Keil C51开发环境下编译,硬件系统通过proteus工具软件设计并仿真.【期刊名称】《科技创新导报》【年(卷),期】2015(000)029【总页数】3页(P159-160,162)【关键词】单片机;4×4键盘;LCD1602【作者】宋慧超【作者单位】内蒙古民族大学物理与电子信息学院内蒙古通辽 028000【正文语种】中文【中图分类】TN43计算器是人们生活中最常见的工具之一,随着科技的迅猛发展,计算器的功能越来越强大,对精度的要求也越来越高。

基于单片机的简易计算器设计

基于单片机的简易计算器设计

2013 - 2014 学年_一_学期山东科技大学电工电子实验教学中心创新性实验研究报告实验项目名称__基于51单片机的简易计算器设计_2013 年12 月27 日四、实验内容2、实验内容(一)、总体硬件设计本设计选用AT89C52单片机为主控单元。

显示部分:采用六位LED动态数码管显示。

按键部分:采用2*8键盘;利用2*8的键盘扫描子程序,读取输入的键值。

(二)、键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。

矩阵键盘采用两条I/O 线作为行线,八条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为2×8个。

这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。

矩阵键盘的工作原理:计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口和另一个P口的两个管脚实现16个按键功能,这种形式在单片机系统中也最常用。

矩阵键盘布局图:矩阵键盘内部电路图如下图所示:(三)、LED显示模块本设计采用LED数码显示来显示输出数据。

通过D0-D7引脚向LED写指令字或写数据以使LED实现不同的功能或显示相应数据。

(四)运算模块(单片机控制)MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。

如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。

单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

4X4矩阵键盘实现的计算器一、功能实现基本的两个整数加、减、乘、除运算,采用4X4矩阵键盘输入数据,结果由LCD1602显示。

可以显示负数结果,并且还具有清除功能。

该软件基于普中科技的HC6800_EM3 V2.2平台,微处理器为STC89C52单片机。

二、硬件电路图硬件各个部分的电路图如下:1、STC89C52单片机电路图2、LCD1602显示电路图3、矩阵键盘电路图P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0012345678910(+)11(-)12(*)13(/)14(=)15(CLR)三、软件程序1、LCD1602驱动程序(1)LCD1602.c#include <reg52.h>#include <intrins.h>sbit LCD_RS = P2^6;sbit LCD_RW = P2^5;sbit LCD_EN = P2^7;#define delayNOPs(); {_nop_();_nop_();_nop_();_nop_();};// 延时函数,延时大约1ms乘以nvoid DelayNms(unsigned int n){unsigned char x;while(n--){for(x=0; x<250; x++){_nop_();_nop_();_nop_();_nop_();}}}/***************************************************************************/ /* */ /* 检查LCD忙状态 */ /* 返回值为1时,表示忙,等待。

返回值为0时,表示闲,可以写入指令与数据。

*/ /* 读状态:RS=L,RW=H,E=H,D0-D7=状态字 */ /* */ /***************************************************************************/bit Lcd1602_is_busy(void){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOPs(); // 保证使能脉冲的宽度result = (bit)(P0&0x80);LCD_EN = 0;return(result);}/*******************************************************************//* *//* 写指令到LCD *//* RS=L,RW=L,E=高脉冲,D0-D7=指令码 *//* *//*******************************************************************/void Lcd_Write_Command(unsigned char cmd){while(Lcd1602_is_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;P0 = cmd;delayNOPs(); // 保证使能脉冲的宽度LCD_EN = 1;delayNOPs();LCD_EN = 0;}/*******************************************************************//* *//* 写显示数据到LCD *//* RS=H,RW=L,E=高脉冲,D0-D7=数据 *//* *//*******************************************************************/void Lcd_Write_Data(unsigned char dat){while(Lcd1602_is_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delayNOPs();LCD_EN = 1;delayNOPs();LCD_EN = 0;}/*******************************************************************//* *//* LCD初始化设定 *//* *//*******************************************************************/void Init_Lcd1602(void){DelayNms(15);Lcd_Write_Command(0x38); // 设置成:16*2显示,5*7点阵,8位数据接口DelayNms(5);// Lcd_Write_Command(0x08); // 显示关闭// DelayNms(5);Lcd_Write_Command(0x0C); // 显示开,关光标DelayNms(5);Lcd_Write_Command(0x06); // 移动光标,输入方式从左到右DelayNms(5);Lcd_Write_Command(0x01); // 清除LCD的显示内容,数据指针清零,将光标撤回液晶显示屏的左上方DelayNms(5);}(2)LCD1602.hvoid Lcd_Write_Command(unsigned char cmd);void Lcd_Write_Data(unsigned char dat);void Init_Lcd1602(void);void DelayNms(unsigned int n);2、矩阵键盘驱动程序(1) 4X4KeyPad.c#include <STC89C5xRC.h>#include "LCD1602.h" // 要用到延时函数 void DelayNms(unsigned char n);#define key P1unsigned char val = 16; // 获取的键值#define KEY_NULL 0xFF // 后来加上的// 键盘扫描函数unsigned char key_scan(void){unsigned char state,KeyTemp;key = 0x0F;if(key != 0x0F) // 如果有按键按下{state = key; // 记录第一次按键状态DelayNms(10); // 延时去抖if(key == state) // 判断按键状态是否和第一次一致{key = 0x0F; // 测试列,该行可屏蔽掉switch(key){case (0x07): KeyTemp = 0; break;case (0x0B): KeyTemp = 1; break;case (0x0D): KeyTemp = 2; break;case (0x0E): KeyTemp = 3; break;}key = 0xF0; // 测试行switch(key){case (0x70): val = KeyTemp + 0; break;case (0xB0): val = KeyTemp + 4; break;case (0xD0): val = KeyTemp + 8; break;case (0xE0): val = KeyTemp + 12; break;}while(key != 0xF0); // 等待松开按键}elsereturn (KEY_NULL);}elsereturn (KEY_NULL);// else key = 0xFF; // 释放键盘总线}(2) 4X4KeyPad.hextern unsigned char key_scan(void);extern unsigned char val;#define KEY_NULL 0xFF3、计算器计算和显示程序(1)caculating and displaying.c#include <stdio.h> // sprintf语句用到#include "LCD1602.h"#include "4X4KeyPad.h"unsigned char code table1[] = {"0123456789+-*/=C"};bit number_key = 0; // 数字键bit add_key = 0; // 加法键 + bit sub_key = 0; // 减法键 -bit multiply_key = 0; // 乘法键 *bit division_key = 0; // 除法键 /bit equal_key = 0; // 等于键 =bit clear_key = 0; // 清除键double a=0,b=0,s=0; // a为计算的第一个数,b为第二个数,s为计算结果// 必须定义为浮点,否则不能够保证计算精度// 识别按键,置标记符void Key_Recognition(void){if(key_scan() != KEY_NULL) // 有按键按下时才置标志位和显示{if(val <= 9) number_key = 1;if(val == 10) add_key = 1;if(val == 11) sub_key = 1;if(val == 12) multiply_key = 1;if(val == 13) division_key = 1;if(val == 14) equal_key = 1;if(val == 15) clear_key = 1;Lcd_Write_Data(table1[val]); // 显示按键对应的字符}}// 计算被计算的两个数 Gets the number of two to be calculatedvoid Get_Parameters_for_calculation(void){if(equal_key != 1) // 没有按等号键才进入{if((add_key||sub_key||multiply_key||division_key) != 1) // 没有按下运算键(+-*/){if(number_key == 1) // 是数字键{a = a*10 + val; // a为运算的第一个数number_key = 0;}}else // 按下运算键(+-*/){if(number_key == 1){b = b*10 + val; // b为运算的第二个数number_key = 0;}}}}// 计算结果void Calculate_Result(void){if(equal_key == 1) // 只有按等号键才能计算{if(add_key == 1) // 加法s = a + b;if(sub_key == 1) // 减法s = a - b;if(multiply_key == 1) // 乘法s = a * b;if(division_key == 1) // 除法s = a / b;}}void Display_Result(void){unsigned char i = 0; // 显示字符的指针unsigned char result[16] = ""; // 待显示的字符计算结果if(equal_key == 1) // 只有按等于键才显示{equal_key = 0;sprintf(result,"%.4f",s); // 浮点数的默认有效位是小数点后6位,这里设置为4位// sprintf(&temp1[0],"%f",a);Lcd_Write_Command(0x80+0x40); // 结果在第二行显示while(result[i] != '\0'){Lcd_Write_Data(result[i]);i++;}}}// 清除显示void ClearScreen(void){if(clear_key == 1) // 只有按清除键才能清除{Lcd_Write_Command(0x01); // LCD清屏指令,把光标撤回到显示器的左上number_key = add_key = sub_key = multiply_key = division_key = equal_key = clear_key = 0;// 清除所有的状态标志s = 0;a = 0;b = 0;}}(2) caculating and displaying.hvoid Key_Recognition(void);void Get_Parameters_for_calculation(void);void Calculate_Result(void);void Display_Result(void);void ClearScreen(void);4、系统主程序#include "LCD1602.h"#include "caculating and displaying.h"void Start_Screen(void){unsigned char code table1[] = " WELCOME TO ";unsigned char code table2[] = "STC51 CALCULATOR" ;unsigned char index = 0; // 显示字符的指针Lcd_Write_Command(0x80);while(table1[index] != '\0'){Lcd_Write_Data(table1[index]);index++;}DelayNms(500);index = 0;Lcd_Write_Command(0x80+0x40);while(table2[index] != '\0'){Lcd_Write_Data(table2[index]);index++;}DelayNms(2000);Lcd_Write_Command(0x01); // 清屏}void main(void){Init_Lcd1602();Start_Screen();while(1){Key_Recognition();Get_Parameters_for_calculation();Calculate_Result();Display_Result();ClearScreen();}}。

基于STC89C52的简易计算器设计

基于STC89C52的简易计算器设计

福建电力职业技术学院课程设计课程名称:《智能仪器》题目:基于STC89C52的简易计算器设计专业班次:姓名:学号:指导教师:学期:2011-2012学年第2学期日期:2012.2目录目录1. 引言 (1)1.1本设计的意义 (1)1.2本设计任务和主要内容 (2)2. 硬件设计 (2)2.1系统框图 (3)2.2最小系统 (4)2.3矩阵键盘 (5)2.4 LCD1602硬件设计 (6)3.软件设计 (7)3.1矩阵键盘扫描原理 (8)3.2L C D1602引脚功能时序图 (9)3.3计算器流程图 (10)4设计小结 (12)参考文献 (14)附录:课程设计程序清单 (15)1.引言随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化。

电子产品的更新速度快就不足惊奇了。

计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。

现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。

本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。

通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。

1.1 本设计的意义计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。

现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器随着科技的不断发展,单片机已经成为现代电子设备中的重要组成部分。

STC89C52单片机作为一种常见的单片机,因其高性价比和良好的性能而广泛应用于各种嵌入式系统中。

本文将介绍如何使用STC89C52单片机制作一个简单的计算器。

一、硬件设计1、电源电路:为单片机提供稳定的电源。

2、时钟电路:为单片机提供时钟信号,确保其正常运行。

3、复位电路:在单片机出现异常时,通过复位电路实现系统重启。

4、输入电路:用于接收用户输入的数字和运算符。

5、输出电路:用于显示计算结果。

二、软件设计1、初始化程序:对单片机的各个寄存器进行初始化。

2、显示程序:根据需要显示的内容,编写相应的显示程序。

3、输入程序:接收用户输入的数字和运算符,并将其存储在相应的变量中。

4、计算程序:根据用户输入的运算符,调用相应的函数进行计算,并将结果显示在输出电路中。

三、调试与测试1、硬件调试:检查电路板上的元器件是否连接正确,确保电源、输入和输出电路的正常工作。

2、软件调试:通过串口调试工具,对程序进行调试和修改,确保程序的正确性。

3、综合测试:在完成硬件和软件的调试后,进行综合测试,确保计算器的正常工作。

四、结论本文介绍了基于STC89C52单片机的计算器的硬件和软件设计。

通过使用单片机,可以实现简单的计算器功能,并且具有成本低、易于维护和升级等优点。

在制作过程中,需要注意硬件和软件的调试与测试,以确保系统的稳定性和可靠性。

stc89c52单片机技术资料标题:STC89C52单片机技术资料一、概述STC89C52单片机是一种广泛应用的微控制器,它由深圳宏晶科技有限公司生产。

这款单片机具有高性能、低功耗、高可靠性等特点,适用于各种嵌入式系统开发。

下面将详细介绍STC89C52单片机的技术特性、引脚配置、寄存器映射以及常用开发工具等。

二、STC89C52单片机特性1、工作频率:STC89C52单片机的时钟频率可达到35MHz,能够满足大多数应用场景的需求。

电子设计基于STC89C52RC单片机的简易计算器设计说明

电子设计基于STC89C52RC单片机的简易计算器设计说明

电子设计实验名称:基于STC89C52RC单片机的简易计算器设计姓名: __学号:指导老师:目录一、可行性研究 (3)二、设计方案简述 (4)2.1、功能介绍................................................................... .. (4)基本功能 (4)扩展功能 (4)2.2、总体设计方案............................................................................ (5)总体设计思路 (5)方案论证与比较 (6)系统组成 (7)三、详细设计 (12)1.各个模块设计 (12)输入模块:键盘扫描 (13)运算模块:单片机控制 (14)显示模块:LCD1602显示 (15)2.硬件电路设计 (16)硬件连接 (16)3.元件的介绍 (17)STC89C52单片机组成 (17)复位和复位电路 (18)LCD1602显示器 (19)4.PCB设计以及结果显示 (22)五、总结 (24)附录主要程序代码 (25)一、设可行性分析:1.2.1 经济可行性由于只是实验性质的编程,所以在设计和开发都不需要过多的经费,但是系统投入运行以后,硬件维护和损耗所造成的耗费是必须的,但是数目也不会很大。

所以经过初步分析,经济上基本上是可行的1.2.2技术可行性在技术方面,因为都学习了C语言,硬件课程设计等课程,对于开发语言c语言也有一定的掌控能力,应该能够完成相应的任务。

1.2.3 运行可行性该成果简单易操作,非常容易使用。

1.2.4 法律可行性由于我们需要完成的功能相对简单,没有太多涉及到很专业方面的容,更没有计划将系统利用到商业用途,所以不存在侵权或者纠纷方面的问题。

1.2.5结论该系统的软硬件都比较容易理解和实现,所以,具有实现一计算器的可行性。

二、设计方案简述2.1功能概述系统基本功能:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。

基于STC89C52的光电计数器设计

基于STC89C52的光电计数器设计

光电计数器的设计摘要本系统采用的是以单片机STC89c52为核心的自动计数器。

采用反射式光电传感器,将红外发光管与光电接收管相邻安放,每当物体通过一次,红外光就被物体反射,光电接收管接收一次,光电接收管的输出电压就发生一次变化,这个变化的电压信号通过放大和处理后,形成计数脉冲,通过光电隔离耦合并行输入至STC89c52单片机的P1口,通过软件控制和键盘设定计数值并用LED加以显示,便可实现对物体的计数统计。

所谓的光电传感器是将光信号转化为电信号的一种传感器。

它的理论基础是光电效应。

这类效应大致可分为三类。

第一类是外光电效应,即在光照射下,能使电子逸出物体表面。

利用这种效应所做成的器件有真空光电管、光电倍增管等。

第二类是内光电效应,即在光线照射下,能使物质的电阻率改变。

这类器件包括各类半导体光敏电阻。

第三类是光生伏特效应,即在光线作用下,物体内产生电动势的现象,此电动势称为光生电动势。

这类器件包括光电池、光电晶体管等。

光电效应都是利用光电元件受光照后,电特性发生变化。

敏感的光波长是在可见光附近,包括红外波长和紫外波长。

市场上的光电计数器采用的光电传感器有摄像头、光电管等,采用的光的种类有普通光和激光,可见光和不可见光等。

光电传感器一般由光源、光学通路和光电元件三部分组成。

光电式传感器是以光电器件作为转换元件的传感器,光电检测方法具有精度高、应用快、非接触等优点,而可测参数多,光电传感器的结构简单,形式灵活多变,因此,光电传感器在检测和控制中应用非常广泛。

关键词计数器光电传感器单片机数码管毕业设计(论文)AbstractThe system USES the microcontroller is STC89c52 as the core of the automatic counters. By reflecting photoelectric sensor, the infrared luminescence tubes and optoelectronics receiving tube adjacent put, whenever objects through time, infrared light is reflected, photoelectric receiving tube receiving once, photoelectric receiving pipe output voltage has a time change, this change voltage signal by amplifying and processed, forming counting pulses, through photoelectric isolating coupling parallel input to STC89c52 MCU P1 mouth, through software control and keyboard Settings count value and LED to display, can realize to the object counting statistics. This counter can or mechanical artificially count way into electronic counted, and using LED digital pipe display, can be applied to many professions, to meet modern production and lifestyle needs.The so-called photoelectric sensor is light signals are converted to electrical signals a sensor. It is based on the theory of the photoelectric effect. This kind of effect can be roughly classified into three kinds. The first kind is the photoelectric effect, namely in light, can make the electronic escaping surface. Using this effect made devices have vacuum phototubes, photomultiplier tubes, etc. The second type is inside the photoelectric effect, that is, in a light ray can make physical resistivity change. Such devices including various types of semiconductor photoconductive resistance. The third type is born volts effect that light, the object in light effect produced inside emf phenomenon, this electromotive force called light born electromotive force. Such devices including si-based ones, photoelectric transistor, etc. The photoelectric effect is using photoelectric element by light, the electrical characteristics change. Sensitive in the visible light wavelengths is near, including infrared wavelength and uv wavelength. Market photoelectric counter adopts photoelectric sensor have a webcam, phototubes to wait, use light species are regular light and laser, visible and not visible, etc. Photoelectric sensor are usually made of light source, optical path and photoelectric element of three parts. Photoelectric sensor is photoelectric device as conversion of components of the sensor, photoelectric detection method has high accuracy, application quickly, non-contact wait for an advantage, but measurable lots of parameters, photoelectric sensor of simple structure, and flexible in form, therefore, photoelectric sensors in the detection and control is widely used.keywordscounter, photoelectric sensor, microcontroller, digital tube.毕业设计(论文)目录一、绪论 (1)二、光电计数器整体设计过程 (2)(一)光电计数器的设计任务及要求 (2)1.1设计任务 (2)1.2设计要求 (2)1.3总分析结果 (2)(二)设计方案的选择 (3)2.1采用组合逻辑电路和时序逻辑电路实现 (3)2.2以CD4518为核心的计数电路 (3)2.3以STC89c52为核心的计数电路 (4)2.4方案的选定 (4)2.5系统结构框图 (5)(三)硬件结构及功能 (5)3.1 芯片STC89c52 (5)3.1.1 STC89c52的引脚功能 (5)3.1.2 STC89c52系统结构图 (9)3.2 光电传感器的原理和特点 (9)3.2.1 反射式光电传感器 (9)3.2.2 光敏二极管 (11)3.2.3 红外发光二极管的原理和特性 (12)3.3 蜂鸣器的原理 (12)3.3.1 电磁式蜂鸣器内部结构 (13)3.3.2电磁式蜂鸣器驱动原理 (14)3.4 LED数码显示器简介 (15)3.4.1 LED数码显示器的结构 (15)3.4.2 LED数码显示器的两种接法 (15)(四)硬件电路设计 (16)4.1 发射与接收电路 (16)4.2 计数与显示电路 (17)4.3 报警电路 (18)(五)电路设计原理 (18)5.1计数测量 (18)5.2 中断方式计数 (19)(六)软件程序设计 (19)(七)结论 (23)参考文献 (24)附录 (25)附录一 (25)附录二 (26)一、绪论所谓的光电计数器是利用光电元件制成的自动计数装置。

单片机设计实验报告简单计算器的设计

单片机设计实验报告简单计算器的设计

目录1.总体方案选择 (2)1.1 实验要求: (2)1.2方案设计 (2)2.硬件原理电路图的设计及分析 (2)2.1主控模块 (2)2.1.1 STC89C52单片机主要特性 (3)2.1.2 STC89C52单片机管脚图 (4)2.1.3 STC89C52单片机的中断系统 (4)2.1.4 STC89C52单片机的定时/计数器 (4)2.2矩阵键盘模块设计: (5)2.2.1矩阵键盘原理介绍 (5)2.2.2矩阵键盘电路设计 (5)2.3 LCD液晶显示器简介 (6)2.3.1液晶模块简介 (6)2.3.2液晶显示部分与89S52的接口 (7)3系统软件设计 (9)3.1系统软件流程图 (9)3.2系统整体原理图 (10)4.系统调试 (11)4.1硬件调试 (11)4.2软件调试 (11)4.3调试结果 (12)5. 心得体会 (13)1.总体方案选择1.1 实验要求:1)通过小键盘实现数据的输入,并在LED数码管上显示2)实现+、-、*、/3)在LED数码管上显示结果4)并有清零,退出功能1.2方案设计本系统以STC89C52单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、液晶显示灯功能的控制,起到总控和协调各模块之间工作的作用。

单片机通过检测键盘读取使用者按下对用功能的按键,然后通过单片机内部运放把运算的结果显示在液晶屏幕上。

图1-1系统结构框图本系统结构如图1-1所示,本设计可分为以下模块:单片机主控模块、键盘模块、功率放大模块、闹铃模块、按键设置模块。

下面对各个模块的设计方案逐一进行论证分析。

2.硬件原理电路图的设计及分析2.1主控模块STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。

STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。

STC89C52单片机的基本组成框图见图2-1。

最新基于89C52的计算器设计

最新基于89C52的计算器设计

目录一设计内容及要求1.1 设计任务 (1)1.2 性能指标…………………………………………………………………………………………………1.二设计方案三硬件系统设计3.1 硬件系统主要组成部分设计 (1)3.2 单片机最小系统电路设计 (2)3.3 串行通信电路设计 (3)3.4 键盘电路设计 (3)3.5 显示电路设计 (4)3.6 报警电路设计 (5)四软件系统设计4.1 简易计算器的软件模块 (5)4.2 主程序设计 (5)4.3 运算流程图设计 (6)4.4键盘模块系统设计 (7)五系统调试5.1 调试步骤 (7)5.2 性能分析 (7)六总结参考文献附录一原理图附录二线路板图附录三程序一、设计内容及要求1.1 设计任务设计一十进制加减法计算器,输入范围为(1—999)的整数,除加减法计算外,自行设计两个待扩展键。

1.2 性能指标1.、完成4*4键盘的设计,分别为0~9、+、-、=、清除键、2个待扩展键;2、显示方式为液晶(1602)显示;3、要求具备清零功能;二、设计方案1、单片机选择89C52,它是新一代增强型单片机指令代码完全兼容传统8051,速度快,双串口,加密性好,抗干扰能力强,使用寿命长,价格低廉,8kflash程序空间,运用方便;2、显示系统选用1602液晶并行的显示,是一种低压、微功耗的显示器件,用1602液晶可显示数字,1602有16个外接端口,硬件接线比较简单;3、键盘部分选用采用4(行)×4(列)矩阵式键盘, 通过键盘实现数值和功能键的输入。

本课题的键盘设计为0~9十个数字键,+、-、*、/、=、清零6个功能键;4、串行通信电路选用的芯片是STC232。

三、硬件系统设计3.1 硬件系统主要组成部分设计如图1所示硬件电路主要包括:1、单片机最小系统电路;2、串行通信电路;3、键盘接口电路;4、液晶显示电路;5、报警电路;6、通过单片机最小系统来控制其他的外围电路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建电力职业技术学院课程设计课程名称:《智能仪器》题目:基于STC89C52的简易计算器设计专业班次:姓名:学号:指导教师:学期:2011-2012学年第2学期日期:2012.2目录目录1.引言 (1)1.1 设计意义 (1)1.2 设计任务和主要内容 (1)2. 硬件设计 (2)2.1 系统框图 (2)2.2 最小系统 (2)2.3 矩阵键盘 (3)2.4 LCD1602 (4)3. 软件设计 (5)3.1矩阵键盘扫描原理 (5)3.2 LCD1602的软件设计 (6)3.3 主程序设计 (8)3.4 源程序 (9)3.5 调试结果 (9)4. 设计小结 (9)参考文献 (10)附录 (10)1.引言随着社会的发展,人们生活水平的提高,单片机的应用越来越贴近生活了,人们常用单片机来实现一些简单的电子设计。

计算器在人们的日常生活中是不可或缺的电子产品之一,目前市场上的计算器基本可以满足我们的日常需求,但它还在发展之中,我们要继续研究出更加强大的计算器。

基于这样的理念,本设计采用单片机来设计简易计算器。

本设计是以STC89C52为单片机,LCD为显示器设计的简易计算器,所设计的计算器将完成两位数的加、减、乘、除等功能。

1.1 设计意义通过本次课程设计,进一步掌握单片机知识,知道AT89S52单片机的原理、编程和各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力,同时通过课程设计加深我们对单片机的认识和兴趣,发挥我们的创新能力和动手能力。

1.2 设计任务和主要内容本设计要制作的就是单片机于生活中最为常见的一种应用——简易计算器,以STC89C52单片机作为核心来进行的数字计算器模拟系统设计,可以完成计算器的键盘输入,进行加、减、乘、除两位数范围内的基本四则运算,并在LCD 上显示相应的结果。

设计电路采用AT89C51单片机为主要控制电路,显示采用LCD静态显示,软件方面使用C语言编程,并用PROTUES仿真。

①查阅相关文献资料,了解简易计算器程序的原理,能够运用C 语言进行简易计算器的设计与制作。

②设计基于C 语言的计算器的控制系统硬件部分,画出控制系统硬件框图,设计简易计算器的控制系统的软件部分,首先根据简易计算器所需的具体功能设计好程序流程图,包括控制流程图、控制时序图、梯形图程序设计;根据设计的程序流程图写出代码,并进行代码编译的调试。

③把设计好的软件代码烧入硬件中,然后进行总体调试,直至原先预定要实现的功能完全实现为止。

④设计出系统方框图、单元图、原理总图;画出控制程序流程图,以及编写完整的程序2. 硬件设计2.1 系统框图本文所设计的简易计算器显示系统由STC89C52单片机及其最小系统、LCD1602液晶显示和矩阵键盘等部分组成。

其系统框图如图2.1所示。

STC89C52主控制器件ISP 下载接口晶振电路复位电路编码键盘模块LCD1602图2.1 简易计算器系统框图2.2 最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。

如图2.2为单片机的最小系统。

VCC 4039383736353433323130292827262524232221P20P21P22P23P24P25P26P271602RS 1602RW 1602E R310K VCCP07P06P05P04P03P02P01P00123456789RM1P10P11P12P13P14P15P16P17P30P31P32P33P34P35P36P371234567891011121314151617181920RSTXTAL1XTAL2P10P11P12P13P14P15P16P17RST P30/Rx D P31/TxD P32/INT0P33/INT 1P34/T0P35/T1P36/WR P37/RD XTAL1XTAL2GND P20P21P22P23P24P25P26P27EA ALE PSEN VCC P00P01P02P03P04P05P06P07U1AT89S5297531108642P15RST P17P16CN3VCCSELUSB 12CN2ISPISP VCCC410UF RST R210K+BT0BUTTON1234RESET XTAL1XTAL2CRY112MC6C530P CRYSTAL VCC图2.2 STC89C52最小系统STC89C52 单片机概述:STC89C52是一个低功耗,高性能CMOS 8位单片机,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

STC89C52具有如下特点:40个引脚,8k 的flash 存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(IO )口,5 个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。

2.3 矩阵键盘键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。

目前市场上键盘有独立键盘和矩阵键盘,经过多方考量,本设计采用矩阵键盘。

在键盘中按键数量较多时,为了减少IO 口的占用,通常将按键排列成矩阵形式。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。

所以,在需要的键数比较多时,采用矩阵法来做键盘较为合理。

2.3.1 独立键盘与矩阵键盘的区别计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会比较简单,但是会占用大量的IO 口资源,因此在很多情况下都不采用这种方式。

矩阵键盘扫描程序的优点在于,不用专门的按键延时程序,提高了CPU 效率,也不用中断来扫描键盘,节省了硬件资源。

此外,本键盘扫描程序每次扫描占用CPU 时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。

2.3.2 矩阵键盘与单片机的接口电路下图为矩阵键盘与单片机的接口电路图,由图可知,当无按键闭合时, P10~P13与P14~P17之间开路;当有键闭合时,与闭合键相连的两条IO 口线之间短路。

12 3 +4 5 6 — 78 9 * 0Oc / n=/P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7——图2.3 矩阵键盘接口电路 2.4 LCD16022.4.1 LCD1602液晶简介本设计使用LCD1602液晶显示器来显示。

液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的混作固态。

在点击的作用下,产生冷热变化,从而影响它的透光性,来达到显示的目的。

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,所以它不能显示图形 。

LCD1602液晶显示器具有以下几个优点:低压、微功耗、显示信息量大、寿命长、无辐射、无污染。

2.4.2 LCD1602与单片机的接口电路1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式设置和数据显示等。

本设计采用的是LCD1602液晶模块,是标准的16针插座,接口电路如下图所示:12345678910111214151613VSS VDD VL RS R/WED0D1D2D3D4D5D6D7BLA BLK0.1UFC6+5D1602P20P21P22P10P11P12P13P14P15P16P17R2 200+5DJP2图2.4 LCD1602接口电路知道接口图后,还要了解每个引脚接口的说明,引脚接口说明如下表所示:表2.4 引脚接口说明表3.软件设计3.1矩阵键盘扫描原理如图2.3所示,初始化时,将P1.4置为低电平,通过与0x0f 相与来判断编号符号 引脚说明 编号符号 引脚说明 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 背光源正极 8D1数据16BLK背光源负极所按下的键,此次为扫描位于P1.4那一行的键,若相与结果为0x0e 时说明P1.0所检测出的为低电平,闭合的键应为P1.4行与P1.0列的交叉处的键。

若相与结果为0x0d 则P1.1所检测为低电平,闭合的键应为P1.4行与P1.1列的交叉处的键。

若相与结果为0x0b 则P1.2所检测为低电平,闭合的键应为P1.4行与P1.2列的交叉处的键。

若相与结果为0x07则P1.3所检测为低电平,闭合的键应为P1.4行与P1.3列的交叉处的键。

要把16个键盘全部扫描完需要进行4次这样的逐行扫描,所用方法相同程序类似分别另P1.5,P1.6,P1.7为低电平执行相同操作。

判断有无按键按下的方法:第一步,置列线P14~P17为输入状态,从行线P10~P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。

第二步,行线轮流输出低电平,从列线P14~P17读入数据,若有某一列为低电平,则对应行线上有键按下。

综合一二两步的结果,可确定按键编号。

但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。

12 3 +4 5 6 — 78 9 * 0Oc / n=/P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7——图2.3 矩阵键盘接口电路3.2 LCD1602的软件设计 3.2.1 LCD1602的指令说明1602液晶模块内部的控制器共有11条控制指令,如表3.2所示。

表 3.2控制命令表 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 01*3置输入模式1 I/D S4 显示开/关控制0 0 0 0 0 0 1 D C B5 光标或字符移位0 0 0 0 0 1 S/C R/L * *6 置功能0 0 0 0 1 DL N F * *7 置字符发生存贮器地址0 0 0 1 字符发生存贮器地址8 置数据存贮器地址0 0 1 显示数据存贮器地址9 读忙标志或地址0 1 BF 计数器地址10 写数到CGRAM或DDRAM) 1 0 要写的数据内容11 从CGRAM或DDRAM读数 1 1 读出的数据内容如上表所示,1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

相关文档
最新文档