<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機與電腦的全雙工串口通信

51單片機與電腦的全雙工串口通信

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏
程序功能:4*4鍵盤(pán)按鍵數值和電腦按鍵數值顯示在單片機數碼管上和串口大師上(0~F)全雙工

本文引用地址:http://dyxdggzs.com/article/201611/319681.htm

說(shuō)明:P2數碼管段選,只選一個(gè)數碼管,P1接鍵盤(pán),P3.1=TXDP3.0=RXD 經(jīng)過(guò)max232轉換電平之后接電腦,打開(kāi)串口大師9600bps 1位校驗位 8位數據位。借用請留言! 作者QQ:305659935 超

C文件包括兩個(gè).h文件

C語(yǔ)言程序如下:

#include
#include
#include<uart9600.h>
#include<44jianpan.h>

void main()
{

uchar key=0;
P2 = 0x7f;//數碼管顯示"-"
inituart9600();

TR1 = 1;// 啟動(dòng)定時(shí)器1

while(1)
{
receive_char();

keydown();

};

}

4*4鍵盤(pán).h文件如下:

/
void delayms(uchar ms)
{
uchar t;
while(ms--)
{
for(t = 0; t < 120; t++);
}
}


void delay0(uchar x)
{
uchar i;
while(x--)
{
for (i = 0; i<13; i++) {;}
}
}


void beep()
{
uchar i;
for (i=0;i<180;i++)
{
delay0(5);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //關(guān)閉蜂鳴器
delayms(250); //延時(shí)
}


uchar keyscan()
{
uchar scan1,scan2,keycode,j;

JP=0xf0;
scan1=JP;
if((scan1&0xf0)!=0xf0) //判鍵是否按下
{
delayms(30); //延時(shí)30ms
scan1=JP;
if((scan1&0xf0)!=0xf0) //二次判鍵是否按下
{
JP=0x0f;
scan2=JP;
keycode=scan1|scan2; //組合成鍵編碼

for(j=0;j<=15;j++)
{
if(keycode== key_code[j]) //查表得鍵值
{
key=j;

return(key);

}
}
}
}
else JP=0xff;

return (16);
}



void keydown()
{
JP=0xf0;
if((JP&0xf0)!=0xf0)
{
keyscan();
P0=disp_code[key];
send_char(key);
beep();
}
}

#endif

uart(串口)協(xié)議程序如下:


#ifndef __UART9600_H__
#define __UART9600_H__
unsigned char code disp_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};
unsigned char tmp;
void send_char(unsigned char txd);
void inituart9600() //初始化計時(shí)器,裝入值,設定參數 9600bps 1位校驗位
{
TMOD = 0x20;// 定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(chǎn)生波特率
TH1 = 0xFD;// 波特率9600
TL1 = 0xFD;

SCON = 0x50;// 設定串行口工作方式
PCON =0x00;// 波特率不倍增

}

void receive_char() //接受1個(gè)字符,8位
{



if(RI)// 是否有數據到來(lái)
{
RI = 0;
tmp = SBUF;// 暫存接收到的數據,保存數據
P0=disp_code[tmp];
send_char(tmp);////////////////////////////////發(fā)回數據

}

}

void send_char(unsigned char txd) //// 傳送一個(gè)字符,發(fā)射1byte,8位

{
SBUF = txd;
while(!TI);// 等特數據傳送
TI = 0;// 清除數據傳送標志
}



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>