找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2435|回复: 1
打印 上一主题 下一主题
收起左侧

串口通讯

[复制链接]
跳转到指定楼层
楼主
我想写个程序完成从PC发0-F字符到单片机。单片机的2位LED显示出接受到的数据。同时把接收到的数据发回PC去检查数据的正确性。
下面的程序能接收和发送数据。但是不正确。请懂的朋友指点。谢谢
#include <reg52.h>//单片机51头文件,存放着单片机的寄存器
unsigned char dat;        //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit gewei=P1^0;          //个位选通定义
sbit shiwei=P1^1;         //十位选通定义

sbit alarm=P3^6;        //声音报警        alarm=0不发出声音,alarm=1;        发声音报警

unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};        //定义0到F 16个数码管显示代码;

void Delay(unsigned int tc)     //延时程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED()    //LED显示接收到的数据
{
shiwei=0;
P2=  table[dat/16];
Delay(8);
shiwei=1;
gewei=0;
P2=  table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
{
Init_Com();//串口初始化
   P1=0;
  alarm=0;
while(1)
{
if ( RI )      //扫描判断是否接收到数据,
{
dat = SBUF-0x30;                //接收数据SBUF赋与dat
RI=0;                   //RI清零。
SBUF = dat;                //在原样把数据发送回去
}
LED();  //显示接收到的数据
}
}



QQ截图20140710221542.png (78.43 KB, 下载次数: 89)

QQ截图20140710221542.png

QQ截图20140710221507.png (75.68 KB, 下载次数: 124)

QQ截图20140710221507.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:44262 发表于 2014-7-17 16:40 来自手机 | 只看该作者
你现在的程序是不能够编译还是不能实现你所说的功能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表