A. 单片机串口通信控制led灯的点亮
pc通过串口和单片机交换数据,从而控制LED灯。 pc程序用labview 调用Visa 进行串口通讯。单片机接受到串口命令后控制I/O口的高低电平实现led灯亮灭控制。
用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送的0,1,是以什么数据格式发送的,通常以字符格式发送的,即是ASCII码。所以,单片机接收时,也要按字符格式发才行。而你的程序是按十六进制数的格式判断的,也就是二进制数,所以,发送和接收格式不统一,单片机就不能正常接收控制LED0,也就不能正常返回数据。 if(SBUF==0) //这是按二进制数接收的 if(SBUF==1) //这也是按二进制数接收的 这样写程序,要求电脑上,要按二进制数即十六进制数发送才行。 还是按字符格式收发比较好。
看你这程序编的,ha 查询RI 不是等于 1,而是0 只有当数据传送过来的时候,RI才会由1变为0,所以需要查询的状态是 0,不是1 当接收完数据后,再进行对RI的清零 还是不多说了,上程序,若满意请记得采纳一下,谢谢! 这是一个由串口助手发送十六进制码来控制单片机的8个LED亮灭的简单小程序
电脑上,你是用什么软件发送数据的看用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送的0,1,是以什么数据格式发送的,通常以字符格式发送的,即是ASCII码。所以,单片机接收时,也要按字符格式发才行。而你的程序是按十六进制数的格式判断的,也就是二进制数,所以,发送和接收格式不统一,单片机就不能正常接收控制LED0,也就不能正常返回数据。
B. 单片机串口通信,实现接收到数据后,灯亮。
看你这程序编的,ha
查询RI
不是等于
1,而是0
只有当数据传送过来的时候,RI才会由1变为0,所以需要查询的状态是
0,不是1
当接收完数据后,再进行对RI的清零
还是不多说了,上程序,若满意请记得采纳一下,谢谢!
这是一个由串口助手发送十六进制码来控制单片机的8个LED亮灭的简单小程序
/***************************************************************************/
#include
<REG52.h>//通用89C52头文件
/***************************************************************************/
void
main(void)//主函数
{
TMOD=0x20;
//定时器1和2工作方式2(8位定时/计数)
TH1=0xfd;
//定时器1设置初值,波特率9600bit/s,
TL1=0xff;
TR1=1;//启动定时器T1
PCON=0x00;
//SMOD=0,不加倍
SCON=0x50;
//串口工作方式1,允许接收
IE=0x00;
//关闭所有中断
while(1)
{
if(RI==0)//如果有数据
{
P2=SBUF;
//接收数据并输出至LED上显示
while(!RI);
//等待接收完成
RI=0;
//清空标识
}
}
}
/***************************************************************************/
C. 51单片机串口控制led灯方法是什么
unsigned char tmp;
sbit led=P1^0;
void main(void)
{
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
SCON = 0x50; // 设定串行口工作方式
PCON &= 0xef; // 波特率不倍增
TR1 = 1; // 启动定时器1
IE = 0x0; // 禁止任何中断
while(1)
{
if(RI) // 是否有数据到来
{
RI = 0;
tmp = SBUF; // 暂存接收到的数据
switch(tmp )
{
case 0x03:led=1;break;//收到0x03,LED灯亮
case 0x33:led=0;break;//收到0x33,LED灯灭
}
}
}
}
D. 单片机控制LED灯程序设计总结300字(急!!)
呵呵 这个就是自己的心得体会而已,我可以为了提供大概的个人心得,仅个人观点。
首先是控制LED的意义:(通常初学单片机的人控制LED是用并口,也就是掌握IO口输入输出功能、相应的寄存器等等,简单了解一下单片机,以及对于单片机每个功能模块的学习应该怎么入手等等。当然控制LED并不是只能用并口,用串口、红外等等通讯方式都可以)
其次是控制LED的方法:(还是以IO口控制为例,其实法方是死的,可以有很多,比如:1、每个IO直接赋值;2、用移位等等方式处理)
再其次是控制LED的用途:(通常一般仪器设备上的LED都是作为指示灯,比如电源指示啊,通讯啊等等或者只是为了美观好看,其实点阵也是指示的一种吧!这个可以自己想了)
最后是控制LED学到了什么:(其实这个就是写废话了,自己随便想,结合上面的几点)
备注:以上只是突然看到这个提问随便写的,也没考虑得太多,可能不够完善,不喜勿喷!
E. 怎么用上位机通过串口去控制51单片机点亮一个LED 求程序。。
编了一个小程序,供参考,没有环境调试,大概意思就这样,你可以参考自己试试。
#include<reg51.h>
#include<string.h>
#define uchar unsigned char
sbit LED=P1^0;
uchar buf[16],num;
uchar strOpen="Open";
uchar strClose="Close";
void uart() interrupt 4
{
if(RI)
{
RI=0;
buf[num]=SBUF;
num++;
}
if(TI)TI=0;
}
void initbuf()
{
uchar i;
for(i=0;i<16;i++)buf[i]=0x00;
}
main()
{
TMOD=0x20;
SCON=0x50;
TH1=TL1=0xfd;
TR1=1;
ES=1;
EA=1;
initbuf();
while(1)
{
switch(num)
{
case 0:break;
case 1:break;
case 2:break;
case 3:break;
case 4:
if(strcmp(strOpen,buf)==0)LED=0;
initbuf();
num=0;
break;
case 5:
if(strcmp(strClose,buf)==0)LED=1;
initbuf();
num=0;
break;
default:num=0;break;
}
}
}
F. 51单片机一个串口跟几个LED灯串联可以吗
51单片机一个串口跟几个LED等串联当然是可以这么连接的,但是这样连接没有什么实质意义,达不到分别控制的目的,这样连接,串口也就起到一个普通IO口的作用,LED灯也就是起到一个降压的作用。