首先是单片机接受程序:include 4 #define uchar unsigned char 5 #define uint unsigned int 6 sbit p=PSW^0;7 8 uchar receive(void){ 9 uchar data1;10 while(RI==0);//ÅÐ&

if(SBUF==1) //这也是按二进制数接收的 这样写程序,要求电脑上,要按二进制数即十六进制数发送才行。还是按字符格式收发比较好。这样,程序改一下就行了。if(SBUF==‘0’) //这就是按字符接收的 if(SBUF==‘1

51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手

0x03:led=1;break;//收到0x03,led灯亮 case 0x33:led=0;break;//收到0x03,led灯灭 } } } }

LED_pin=0;break;case 0x01: //打开LED LED_pin=1;break;default:break;}

用串口接收字符为命令来控制LED灯,该怎么写程序

GPIB、串口、USB、以太网和某些VXI仪器使用基于消息的通信方式。对基于消息的仪器进行编程,使用的是高层的ASCII字符串。仪器使用本地处理器解析命令字符串,设置合适的寄存器位,进行用户期望的操作。SCPI(可编程仪器标准命令)

单片机接收数据,无论是中断接收,还是查询接收,通常都是根据接收标志位,来判断接收一个字节。写程序之前,都会根据接收数据长度建立一个接收数组,比如根据协议,应该接收25个字节,那就建立一个大于等于25个字节的数组,根据

如果条件允许的话,一般是通过单片机连PC串口,让PC模拟模块收发数据来验证串口通讯是否正常(PC端能够直接看到单片机发送的数据,从而判断程序是否符合同模块的通讯要求),再把PC换成模块进行通讯。这样调试比较方便。你和模块

