用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.#include <reg51.h>#define uchar unsigned char#define uint unsigned intuint temp,num,num1;uchar code table[]={0xfc,0x60,0xda,0xf2,0x66

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 00:24:14

用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.#include <reg51.h>#define uchar unsigned char#define uint unsigned intuint temp,num,num1;uchar code table[]={0xfc,0x60,0xda,0xf2,0x66
用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uint temp,num,num1;

uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e}; //0~f

void delay(uint z)    //延迟

{

 uint x,y;

 for(x=0;x<110;x++)

 for(y=0;y<z;y++); 

}

void display(uchar bai,uchar shi,uchar ge)

{

 P2=0x7f;

 P0=table[bai];

 delay(1);

 P2=0xbf;

 P0=table[shi];

 delay(1);

 P2=0xdf;

 P0=table[ge];

 delay(1); 

}

uint keyscan()

{

 P1=0xfd;

 temp=P1;

 temp=temp&0xf0;

 while(temp!=0xf0)

 {

  delay(5);

  temp=P1;

  temp=temp&0xf0;

  while(temp!=0xf0)

  {

   temp=P1;

   switch(temp)

   {

    case 0xed:num=1; 

    break; 

    case 0xdd:num=4;

    break;

    case 0xbd:num=9;

    break;

    case 0x7d:num=16;

    break;

   }

   while(temp!=0xf0)

   {

    temp=P1;

    temp=temp&0xf0;

   }

  }

 }

 P1=0xfb;

 temp=temp&0xf0;

 while(temp!=0xf0)

 {

  delay(5);

  P1=0xfb;

  temp=temp&0xf0;

  while(temp!=0xf0)

  {

   temp=P1;

   switch(temp)

   {

    case 0xeb:num=25;

    break;

    case 0xdb:num=36;

    break;

    case 0xbb:num=49;

    break;

    case 0x7b:num=64;

    break;

   }

   while(temp!=0xf0)

   {

    temp=P1;

    temp=temp&0xf0;

   }

  }

 }

 P1=0xf7;

 temp=temp&0xf0;

 while(temp!=0xf0)

 {

  delay(5);

  P1=0xf7;

  temp=temp&0xf0;

  while(temp!=0xf0)

  {

   temp=P1;

   switch(temp)

   {

    case 0xe7:num=81;

    break;

    case 0xd7:num=100;

    break;

    case 0xb7:num=121;

    break;

    case 0x77:num=144;

    break;

   }

   while(temp!=0xf0)

   {

    temp=P1;

    temp=temp&0xf0;

   }

  }

 }     

 return num; 

}

void main()

{

 P0=0x00;

 P1=0xff;

 while(1)

 {

  num1=keyscan();

  display(num1/100,num1%100/10,num1%10); 

 }

}

 

 

程序启动之后,矩阵键盘只有前三个有用可以显示出相应的1,4,9.后面的按键通通没用,不知道问题出在哪


用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.#include <reg51.h>#define uchar unsigned char#define uint unsigned intuint temp,num,num1;uchar code table[]={0xfc,0x60,0xda,0xf2,0x66
//这是我以前写的 你对照一下吧 字体太小累眼睛 我的这个 绝对可用 没有错误 只是I/0口不
//一样 主要是你矩阵键盘那块有问题 你对照我的 很快就找出来了
#include
#define uchar unsigned char#define uint unsigned int
sbit dula=P2^6;sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};

uint jzjp();
void shumaguan(uint shu);
void delay(uint z);
void init();


void main()
{
init();
while(1)
{



shumaguan(jzjp());
}
}

void init()
{

}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void shumaguan(uint shu)
{
uchar bai,shi,ge;
bai=shu/100;
shi=shu%100/10;
ge=shu%10;

dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);

}
uint jzjp()
{
uint shu,num;
uchar temp;
P3=0xfe;
temp=P3;
temp=P3&0xf0;
if(temp!=0xf0)
{
delay(5);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:num=1*1;
break;
case 0xde:num=2*2;
break;
case 0xbe:num=3*3;
break;
case 0x7e:num=4*4;
break;
}
while(temp!=0xf0)
{

temp=P3;
temp=temp&0xf0;
shumaguan(shu);
}
}

}
P3=0xfd;
temp=P3;
temp=P3&0xf0;
if(temp!=0xf0)
{
delay(5);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:num=5*5;
break;
case 0xdd:num=6*6;
break;
case 0xbd:num=7*7;
break;
case 0x7d:num=8*8;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
shumaguan(shu);
}
}

}
P3=0xfb;
temp=P3;
temp=P3&0xf0;
if(temp!=0xf0)
{
delay(5);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:num=9*9;
break;
case 0xdb:num=10*10;
break;
case 0xbb:num=11*11;
break;
case 0x7b:num=12*12;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
shumaguan(shu);
}
}

}
P3=0xf7;
temp=P3;
temp=P3&0xf0;
if(temp!=0xf0)
{
delay(5);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:num=13*13;
break;
case 0xd7:num=14*14;
break;
case 0xb7:num=15*15;
break;
case 0x77:num=16*16;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
shumaguan(shu);
}
}

}
return num;
}

用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.#include <reg51.h>#define uchar unsigned char#define uint unsigned intuint temp,num,num1;uchar code table[]={0xfc,0x60,0xda,0xf2,0x66 C语言编写 89C51单片机 用矩阵键盘 小数码管计算器 实现两位数 加减乘除运算 单片机编程题目如题,用汇编语言.用C语言也可以,什么语言都行, 用单片机设计出租车计价器,使用c语言编程,使用的是51系列的单片机.计价器可以显示3位数,精确到0.1元.用数码管显示. (1) 用C语言编程输出下列倒三角矩阵 uchar和uchar code 数组 的区别C语言 给单片机 编程用到 单片机的独立键盘或矩阵键盘电路,必须要加电阻和电源吗? 我想问下哦,单片机的矩阵键盘为什么要加vcc和电阻啊?以及怎么用中断的啊? 编程实现两个N*N矩阵相乘,并输出实验结构矩阵元素为整型数据.用c语言编程 用C语言编程实现从键盘任意输入10个整数,统计其中奇数的个数,并计算这些奇数的和. 用c语言编程,要求从键盘读入一个由单词和空格组成的英文长句,分解其中单词,并按照字典顺序排列输出 用C语言编程实现从键盘任意输入10个整数,统计其中奇数的个数,并计算这些奇数的和 用c语言编程,要求从键盘读入一个由单词和空格组成的英文长句,分解其中单词,并按照字典顺序排列输出 在单片机c编程 比较两个数的大小,输出大的数.且带串行口中断声明:不是平常用的C语言编程的,而是 “单片机”c编程。用keil软件开发的,并非TC 从键盘上输入10个整数,求最大值和最小值急,是c语言编程题 C语言编程,从键盘上输入学生的三门课程成绩,求总成绩和平均成绩 用C语言编程时如何让程序暂停几秒钟 不需要我从键盘敲入指令 例如 程序的结果是输出3和7 怎么让它输...用C语言编程时如何让程序暂停几秒钟 不需要我从键盘敲入指令 例如 程序的结果是 c语言编程:输入两个3行4列的矩阵,计算并输出两个矩阵的和.