找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1189|回复: 0
打印 上一主题 下一主题
收起左侧

请教单片机C语言结构体中数据和4*5矩阵键盘相关的问题

[复制链接]
跳转到指定楼层
楼主
typedef struct A
{
char num[3];
long n;
struct user *next;
};
struct A *p;

p=(struct A*)malloc(LEN);
p->n=0;

怎么表示新开辟的单元里数组的首地址啊
p->num好像不对

而且用液晶显示p->n却是-1

编写的液晶显示函数没有问题,可以显示数字和用首地址显示字符串


图片中矩阵键盘y5也接收不到信号,不管按没按下,一直是高,我是用x1-x4输出扫描,其中输入检测y1-y4为P0上的,y5是P2^3,就接收不到了
以下是代码
sbit y1 = P0^4;
sbit y2 = P0^5;
sbit y3 = P0^6;
sbit y4 = P0^7;
sbit y5 = P2^3;
sbit x4 = P0^3;
sbit x3 = P0^2;
sbit x2 = P0^1;
sbit x1 = P0^0;


void KeyScan(void)
{
char i=0,a=0;
for(i=0;i<4;i++)//循环4次,i逐次加1
{  
switch(i)
  {
   case 0:x1=0;x2=1;x3=1;x4=1;break;
   case 1:x1=1;x2=0;x3=1;x4=1;break;
   case 2:x1=1;x2=1;x3=0;x4=1;break;
   case 3:x1=1;x2=1;x3=1;x4=0;break;
  }
   if(!y1){delayms(20);if(!y1){a=i+1;while(!y1);break;}}
   if(!y2){delayms(20);if(!y2){a=i+5;while(!y2);break;}}
   if(!y3){delayms(20);if(!y3){a=i+9;while(!y3);break;}}
   if(!y4){delayms(20);if(!y4){a=i+13;while(!y4);break;}}
    if(!y5){delayms(20);if(!y5){a=i+17;while(!y5);break;}}
/*键盘通过a值来判断按哪个键
       第一列   第二列   第三列   第四列
第一行 a=1      a=2      a=3     a=4
第二行 a=5      a=6.......
第三行 a=9.......
第四行  a=13...*/
}
  switch(a)
  {
   case 1:KeySta[0][0]=KeyMap[0][0];break;
   case 2:KeySta[0][1]=KeyMap[0][1];break;
   case 3:KeySta[0][2]=KeyMap[0][2];break;
   case 4:KeySta[0][3]=KeyMap[0][3];break;
   case 5:KeySta[1][0]=KeyMap[1][0];break;
   case 6:KeySta[1][1]=KeyMap[1][1];break;
   case 7:KeySta[1][2]=KeyMap[1][2];break;
   case 8:KeySta[1][3]=KeyMap[1][3];break;
   case 9:KeySta[2][0]=KeyMap[2][0];break;
   case 10:KeySta[2][1]=KeyMap[2][1];break;
   case 11:KeySta[2][2]=KeyMap[2][2];break;
   case 12:KeySta[2][3]=KeyMap[2][3];break;
   case 13:KeySta[3][0]=KeyMap[3][0];break;
   case 14:KeySta[3][1]=KeyMap[3][1];break;
   case 15:KeySta[3][2]=KeyMap[3][2];break;
   case 16:KeySta[3][3]=KeyMap[3][3];break;
   case 17:KeySta[4][0]=KeyMap[4][0];break;
   case 18:KeySta[4][1]=KeyMap[4][1];break;
   case 19:KeySta[4][2]=KeyMap[4][2];break;
   case 20:KeySta[4][3]=KeyMap[4][3];break;
default:break;
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表