是在单片机端的程序中实现的,用串行口中断读出SBUF中的数据,再做判断来对应。if(RI){ //接受数据中断 a=SBUF; //读字符 RI=0; //清中断标志 } if(a==0x6b){ //判断字符是不是'k'P2^0=1;a=0x00; //

include 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=

字符串比较的函数就简单了。比如这样的函数:int strcmp(char *S,char *D,char LEN){ int n;for(n=0;n

while(RI == 1) //判断接收标志,如果有数据接收RI被置位 { MAIN_BUF = SBUF; //下位机把接收到上位机数据赋值给MAIN_BUF变量 RI = 0; //RI被硬件置位必须软件清除标志 } }

单片机串口通信,上位机发送一串字符,单片机判断字符串 是否相符如果相符就点亮一个LED灯。最好能有实例

//串口接收中断函数 void INT_UartRcv(void) interrupt 4 { unsigned char Rcv = 0;if(RI) //查询接收标志位(有数据发送过来时置为1){ RI = 0; //接收标志位清零 Rcv = SBUF; //存储缓冲区的数据

口中断程序,中断程序里把接收的数据放在一个数组中就行。调试助手设置好串口的波特率,写好要发送的数据,直接发送就OK!

51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手

方法1 单片机智能控制,单片机源代码 /*--- 名称:IO口高低电平控制 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ---*/ includereg52.h //包含头文件,一般

LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。

而你的程序是按十六进制数的格式判断的,也就是二进制数,所以,发送和接收格式不统一,单片机就不能正常接收控制LED0,也就不能正常返回数据。if(SBUF==0) //这是按二进制数接收的 if(SBUF==1) //这也是按二进制

单片机串口通信控制led灯的点亮

当单片机LED灯一亮一灭间隔1秒时,可以使用以下代码实现:// 初始化IO口 P1 = 0xFF; // 设置延时时间 while (1) { P1 = 0x00; // 延时1秒 for (int i = 0; i < 10000; i++) { // 空循环 } P1 =

51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手

方法很简单我说出我的想法,用一片价格低廉的单片机,单片机供电加一个低W保险丝、程序控制IO点亮LED 10-15分钟后,在控制另一IO口驱动三级管(或其他开关器件)烧断保险丝,这样即使更换电池LED也不可能在亮,

以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下

用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送的0,1,是以什么数据格式发送的,通常以字符格式发送的,即是ASCII码。所以,单片机接收时,也要按字符格式发才行。而你的程序是按十六进制数的格式

在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main函数中添加延时函数,以实现上电后30秒后LED灯开始点亮的要求。下面是一个简单的示例程序

2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极连接到电阻,然后将电阻的另一端连接到单片机的地(GND)引脚。确保连接牢固。3.编写程序:使用单片机的编程软件(如A

单片机串口通信怎么切换led灯时间

首先要查看电路的连接,看看输入连接到单片机的哪个引脚(比如P1.0),LED灯连接到哪个引脚(比如P2.0)。然后看是高电平有效还是低电平有效(也就是高电平时LED灯亮,还是低电平时LED灯亮)。如果是高电平灯亮的话,

pc通过串口和单片机交换数据,从而控制LED灯。 pc程序用labview 调用Visa 进行串口通讯。单片机接受到串口命令后控制I/O口的高低电平实现led灯亮灭控制。用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送

0x33:led=0;break;//收到0x03,led灯灭 } } } }

51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手

51单片机串口控制led灯方法是什么?

写个单片机串口接收程序,然后自己制定控制码,如上位机(串口助手)发送"OPEN",下位机接收到后,便打开LED,发"CLOSE",下位机接收后,便关闭LED

你好!这个涉及到上位机和单片机直接的串口通信问题,制定好通信协议,就可以用电脑控制单片机 你的电脑端,采用什么语言来编程呢,具体要控制几个灯,私信说明一下

MOV SCON, #00H ;设置串行口工作在方式0 MOV 50H, #00H ;个位清零 MOV 51H, #00H MOV 52H, #00H DL_LOOP:LCALL DL_100MS MOV A, 50H ADD A, #1 MOV 50H, A CJNE A,

51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手

COleSafeArray m_Input2;long length,i;BYTE data[1024];CString str;BYTE a;if(m_COM.get_CommEvent() == 2) //事件值为2表示接收缓冲区内有字符 { m_Input1 = m_COM.get_Input(); //读缓冲区 m_

0x03:led=1;break;//收到0x03,led灯亮 case 0x33:led=0;break;//收到0x03,led灯灭 } } } }

怎么用上位机通过串口去控制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;//收到0x03,LED灯灭 } } } }
下面的程序我已经调试过了,你可以直接使用,但是一秒闪烁次数t的最大为2000,如果要大于这个数,你必须改小dalay1ms ()内的j值,就可以改大t #include sbit LED0=P1^0; unsigned int t=0,k; void dalay1ms (unsigned int i) //晶振选用11.0592 { unsigned int j; for(i;i>0;i--) for(j=922;j>0;j--); } void main () { EA=1; ES=1; TMOD=0x20; //定时器T1方式为2 TH1=0xfa; //波特率设定为9600 TL1=0xfa; while(1) { if(t!=0) { k=2000/t; dalay1ms (k) ; LED0=!LED0; } if(t==0) LED0=0; } } void counter4(void) interrupt 4 { while(RI==0); RI = 0; t= SBUF; }
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;//收到0x03,LED灯灭 } } } }
51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手
单片机接收数据,无论是中断接收,还是查询接收,通常都是根据接收标志位,来判断接收一个字节。写程序之前,都会根据接收数据长度建立一个接收数组,比如根据协议,应该接收25个字节,那就建立一个大于等于25个字节的数组,根据判断条件(可以根据长度判断,可以根据特定字节判断),完成25个字节的接收后,再根据协议,对25个字节进行分析归纳,如果协议中有整形数据(8位机中整形变量为两个字节),就可以截取其中处于正确数组位置的两个字节,高字节先赋值给整形变量乘以256,或者直接左移8位,再加上低字节。就可以了。
这是我从GSM模块应用程序中,摘录的字符查找函数 从Uart1_Buf[ ]中查找是包含字符串a[ ] /******************************************************************************* * 函数名 : Find * 描述 : 判断缓存中是否含有指定的字符串 * 输入 : * 输出 : * 返回 : unsigned char:1 找到指定字符,0 未找到指定字符 * 注意 : *******************************************************************************/ u8 Find(u8 *a) { if(strstr(Uart1_Buf,a)!=NULL) return 1; else return 0; } 应用例子 if(Find("get")) .......
可以去 proteus 论坛看看 有 源码例程
中断接收放缓冲区,然后判断是不是这个字符串就行了,是的话触发led点亮程序