单片机大程序调试,各位朋友。我做了一个想用来开门的51控制。程序出问韪了。谢谢 80
voidkai_meng()//{staticuint8i=0;uint8inmima[8];saomiao=1;while(saomiao){pi2=0;//第一次扫描...
void kai_meng() //
{
static uint8 i=0;
uint8 inmima[8];
saomiao=1;
while(saomiao)
{
pi2=0; //第一次扫描?
LED=1;
if(pi6==0)
{
Delay1();
if(pi6==0)
{
inmima[i]=0x01;
i++;
if(i==8)
{
i=0;in_eeprom(inmima);
saomiao=0;
}
}
}
if(pi7==0)
{
Delay1();
if(pi7==0)
{inmima[i]=0x02;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pc6==0)//可能多删大括号
{
Delay1();
if(pc6==0)
{inmima[i]=0x03;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
pi2=1; pi3=0;//第2次扫描
if(pi6==0)
{
Delay1();
if(pi6==0)
{
inmima[i]=0x04;
i++;
if(i==7)
{
i=0;in_eeprom(inmima);
saomiao=0;
}
}
}
if(pi7==0)
{
Delay1();
if(pi7==0)
{
inmima[i]=0x05;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pc6==0)
{
Delay1();
if(pc6==0)
{inmima[i]=0x06;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
pi3=1; pi4=0;////第3次扫描?
if(pi6==0)
{
Delay1();
if(pi6==0)
{
inmima[i]=0x07;
i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pi7==0)
{
Delay1();
if(pi7==0)
{
inmima[i]=0x08;
i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pc6==0)
{
Delay1();
if(pc6==0)
{inmima[i]=0x09;i++;
if(i==7)
{
in_eeprom(inmima);
i=0;
saomiao=0;
}
}
}
pi4=1;pi5=0; //第4次扫描
if(pi6==0)
{
Delay1();
if(pi6==0)
{
pi5=1;
inmima[i]=0x00;
i++;
if(i==7)
{
in_eeprom(inmima);
i=0;
saomiao=0;
}
}
}
LED=0;
}
} 展开
{
static uint8 i=0;
uint8 inmima[8];
saomiao=1;
while(saomiao)
{
pi2=0; //第一次扫描?
LED=1;
if(pi6==0)
{
Delay1();
if(pi6==0)
{
inmima[i]=0x01;
i++;
if(i==8)
{
i=0;in_eeprom(inmima);
saomiao=0;
}
}
}
if(pi7==0)
{
Delay1();
if(pi7==0)
{inmima[i]=0x02;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pc6==0)//可能多删大括号
{
Delay1();
if(pc6==0)
{inmima[i]=0x03;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
pi2=1; pi3=0;//第2次扫描
if(pi6==0)
{
Delay1();
if(pi6==0)
{
inmima[i]=0x04;
i++;
if(i==7)
{
i=0;in_eeprom(inmima);
saomiao=0;
}
}
}
if(pi7==0)
{
Delay1();
if(pi7==0)
{
inmima[i]=0x05;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pc6==0)
{
Delay1();
if(pc6==0)
{inmima[i]=0x06;i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
pi3=1; pi4=0;////第3次扫描?
if(pi6==0)
{
Delay1();
if(pi6==0)
{
inmima[i]=0x07;
i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pi7==0)
{
Delay1();
if(pi7==0)
{
inmima[i]=0x08;
i++;
if(i==7)
{
i=0;
in_eeprom(inmima);
saomiao=0;
}
}
}
if(pc6==0)
{
Delay1();
if(pc6==0)
{inmima[i]=0x09;i++;
if(i==7)
{
in_eeprom(inmima);
i=0;
saomiao=0;
}
}
}
pi4=1;pi5=0; //第4次扫描
if(pi6==0)
{
Delay1();
if(pi6==0)
{
pi5=1;
inmima[i]=0x00;
i++;
if(i==7)
{
in_eeprom(inmima);
i=0;
saomiao=0;
}
}
}
LED=0;
}
} 展开
6个回答
意法半导体(中国)投资有限公司
2023-06-12
展开全部
展开全部
对于矩阵键盘,我建议用带上拉的,这个程序写起来非常非常方便!带上拉的矩阵键盘,4行(或者4列)一直是高电平(因为接着上拉嘛~),你只需要把没接上拉的列(行)按0111,1011,1101,1110的顺序扫描就行。现在假设扫描到0111,就是第一列是低电平,你按下第一列的哪一个键,哪一行的引脚就会被拉低,这样就检测到了。
如果说的不是很明白。。。可以给你发原理图和代码。
如果说的不是很明白。。。可以给你发原理图和代码。
追问
我是p1.2到1.5是行。1.6到1.7和3.6列。因为内有上拉电阻就没有在外面上拉。你Q多少,我发全部程序给你改下1002380711
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2021-01-14 广告
2021-01-14 广告
可以写对它写程序,让它听从你的安排,你让它实现什么功能它就能实现,比如电子钟、电子琴、打印机、手机、电梯控制,智能家具如:空调、冰箱、洗衣机等,如果这些家电没有它,什么都不能工作。单片机内部很复杂,你研究的越深你就会越爱上它,它可以帮你实现...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
这是一个4*4键盘程序,很简单的程序加一个数码管显示的仿真实例,供参考。
更多追问追答
追问
俺也做过。不过这次无论怎么去不了抖。按一下跳几次,我从一毫秒到700毫秒之间去抖都不行。去他妈妈的!之前做控制数码管。调时间没问题,这次死了。
百度文字限制,没办法全部上代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路有问题,软件去抖你应将全部按键看成整体,扫一次就获取一个键盘编码,如编码有按键变化则延时15ms,再扫取一次键盘偏码,对比前后两次编码就可确认
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知所云啊。能解释下不
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个程序作为键盘扫描,太啰嗦了,找个课本看看,应该很简单
追问
哎。少一个while
等待放手。有这样多事要做啊!都不算高手。否则一眼看出问题,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询