找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8098|回復: 1
打印 上一主題 下一主題
收起左側

[原創(chuàng)]51單片機與PC機串口通信

[復制鏈接]
跳轉到指定樓層
樓主
ID:3395 發(fā)表于 2009-6-22 17:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機P2口接8只LED燈,P3.2~P3.3引腳連接有K1和K2共2個按鍵,使用單片機串行口與PC機通信。


1)由PC機控制單片機的P2口,將PC機送出的數以二進制形式顯示在LED燈上;


2)按下按鍵K1向PC機發(fā)送數字0x55,按下K2向PC機發(fā)送數字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}; //十六進制-7段譯碼表
void mDelay(unsigned int DelayTime) //延時函數
{ unsigned char j=0;
for(;DelayTime>0;DelayTime--) //延時循環(huán)
{ for(j=0;j<125;j++)
{;}}}
void SendData(uchar Dat) //發(fā)送函數
{ uchar i=0;
SBUF=Dat; //發(fā)送Dat
while(1){
if(TI) //如果發(fā)送中斷標志為1,則等待,
{ TI=0; break; } //否則清除發(fā)送中斷標志
}}
uchar Key() //按鍵處理函數
{ uchar KValue; //聲明鍵值函數
P3|=0x3e; //中間4位置高電平 0011 1101
if((KValue=P3|0xe3)!=0xff) //如果按鍵按下
{ mDelay(10); //延遲時間函數
if((KValue=P3|0xe3)!=0xff) //如果按鍵還在按下狀態(tài)
{ for(;;) //等待
if((P3|0xe3)==0xff) //如果按鍵抬起,
return(KValue); //返回鍵值
}}
return(0); //如果按鍵沒有按下,返回0
}
void main() //主函數
{ uchar KeyValue; //定義鍵值變量KeyValue
unsigned char ns,ng,temp; //定義變量ns,ng,temp
P2=0xff; //熄滅P2口連接的所有發(fā)光管
TMOD=0x20; //確定定時器工作模式,模式2,常數自動裝入
TH1=0xFD;
TL0=0xFD; //定時器1的初值 波特率為9600,晶體為11.0592MHz
//PCON&=0x80; 若是SMOD=1 可以使波特率加倍
TR1=1; //啟動定時器1
SCON=0x40; //串口工作方式1 運行在8位模式
REN=1; //允許接收
for(;;) //無限循環(huán)
{if(KeyValue=Key()) //調用按鍵函數,獲取按鍵信息
{ if((KeyValue|0xfb)!=0xff) //如果按鍵k1按下
SendData(0x55); //調用發(fā)送函數,送出0x55
if((KeyValue|0xf7)!=0xff) //如果k2按下
SendData(0xaa); //調用發(fā)送函數,送出0xaa
}
if(RI) //如果接收中斷發(fā)生
{ P2=SBUF; //將接收數據寫到端口P2
RI=0; } //清除接收標志位
temp=P2; //暫存接收到的數據
ng=temp & 0x0f; //取接收數據低4位
ns=temp>>4; //將高4位右移4位
ns &=0x0f; //取接收數據高4位
P0=table[ng]; //P0口連接的數碼管顯示低4位
P1=table[ns]; //P1口連接的數碼管顯示高4位
}}






http://bbs.huazhoucn.com

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:16966 發(fā)表于 2009-9-21 18:46 | 只看該作者
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表