基于51单片机可修改错误功能的计算器工作原理解析

发布者:AdventureSeeker最新更新时间:2020-05-23 来源: eefocus关键字:51单片机  错误功能  计算器  工作原理 手机看文章 扫描二维码
随时随地手机看文章

utiliTIes.h

#ifndefUTILITIES_H_INCLUDED


#defineUTILITIES_H_INCLUDED

typedefunsignedcharuchar,BYTE,uint8;

typedefunsignedintuint,WORD,uint16;

typedefunsignedlongulong,DWORD,uint32;

typedefcharint8;

typedefintint16;

typedeflongint32;

typedefunsignedchar*uchar_p;

typedefunsignedint*uint_p;

typedefunsignedlong*ulong_p;

typedefchar*char_p;

typedefint*int_p;

typedeflong*long_p;

#endif//UTILITIES_H_INCLUDED

keyBoard.c

#include

#include“utilities.h”

sbitKEY_OUT_3=P2^0;

sbitKEY_OUT_2=P2^1;

sbitKEY_OUT_1=P2^2;

sbitKEY_OUT_0=P2^3;

sbitKEY_IN_0=P2^4;

sbitKEY_IN_1=P2^5;

sbitKEY_IN_2=P2^6;

sbitKEY_IN_3=P2^7;

基于51单片机可修改错误功能的计算器工作原理解析

ucharcodekeyCodeMap[4][4]={//矩阵按键编号到标准键盘键码的映射表

{0x31,0x32,0x33,0x26},//数字键1、数字键2、数字键3、向上键

{0x34,0x35,0x36,0x25},//数字键4、数字键5、数字键6、向左键

{0x37,0x38,0x39,0x28},//数字键7、数字键8、数字键9、向下键

{0x30,0x1B,0x0D,0x27}//数字键0、ESC键、回车键、向右键

};

ucharpdatakeyState[4][4]={//全部矩阵按键的当前状态

{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}

};

externvoidkeyAction(ucharkeyCode);

voidkeyDriver(){

uchari,j;

staticucharbackup[4][4]={

{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}

};

for(i=0;i《4;i++)

for(j=0;j《4;j++)

if(keyState[i][j]!=backup[i][j]){

if(keyState[i][j]==0)

keyAction(keyCodeMap[i][j]);

backup[i][j]=keyState[i][j];

}

}

voidkeyScan(){

staticuchari=0;

staticucharkeyBuf[4][4]={

{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}

};

ucharj;

keyBuf[i][0]=(keyBuf[i][0]《《1)|KEY_IN_0;

keyBuf[i][1]=(keyBuf[i][1]《《1)|KEY_IN_1;

keyBuf[i][2]=(keyBuf[i][2]《《1)|KEY_IN_2;

keyBuf[i][3]=(keyBuf[i][3]《《1)|KEY_IN_3;

for(j=0;j《4;j++){

if(keyBuf[i][j]==0x00)

keyState[i][j]=0;

elseif(keyBuf[i][j]==0xFF)

keyState[i][j]=1;

}

switch(i){

case0:KEY_OUT_0=1;KEY_OUT_1=0;break;

case1:KEY_OUT_1=1;KEY_OUT_2=0;break;

case2:KEY_OUT_2=1;KEY_OUT_3=0;break;

case3:KEY_OUT_3=1;KEY_OUT_0=0;break;

default:break;

}

i=++i&0x03;

}

digitalTube.c

#include

#include“utilities.h”

ucharcodeLEDChar[]={//数码管显示字符转换表

0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E

};

ucharLEDBuff[6]={//数码管显示缓冲区

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

};

voidshowNumber(ulongnum){

chari;

ucharbuf[6];

for(i=0;i《6;i++){

buf[i]=num%10;

num/=10;

}

for(i=5;i》0;i--){

if(buf[i]==0)

LEDBuff[i]=0xFF;

else

break;

}

for(;i》=0;i--)

LEDBuff[i]=LEDChar[buf[i]];

}

voidLEDScan(){

staticuchari=0;

P0=0xFF;

P1=(P1&0xF8)|i;

P0=LEDBuff[i];

if(i《5)

i++;

else

i=0;

}

timer.c

#include

#include“utilities.h”

#defineTIMER0

#defineTIMER0_MOD1

#ifdefined(TIMER0)

ucharT0RH=0;

ucharT0RL=0;

#ifdefined(TIMER0_MOD1)

voidsetTmr0(uintms){

ulongtmp;

tmp=11059326/12;

tmp=tmp*ms/1000;

tmp=65536-tmp;

tmp+=28;

T0RL=tmp;

T0RH=tmp》》8;

}

#endif//defined

#endif//defined

calculator.c

