单片机简易计算器的设计要求用2*8矩阵键盘,程序如下,求大神把下面4*4键盘程序改成2*8的,可追加分数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机简易计算器的设计要求用2*8矩阵键盘,程序如下,求大神把下面4*4键盘程序改成2*8的,可追加分数相关的知识,希望对你有一定的参考价值。

/***键值转化为键盘上按键值函数******/

uchar Keyscan(void)

uchar i, j, temp, Buffer[4] = 0xef, 0xdf, 0xbf, 0x7f;
for(j = 0; j < 4; j++)
//循环四次
P2 = Buffer[j]; //在P1高四位分别输出一个低电平
temp = 0x01; //计划先判断P1.0位
for(i = 0; i < 4; i++)
//循环四次
if(!(P2 & temp)) //从P1低四位,截取1位
return (i + j * 4); //返回取得的按键值
temp <<= 1; //判断的位,左移一位


return 16; //判断结束,没有键按下,返回16

char translate(int keycode)

switch(keycode)

case 0:
return '7';
break;
case 1:
return '4';
break;
case 2:
return '1';
break;
case 3:
return 'c';
break;
case 4:
return '8';
break;
case 5:
return '5';
break;
case 6:
return '2';
break;
case 7:
return '0';
break;
case 8:
return '9';
break;
case 9:
return '6';
break;
case 10:
return '3';
break;
case 11:
return '=';
break;
case 12:
return '/';
break;
case 13:
return '*';
break;
case 14:
return '-';
break;
case 15:
return '+';
break;
//case 16:
//return ' ';
//break;


课程设计的题目是单片机简易计算器,要求实现100以内的,加减乘除运算,用2*8矩阵键盘,用LCD或LED显示,现在遇到点问题,仿真程序里的是4*4键盘,而试验箱上的是2*8的矩阵键盘,需要做一下改动,多谢大家的帮助,如果程序适合的话,我会再多追加100分的

参考技术A 下面这个 Keyscan(void) 程序,是我以前写的。

uchar Keyscan(void)

uchar i, j, temp, Buffer[4] = 0xef, 0xdf, 0xbf, 0x7f;
for(j = 0; j < 4; j++) //循环四次
P2 = Buffer[j]; //在P1高四位分别输出一个低电平
temp = 0x01; //计划先判断P1.0位
for(i = 0; i < 4; i++) //循环四次
if(!(P2 & temp)) //从P1低四位,截取1位
return (i + j * 4); //返回取得的按键值
temp <<= 1; //判断的位,左移一位

return 16; //判断结束,没有键按下,返回16


程序,用了一个 8 位的并口:P1,或 P2,都行。

改成2*8的,就要使用两个接口了,用什么?楼主应该指定出来。追问

这是我们的实验仿真图,实现的是加减乘除100以内的运算,这个仿真程序用的是4x4的键盘,P1口连接LCD,P2口连接键盘P3.4-3.6连接LCD上的相应键,现在要求是2x8的,要把4x4的改一下,你能不能看看怎么改,需要更详细的信息的话,我会贴上实验板上的键盘图的,多谢帮忙了,如果程序没问题的话,我会再给100分的,

追答

前面,我不是已经说了:使用什么接口?楼主应该指定出来。

你要用实验箱,就应该把实验箱中,可以利用的引脚公布出来。

别人也不知道你的实验箱的情况,谁知道能改不能改呀 !

既然想用实验箱,你还显示仿真电路干什么 ?

追问

www.baidu.com/p/schoolboyzhang?from=super在这个页面的相册里有,不好意思,相片太大,上传不上去,只能在相册里了

追答

看到了实验箱的外形图片,但不知你的电路是怎么接的?

你说了:《P1口连接LCD,P2口连接键盘P3.4-3.6连接LCD上的相应键,现在要求是2x8的,》

那么,这2x8的,共十条线,你都连接到那儿啦?

这个实验箱,它既然是2*8的键盘,它,难道没有自己的配套程序么?
仔细找找,应该有的。

用它自己的,比修改其它的,要简单的多。

追问

关键是没有配套程序,都要自己写的,这个是我们的完整程序http://hi.baidu.com/schoolboyzhang
第一篇单片机就是,能不能帮着改一改?

追答

硬件,只有照片,没有电路图。

没有电路图,就没有办法编写程序。

那么,还是用仿真的吧,就别弄真的了。

追问

电路图我们就是按照仿真图连线的,就是P1口连接LCD,P2口连接键盘,P3.4-3.6连接RS,RW,E,具体的连线还在那个图册里www.baidu.com/p/schoolboyzhang?from=super键盘还有两个独立的接口怎么连不是很明白

追答

键盘的电路图,只有你自己,才能弄出来。你可以用万用表,测试一下。
别人没有这个硬件,谁能知道应该怎么接线?

呵呵,你的问题,不应该是编程。
而是请教:这个电路板,谁有电路图,如何与单片机连接。

你连电路都弄说不清楚,就让大家编程 !
没有明确的电路,谁能编出来程序?

即使是编出来了,你以为,就能用吗?

参考技术B 这个应该不难吧,你是做课程设计?我这里有一些资料,需要可以来找我,在线回复。不在线请亲给我留言,我看到会立即回复你的。追问

对,我姐课程设计的题目是单片机简易计算器,要求实现100以内的,加减乘除运算,用2*8矩阵键盘,用LCD或LED显示,现在遇到点问题,仿真程序里的是4*4键盘,而试验箱上的是2*8的矩阵键盘,需要做一下改动。

Proteus仿真4X4矩阵按键扫描组成的简易加法器

【Proteus仿真】4X4矩阵按键扫描组成的简易加法器


VSM Studio程序代码

/* Main.c file generated by New Project wizard
 *简易加法计算器
 * Created:   周二 6月 14 2022
 * Processor: AT89C52
 * Compiler:  Keil for 8051
 */

以上是关于单片机简易计算器的设计要求用2*8矩阵键盘,程序如下,求大神把下面4*4键盘程序改成2*8的,可追加分数的主要内容,如果未能解决你的问题,请参考以下文章

51单片机,用c语言,如何用矩阵键盘为一个变量char a赋值?已设计出一个函数,使得每按一个矩阵

求。用89C51单片机设计4*4矩阵式键盘计算器程序

基于51单片机LCD1602矩阵键盘电子密码锁proteus仿真设计

Proteus仿真4X4矩阵按键扫描组成的简易加法器

怎么用51单片机4*4键盘实现简单计算器 就要加减就可以 汇编语言 麻烦可

基于51单片机的简易计算器设计(仿真+程序+原理图+PCB图+设计报告)