淘晶驰串口屏通过单片机点亮小灯,买了块淘晶驰的串口屏,由单片机向串口屏发送实时的数据可以实现了,但通过串口屏设定参数发送给单片机怎么也实现不了
就像先试试通过串口屏发送00给单片机点亮小灯,但始终无法点亮
一开始想通过VSPD添加了com5和com6两个虚拟串口然后用sscom监视com6口有没有收到数据事实上确实受到了00
求大佬指点为什么受到了00却不能点亮小灯
(RX和TX接对的)
- #include <REG51.H>
- #include <intrins.h>
- #include <absacc.h>
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include “uart.h”
- sfr P3M0 =0xb1;
- sfr P3M1 =0xb2;
- #define uchar unsigned char
- #define uint unsigned int
- sbit led=P1^4;
- void UART_Send_Byte(unsigned char mydata) // 发送一个字节
- {
- ES=0;
- TI=0;
- SBUF=mydata;
- while(!TI);
- TI=0;
- ES=1;
- }
- void UART_Send_Str(char *s) //发送文本串
- {
- int i=0;
- while(s[i]!=0)
- {
- UART_Send_Byte(s[i]);
- i++;
- }
- }
- void UART_Send_END(void) //发送结束符
- {
- UART_Send_Byte(0xFF);
- UART_Send_Byte(0xFF);
- UART_Send_Byte(0xFF);
- }
- void delay(uint z) //延时
- {
- uint t1,y;
- for(t1=z;t1>0;t1–)
- for(y=110;y>0;y–);
- }
- void USART_init()
- {
- PCON &= 0x7F; //波特率不倍速
- SCON = 0x50; //8位数据,可变波特率
- TMOD &= 0x0F; //清除定时器1模式位
- TMOD |= 0x20; //设定定时器1为8位自动重装方式
- TL1 = 0xFD; //设定定时初值
- TH1 = 0xFD; //设定定时器重装值
- ET1 = 0; //禁止定时器1中断
- TR1 = 1; //启动定时器1
- ES=1;
- EA=1;
- }
- void UARTInterrupt(void) interrupt 4
- {
- if(RI)
- {
- RI = 0;
- led=SBUF;
- }
- }
- void main (void)
- {
- //单片机为 STC89C52
- //晶振 11.0592
- USART_init();
- }
复制代码
,实物图
,这句 led=SBUF;不能直接赋十六进制的值,可以改成P1=SBUF;你这个串口没问题。,
zhanghyg 发表于 2020-4-25 13:42
这句 led=SBUF;不能直接赋十六进制的值,可以改成P1=SBUF;你这个串口没问题。
大哥改了之后还是不行,大佬,怎么实现单片机发送数据给串口屏