/**********************************************************

加减乘除计算器,能实现连续的运算,并且提供修改功能:

对于算符来说,以最后输入的算符为准。

测试样例:

12+256*9-53/2

3 + - * 5

关键字:51单片机  错误功能  计算器  工作原理 引用地址:基于51单片机可修改错误功能的计算器工作原理解析

上一篇:51单片机中的定时计数器的主体结构及功能解析
下一篇:如何采用51单片机连接24C02-C语言测试代码

推荐阅读最新更新时间:2024-11-10 20:26

8051单片机的通信方式有哪些
介绍:串行口是单片机与外界进行信息交换的工具。 8051单片机的通信方式有两种: 并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。参看下图: 《单片机串行通信》 《并行通信》 串行通信的方式: 异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下: 在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示字符,则字符能一个接一个地传送。 在异步通信中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式能由通信的
[单片机]
80<font color='red'>51单片机</font>的通信方式有哪些
51单片机快速入门指南】5.2:SPI读取 12位ADC XPT2046 芯片
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa+ 1.3.10 硬知识 摘自《普中 51 单片机开发攻略》、《XPT2046用户手册V2.0》。 ADC 简介 ADC(analog to digital converter)也称为模数转换器,是指一个将模拟 信号转变为数字信号。单片机在采集模拟信号时,通常都需要在前端加上 A/D 芯 片。下面我们看下 ADC 的主要技术指标: 分辨率 ADC 的分辨率是指对于允许范围内的模拟信号,它能输出离散数字信号值的 个
[单片机]
【<font color='red'>51单片机</font>快速入门指南】5.2:SPI读取 12位ADC XPT2046 芯片
电子气门的结构与工作原理
宝马车电子气门(VALVETRONIC)是指由全可变气门行程控制装置和可变凸轮轴控制装置(双VANOS)构成的,可以任意选择进气门关闭时刻。电子气门在很大程度上承担了节气门的功能。为此需要使用一种全可变气门行程控制装置。 一、电子气门的结构 宝马车电子气门的构成如图1所示。在进气门打开情况下进气量是通过调节气门行程来完成的,这样就能确定最佳的气缸气量。 1、伺服电动机 伺服电动机又称执行电动机,布置在凸轮轴上方。伺服电动机的蜗杆嵌入安装在偏心轴上的蜗轮内。伺服电动机是一个典型闭环反馈系统,减速齿轮组由电动机驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线
[嵌入式]
电子气门的结构与<font color='red'>工作原理</font>
扫频仪是什么_扫频仪的工作原理_扫频仪的功能及作用
  一、扫频仪是什么   扫频仪(频率特性测试仪,简称扫频仪)是一种可在示波管屏幕上直接显示被测电路频率特性的专用仪器,亦即是一种把扫频信号发生器、频标信号发生器、示波器结合起来的仪器。可以直观地看到被测电路的频率特性曲线,便于在电路工作的情况下调整电路元件,使其工作频率符合规定的技术要求,可以用来测试、调整该频段内的有源、无源四端网络频率特性。例如:电视接收机、宽频带放大器、雷达接收机的中频放大器、高频放大器以及鉴频器、滤波器等电子设备。在高校电子、通信、通讯等实验室中应用广泛。   目前扫频仪使用较普遍的除近几年问世的新产品外,仍有为数不少的BT3型(1~300 MHz)、BT4型(200~2 MHz)、BT7型(1~30
[测试测量]
扫频仪是什么_扫频仪的<font color='red'>工作原理</font>_扫频仪的<font color='red'>功能</font>及作用
8051单片机抢答器C程序
#include REG51.h /****************************************************************** * 自定义Macro *******************************************************************/ //编码的均为反向编码 #define CLEAR 0x7f //定义清空的反码 #define LED_BEGIN 0x01 // 定义开始时数码管的显示 #define LED_FOUL 0x38 // 犯规后显示字母 F ,数码管编码 #define LED_
[单片机]
51单片机中断篇
51单片机中断原理 中断的概念: CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),那么CPU就会暂停当前的工作(A事件),去执行B事件(中断响应和中断服务),然后B事件做完之后,再回到原来的事件(A事件)中继续工作。(中断的返回)。 中断作用 随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与I/O设备的数据传送问题,而且还有具有如下的优点: 1. 分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率。 2. 实时操作:CPU能够及时处理应用系统的随机事件,系统的实时性大大增强。 3. 可靠性高:CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性更高。 中断
[单片机]
<font color='red'>51单片机</font>中断篇
基于51单片机的日历时钟
1 引言 随着微电子技术与大规模集成电路的发展,单片机的串行通信应用正在不断的走向深入,由于它具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便等特点,广泛使用与我们生活的各个领域。单片机往往是作为一个核心部件来使用,再根据具体硬件结构,以及针对各种具体的要求使用相应的外部扩展,来实现具体的实际要求。 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C52、时钟电路DS1302、显示电路、按键电路、和复合电路等部分构成,能实现时钟日历的显示的功能,能进行时、分、秒的显示。 2 硬件设计 2.1电路设计框图 2.2 电路原理图 2.
[单片机]
基于<font color='red'>51单片机</font>的日历时钟
MCS51单片机采用什么样的抗干扰技术
普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又没有集成WATCHDOS电路,那么普及型MCS-51单片机是采用什么样的抗干扰技术呢?如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复位技术。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved