智能车讲座串口通信程序演示

[ 1101 查看 / 1 回复 ]

一、 实验简介:
本程序通过数码管,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数字)

分享 转发
TOP

ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

STM32开发板
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择