写个单片机串口接收程序,然后自己制定控制码,如上位机(串口助手)发送"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,
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? 求程序。。
如果只是简单的控制也可以使用串口调试助手直接给单片机发送命令,以达到控制单片机的目的。也可以使用其他通讯方式,比如RS485、RS422、USB、CAN、以太网、蓝牙、WIFI等都可以使用,但是单片机必须扩展相应的通讯接口,如电脑没有
MOV scon,#50H ;设置串口工作方式1,REN = 1 允许接收 CLR TI CLR RI SETB IT0 MOV IE,#81H SETB TR1 ;定时器开始工作 COMM: MOV R0,#30H MOV R1,#7 CHECK: JNB RI,CLR RI MOV A,SBUF CJNE A,#
要 有 程序 才行!也就是 说 串口调试助手 发送数据 单片机 程序 接收 数据,然后根据 数据的 不同 点亮 不同 的 led灯 百度文库里有 单片机 100例的文档,建议 搜来看看 还有 我的领地 5d6d 里的 proteus论坛 里
EA = 1; // 开总中断 ES = 1; //开串口中断 RS485E=0; // RS5485E=0为接收状态 RS5485E=1为发送状态 while(1);} void counter4(void) interrupt 4 using 2 //串口中断 { while(R
pc通过串口和单片机交换数据,从而控制LED灯。 pc程序用labview 调用Visa 进行串口通讯。单片机接受到串口命令后控制I/O口的高低电平实现led灯亮灭控制。用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送
只要用main循环就可以实现,代码主要分三部分,首先需要单片机初始化,设置好串口部分的波特率,通讯方式等,还要设置好LED灯的驱动端口为输出,根据你设计的电路设置好工作模式,
如何用串口调试助手发送数据给单片机并使LED灯亮
在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该
以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下
通过51单片机控制时钟,从而控制时间,来完成闪烁 /***/ /*程序名称:点亮一个P1。0口的发光管*/ /*说 明 :利用软件延时500ms*/ /*操作类型:位操作
0x33:led=0;break;//收到0x03,led灯灭 } } } }
51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手
51单片机串口控制led灯方法是什么?
LED = 1; //灯灭 } count++;if(count == CYCLE){ count=0;if(PWM_ON!=0) //如果左右时间是0 保持原来状态 LED = 0; //灯亮 }}有什么不明白的可以问我!
十毫秒左右可以),再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)
再要看这100个LED是怎么排列的,要是能排列成矩阵,就可以节省I/O接口了,就可以少用几片74HC595了。51单片机控制8个LED灯亮灭问题 用C语言中产生随机数的方法每次产生一个0~255间的一个随机数,然后赋值给P0口 一片
以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下
设置芯片的时钟和计数器,以便实现时间控制。例如,可以使用定时器或延时函数来控制时间。在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main函
4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。
怎样用单片机控制LED灯的亮和灭?
51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手
P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一盏LED灯,每隔1秒钟灯的状态会发生一次变化,即由点亮状态变为熄灭状态,再由熄灭状态变为点亮状态
设置芯片的时钟和计数器,以便实现时间控制。例如,可以使用定时器或延时函数来控制时间。在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main
pc通过串口和单片机交换数据,从而控制LED灯。 pc程序用labview 调用Visa 进行串口通讯。单片机接受到串口命令后控制I/O口的高低电平实现led灯亮灭控制。用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送
方法1 单片机智能控制,单片机源代码 /*--- 名称:IO口高低电平控制 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ---*/ includereg52.h //包含头文件,一般
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
单片机串口通信控制led灯的点亮
1、首先新建一个工程(新项目)。2、其次查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚。3、然后编写程序(通过查看原理图可以看到需要控制整个P2口以控制8个LED灯)。4、最后编译程序,下载程序至开发板,
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单片机来讲,1这端对应链接单片机的引脚的话如P1.0。就写代码给P1.0输出1就能亮起LED灯D1。sbit LED_D1= P1^0 ;LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点
//串口发送一个字节 void Uart_SendChar(unsigned char dat){ SBUF = dat; //待发送的数据写入缓冲区 while(!TI); //等待发送完成 TI = 0; //清零发送标志位 } /*---*/ //串口发送一个字符串 void Uart_Sen
首先,将LED的正极接入单片机的硬件输出口,将LED的负极接入单片机的地。然后,使用单片机编程语言编写代码,控制单片机的硬件输出口输出高电平或低电平来控制LED的亮灭。例如在使用C语言编程,可以使用digitalWrite()函数将指定的
pc通过串口和单片机交换数据,从而控制LED灯。 pc程序用labview 调用Visa 进行串口通讯。单片机接受到串口命令后控制I/O口的高低电平实现led灯亮灭控制。用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送
51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手
怎样使用单片机的串口控制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灯灭 } } } }51单片机 多种格式串口控制LED源码: http://www.51hei.com/bbs/dpj-163182-1.html,适合新手
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; }
再试试: #include #define uchar unsigned char #define uint unsigned int void main() { PCON = 0; SCON = 0x50; //串口方式1, 8-n-1, 允许接收. TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; ES = 1; EA = 1; while(1); } void servise() interrupt 4 { RI = 0; P2 = SBUF; }
你说的这种通信要求可以采用帧传送的方式,自己要确定一个帧格式,例如: 0X55//帧头标志 0XAA //128字节数据 校验字节1 校验字节2 校验字节是防止数据传输错误,校验方式可自行选择。 如果数据不是很重要,定义一个132字节接收队列(全局变量数组),如果数据很重要,定义两个132字节接收队列,一个做接收缓冲,接受正确才更新正式队列。还要定义一个接收指针,当接收到帧头标志,接收指针清零,以后每接收一个字符,以接收指针做下标将数据存入接收数组。