原创 智能车 串口通信程序演示

2010-3-4 11:58 2963 7 7 分类: MCU/ 嵌入式

一、 实验简介:
本程序通过数码管,LED指示灯的闪亮来表示当前串口通信的结果,串口通信使单片机与电脑之间通信的桥梁,通过对它的学习,可以很好的用电脑来进行单片机的控制,及对单片机数据的采集。因此串口通信被广泛的用于工业控制中。
二、 实验原理图:
过程中可以看到P13闪亮了一下,表明上次正确接收到数据。


点击看大图


三、 实现代码:
//================================================================== //
//  开发日期:2009/01/29                          //
//  修改日期::                                                         //
//  程序作者:guojun         //
//  程序备注:此程序仅为表现本机功能而演示用,当用作实际工程时请慎用。    //
//  特别声明: 此程序可作研究之用,但引用、转载、使用请注明出处。      //
//================================================================== //
#include <at89x51.h>                  //包含51单片机相关头文件
#define RunLed P1                     //定义运行指示灯显示端口
#define ShowPort P2                   //定义数码管显示端口
unsigned char code LedShowData[]=      //定义数码管显示数据变量
   {0x03,0x9F,0x25,0x0D,0x99,0x49,    //定义固定存储显示字符
              0x41,0x1F,0x01,0x19};   //1,2,3,4,5,6,7,8,9,0
void ComBreak() interrupt 4            //定义串口通信子程序
{unsigned char RecvData;              //定义串口数据接收变量
 if(RI==1)                            //判断是否接收数据
 { RecvData="SBUF";                     //将接收到的数据放入暂时变量
   if(RecvData<10)                    //判断接收到的数据是否小于10
   {
    ShowPort="LedShowData"[RecvData];   //将接收到的数据通过数码管显示出来
   }
   SBUF="RecvData";                     //向电脑返回当前接收到的数据
   RI="0";                              //清除接收中断标志位
 }
 if(TI==1)                           //判断是否是发送中断
 {
   TI="0";                              //清除发送中断标志位
 }
}
void main()                           //主程序入口
{
 unsigned int FlashTime="8000";          //程序运行指示灯延时变量
 SCON=80;                            //设置串口模式为8位数据
 TMOD=32;                            //设置定时/计数器模式
 TH1=0xFD;                            //给定时器1高八位初始化初值
 TL1=0xFD;                            //给定时器1低八位初始化初值
 TR1=1;                               //开启定时器1
 ES=1;                                //开启串口通信功能
 REN=1;                               //开启接收中断标志
 EA=1;                                //总中断开启
 while(1)                             //程序主循环
 { while(FlashTime--);                 //延时子循环,用于运行闪灯效果
   FlashTime="8000";                    //对指示灯延时初始化
   RunLed=~RunLed;                    //将指示灯显示端口取反
 }
}
四、 运行效果:
程序运行效果:打开本机电源开关后,可以看到P1端LED指示灯在不停的闪耀,我们使用“串口调试助手”或其它软件向单片机发送数据,可以看到相应的数据显示在数码管上,并且发送的数据又返回到电脑中。(只显示0-9数字)

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条