• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

AT89C51与PC串口通信

奋斗前行 2014-11-04 浏览量:1378

AT89C51与PC串口通信

该电路图对应的程序如下:

#include
unsigned char dat,dat1; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容 
unsigned char code table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,}; //1~10,LED共阴极连接
unsigned char code a[4]={0xfe,0xfd,0xfb,0xf7};
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
void Init_com()
{ TMOD=0x20;    //设定计数器1为模式2
    SCON=0x70;
PCON=0x40; //波特率加倍
TH1=0xF4;
TL1=0xF4;   //设定波特率为4800
TR1=1;       //启动计数器
//IE=0x90;

}
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}


void LED(dat1) //LED显示接收到的数据(十进制)
{
//dat1=130;
P1=table[dat1/1000];P20=0; Delay(10);P20=1; 
P1=table[dat1/100%10];P21=0; Delay(10);P21=1;
P1=table[dat1/10%10];P22=0;Delay(10);P22=1;
P1=table[dat1%10];P23=0,Delay(10);P23=1; 
//P1=table[dat/100]; Delay(10); 
}

void main()
{
Init_com();//串口初始化
while(1)
{                      
if (RI) //扫描判断是否接收到数据,
{

dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI 清零。
//SBUF = dat; //在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)
}

LED(dat); //显示接收到的数据
}
}

PC向单片机发送字符,如果是0-9就显示0-9,若果是其他的字符,就显示他的ASCII码,但是仿真时不对,请各位看一下程序哪里不对?

有人说这是MAX23和COMPIN这个的问题,但是我将COPIN换乘 CONN-D9F或者是单片机直接连COMPIN,还是不对,显示器显示的数字不对,应该还是单片机没有正确接收到字符,不知道错在哪?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 参考一下这种接法

    附上串口通信相关仿真文件:

    Proteus仿真实例书籍,你下载看看,里面有相关程序

    http://pan.baidu.com/s/1mgFUONA

    • 发布于 2014-11-04
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 请问目前的现象是怎样的,还有图中那个PCT跟SCMR是用来干嘛的?
    • 发布于2014-11-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 不对具体是什么现象?这个电路也不复杂   建议楼主用万能板搭一个电路,实际做实验比较可靠。
    • 发布于2014-11-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 你这个应该是程序有些小问题的(原理图不全,不敢确定),比如unsigned char code table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,};,后边加个“”是什么意思,还有一位任意值吗?

    //IE=0x90;

    //dat1=130;

    //P1=table[dat/100]; Delay(10); 

    //SBUF = dat; //在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)

    这些前面加双反斜杠是表示 说明的吧,感觉有些应该是语句吧!

    若果硬件确定没有问题的话,建议楼主好好把程序理一理咯!



    • 发布于2014-11-05
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

AT89C51与PC串口通信