• 大小: 111KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: 51单片机  

资源简介

矩阵键盘有数字键、加、减、乘、除、等于、清屏键。通过输入数字和运算符号进行简单计算,按下等于键将计 算的值输出到数码管显示(最大显示8位),计算结果超过8位则输出符号“-”。清屏键用于结束此次运算并清除数码管显示。(计算值-32768~32767)

资源截图

代码片段和文件信息

/**************************************************
项目名称:矩阵键盘简易计算器
作    者:Horse
日    期:2020/4/7
项目功能:矩阵键盘有数字键、加、减、乘、除、等于、清屏键。
      通过输入数字和运算符号进行简单计算,按下等于键将计
  算的值输出到数码管显示(最大显示8位),计算结果
  超过8位则输出符号“-”。清屏键用于结束此次运算并
  清除数码管显示。(计算值-32768~32767)
**************************************************/
#include “reg52.h“

typedef unsigned char u8;
typedef unsigned int u16;//对数据类型进行声明定义

#define GPIO_DIG P0
#define GPIO_KEY P1

sbit Dula=P2^6;
sbit Wela=P2^7;//定义锁存使能端口

u8 KeyValueKey_num;//定义KeyValue变量和Key_num存放按键值
u8 Flag_num_keypress=0;//定义数字按键
u8 Flag_cal=0;//定义运算标志位

u8 code Table_wei[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};//数码管的位选
u8 code Table_duan[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f
0x770x7c0x390x5e0x790x710x000x40};// 显示段码值0~F和符号‘ ‘、‘-‘
u8 Table_display[8]={1616161616161616};//显示数组


/**************************************************
函数名称:Delay(u16 i)
函数作用:延时
函数输入:u16类型的参数i
函数输出:无
作    者:Horse
**************************************************/
void Delay(u16 i)
{
while(i--);
}


/**************************************************
函数名称:char* itoa(int numchar* strint radix)
函数作用:把整型数转换成字符串
函数输入:num:要转换的整数 str:转换后的字符串 radix:转换进制(281016进制)
函数输出:转换后的字符串
作    者:Horse
**************************************************/
char* itoa(int numchar* strint radix)
{
char temp; //临时变量,交换两个值时用到
char index[]=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ“; //索引表
unsigned unum; //存放要转换的整数的绝对值转换的整数可能是负数
int i=0jk; //i用来指示设置字符串相应位,转换之后i其实就是字符串的长度;
//转换后顺序是逆序的,有正负的情况,k用来指示调整顺序的开始
//位置;j用来指示调整顺序时的交换。
 
//获取要转换的整数的绝对值
if(radix==10&&num<0)//要转换成十进制数并且是负数
{
unum=(unsigned)-num;//将num的绝对值赋给unum
str[i++]=‘-‘;//在字符串最前面设置为‘-‘号,并且索引加1
}
else
unum=(unsigned)num;//若是num为正,直接赋值给unum
 
//转换部分,注意转换后是逆序的
do
{
str[i++]=index[unum%(unsigned)radix];//取unum的最后一位,并设置为str对应位,指示索引加1
unum/=radix;//unum去掉最后一位
 
}while(unum);//直至unum为0退出循环
 
str[i]=‘\0‘;//在字符串最后添加‘\0‘字符,c语言字符串以‘\0‘结束。
 
//将顺序调整过来
if(str[0]==‘-‘)
k=1;//如果是负数,符号不用调整,从符号后面开始调整
else
k=0;//不是负数,全部都要调整
for(j=k;j<=(i-1)/2;j++)//头尾一一对称交换,i其实就是字符串的长度,索引最大值比长度少1
{
temp=str[j];//头部赋值给临时变量
str[j]=str[i-1+k-j];//尾部赋值给头部
str[i-1+k-j]=temp;//将临时变量的值(其实就是之前的头部值)赋给尾部
}
return str;//返回转换后的字符串
}


/**************************************************
函数名称:Key_scan()
函数作用:按键扫描
函数输入:无
函数输出:无
作    者:Horse
**************************************************/
void Key_scan()
{
u8 a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//读取按键是否按下
{
Delay(1000);//延时大约10ms进行消抖
if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
{
//测试列
GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case(0x07): KeyValue=0;break;
case(0x0b): KeyValue=1;break;
case(0x0d): KeyValue=2;break;
case(0x0e): KeyValue=3;break;
}
//测试行
GPIO_KEY=0xf0;
switch(GPIO_KEY)
{
case(0xe0): KeyValue=KeyValue;break;
case(0xd0): KeyValue=KeyValue+4;break;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      23711  2020-04-07 21:12  矩阵键盘简易计算器\Backup Of 矩阵键盘简易计算器.pdsbak

     文件       1851  2020-03-04 19:37  矩阵键盘简易计算器\Backup Of矩阵键盘简易计算器.pdsbak

     文件      23698  2020-04-08 16:03  矩阵键盘简易计算器\Last Loaded 矩阵键盘简易计算器.pdsbak

     文件      23703  2020-04-08 16:10  矩阵键盘简易计算器\矩阵键盘简易计算器.pdsprj

     文件       2199  2020-04-08 16:10  矩阵键盘简易计算器\矩阵键盘简易计算器.pdsprj.LAPTOP-RLDCULQ1.hp.workspace

     文件       9627  2020-04-08 16:07  矩阵键盘简易计算器\程序\main.c

     文件      22785  2020-04-08 16:08  矩阵键盘简易计算器\程序\main.LST

     文件      16101  2020-04-08 16:08  矩阵键盘简易计算器\程序\main.OBJ

     文件      13147  2020-04-08 16:08  矩阵键盘简易计算器\程序\template

     文件       1006  2020-04-08 16:08  矩阵键盘简易计算器\程序\template.build_log.htm

     文件       6602  2020-04-08 16:08  矩阵键盘简易计算器\程序\template.hex

     文件         29  2020-04-08 16:08  矩阵键盘简易计算器\程序\template.lnp

     文件      17688  2020-04-08 16:08  矩阵键盘简易计算器\程序\template.M51

     文件        474  2018-03-19 17:20  矩阵键盘简易计算器\程序\template.plg

    .......    138645  2020-04-08 16:10  矩阵键盘简易计算器\程序\template.uvgui.hp

     文件       5320  2020-04-04 14:09  矩阵键盘简易计算器\程序\template.uvopt

     文件      13847  2020-03-04 19:16  矩阵键盘简易计算器\程序\template.uvproj

     文件          0  2018-03-19 17:18  矩阵键盘简易计算器\程序\template_uvproj.bak

     文件       3934  2020-04-07 21:35  矩阵键盘简易计算器\简易计算器.png

     目录          0  2020-04-08 16:10  矩阵键盘简易计算器\程序

     目录          0  2020-04-08 16:10  矩阵键盘简易计算器

----------- ---------  ---------- -----  ----

               324367                    21


评论

共有 条评论