基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真
单片机课程设计---4×4矩阵式键盘识别显示电路的设计
《单片机原理及应用》课程设计
题目:4×4矩阵式键盘与单片机连接与编程
专业:测控技术与仪器
班级:机电082-1 姓名:
学号:
指导老师:
组员:
( 2011.7 .13)
目录
第1节引言 (2)
1.1 4*4矩阵式键盘系统概述 (2)
1.2 本设计任务和主要内容 (3)
第2节系统主要硬件电路设计 (4)
2.1 单片机控制系统原理 (4)
2.2 单片机主机系统电路 (5)
2.2.1 时钟电路 (8)
2.2.2 复位电路 (8)
2.2.3 矩阵式键盘电路 (8)
2.3 译码显示电路 (9)
第3节系统软件设计 (13)
3.1 软件流程图 (13)
3.2 系统程序设计 (14)
第4节结束语 (17)
参考文献 (18)
第一节引言
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
1.1 4*4矩阵式键盘识别显示系统概述
矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。
基于51单片机的简易计算器设计
基于单片机的简易计算器设计
摘要2
关键字:80C51 LCD1602 4*4矩阵键盘计算器2
第一章绪论2
1。1系统开发背景2
1。2系统开发意义2
1.3设计目的2
1。4设计任务2
第二章单片机发展现状2
2.1目前单片机的发展状况2
2。1。1单片机的应用场合3
2.2计算器系统现状4
2.3简易计算器系统介绍4
第三章系统硬件设计及说明4
3。1系统组成及总体框图5
3.2AT89S52单片机介绍6
3。3其它器件介绍及说明8
3.3.1 LCD1602液晶显示8
3。3.2 4*4矩阵扫描按键9
第四章 PROTEUS模拟仿真11
第五章系统硬件设计及说明11
第六章软件设计11
6.1汇编语言和C语言的特点及选择11
6.2源程序代码12
摘要
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。
计算机在人们的日常生活中是比较常见的电子产品之一.可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计主要以
80C51单片机为控制芯片,用C语言进行编程实现,通过4*4矩阵键盘控制,输出用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。
关键字:80C51 LCD1602 4*4矩阵键盘计算器
第一章绪论
1.1 系统开发背景
随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。计算器在人们的日常中是比较的常见的电子产品之一。如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好的为各个行业服务,成了如今电子领域重要的研究课题.
矩阵键盘扫描汇编程序
4*4矩阵键盘扫描汇编程序(基于51单片机)
// 程序名称:4-4keyscan.asm
;// 程序用途:4*4矩阵键盘扫描检测
;// 功能描述:扫描键盘,确定按键值。程序不支持双键同时按下,
;// 如果发生双键同时按下时,程序将只识别其中先扫描的按键;// 程序入口:void
;// 程序出口:KEYNAME,包含按键信息、按键有效信息、当前按键状态;//================================================================== ====
PROC KEYCHK
KEYNAME DATA 40H ;按键名称存储单元
;(b7-b5纪录按键状态,b4位为有效位,
;b3-b0纪录按键)
KEYRTIME DATA 43H ;重复按键时间间隔
SIGNAL DATA 50H ;提示信号时间存储单元
KEY EQU P3 ;键盘接口(必须完整I/O口) KEYPL EQU P0.6 ;指示灯接口
RTIME EQU 30 ;重复按键输入等待时间
KEYCHK:
;//=============按键检测程序========================================= ====
MOV KEY,#0FH ;送扫描信号
MOV A,KEY ;读按键状态
CJNE A,#0FH,NEXT1 ;ACC<=0FH
; CLR C ;Acc等于0FH,则CY为0,无须置0
NEXT1:
; SETB C ;Acc不等于0FH,则ACC必小于0 FH,
;CY为1,无须置1
4×4_矩阵键盘计算器设计
西华大学
课程设计说明书
题目4×4 矩阵键盘计算器设计系(部) 电气信息学院
专业(班级) 自动化3班
姓名
学号
指导教师胡红平
起止日期2012.6.10-2012.6.30
计算机接口及应用课程设计任务书
系(部):电气信息学院专业:09自动化
指导教师:日期:2012-6-20
西华大学课程设计鉴定表
摘要
近几年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结合,加以完善。
本任务是个简易得三位数的减法运算,用4×4 矩阵键盘及计算器设计,利用数码管实现255内的减法运算。程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们用专业知识,专业技能分析和解决问题全面系统的锻炼。
关键词:单片机,AT89C51,矩阵键盘,数码管
ABSTRACT
In 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.
单片机4×4矩阵键盘设计方案
1、设计原理
(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的
P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。
(2)键盘中对应按键的序号排列如图14.1所示。
2、参考电路
图14.2 4×4矩阵式键盘识别电路原理图
3、电路硬件说明
(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。
(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。
4、程序设计内容
(1)4×4矩阵键盘识别处理。
(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
5、程序流程图(如图14.3所示)
6、汇编源程序
;;;;;;;;;;定义单元;;;;;;;;;;
COUNT EQU 30H
;;;;;;;;;;入口地址;;;;;;;;;;
单片机4x4矩阵式键盘的设计与仿真
课程设计报告
(单片机原理和应用)
题目名称 4x4矩阵式键盘
专业班级
学生姓名
学号
指导教师
4x4矩阵式键盘的设计与仿真
1、设计原理:
矩阵式键盘工作原理
矩阵式键盘使用于按键数量较多的场合,它由行线与列线组成,按键位于行、列的交叉点上,行、列线分别列接到按键开关的两端。行线通过上拉电阻接到+5V上。无键按下时,行线处于低电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平一样为高电平。这是识别矩阵键盘按键是否被按下的关键所在。一个4x4的行列可以构成一个16按键的键盘。
本次以扫描法来识别按键。在扫描法中分两步处理按键,首先是判断有无键按下,让所有的列线置高电平,检查各行线电平是否有变化,如行线有一个为高,则有键按下。当判断有键按下时,使列线依次变低,其余各列为高电平,读行线,进而判断出具体哪个键被按下。
下表为7段共阴极段码表:
显示字符共阴极段码显示字符共阴极段码
“0”3FH“8”7FH
“1”06H“9”6FH
“2”5BH“A”77H
“3”4FH“b”7CH
“4”66H“C”39H
“5”6DH“d”5EH
“6”7DH“E”79H
“7”07H“F”71H
“灭“00H
实验环境
Keil uVision3
proteus 7
功能设计描述
由4x4组成16个按钮矩阵式键盘
按键成功会在7段LED显示该按键的键号
主要知识点
Keil uVision3的使用及调试
proteus 7的使用及调试
键盘接口、LED 显示接口、模拟电路的相关知识2、实现及编程
电路原理图
程序内容
4x4行列式键盘识别
7段数码管输出
×4矩阵键盘51单片机识别实验与程序
4×4矩阵键盘51单片机识别实验与程序
1.实验任务
图
2.硬件电路原理图
图
3.系统板上硬件连线
(1.把“单片机系统“区域中的-端口用8芯排线连接到“4X4行列式键盘”
区域中的C1-C4 R1-R4端口上;
(2.把“单片机系统”区域中的AD0-AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:AD0对应着a,AD1
对应着b,……,AD7对应着h。
4.程序设计内容
(1.4×4矩阵键盘识别处理
(2.每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键
的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电
阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的
任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还
要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,
使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回
馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
5.程序框图
图
C语言源程序
#include <>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
void main(void)
新基于51单片机的简易计算器
基于51单片机的简易计算器
1、前言:
本设计是基于51系列单片机来进展的数字计算器系统设计,可以完成计算器的键盘输入,进展加、减、乘、除根本四则运算,并在LCD上显示相应的结果;设计电路采用STC90C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。
2、设计任务:
计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;〔2〕LCD 显示模块;〔3〕算术运算模块;〔4〕错误处理及提示模块。
3、主体设计局部:
〔1〕、系统模块图:
2〕、系统总流程图:
4、硬件局部
单片机局部+矩阵键盘+1602显示
如下列图为简易计算器的电路原理图。P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表----所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。
简易计算器电路原理图
矩阵键盘有16个按键,满足对简易计算器的计算实现,显示局部采用LCD1602,第一行显示计算的数值符号,第二行显示计算结果。
LCD显示模块:
本设计采用LCD液晶显示器来显示输出数据。通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。
5、软件局部
*include<reg52.h>
*include<intrins.h>
*define uchar unsigned char
sbit lcden=P2^7;
sbit lcdrs=P2^6;
4X4矩阵键盘+1602——51单片机的Proteus实验
4X4矩阵键盘+1602——51单片机的
Proteus实验
本文转载自小波电子工作室。
C语言源代码
//======================================================
依次可以从键盘输入0-f,在1602LCD上显示出来
(此程序在所买开发板上验证通过)
//======================================================
//******** 小波电子工作室All rights reserved******
//******** 个人主页:/niejinbo **
//******** 文件名:lcd_key.1.c ************
//******** 功能概要:4*4矩阵键盘扫描***********
//******** MCU: STC89C52 晶振:11.0592Mhz **********
//******** 设计者:聂金波************
//******** 完成日期:2008-07-14 ************
//******** 当前版本:0714.1 ************
//******** 改进说明:暂无************
//******** 补充说明: 从键盘输入0-F,在LCD上显示出来
//*********头文件区*******************
#include<reg52.h>
#include<math.h>
#include<absacc.h>
51单片机--矩阵键盘仿真
51单片机--矩阵键盘仿真
矩阵键盘实验
该实验采用proteus 7.4 sp3进行的仿真,仿真原理图如下图所示,该实验是4×4矩阵键盘实验,每按一个键最后一个数码管显示,原先显示的数左移一位,六位都显示后从新从第一个开始显示。键盘输入值如下图键盘上标注。
输入0、1、2时的显示结果:
有输入5、6、7后的显示结果:
/********************************************************************** * 程序名; 矩阵键盘实验
* 功能:数码管通过动态扫描显示键盘输入的数字,输入一个数,数码管上* 显示的数左移一位,达到六位后从第一个开始显示.
* 编程者:ZPZ
* 编程时间:2009/8/11
**********************************************************************/ #include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
bit flag=0;
uchar temp,i,m,s=0,s1,s2,s3,s4,s5;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e};
void display(uchar a);
机电单片机课程设计--4乘4矩阵键盘-汇编语言
目录
1 引言 (2)
2 4×4矩阵键盘控制LED工作原理及软硬件设计、仿真调试 (2)
2.1 4×4矩阵式键盘识别显示系统概述 (2)
2.2 4×4矩阵式键盘原理 (4)
2.3 4×4矩阵式键盘控制LED显示方法 (4)
2.4 电路设计及电路图 (5)
2.5 4×4矩阵式键盘软件编程 (7)
2.6 4×4矩阵式键盘软件仿真调试分析 (13)
3 结论 (13)
4参考文献 (13)
1 引言
随着现代科技日新月异的发展,作为新兴产业,单片机的应用越来越广。单片机以其体积小、重量轻、功能强大、功耗低等特点而备受青睐。键盘作为一种最为普遍的输入工具在单片机项目应用上显得尤为重要。
用MCS51系列的单片机并行口P1接4×4矩阵键盘,以P1.0-P1.3 作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的0-F序号。
2 4×4矩阵键盘控制LED工作原理及软硬件设计、仿真调试
2.1 4×4矩阵式键盘识别显示系统概述
矩阵式键盘模式以4个端口连接控制4*4个按键,实时在LED数码管上显示按键信息。显示按键信息,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。矩阵式键盘简介:矩阵式键盘又称行列键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
最常见的键盘布局如图1所示。一般由16个按键组成,在单片机中正好可以用一个P 口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。
4-4矩阵键盘控制16个LED灯
一、任务说明
本次的任务是利用51单片机设计一个4*4矩阵键盘输入系统,用16个发光二级管对应16个不同的按键。每按下一个按键对应的发光二极管就亮。
矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为N*N个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
最常见的键盘布局如图1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。
图1 键盘布局
利用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.3各管脚作输入线,以单片机的P1.4-P1.7各管脚作输出线;利用P2、P3口控制灯1-灯16,。用Proteus绘制其电路原理图(附录一)。此任务用到了AT89C51芯片,还用到了晶体振荡器、按钮开关、发光二级管以及一些电阻。
这次任务中采用C语言编写程序,在编译过程中设置成自动产生HEX文件,将此文件导入AT89C51中,即可实现相应的功能。
二、原理图绘制说明
电路原理图的设计与绘制是整个电路设计的基础,设计一个电路原理图的工作包括:设置电路图图纸的大小,规划电路图的总体布局,在图纸上放置元器件并对元器件进行调整,进行布线和整体布局,最后保存并打印输出等几个步骤。
安装完Proteus后,运行ISIS 7 Professional,在原理图编辑窗口绘制电路图,在该界面下还有预览窗口和元件列表区,在左侧的工具箱中还有模型选择工具栏,方向工具栏及仿真按钮等工具。其具体的使用步骤如下:
课程设计制作单片机的4X4矩阵键盘
目录
摘要 (2)
第一章硬件部分 (3)
第一节AT89C51 (3)
第二节4*4矩阵式键盘 (6)
第三节LED数码管 (8)
第四节硬件电路连接 (10)
第二章软件部分 (12)
第一节所用软件简介 (12)
第二节程序流程图 (14)
第三节程序 (17)
第三章仿真结果 (19)
心得体会 (21)
参考文献 (22)
摘要
电子信息行业将是人类社会的高科技行业之一,是设施现代化的基础,也是人类通往科技巅峰的直通车。电子行业的发展很重要,而计算机技术是现代科技发展的重要组成部分。
矩阵式键盘控制系统可以提高效率,是进行按键操作管理的有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身的要求。并能正确、实时、高效地显示按键信息,以提高工作效率和资源利用率。
矩阵式键盘是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,并通过单片机,显示在LED数码管上。单片机控制键盘显示系统,可以对不同的按键进行实时显示,其核心是单片机、键盘矩阵电路和数码管显示电路。4*4矩阵式键盘以AT89C51单片机为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,广泛应用于各种场合。
第一章硬件部分
第一节AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚如图所示
51单片机4×4矩阵按键程序汇编
51单片机4×4矩阵按键程序(汇编)
ORG 0000H
LJMP MAIN ;跳转至主程序
ORG 0100H
MAIN: LCALL KEY_IN
MOV P0,A
LCALL DEL
AJMP MAIN
;======================
;判断有无按键,无按键直接返回
;KEY_IN: MOV P1,#0F0H ;置行线为低电平,读列线状态(在高4位,无按键则全为1)
; MOV A,P1
; ANL A,#0F0H ;屏蔽低四位
; MOV B,A
; MOV P1,#0FH ;置列线为低电平,读行线状态(在低4位,无按键则全为1)
; MOV A,P1
; ANL A,#0FH
; ORL A,B ;高四位与低四位重新组合
; CJNE A,#0FFH,KEYSCAN ;0FFH为末按键
; RET
;==========================================
;//=============键盘扫描程序
============================================== ;KEYSCAN:
KEY_IN: MOV R1,#0 ;初始化列地址
MOV R3,#11110111B ;初始化扫描码
LOOP:
MOV A,R3
RL A
MOV R3,A ;保留扫描码
MOV P1,A ;送扫描码
MOV A,P1 ;读键盘
ORL A,#0F0H ;屏蔽高四位
CJNE A,#0FFH,NEXT31 ;A不等于FFH,说明该列有按键动作
INC R1 ;列地址加1,准备扫描下一列
基于Proteus软件的4x4矩阵键盘设计与仿真
基于Proteus软件的4x4矩阵键盘设计与仿真4*4矩阵键盘仿真
摘要
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关
注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格
低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛
地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化
设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。单片机系统
的开发过程中,程序设计语言的选择尤为重要。C51提供高效的代码,结构化的编程和丰
富的操作符,多被采用。C51是一种编译型程序设计语言,它兼顾了多种高级语言的特点,
并具备汇编语言的功能,而且可以直接实现对硬件的控制。本毕业设计以
AT89S51芯片为
核心,程序设计采用汇编语言,辅以必要的电路,并运用proteus软件设计了4*4矩阵键盘仿真。
目录
前言 (1)
第一章单片机的概述.................................................................. 2 1.1什么是单片机.......................................................................................2 1.2MCS-51单片机内部结构............................................................ 2 1.3单片机的应用领域 (3)
89C51单片机44键盘应用实例程序设计(含硬件仿真电路图)
89c51单片机4*4键盘应用实例硬件仿真电路图如下:
程序如下(编译成功):
#include"reg51.h"
#include"LCD1602.h"
#include"hardware.h"
char code tab[4][4]={ {'1','4','7','#'},
{'2','5','8','0'},
{'3','6','9','*'},
{'A','B','C','D'}}; //0到F的16个键植
void delay(unsigned char a)
{
unsigned char i;
while(a--)
for(i=100;i>0;i--)
;
}
char kbscan() //键盘扫描
{
unsigned char hang,lie,key;
if(P3!=0x0f)
delay(5);
if(P3!=0x0f)
{
switch(P3&0x0f)
{
case 0x0e:lie=0;break;
case 0x0d:lie=1;break;
case 0x0b:lie=2;break;
case 7:lie=3;break;
}
P3=0xf0;
P3=0xf0;
switch(P3&0xf0)
{
case 0xe0:hang=0;break;
case 0xd0:hang=1;break;
case 0xb0:hang=2;break;
case 0x70:hang=3;break;
}
P3=0x0f;
while(P3!=0x0f);
key=tab[hang][lie];
}
else
key=0;
return (key);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及接口技术
课程设计报告
设计题目:计算器设计
学号:*********
*名:***
指导教师:**
信息与电气工程学院
二零一三年七月
计算器设计
单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。
数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。
注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。字数不要太多,300-500字。
另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。
1. 设计任务
结合实际情况,基于AT89C51单片机设计一个计算器。该系统应满足的功能要求为:
(1) 实现简单的四位十进制数字的四则运算;
(2) 按键输入数字,运算法则;
(3) LED数码管移位显示每次输入的数据和运算结果;
(4) 当运算结果超出范围时实现报错。
主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。
注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。
2. 整体方案设计
计算器以AT89C51单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后判断是否超出要求的运算范围,控制LED数码管的输出原理图如图2-1所示。
图2-1 基于单片机的变频调速恒压供水系统原理图
本系统硬件主要由矩阵键盘、I/O输入输出、显示系统……等几部分组成。各模块的主要功能如下:
(1)矩阵键盘将十六进制编码的数字传入单片机。
(2) 单片机扫描键盘信号并接收,对输入的键盘信号进行处理
(3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。
系统的整体设计方案设计图如图2-2所示。
图2-2 系统的整体方案设计图
注:文中出现的所有框图、流程图都要用VISIO画,不允许从文档中裁剪然后粘贴。要注意图的格式,图中的文字大小不要大于正文,图题用五号宋体,居中。
电路功能等,要注意与第2小节中的整体方案设计图相对应。文中出现的电路原理图同样不能从资料中裁剪,可从自己设计的Proteus图中拷贝。
4. 系统程序设计
4.1 主程序流程图
单片机控制I/O口循环扫描键盘状态,当检测到有按键按下时,将按键信号输入单片机,处理并输出显示,若无按键按下,则保持前一个数据的显示状态。
系统主程序流程图如图4-1所示。
图4-1 主程序流程图
4.2 键盘扫描子程序流程图
先检测是否有按键按下,当有按键按下时,逐行检测每一行的列状态,将准确的键盘信号输入单片机。
……
键盘扫描流程图如图4-2所示。
图4-2 键盘扫描流程图
4.3 按键处理输出显示子程序流程图
输出的子程序包括运算数的输出和结果输出,当有数字键按下,之前的数字左移一位,最新按下的数字显示在第一位,当有符号键按下,屏幕清零,当有等号键按下,判断运算结果是否符合要求,若符合要求,输出结果,不符合要求,输出报错提示。
输出显示子程序流程图如图4-3所示。
图4-3按键处理显示输出子程序流程图
5. 系统调试
这一部分分为Proteus软件仿真调试和硬件调试两部分,分别给出调试过程、调试时应注意的问题,分析遇到的问题及问题的解决方法,Proteus调试可截屏运行结果图形并加以分析。
5.1 Proteus软件仿真调试
……
5.2 硬件调试
……
6. 程序清单
#include
#include
#include
#include
#include
unsigned char key_scan();
void delay10ms();
unsigned char key_free();
void display();
void display1(unsigned int number1);
void display2(unsigned int number2);
void display3(unsigned int number3);
void display4(unsigned int number4);
void display_result();
void delay(unsigned int time);
void key_deal();
void display_error();
void caculate();
void put_offleds();
unsigned char numbertable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7D,0x07,0x7f,0x6f}
;//1至9的共阴显示段码
unsigned char errortable[]={0x86};//报错时使用的段码
unsigned char weitable[]={0xfe,0xfd,0xfb,0xf7}; //共阴数码管位选
unsigned int temp,temp1,temp2,number1,number2,number3,number4,a1,a2,a3,a4,b1,b 2,b3,b4,c1,c2,c3,c4,way,k,k1,waytest,result_test;
unsigned int Result;result1,result2,result3,result4,E_test;
unsigned char key;
void main()
{
while(1)
{
key_scan();
key_free();
key_deal();
}