|
沒(méi)有時(shí)間看你的程序,不過(guò)我做過(guò)這個(gè),我的程序發(fā)給你看看,希望對(duì)你有用!
主機(jī)程序:
/*
串口實(shí)驗(yàn):?jiǎn)纹瑱C(jī)與單片機(jī)之間的通訊,這是主機(jī)程序
*/
#include<reg51.h>
#define LED P2//LED燈
#define JP P1//矩陣鍵盤(pán)
unsigned char JZ;
bit AJ;
void UsartConfiguration();//設(shè)置串口子函數(shù)申明
void Delay10ms(unsigned int c);//延時(shí)子函數(shù)申明
void KeyDown(void);//矩陣鍵盤(pán)子函數(shù)
void main()
{
UsartConfiguration();
Delay10ms(10);
while(1)
{
KeyDown();
if (AJ==1)
{
AJ=0;
SBUF = JZ;
while (!TI);
TI = 0;
}
}
}
void UsartConfiguration()//設(shè)置串口
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0XF3;
TR1=1;
EA=1;
ES=1;
}
void Delay10ms(unsigned int c)//延時(shí)10ms
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void KeyDown(void)
{
unsigned char a=0;
JP=0x0f;
if(JP!=0x0f)
{
Delay10ms(1);
if(JP!=0x0f)
{
AJ=1;
switch(JP)
{
case(0X07): JZ=0;break;
case(0X0b): JZ=1;break;
case(0X0d): JZ=2;break;
case(0X0e): JZ=3;break;
}
JP=0Xf0;
switch(JP)
{
case(0X70): JZ=JZ;break;
case(0Xb0): JZ=JZ+4;break;
case(0Xd0): JZ=JZ+8;break;
case(0Xe0): JZ=JZ+12;break;
}
for (a=0;(a<50)&&(JP!=0xf0);a++)
{
Delay10ms(1);
}
}
}
}
void FSSZ(void) interrupt 4
{
RI=0;
LED=~SBUF;
Delay10ms(1);
}
程序功能:向從機(jī)發(fā)送矩陣鍵盤(pán)的按鍵值,并接收從機(jī)發(fā)回的信息,用LED燈亮來(lái)顯示收到的信息。
從機(jī)程序:
/*
串口實(shí)驗(yàn):實(shí)驗(yàn)單片機(jī)與單片機(jī)通訊,此為從機(jī)程序
*/
#include<reg51.h>
#define SMG P0//數(shù)碼管
unsigned char k;
unsigned char code XSM[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
void UsartConfiguration();
void Delay10ms(unsigned int c);
void main()
{
UsartConfiguration();
Delay10ms(10);
while(1)
{
}
}
void UsartConfiguration()
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0XF3;
TR1=1;
ES=1;
EA=1;
}
void Delay10ms(unsigned int c)//延時(shí)10ms
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void CKTX() interrupt 4
{
RI=0;
k=SBUF;
SMG=XSM[k];
SBUF=k;
while (!TI);
TI = 0;
}
程序功能:接收主機(jī)發(fā)來(lái)的信息,并用數(shù)碼管顯示內(nèi)容,再發(fā)送信息回主機(jī)。
所用開(kāi)發(fā)板是一樣的,電路如圖示:
1.jpg (37.58 KB, 下載次數(shù): 28)
下載附件
2018-12-12 08:16 上傳
1.jpg (32.6 KB, 下載次數(shù): 28)
下載附件
2018-12-12 08:17 上傳
1.jpg (35.11 KB, 下載次數(shù): 31)
下載附件
2018-12-12 08:18 上傳
1.jpg (17.06 KB, 下載次數(shù): 26)
下載附件
2018-12-12 08:18 上傳
這次的試驗(yàn)沒(méi)用138譯碼器,只顯示當(dāng)前接收到的內(nèi)容。
|
|