历史上的今天
返回首页

历史上的今天

今天是: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;

                }

        }

}



推荐阅读

史海拾趣

AXSEM公司的发展小趣事

由于AXSEM公司在电子行业的具体发展故事细节可能涉及到公司内部资料,并且不易公开获取,因此难以提供五个具体的故事。不过,可以依据公开信息,尝试概述AXSEM公司的发展概况和可能的发展故事线索。

故事一:创立与早期发展
AXSEM公司成立于2000年,自创立之初,就专注于无线射频技术的研发与创新。在创始人及团队的共同努力下,公司成功开发了多个高容量通信射频集成电路,如SigFox、EnOcean等,这些技术在当时的物联网和无线通信领域具有前瞻性。公司凭借其技术优势,逐步在市场中树立了良好的口碑,为后续的发展奠定了坚实的基础。

故事二:技术突破与市场拓展
随着无线通信技术的快速发展,AXSEM公司不断突破技术瓶颈,推出了一系列具有创新性的产品。这些产品不仅支持物联网、自动抄表、家庭自动化等领域的应用,还广泛应用于传感器网络和卫星通信市场。公司凭借这些产品,成功拓展了市场份额,实现了业务的快速增长。

故事三:战略合作与资源整合
为了进一步提升技术实力和市场竞争力,AXSEM公司积极寻求与其他企业的战略合作。通过与其他知名企业的合作,公司成功整合了资源,优化了产品线,提高了生产效率。同时,这些合作也为公司带来了更多的市场机会,推动了公司的持续发展。

故事四:国际化发展与品牌提升
随着业务的不断拓展,AXSEM公司开始将目光投向国际市场。公司积极参与国际展览和交流活动,与全球客户建立了广泛的联系。通过不断提升产品质量和服务水平,公司的品牌知名度和美誉度逐渐提升,为全球客户提供了更加优质的产品和服务。

故事五:未来展望与创新驱动
面对未来电子行业的快速发展和变革,AXSEM公司将继续坚持创新驱动的发展战略。公司将加大研发投入,不断推出具有创新性和竞争力的新产品。同时,公司还将积极拓展新的应用领域和市场,为全球客户提供更加全面和高效的解决方案。

请注意,以上仅为基于公开信息的AXSEM公司发展故事的概述,并未涉及具体的事实细节。如需了解更多关于AXSEM公司的故事,建议查阅公司官方网站、行业报告或相关新闻报道。

DAVE Embedded Systems公司的发展小趣事

DAVE Embedded Systems深知品质对于企业发展的重要性。他们建立了严格的质量管理体系,确保从原材料采购到产品制造的每一个环节都符合高标准的质量要求。同时,公司还提供了优质的售后服务,为客户提供了全方位的技术支持和解决方案。这些举措不仅赢得了客户的信任和支持,还为公司树立了良好的口碑。

Arco Electronics公司的发展小趣事

Arco Electronics公司在早期就专注于研发新型半导体技术。在一次偶然的实验中,公司的研发团队发现了一种新型材料,这种材料在导电性能和稳定性上远超当时市场上的同类产品。公司迅速将这一发现转化为实际产品,并推向市场。这一技术突破使得Arco的产品在性能上有了显著优势,迅速获得了市场的认可,公司也因此迅速崛起。

成都成电硅海公司的发展小趣事

在电子行业中,知识产权的保护尤为重要。成都成电硅海公司非常重视知识产权的申请和保护工作。公司成立了专门的知识产权部门,负责专利、商标等知识产权的申请和管理。同时,公司还积极参与各种知识产权的维权行动,维护自身的合法权益。这种对知识产权的重视和保护,不仅提升了公司的核心竞争力,也为公司在电子行业的发展提供了有力的法律保障。

Connection One公司的发展小趣事

为了进一步提升国际竞争力,Connection One公司开始实施全球化战略布局。公司在全球范围内设立研发中心和销售网络,以便更好地了解当地市场需求并提供定制化产品。这一举措不仅加速了公司的国际化进程,还为其带来了更多的商业机会。

Electronic公司的发展小趣事

小米,作为一家年轻的科技公司,在电子行业的发展中展现了惊人的成长速度。小米凭借出色的产品设计和创新的营销策略,迅速在手机市场获得了巨大成功。随着业务的不断拓展,小米还涉足了智能家居、物联网和互联网金融等领域,形成了完整的生态布局。小米通过提供高性价比的产品和优质的服务,赢得了大量年轻用户的喜爱和支持。

问答坊 | AI 解惑

几种电话线馈电电路的设计

[] 在IC卡电话、多功能电话以及其它一些利用电话线进行通信的小型设备中使用电话线馈电电路,可以省去额外的外部电源或电池。 本文对从电话线上获取较大功率电源的几种电路进行了分析,比较它们的优缺点,并给出各个电路的适用场合。 图1: ...…

查看全部问答>

视觉传感器与光电开关之比较

视觉传感器与光电开关之比较 1.视觉传感器可以同时检测多个特征,而光电开关是不能做到的。 2.视觉传感器对定位要求比较宽松,光电开关需要定位准确。 3.视觉传感器可以检测不同类型和多数量的特征,光电开关则需要很复杂的机械调整和数量改变 ...…

查看全部问答>

单片机读写U盘,sd卡,tf卡及usb开发手册

1.芯片及模块手册资料 2.应用电路图及封装 3.SPI例程及UART例程 4.其他外围应用电路 5.232、电平转换资料 6.芯片测试文档 7.U盘支持列表 …

查看全部问答>

怎么学计算机网络原理

学了一年多现在还是不能掌握计算机网络的精髓,看了许许多多的视频教程和书籍可还是没有那种想要的感觉一点都没有,几天不学习就会忘的一塌糊涂,没有知识框架,不知道如何下手,没有方向,真是郁闷的很,我很喜欢这门课程,我一直都想学精学透这门 ...…

查看全部问答>

关于基于SJA1000的can节点通信

本人做了两个基于SJA1000的can节点,每个节点在PELI模式下都能实现自发自收,但连在总线上时不能通信。 当一个节点发送数据时,查了SR的状态标志位0x08,一直为1,说明上次的发送还未处理完,应该是没有收到另外一个节点的应答信号吧。我查了资料 ...…

查看全部问答>

请教关于EVC中树控件CTreeCtrl的问题

   我的程序中用到CTreeCtrl,调试单步运行到InsertItem()(即使程序是从EVC的帮助文件上COPY下来)语句时就出现0xC0000005的错误,直接运行的话到相应的地方模拟器就死掉了,但是下到板子上时可以运行的,焕一个其他的SDK也可以,实在 ...…

查看全部问答>

Wince5.0中显示驱动的问题

大家好, 我正在移植13506的wince5.0驱动到2440平台上。在640*480的LCd上,显示正常,但是换成一块1024*768的屏后,发现启动后桌面的图标很模糊,有些不显示,但是拖动的时候却能正常显示。打开应用软件也正常。 驱动没有过多研究,想问一下大家 ...…

查看全部问答>

采集高速的电压信号

采集高速的电压信号,但是超过了11V,用放大电路如何搭这个信号采集电路。…

查看全部问答>

[TI首届低功耗设计大赛]+学习型红外遥控

[TI首届低功耗设计大赛]+学习型红外遥控 1、硬件 学习红外:开启一体化红外接收头电源,然后TA0。2捕获输入信号 发送红外:TA1.1产生占空比1/4的38K信号,然后与TA0。1的包络信号 2、程序 发送部分初始化 //初始化       & ...…

查看全部问答>