矩阵键盘简易计算器要点
简易计算器(1602加矩阵键盘)
一、原理图:二、程序#include<reg51.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件#include<math.h>sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P1^7; //忙碌标志位,#define NO_KEY_PRESS 0xff/********************************************************************************************************/unsigned char code tab[]={0xb7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb};unsigned long num1,num2,alg;unsigned char flag;void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<15;j++);}/********************************************************************************************************/void delay(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
简易计算器设计说明书
摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心。
如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
计算器的出现给我们的生活带来了巨大的便利,计算器在我们的生活中随处可见,也是我们日常生活中不可缺少的工具。
本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除简单的基本四则运算,并在LCD上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,利用按键作为计算器的键盘的输入。
显示采用字符LCD 静态显示。
软件方面使用C语言编程,并用PROTUES仿真。
单片微型计算机简称单片机。
它是在一块芯片上集成中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口电路等部件,构成一个完整的微型计算机。
它的特点是:高性能,高速度,体积小,价格低廉,稳定可靠,应用广泛。
单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。
本文介绍了单片机的产生发展、功能特点、应用开发等内容。
【关键词】简单计算器单片机 LCD 应用发展背景近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
本设计采用80c51 芯片,实现了利用单片机进行了一个简单计算器设计。
允许对输入数据进行加减乘除运算及LCD 显示.如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。
LCD液晶显示器是Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。
单片机 矩阵键盘实验 实验报告
实验五矩阵键盘实验一、实验内容1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。
按其它键退出。
2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。
可定义“A”键为“+”键,“B”键为“=”键。
二、实验目的1、学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
三、实验说明1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。
矩阵键盘简易计算器
{
for(j=s+1;j<8;j++)
{
if(temp[j]==48)
k++;
}
if(k==7-s)
{
for(;s<8;s++)
TempData[s]=0;
break;
}
else
TempData[s]=0x98;
}
else
TempData[s]=dofly_DuanMa[temp[s]-'0'];//其他0-9则进行ASCII到数字处理,如当前是'3',用'3'-'0'=3
图3 键盘按键
4
每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
Init_Timer0(); //初始化定时器0
while (1) //主循环
4×4_矩阵键盘计算器设计
西华大学课程设计说明书题目4×4 矩阵键盘计算器设计系(部) 电气信息学院专业(班级) 自动化3班姓名学号指导教师胡红平起止日期2012.6.10-2012.6.30计算机接口及应用课程设计任务书系(部):电气信息学院专业:09自动化指导教师:日期:2012-6-20西华大学课程设计鉴定表摘要近几年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结合,加以完善。
本任务是个简易得三位数的减法运算,用4×4 矩阵键盘及计算器设计,利用数码管实现255内的减法运算。
程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。
本任务重在设计构思与团队合作,使得我们用专业知识,专业技能分析和解决问题全面系统的锻炼。
关键词:单片机,AT89C51,矩阵键盘,数码管ABSTRACTIn recent years, along with the rapid development of science and technology, the application of SCM is unceasingly thorough, it causes the traditional control test technology increasingly updates. In real-time detection and automatic control of single-chip microcomputer application system, often as a core component to use, only microcontroller aspects of knowledge is not enough, should according to specific hardware combined, and perfects.This task is a simple three digits, subtract with 4 * 4 matrix keyboard and a calculator design, use digital tube realization within the 255 subtract. Program is according to the teaching material and within the network reference and compiled program, on the function is not perfect, restrictions also more. This task focuses on design conception and team cooperation, make us with professional knowledge, professional skills to analyze and solve problems of full system exercise.Keywords:Single-chip,AT89C51,Matrix keyboard,digital tube目录摘要 (I)ABSTRACT (II)第1章课题概述 (1)1.1 课题概述 (1)1.2 课题要求 (2)第2章系统设计 (3)2.1 设计思路 (3)2.2 框图设计 (3)2.3 知识点 (3)2.4 硬件设计 (4)2.4.1 电路原理图 (4)2.4.2 元件选择 (5)2.4.3 PCB制版及效果 (9)2.5 软件设计 (10)2.5.1 程序流程图 (10)2.6 系统仿真及调试 (11)2.6.1 硬件调试 (11)2.6.2 软件调试 (11)2.6.3 软硬件调试 (11)结论 (11)参考文献 (14)附录 (15)第1章课题概述1.1 课题概述随着当今时代的电子领域的发展,尤其是自动化的控制领域,传统的分立元件或数字逻辑电路构成的控制系统正被智能化的单片机所取代。
简易计算器课程设计
山东大学控制科学与工程学院课程设计报告书课程设计名称:简易计算器班级:测控一班学号:201000171202姓名:魏凯峰一、电路工作原理该电路主要由以下几部分组成,1、51系列单片机最小系统板,由AT89C51单片机,复位电路,晶振电路(晶振频率是11.0592MHZ),这部分是控制中心,晶振电路可产生程序运行所需要的时钟频率。
2、显示部分,由8位共阴数码管和两个74HC573锁存器、排阻(1K)组成,74HC573锁存器用于动态显示数据,也有驱动显示作用,排阻是限流作用。
3、按键部分,由20位独立键盘组成,按矩阵形式连接,用到9个IO口。
原理:键盘作为数字输入,矩阵键盘的工作原理是当某个键按下时,其两端的IO口电平变化,程序中通过相应位的与或运算,就可以判断出是哪个按键被按下,单片机中的程序不断读取键盘的输入并实时显示在数码管上,数码管用段位选不断切换显示,如当位选为高电平时即为点亮,然后再输入相应的数字段码(该电路中用的是共阴极数码管的字码),这样数码管上便可以显示相应数字。
锁存器中的LE口就是段位选口,高电平有效,数码管中的A、B......G、DP是数码管中的每一段,只要某个字母为高电平,则该段二极管就会被点亮(共阴极)。
在同时显示多个数字时要利用到动态显示,视觉动态显示主要就是利用人眼的视觉感来设计的,一般来说如果显示的频率过慢,则会有断断续续的显示;如果显示的频率加快,则人眼就分辨不出这种视觉残余!二、程序简要说明从主函数开始,先是定义一些变量,然后是调用显示函数displaypro(0),先显示0,然后进入一个大循环while(1),在循环里面先检测键盘keyscan(),并把检测值赋给K,然后是段位选循环8次检测,然后用switch(k)函数来执行键盘操作,k的值从0到9表示输入数字0到9,10到13表示加减乘除,17、15分别表示十六进制和二进制,16表示小数点,14表示正负号,18表示清除,19是等于号。
数码管显示简易计算器说明书
目录一、原理图设计说明 (1)1.1数码管硬件电路设计 (1)1.2矩阵键盘电路设计: (2)二、程序设计说明 (3)2.1键盘扫描程序设计 (3)2.2算术运算程序设计 (4)2.3显示程序设计 (5)三、工作原理图及程序流程图 (6)四、程序清单 (9)五、参考文献 (15)一、原理图设计说明1.1数码管硬件电路设计数码管数据显示的硬件电路由单片机、4 位共阳极数码管、位驱动电路、限流电阻等组成。
实验板中用杜邦线将P7 与单片机IO 口相连(这里以P0 口为例)。
用跳线将P8 与单片机P2 低四位相连,P0 口送出数码管段选码,P2 送出位选码。
图1-1 数码管硬件电路原理图1.2矩阵键盘电路设计:4*4 矩阵键盘行输入接单片机P1.0-P1.3,列输入接单片机P1.4-P1.7,通过扫描方式检测是否有键按下,并确定键值,使用矩阵键盘时注意给P10 矩阵键盘选择端使能。
对键盘进行编号,S3-S18,按下相应按键,在数码管上显示相应键值(0-F)。
例如按下S10 键,显示A,按下S0 键,显示0。
图1-2 矩阵键盘电路原理图二、程序设计说明2.1键盘扫描程序设计键盘扫描程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。
其流程图如图2-1所示。
图2-1 键盘扫描程序流程图算术运算程序的过程为:先判断输入的运算符是+、-、*、/ 中的哪一个,若是+或-,则要判断运算结果是否溢出,溢出则显示错误信息,没溢出就显示运算结果,若是/,则要先判断除数是否为零,为零就显示错误信息,不为零则显示运算结果,若是-,则直接显示运算结果。
其流程图如图2.2所示。
图2-2 算术运算程序设计流程图先是程序的过程为:显示开始时,先进行LED的初始化,判断是否显示,若不显示,则返回,若显示,则进行相应功能的设置,然后送地址和数据,再判断是否显示完,显示完则返回,没有显示完则继续送地址。
4×4矩阵键盘的键值计算及编程
.j
2 读取I/O口值的练习
❖ 一般都是自高到低读出一个端口各脚电平 ,得到8位二进制 数,再将8位二进制转换成2位十六进数。
P1口值=P1.7 P1.6 P1.5 P1.4P1.3 P1.2 P1.1 P1.0 =1101 1111=0x df P3口值= P3.7 P3.6 P3.5 P3.4P3.3 P3.2 P3.1 P3.0 =1111 1010=0xfa
(4行,1列) 77 (4行,2列) 7b (4行,3列) 7d (4行,4列) 7e
.j
3 键盘的键值
总结
4×4矩阵键盘的键值 共有16个,计算键值时总是: 先找出行线值,再找出列线值,最后绘出矩阵键盘的键
值。
.j
4 键盘扫描编程__线反转法
/************键盘扫子描函数*******************/ char keyscan(void) //键盘扫描函数,键盘使用P2口 {
位置
(1行,1列) (1行,2列) (1行,3列) (1行,4列) (2行,1列) (2行,2列) (2行,3列) (2行,4列)
键值
e0+0e=ee d0+0e=de b0+0e=be 70+0e=7e
e0+0d=ed d0+0d=dd b0+0d=bd 70+0d=7d
(3行,1列) (3行,2列) (3行,3列) (3行,4列)
e0+0b=eb
d0+0b=db b0+0b=bb 70+0b=7b
(4行,1列) (4行,2列) (4行,3列) (4行,4列)
e0+07=e7
d0+07=d7 b0+07=b7 70+07=77
矩阵键盘的键值计算和编程课件
.j
景德镇学院机电系
3 键盘的键值
找列线值时,程序使P2=0xf0; P2.7列线上开关按下会使P2口值变为 0x70, 其余同理。
.j
景德镇学院机电系
键盘的键值
位置
(1行,1列) (1行,2列) (1行,3列) (1行,4列) (2行,1列) (2行,2列) (2行,3列) (2行,4列)
键值
线反转法
矩阵键盘的键值计算和编 程
景德镇学院机电系
本讲主要内容
1
键值计算基本原理
2
读取I/O口值的练习
3
键盘的键值计算
4
键盘扫描编程__线反转法
5
一个数码管显示矩阵键盘值的实验
.j
1 键值计算基本原理__“好人被带坏”
景德镇学院机电系
默认状态:单片机通电复位后P1 P2 P3口每个脚 都输出高电平,P0口要接上拉电阻才能输出高电平。
a 各脚状态标记都是红色方块。 b 用电压测量都是5V。
.j
1 键值计算基本原理__“好人被带坏”
景德镇学院机电系
要使一个引脚变为低电平有如下方法:
a 接地。 b 用逻辑状态信号人为改变。 c 编写程序使其输出低电平。
.j
1 键值计算基本原理__“好人被带坏”
景德镇学院机电系
一个低电平引脚与高电平引脚相接,结果如何? 实验结果:“好人被带坏”,即高电平引脚电压被变
(2行,1列) d7 (2行,2列) db (2行,3列) dd (2行,4列) de
(3行,1列) b7 (3行,2列) bb (3行,3列) bd (3行,4列) be
(4行,1列) 77 (4行,2列) 7b (4行,3列) 7d (4行,4列) 7e
4x4矩阵键盘计算器
4x4矩阵键盘计算器西华大学电气信息学院智能化电子系统设计报告目录1前言 (1)1.1设计背景 ............................................................1 1.2系统设计目的和意义 .................................................. 1 2 总体方案 .............................................................. 2 2.1方案论证 (2)2.3 最终方案 ............................................................3 3单元模块设计 .......................................................... 4 3.1各单元模块功能介绍及电路设计 ........................................ 4 3.2系统元器件选择 (7)4软件设计 ..............................................................8 4.1系统程序流程 ....................................................... 8 5系统调试 ............................................................. 10 5.1 硬件调试 .. (10)5.2 软件调试 ...........................................................10 5.3 软硬件调试 ......................................................... 10 7 总结 (12)8 参考文献 .............................................................13 附录 ...................................................................14第 0 页西华大学电气信息学院智能化电子系统设计报告1前言1.1设计背景计算器是一种在日常生活中应用广泛的电子产品,无论是在超市商店,还是在办公室,或是家庭都有着它的身影。
简易计算器的设计
辽宁工业大学单片机原理及接口技术课程设计(论文)题目:简易计算器的设计院(系):电气工程学院专业班级:自动化132班学号: 4学生姓名:**指导教师:(签字)起止时间:课程设计(论文)任务及评语院(系):电气工程学院教研室:自动化注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算摘要计算器是日常生活中比较的常见的电子产品之一。
在各种智能化产品中也常常会用到计算器,而且在现代化系统中人们对计算器技术要求更加的严格和精确,因此计算器已成为生产中必不可少的设备。
本设计的硬件包括4*4键盘、单片机最小系统、液晶显示器,软件包括C语言编程和Keil uVision5。
简易计算器的设计使得计算器的技术更加的成熟、简单。
简易计算器设计是以AT89C52单片机为核心的,输入采用4*4矩阵键盘,简易计算器不仅可以进行加、减、乘、除带符号数字运算(八位整数),还可以进行负数运算和错误提示,并在液晶显示器LCD1602上显示操作结果。
计算器的出现不仅使计算数据越来越方便,而且在算术方面节省了大量的计算时间。
关键词:单片机;矩阵键盘;液晶显示;计算器目录第1章绪论................................ 错误!未定义书签。
第2章课程设计的方案...................... 错误!未定义书签。
概述............................................ 错误!未定义书签。
系统组成总体结构................................ 错误!未定义书签。
第3章硬件设计............................ 错误!未定义书签。
单片机最小系统设计.............................. 错误!未定义书签。
AT89S52单片机简介 .......................... 错误!未定义书签。
单片机设计实验报告简单计算器的设计
目录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。
单片机 矩阵键盘实验 实验报告
实验五矩阵键盘实验一、实验内容1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。
按其它键退出。
2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。
可定义“A”键为“+”键,“B”键为“=”键。
二、实验目的1、学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
三、实验说明1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。
4x4矩阵键盘计算器
4x4矩阵键盘计算器西华大学电气信息学院智能化电子系统设计报告目录1前言 (1)1.1设计背景 ............................................................1 1.2系统设计目的和意义 .................................................. 1 2 总体方案 .............................................................. 2 2.1方案论证 (2)2.3 最终方案 ............................................................3 3单元模块设计 .......................................................... 4 3.1各单元模块功能介绍及电路设计 ........................................ 4 3.2系统元器件选择 (7)4软件设计 ..............................................................8 4.1系统程序流程 ....................................................... 8 5系统调试 ............................................................. 10 5.1 硬件调试 .. (10)5.2 软件调试 ...........................................................10 5.3 软硬件调试 ......................................................... 10 7 总结 (12)8 参考文献 .............................................................13 附录 ...................................................................14第 0 页西华大学电气信息学院智能化电子系统设计报告1前言1.1设计背景计算器是一种在日常生活中应用广泛的电子产品,无论是在超市商店,还是在办公室,或是家庭都有着它的身影。
ADT矩阵键盘的简易操作
矩阵键盘_简易操作手册矩阵键盘二大功能:监视器画面的调用及控制快球运行1) 首先将键盘的CODE 与矩阵的CODE1对接,当键盘通电以后,屏幕会显示如下:输入键盘在系统中的识别号:『0』~『15』(最多可以连接16个键盘)→ 按『ACK 』键确认;如果 3秒钟没有输入键盘识别号,将按上次登录时的识别号登录。
键盘将在3秒钟内自动寻找矩阵主机,如果系统中有矩阵主机且连线正确的话,通讯灯(CODE )会1秒钟闪烁,接下来输入4位登录矩阵系统密码(初始密码为“0000”),输入方法为:『????』密码 → 按『ACK 』键确认(密码只能是数字),输入成功后屏幕会显示:如果系统中没有矩阵或连线不正确,面板通讯指示灯(CODE )不会一秒钟闪烁,键盘找不到矩阵主机,也会跳过输入密码这一步,直接进入正常的工作界面。
2)选用某一台监视器2.1在键盘数字区,输入所要调用的有效监视器。
【1~64】2.2 再按MON 键,这時MON 显示区 → 显示新输入的监视器号。
例如:调用1号监视器1. 按『1』数字键2. 按『MON 』键此时,1号监视器为当前受控监视器。
3)调用某一台摄影机画面到某一台监视器上在数字键区输入需要调用的『摄影机号』,再按键盘『CAM 』键。
例如:调用123号摄影机到4号监视器上。
按『4』键 → 按『MON 』键 → 再按『123』键 → 按『CAM 』键。
MON:001 CAM:0001SIT: 01 ENT:0000Input Keyboard Num00004)调用系统切换队列1.选择要运行的监视器号,按:数字键+MON键;2.再按N键+RUN键”(N指即将要调用的第N个切换队列)设置系统切换队列:<1>选中『设置系统切换队列』<2>举例:一台监视器显示摄影机1.2.3.4.. 4支CCD 每隔3秒巡回轮跳.1.见上图摄影机依次填入1.2.3.4.停留时间都填入3秒连接设为N(参矩阵连线设定第2页)2.见下图队列选择为第一队列,页码选择为第一页,(每一页可以设置16个摄影机,每个队列总共可以设置64个摄影机)3.设置完成之后点“发送本页内容“如果设置成功会提示表示设置成功。
C++矩阵简单的计算器
C++课程设计---矩阵简单的计算器一、设计目的1、熟练掌握和运用c++编写程序代码的能力。
2、初步了解输入、建立并输出矩阵以及矩阵加法、减法、乘法、赋值和转置的算法设计。
3、掌握基本的运算符重载函数的书写。
4、掌握静态数据成员和静态成员函数的具体声明和实现,体会它们的特殊作用。
5、掌握并体会动态内存分配的实际应用。
6、运用简单的循环实现简单的菜单程序。
二、总体设计(1)UML图三、详细设计〔1〕类中的函数功能及实现1、有参数的构造函数Matrix(int l,int w,int *n);实现:Matrix::Matrix(int l,int w,int *n){length=l;width=w;num=new int[length*width];int *p=num;for(int i=0;i<length*width;i++){*p++=*n++;}}说明:为有参数的对象变量初始化。
2、无参构造函数〔默认形式的构造函数〕Matrix()实现:Matrix::Matrix(){length=1;width=1;num=new int(1);}说明:为无参数的对象进行初始化。
3、矩阵的拷贝构造函数Matrix::Matrix(Matrix &jz)实现:Matrix::Matrix(Matrix &jz){length=jz.length;width=jz.width;num=new int[length*width];for(int i=0;i<length*width;i++){*(num+i)=*(jz.num+i);}}目的:用已存在的对象jz去初始化新建立的对象。
4、矩阵输入函数void Matrix::setnum(int l,int w)实现:void Matrix::setnum(int l,int w){length=l;width=w;if(l==0||w==0){cout<<"矩阵行列不能为0"<<endl;return ;}else{delete[]num;num=NULL;num=new int[length*width]; //开辟length*width大小的空间int *p=num;cout<<length<<"*"<<width<<"矩阵:"<<endl;for(int i=0;i<length;i++){cout<<"请输入第"<<i+1<<"行元素:"<<endl;for(int j=0;j<width;j++){cout<<"第"<<j+1<<"列元素:";cin>>*(p+i*width+j);}}}}说明:矩阵输入函数主要读进去需要进行计算的原始矩阵,要注意的是矩阵的行列数不能为1,所以应该用选择语句排除一行一列的矩阵出现。
矩阵式键盘计数器课程设计
单片机课程设计报告计算器**:***学号:********成员:李洋,肖勇,吴和贤,周兵一、设计目的1、进一步熟悉89C51单片机外部引脚线路连接,掌握单片机全系统调试的过程及方法。
2、通过计算器控制系统的设计,掌握矩阵式键盘的使用方法,和简单程序的编写,3、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力二、设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统2、该系统具有加减乘除等功能。
3、用Proteus 7仿真工作的全过程,用Protel 99se画出原理图及PCB图4、有相应的实物图5、掌握4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。
三、设计分析(1的序号。
键盘中对应按键的序号排列如图(1)所示。
数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。
即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。
该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。
(2)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。
(3)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。
(4)判别键号先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号的计算。
(5)显示结果.7,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算器
班级:
学号:
学生姓:
指导老师:
日期:2014.7.5
******电子与信息工程学院
1
2
此次课程实践题目是基于单片机简单计数器的设计,本此设计使用的是Intel公司MCS-51系列的8051AH单片机。设计的计算器可以实现2位小数的加、减、乘、除运算以及整数的乘方运算,其中用4*4矩阵键盘来输入待参与运算的数据和运算符;八位数码管动态显示输入待参与运算的数据以及运算后产生的结果,每个硬件模块的调用过程中涉及到了函数入口及出口参数说明,函数调用关系描述等。
图3 键盘按键
4
每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
本次课程设计的计算器主要完成了矩阵键盘的数据或符号输入、数码管动态显示输入值、单片机处理输入的数据、数码管动态显示计算结果。在整个的设计电路中,输入输出的数据均采用字符的形式(temp[i]=num+'0'(键盘输入)sprintf(temp,"%f",a)(数码管输出));使用在单片机进行数值运算的过程中,数据使用函数sscanf(temp,"%f",&a),即将数据缓冲区的字符型数据转换成浮点型并存到a变量所对应的地址,这样之后在对变量进行加减乘除运算。因为是浮点数运算,所以结果也是浮点数,在输出的时候,小数点也能够输出,从而免去在运算结果中对小数的定位工作。
3
计算器以MCS-51系列的8051AH单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后控制LED数码管的输出。整体框图如图1所示:
图3 整体框图
本系统硬件主要由矩阵键盘、独立键盘I/O输入输出、数码管显示等主要部分组成。各模块的主要功能如下:
5
在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计、编程和调试,然后组合起来。这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定的难度。根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。
按照上面的思想,在进行小数运算时,输入输出小数并不能正常显示。后来通过和组员一起仔细研究,发现数码管段码中并没有小数点,所以我们在输入数据时将每一个输入的与小数点的ASCII码进行比较(if(num=='.')),一旦条件成立,将小数点存入数据缓冲temp[8]数组中,同时也将小数点的ASCII码存入显示缓冲区TempData[8]中(定义小数点的段码0x98)。这样之后关于小数点显示问解决题。
4
这次设计共涉及到了处理器、矩阵键盘、独立键盘、数码管显示等主要的模块,在软件主程序中,通过函数的调用实现相应的功能模块处理。通过num=KeyPro()函数的调用实现了将通过4*4矩阵行列反转扫描法得到的数据送入单片机,用于处理器进一步处理数据。因为该课程实践要求计数器具有2位小数的加减乘除运算,所以我们在读取矩阵键盘之后,使用语句sscanf(temp,"%f",&a),该语句的意思是将字符串数组temp中的字符以浮点数的形式输出到变量a,因此键盘输的的数据都被转换成了浮点数,所以可以很方便的实现带小数的加减乘除运算,运算所得结果也是浮点数的形式。在对输出结果输出到数码管的过程中,使用语句sprintf(temp,"%f",a);,该语句的意思是把浮点数变量a输出到字符串数组temp中,此时就可以调用显示函数对字符形式的计算结果进行输出。
(1)矩阵键盘将十六进制编码的数字送到单片机。
(2) 单片机扫描键盘信号并接收,对输入的键盘信号进行处理
(3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。实践设计的具体流程图如下图2所示:
图3 整体流程图
4
(处理器型号型号:Intel MCS-51系列8051AH)
计算器设计原理图
本次实践所设计的计算器的操作数为浮点型,当两个数参与运算之后,运算结果如果出现小数部分全为0的情况,根据实际应该只显示整数部分,但是实验结果是小数0全显示。但是由于时间关系我们没有调试成功。现提供一个思路:在显示小数点的时候,设置一个for循环,将小数点后的各位与'0'进行比较,如果该位等于0,设置一个新变量自加一次,之后依次比较,新变量记录小数点后0的个数。循环结束之后,将变量值与小数点后的总位数进行比较,如果相等说明小数点后全为0.之后设置一个for循环将小数点后的数据的ASCII全部赋值0。部分程序如下:
4.1
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式。为此,我们引入了矩阵键盘的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率,如图3所示:
当无按键闭合时,P1.0-P1.3与P1.4-P1.7之间开路;当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置行线P1.4-P1.7为输入状态,从列线P1.0-P1.3输出高电平,读入列线数据,若某一列线为高电平,则该列线上有键闭合。第二步,读入列线值,将该值输出到列线值,之后再读出列线值。综合一二两步的结果,最后键盘最后组合码值可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。