历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2019年10月19日 | 51单片机与PC上位机串口通信之LED控制

发布者:chunxing 来源: 51hei关键字:51单片机  PC上位机  串口通信  LED控制 手机看文章 扫描二维码
随时随地手机看文章

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;

                }

        }

}



关键字:51单片机  PC上位机  串口通信  LED控制 引用地址:51单片机与PC上位机串口通信之LED控制

上一篇:DS18B20.h LCD1602.h头文件下载 温度和液晶 调试ok 可直接调用
下一篇:Keil_uvision4详细使用教程(图文并解)

推荐阅读

获悉,2018年10月19日,上海联影医疗科技有限公司首次公布其在美国布局的最新进展:一支完全本土化、具备丰富行业经验的市场营销和服务的核心团队已经组建完毕;同期,坐落于休斯顿的全资工厂也启动建设,预计明年下半年竣工。这两项重大举措,标志着联影继在美建立研发中心后,已将当地业务拓展至生产、营销及售后服务等环节,为进一步深耕美国本土市场做...
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL。在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态。当开发板倾斜时候,处于最上边的LED点亮,其他LED不亮。同时,用MicroUSB数据线将开发板连接电脑时,开发板就会虚拟成一个鼠标。倾斜开发板时,鼠标指针会向倾斜的方向移动。归根结底,就是牛B的ST工程师用加速...
随着华为 Mate 40 系列发布的临近,关于新机更多的爆料浮出水面。现在西班牙媒体 Huawei Ailesi 曝光了号称是华为 Mate 40 Pro 系统界面截屏,一起来看一下。  截屏显示,华为 Mate 40 Pro 将搭载麒麟 9000 处理器,提供 8GB+256GB 的存储版本,预装 EMUI 11,屏幕分辨率为 2772*1344。另外截图也暗示新机屏幕左上角依然采...
日前,工信部官网发布了对《关于在我国大力发展钠离子电池的提案》的答复。答复中提到,锂离子电池、钠离子电池等新型电池在推动新能源发展,实现碳达峰、碳中和的目标过程中极为关键。同时指出,钠离子电池因生产资料丰富、制造成本低廉、电化学性能和安全性更为稳定的特征,未来将随着技术成熟和产业链的完善,有望成为锂离子电池的重要补充。那么,现有...

史海拾趣

问答坊 | AI 解惑

正弦波信号发生器VHDL源代码

本帖最后由 paulhyde 于 2014-9-15 03:43 编辑 正弦波信号发生器VHDL源代码    …

查看全部问答∨

WinCE开发GPIO驱动,需要了解寄存器知识吗?

才接触WinCE,嵌入式开发,网上看文章说:通过GPIO控制设备,是通过虚拟寄存器来实现的 “GPIO是ARM芯片最基本的输入输出通道,在ADS下操作就是一个单片机工作, 直接读写其寄存器.在ARM9平台上,Windows CE系统将GPIO的实地址(例如2410的 GPIO的基 ...…

查看全部问答∨

请赐教:C8051F340单片机,如何实现通过USB更新程序

本人使用C8051f340单片机,不知道如何通过USB更新程序,请各位做过USB更新程序的哥哥姐姐赐教!…

查看全部问答∨

急!有关telnet和busybox的问题

   我用的是am9的开发板,通过minicom启动后,可以从开发板telnet宿主机,但是宿主机无法telnet登陆到开发板,显示connect refused.什么原因呢?怎么解决?…

查看全部问答∨

LQ035Q7DB02 的应用

各位达人,谁哪里有LQ035Q7DB02 和 mc9328mx1的连接资料啊 请发给我。 cwgcjj@126.com 太感谢了! …

查看全部问答∨

用C#在开发WinCE程序时候,在Edit控件输入的时候,想把一个键盘的Key,比如本来是字符A的变成回车键改怎么做?有知道的吗?

用C#在开发WinCE程序时候,在Edit控件输入的时候,想把一个键盘的Key,比如本来是字符A的变成回车键改怎么做?有知道的吗?…

查看全部问答∨

请教怎样调整对话框的大小

小弟的对话框总是过大, 超过了手机模拟器的屏幕, 请问如何调整对话框的大小和位置, 谢谢高手们。…

查看全部问答∨

介绍一下Windows CE的学习路线

欢迎大家加入这个群一起讨论学习 中关村智能手机开发:41995469 Q:什么是嵌入式系统? 国际电气和电子工程师协会(IEEE)对嵌入式系统的定义是这样的:嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”(Devices used to contro ...…

查看全部问答∨

兄弟姐妹们帮帮忙

                                 我是新手,没有金币,积分,谁能赏我两啊,…

查看全部问答∨

【晒经典】家电之电风扇电路图

1.用晶体管/三极管以PWM波形来驱动风扇的电路图   这种IC的例子有两个,一个是直流驱动,另一个是PWM驱动,如图1和2所示。图1中的IC远程检测温度并根据温度控制风扇速度。该芯片通过一个内部功率晶体管产生一个直流电源电压。图2中的IC具有 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved