C51单片机矩阵键盘做发送数据端的代码错误?
想实现的功能是,按下矩阵键盘一个键,将其代表的字符串通过串口发送出去,PC能够接收到这个代码。程序:#include<STC_NEW_8051.h>#defineucha...
想实现的功能是,按下矩阵键盘一个键,将其代表的字符串通过串口发送出去,PC能够接收到这个代码。
程序:
#include <STC_NEW_8051.h>
#define uchar unsigned char
#define uint unsigned int
uchar k;
uchar disp[]={0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09}; //准备输出的代码
uchar key[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe}; //组合后的数字代码
void delay(uint ms) //延时
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
uchar keyscan()
{
uchar scan1,scan2,keycode,j;
P3=0xf0;
scan1=P3; //P3连接键盘
if((scan1&0xf0)!=0xf0)
{
delay(30);
scan1=P3;
if((scan1&0xf0)!=0xf0)
{
P3=0x0f;
scan2=P3;
keycode=scan1| scan2; //组合 判断按键位置
for(j=0;j<=8;j++) //一个个判断
{
if(keycode==key[j]) //确定了按键位置
{
k=j;
return(k);
}
}
}
}
else P3=0xff;
return(9);
}
void keydown()
{
P3=0x0f;
if((P3&0x0f)!=0x0f)
{
keyscan();
SBUF=disp[k]; //发送disp[k]
while(!TI);
TI=0;
}
}
void main()
{
SCON=0X50;
PCON=0X00;
TMOD=0X20;
TH1=0XF4;
TL1=0XF4;
TR1=1;
EA=1;
ES=1;
TI=0;
P3=0xff; //按键置零
while(1)
{
keydown();
}
}
程序前半部分是书上的,有注释了。程序烧写后,LABVIEW里读不到发出的0x01,0x02....代码,好像是没发送成功,是不是要用中断来写发送端? 展开
程序:
#include <STC_NEW_8051.h>
#define uchar unsigned char
#define uint unsigned int
uchar k;
uchar disp[]={0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09}; //准备输出的代码
uchar key[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe}; //组合后的数字代码
void delay(uint ms) //延时
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
uchar keyscan()
{
uchar scan1,scan2,keycode,j;
P3=0xf0;
scan1=P3; //P3连接键盘
if((scan1&0xf0)!=0xf0)
{
delay(30);
scan1=P3;
if((scan1&0xf0)!=0xf0)
{
P3=0x0f;
scan2=P3;
keycode=scan1| scan2; //组合 判断按键位置
for(j=0;j<=8;j++) //一个个判断
{
if(keycode==key[j]) //确定了按键位置
{
k=j;
return(k);
}
}
}
}
else P3=0xff;
return(9);
}
void keydown()
{
P3=0x0f;
if((P3&0x0f)!=0x0f)
{
keyscan();
SBUF=disp[k]; //发送disp[k]
while(!TI);
TI=0;
}
}
void main()
{
SCON=0X50;
PCON=0X00;
TMOD=0X20;
TH1=0XF4;
TL1=0XF4;
TR1=1;
EA=1;
ES=1;
TI=0;
P3=0xff; //按键置零
while(1)
{
keydown();
}
}
程序前半部分是书上的,有注释了。程序烧写后,LABVIEW里读不到发出的0x01,0x02....代码,好像是没发送成功,是不是要用中断来写发送端? 展开
2个回答
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询