历史上的今天
今天是:2024年10月19日(星期六)
2019年10月19日 | 51单片机与PC上位机串口通信之LED控制
2019-10-19 来源:51hei
PC机通过上层软件控制单片机LED的亮灭或者控制LED的闪烁及闪烁时间,上层软件用户名密码均为admin 注意PROTEUS串口仿真需要配合虚拟串口软件才能工作

上位机(包含源码)软件说明:
发送数据解析
字节1、2:0x55 0xaa 数据是否正确判断标志
字节3:
0x01 ------单个LED控制手动控制
0x02 ------单个LED控制自动闪烁
字节4
此字节从低位到高位依次控制LED0-LED7,例如0x01表示手动点亮LED0或者LED0自动闪烁;0x28表示手动点 亮LED3、LED5或者LED3、LED5自动闪烁
字节5、6:表示闪烁时间(6高8位 5低8位) 取值范围0-5000
程序源码预览:
#include #define uint8 unsigned char #define uint16 unsigned int uint8 receive_buffer[6]; //存放接收到的数据 uint8 i,k; void delay1ms(uint16 m) //1ms延时程序 { uint8 j; while(m--) for(j=0;j<112;j++); } void main() { uint16 time; P0 = 0xff; //初始化LED状态,熄灭 TMOD = 0x20; //定时器1工作在方式2 TH1 = 0xfd; TL1 = 0xfd; //波特率9600 TR1 = 1; //启动定时器1 EA = 1; //开启总中断 SM0 = 0; SM1 = 1; //串行口工作方式1 REN = 1; //允许串行接收 ES = 1; //开启串行口中断 while(1) { if((receive_buffer[0] == 0x55) && (receive_buffer[1] == 0xaa)) //如果接收到0x55 0xaa说明接收到的数据是正确的 { time = ((uint16)receive_buffer[5] << 8) + (uint16)receive_buffer[4]; //闪烁时间 switch(receive_buffer[2]) { case 0x01: //手动控制LED亮灭 P0 = ~receive_buffer[3]; break; case 0x02: //LED自动闪烁 P0 = ~receive_buffer[3]; delay1ms(time); P0 = 0xff; delay1ms(time); break; default: break; } } } } void uart_int() interrupt 4 { if(RI == 1) { RI = 0; receive_buffer[i] = SBUF; i++; if(i == 6) { i = 0; k = 0; P0 = 0xff; } } }
史海拾趣
|
[] 在IC卡电话、多功能电话以及其它一些利用电话线进行通信的小型设备中使用电话线馈电电路,可以省去额外的外部电源或电池。 本文对从电话线上获取较大功率电源的几种电路进行了分析,比较它们的优缺点,并给出各个电路的适用场合。 图1: ...… 查看全部问答> |
|
视觉传感器与光电开关之比较 1.视觉传感器可以同时检测多个特征,而光电开关是不能做到的。 2.视觉传感器对定位要求比较宽松,光电开关需要定位准确。 3.视觉传感器可以检测不同类型和多数量的特征,光电开关则需要很复杂的机械调整和数量改变 ...… 查看全部问答> |
|
1.芯片及模块手册资料 2.应用电路图及封装 3.SPI例程及UART例程 4.其他外围应用电路 5.232、电平转换资料 6.芯片测试文档 7.U盘支持列表 … 查看全部问答> |
|
学了一年多现在还是不能掌握计算机网络的精髓,看了许许多多的视频教程和书籍可还是没有那种想要的感觉一点都没有,几天不学习就会忘的一塌糊涂,没有知识框架,不知道如何下手,没有方向,真是郁闷的很,我很喜欢这门课程,我一直都想学精学透这门 ...… 查看全部问答> |
|
本人做了两个基于SJA1000的can节点,每个节点在PELI模式下都能实现自发自收,但连在总线上时不能通信。 当一个节点发送数据时,查了SR的状态标志位0x08,一直为1,说明上次的发送还未处理完,应该是没有收到另外一个节点的应答信号吧。我查了资料 ...… 查看全部问答> |
|
我的程序中用到CTreeCtrl,调试单步运行到InsertItem()(即使程序是从EVC的帮助文件上COPY下来)语句时就出现0xC0000005的错误,直接运行的话到相应的地方模拟器就死掉了,但是下到板子上时可以运行的,焕一个其他的SDK也可以,实在 ...… 查看全部问答> |
|
大家好, 我正在移植13506的wince5.0驱动到2440平台上。在640*480的LCd上,显示正常,但是换成一块1024*768的屏后,发现启动后桌面的图标很模糊,有些不显示,但是拖动的时候却能正常显示。打开应用软件也正常。 驱动没有过多研究,想问一下大家 ...… 查看全部问答> |
|
[TI首届低功耗设计大赛]+学习型红外遥控 1、硬件 学习红外:开启一体化红外接收头电源,然后TA0。2捕获输入信号 发送红外:TA1.1产生占空比1/4的38K信号,然后与TA0。1的包络信号 2、程序 发送部分初始化 //初始化 & ...… 查看全部问答> |




