機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
51單片機(jī)與PC機(jī)串口通信
51單片機(jī)與PC機(jī)串口通信
 更新時(shí)間:2009-10-29 14:22:30  點(diǎn)擊數(shù):0
【字體: 字體顏色

單片機(jī)P2口接8只LED燈,P3.2~P3.3引腳連接有K1和K2共2個(gè)按鍵,使用單片機(jī)串行口與PC機(jī)通信。
1)由PC機(jī)控制單片機(jī)的P2口,將PC機(jī)送出的數(shù)以二進(jìn)制形式顯示在LED燈上;
2)按下按鍵K1向PC機(jī)發(fā)送數(shù)字0x55,按下K2向PC機(jī)發(fā)送數(shù)字0xAA。
源程序如下:

#define uchar unsigned char
#include "string.h"  
#include "reg51.h"
unsigned char   code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
                         0x08,0x03,0x46,0x21,0x06,0x0e}; //十六進(jìn)制-7段譯碼表
void mDelay(unsigned int DelayTime)     //延時(shí)函數(shù)
{ unsigned char j=0;
for(;DelayTime>0;DelayTime--)          //延時(shí)循環(huán)
{ for(j=0;j<125;j++)
{;}}}
void SendData(uchar Dat)     //發(fā)送函數(shù)
{ uchar i=0;
SBUF=Dat;                //發(fā)送Dat
while(1){
if(TI)                     //如果發(fā)送中斷標(biāo)志為1,則等待,
{ TI=0; break; }            //否則清除發(fā)送中斷標(biāo)志
}}
uchar Key()                     //按鍵處理函數(shù)
{ uchar KValue;                  //聲明鍵值函數(shù)
P3|=0x3e;                       //中間4位置高電平 0011 1101
if((KValue=P3|0xe3)!=0xff)        //如果按鍵按下
{ mDelay(10);                   //延遲時(shí)間函數(shù)
if((KValue=P3|0xe3)!=0xff)        //如果按鍵還在按下?tīng)顟B(tài)
{ for(;;)                        //等待
if((P3|0xe3)==0xff)               //如果按鍵抬起,
return(KValue);                  //返回鍵值
}}
return(0);                       //如果按鍵沒(méi)有按下,返回0
}
void main()                      //主函數(shù)
{ uchar KeyValue;                //定義鍵值變量KeyValue
unsigned char ns,ng,temp;          //定義變量ns,ng,temp
P2=0xff;                        //熄滅P2口連接的所有發(fā)光管
TMOD=0x20;               //確定定時(shí)器工作模式,模式2,常數(shù)自動(dòng)裝入
TH1=0xFD;        
TL0=0xFD;                    //定時(shí)器1的初值  波特率為9600,晶體為11.0592MHz
//PCON&=0x80; 若是SMOD=1 可以使波特率加倍
TR1=1;                          //啟動(dòng)定時(shí)器1
SCON=0x40;                //串口工作方式1  運(yùn)行在8位模式
REN=1;                         //允許接收
for(;;)                           //無(wú)限循環(huán)
{if(KeyValue=Key())              //調(diào)用按鍵函數(shù),獲取按鍵信息
{ if((KeyValue|0xfb)!=0xff)     //如果按鍵k1按下
SendData(0x55);                   //調(diào)用發(fā)送函數(shù),送出0x55
if((KeyValue|0xf7)!=0xff)        //如果k2按下
SendData(0xaa);                   //調(diào)用發(fā)送函數(shù),送出0xaa
}
if(RI)                         //如果接收中斷發(fā)生
{ P2=SBUF;             //將接收數(shù)據(jù)寫(xiě)到端口P2
RI=0; }                       //清除接收標(biāo)志位
temp=P2;                  //暫存接收到的數(shù)據(jù)
ng=temp & 0x0f;       //取接收數(shù)據(jù)低4位
ns=temp>>4;            //將高4位右移4位
ns &=0x0f;               //取接收數(shù)據(jù)高4位
P0=table[ng];        //P0口連接的數(shù)碼管顯示低4位
P1=table[ns];        //P1口連接的數(shù)碼管顯示高4位
}}

  • 上一篇: 利用VB實(shí)現(xiàn)PC機(jī)與多單片機(jī)通訊
  • 下一篇: 沒(méi)有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1