0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机远程灯控箱的设计资料和源代码概述

Wildesbeast 来源:21IC 作者:21IC 2020-06-07 11:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以大型场所照明设备的远程控制为目的,介绍基于SST89C58型单片机的远程灯控箱系统的软硬件设计。该系统通过RS485总线与PC上位机通信,实现远距离、多节点控制。

电脑是现今信息时代的标志,通过电脑实现远程实时自动化控制是今后发展的一种趋势。在大型商场、饭店、体育场馆及娱乐场所里,通常有许多照明设备。以往的开关控制和电闸控制,常常需要工作人员频繁亲临现场操作,或向控制室拉接较长的220V电线,实时性、安全性都较差。为了实现工作人员在控制室可以对分散在各个房间的远端照明设备进行实时有效的状态控制及状态查询,笔者开发了一种基于单片机的远程灯控箱系统。该系统由一台PC上位机控制多台远端灯控箱,通过RS-485总线串行传送指令,传输距离最远可达1.2km,并增强串行通信协议的制定,降低了噪声干扰。一台灯控箱可对16路灯进行控制。灯控箱中选用SST89C58型单片机,其方便的IAP功能可在线下载Hex文件并进行调试,无需多次使用编程器。

1 系统结构及功能

远程灯控箱系统的结构如图l所示,其中,PC上位机放在控制室里,各灯箱就近放置在照明设备附近。由PC上位机发送控制指令,通过RS-485总线将指令串行传送给各远端灯控箱,这样就可在控制室里实时开关控制,查询各个灯的状态。从传输距离和性价比方面考虑选用RS-485总线。RS-485为平衡线路,可实现远距离、多节点控制。本设计的重点是灯控箱。下面将以一台灯控箱为例介绍系统的软件和硬件设计。

2 硬件设计

2.1主要元件

设计系统选用Silicon Storage。Technology公司推出的具有IAP(In-Application Programming)功能的SST89C58型单片机。它在指令系统、硬件结构和片内资源上与标准8052型单片机完全兼容,同时增大了内部程序存储Flash的容量,可达36KB。并增加了与Flash编程相关的6个特殊功能寄存器和2个与看门狗复位有关的特殊功能寄存器。对SST89C58的IAP功能采用一个通用程序编写[1],选用Keil公司的μVision仿真软件进行编程仿真。将生成的Hex文件直接通过RS-232串口从PC下载到单片机上运行调试,使用非常方便,缩短了开发周期。ULN2803A型器件是TI公司生产的单片集成高压、大电流达林顿晶体管阵列。该阵列由8个NPN达林顿管组成。其特点是电流增益高、负载能力强(输出电流可达500mA)、工作电压高(耐压达50V)。选用的:X5045型器件为4K SPI电可擦除存储器,用于掉电后保存从机站号。Maxim公司的MAX485型器件是通用半双工收发器,传输速度为9.6Kb/s时,传输距离可达1.2km.可实现上位机与单片机之间的串口异步通信。

图2

2.2系统核心硬件

远程灯控箱系统的核心硬件图如图2所示,以SST89C58型单片机为核心,用P0口和P2口进行信号控制,注意P0口要加上拉电阻器。通过2个ULN2803进行电流放大,可驱动16路继电器。由于片内带有共阴极箝位二极管,可适应感性负载,故输出端可省去大量二极管。SST89C58驱动16路继电器,可控制16路灯信号。若要增加控制信号,可增加8255型器件扩展并行接口。用X5045保存RS-485网络从机站号。SST89C58单片机的P1.2引脚用来模拟X5045的时钟输入信号SCK,CS=0时,串行输出SO在时钟信号下降沿有效,串行输入SI在上升沿有效(WP=1)。具体操作还需要写入状态字。串口部分选用MAX485。其中,RE与DE接在一起由单片机的RD(P3.7)控制。拉低为接收有效,拉高为发送有效。该系统还具有上电自动复位和通电指示功能。设计PCB时应注意合理布线,对单片机电源进行滤波整流,并远离干扰源。

3 系统软件设计

C语言编译器开发单片机具有使用方便、编程效率高及仿真调试容易等突出特点。C51的版本很多,本系统软件选用德国Keil Software公司的Keil C51编译器开发。该编译器基于Windows平台集成开发环境,可编辑、编译和调试汇编语言程序及C51程序,还可模拟仿真I/O口、定时器/计数器、串行口及中断等单片机特有的功能部件,功能非常强大。该系统的软件设计由主程序、中断程序、串行接收子程序、串行发送子程序、X5045读写子程序及若干功能实现子程序。其中,:X5045读写子程序需对时钟进行精确操作,用汇编语言编写,其他均用C语言编写。

3.1主程序设计

在主程序中,先将SST89C58及X5045初始化,然后等待新命令。当NewData=1时,表示已接收到一个有效的命令帧,否则继续等待。接着判断是否是本机地址,若是则判断控制命令,否则继续等待。上位机发送指定的字符串,分别表示开灯、关灯、查询、设置等命令。通过字符串比较,判断出命令指令,跳到相应的入口子程序中;操作成功后,通过串口发送子程序返回相应的提示符,其具体流程如图3所示。在本系统中,上位机的人机交互界面由C++Builder开发,限于篇幅,在此从略。

3.2串口中断程序设计

为了增强抗干扰性,有效地区分噪声和数据便于操作,串口中断程序加强了通讯协议的制定[2],具体实现方法是加开始标志和结束标志。噪声是以随机字节出现的,通过测试和实验,发现在本系统中0x00后跟0xFF时噪声不容易发生。因此,设置开始标志为0x000xFF,结束标志为回车换行符0x0D0x0A。如果接收命令帧成功,则置NewData=1,表示新命令有效。考虑到纠检错,数据采用短包方式。中间采用延时,以保证起始位可靠。串口中断程序流程如图4所示。部分程序清单如下。

//串行接子函数

INT8U ReUART(INT8U*ch)

{INTl6U delay=6000;

while(--delay) //延时

{if(RI),/串行接收中断标志

{RI=0;//接收中断标志软件复位

、 *ch=SBU F=//读数据缓冲器

return 1;}//成功返回l

}

return(0);//接收失败返回0

//串行中断处理程序

void UART_Inter(void)interrupt 4

{INT8U ii;

INT8U temp,templ;

ReUART(&temp、);//先连续接收2个字节

ReUART(&templ);

//开始标志

if((temp==0x00)&&(templ==0xFF))

//连续接收一个命令帧

{for(ii=0;ii《12;ii++)

{if(ReUART(&buff[ii])==0)

goto Inter._end;}//跳出中断

if((buf[10]==0x0D)&&(buf[ll]==0x0A)),/结束标志

NewData=l; //新命令标志有效

}

Inter_end:;//中断出口

}

4 结论

基于SST89C58的远程灯控箱系统可实现一台PC上位机最多控制256个灯控箱,传输距离最远可达1.2km,每台灯控箱可对16路灯进行控制.实现了集中管理,分散控制的功能。该系统通过软硬件提高抗干扰性,并具有较好的扩展性,结构简单、投资少,实际应用表明具有较强的实用性。

下面还介绍一个 ULN2803A和SST89C58型单片机的远程灯控箱系统

主要元件:ULN2803A型器件是TI公司生产的单片集成高压、大电流达林顿晶体管阵列。该阵列由8个NPN达林顿管组成。其特点是电流增益高、负载能力强(输出电流可达500mA)、工作电压高(耐压达50V)。

摘要:以大型场所照明设备的远程控制为目的,介绍基于SST89C58型单片机的远程灯控箱系统的软硬件设计。该系统通过RS-485总线与PC上位机通信,实现远距离、多节点控制。 关键词:单片机;IAP;远程控制;通信协议:SST89C58电脑是现今信息时代的标志,通过电脑实现远程实时自动化控制是今后发展的一种趋势。在大型商场、饭店、体育场馆及娱乐场所里,通常有许多照明设备。以往的开关控制和电闸控制,常常需要工作人员频繁亲临现场操作,或向控制室拉接较长的220V电线,实时性、安全性都较差。为了实现工作人员在控制室可以对分散在各个房间的远端照明设备进行实时有效的状态控制及状态查询,笔者开发了一种基于单片机的远程灯控箱系统。该系统由一台PC上位机控制多台远端灯控箱,通过RS-485总线串行传送指令,传输距离最远可达1.2km,并增强串行通信协议的制定,降低了噪声干扰。一台灯控箱可对16路灯进行控制。灯控箱中选用SST89C58型单片机,其方便的IAP功能可在线下载Hex文件并进行调试,无需多次使用编程器。

1 系统结构及功能远程灯控箱系统的结构如图l所示,其中,PC上位机放在控制室里,各灯箱就近放置在照明设备附近。由PC上位机发送控制指令,通过RS-485总线将指令串行传送给各远端灯控箱,这样就可在控制室里实时开关控制,查询各个灯的状态。从传输距离和性价比方面考虑选用RS-485总线。RS-485为平衡线路,可实现远距离、多节点控制。本设计的重点是灯控箱。下面将以一台灯控箱为例介绍系统的软件和硬件设计。2 硬件设计2.1主要元件设计系统选用Silicon Storage。Technology公司推出的具有IAP(In-Application Programming)功能的SST89C58型单片机。它在指令系统、硬件结构和片内资源上与标准8052型单片机完全兼容,同时增大了内部程序存储Flash的容量,可达36KB。并增加了与Flash编程相关的6个特殊功能寄存器和2个与看门狗复位有关的特殊功能寄存器。对SST89C58的IAP功能采用一个通用程序编写[1],选用Keil公司的μVision仿真软件进行编程仿真。将生成的Hex文件直接通过RS-232串口从PC下载到单片机上运行调试,使用非常方便,缩短了开发周期。ULN2803A型器件是TI公司生产的单片集成高压、大电流达林顿晶体管阵列。该阵列由8个NPN达林顿管组成。其特点是电流增益高、负载能力强(输出电流可达500mA)、工作电压高(耐压达50V)。选用的:X5045型器件为4K SPI电可擦除存储器,用于掉电后保存从机站号。Maxim公司的MAX485型器件是通用半双工收发器,传输速度为9.6Kb/s时,传输距离可达1.2km.可实现上位机与单片机之间的串口异步通信。

2.2系统核心硬件远程灯控箱系统的核心硬件图如图2所示,以SST89C58型单片机为核心,用P0口和P2口进行信号控制,注意P0口要加上拉电阻器。通过2个ULN2803进行电流放大,可驱动16路继电器。由于片内带有共阴极箝位二极管,可适应感性负载,故输出端可省去大量二极管。SST89C58驱动16路继电器,可控制16路灯信号。若要增加控制信号,可增加8255型器件扩展并行接口。用X5045保存RS-485网络从机站号。SST89C58单片机的P1.2引脚用来模拟X5045的时钟输入信号SCK,CS=0时,串行输出SO在时钟信号下降沿有效,串行输入SI在上升沿有效(WP=1)。具体操作还需要写入状态字。串口部分选用MAX485。其中,RE与DE接在一起由单片机的RD(P3.7)控制。拉低为接收有效,拉高为发送有效。该系统还具有上电自动复位和通电指示功能。设计PCB时应注意合理布线,对单片机电源进行滤波整流,并远离干扰源。3 系统软件设计用C语言编译器开发单片机具有使用方便、编程效率高及仿真调试容易等突出特点。C51的版本很多,本系统软件选用德国Keil Software公司的Keil C51编译器开发。该编译器基于Windows平台集成开发环境,可编辑、编译和调试汇编语言程序及C51程序,还可模拟仿真I/O口、定时器/计数器、串行口及中断等单片机特有的功能部件,功能非常强大。该系统的软件设计由主程序、中断程序、串行接收子程序、串行发送子程序、X5045读写子程序及若干功能实现子程序。其中,:X5045读写子程序需对时钟进行精确操作,用汇编语言编写,其他均用C语言编写。3.1主程序设计在主程序中,先将SST89C58及X5045初始化,然后等待新命令。当NewData=1时,表示已接收到一个有效的命令帧,否则继续等待。接着判断是否是本机地址,若是则判断控制命令,否则继续等待。上位机发送指定的字符串,分别表示开灯、关灯、查询、设置等命令。通过字符串比较,判断出命令指令,跳到相应的入口子程序中;操作成功后,通过串口发送子程序返回相应的提示符,其具体流程如图3所示。在本系统中,上位机的人机交互界面由C++Builder开发,限于篇幅,在此从略。3.2串口中断程序设计为了增强抗干扰性,有效地区分噪声和数据便于操作,串口中断程序加强了通讯协议的制定[2],具体实现方法是加开始标志和结束标志。噪声是以随机字节出现的,通过测试和实验,发现在本系统中0x00后跟0xFF时噪声不容易发生。因此,设置开始标志为0x000xFF,结束标志为回车换行符0x0D0x0A。如果接收命令帧成功,则置NewData=1,表示新命令有效。考虑到纠检错,数据采用短包方式。中间采用延时,以保证起始位可靠。串口中断程序流程如图4所示。部分程序清单如下。//串行接子函数INT8U ReUART(INT8U*ch){INTl6U delay=6000;while(--delay) //延时{if(RI),/串行接收中断标志{RI=0;//接收中断标志软件复位、 *ch=SBU F=//读数据缓冲器return 1;}//成功返回l}return(0);//接收失败返回0)//串行中断处理程序void UART_Inter(void)interrupt 4{INT8U ii;INT8U temp,templ;ReUART(&temp、);//先连续接收2个字节ReUART(&templ);//开始标志if((temp==0x00)&&(templ==0xFF))//连续接收一个命令帧{for(ii=0;ii《12;ii++){if(ReUART(&buff[ii])==0)goto Inter._end;}//跳出中断if((buf[10]==0x0D)&&(buf[ll]==0x0A)),/结束标志NewData=l; //新命令标志有效}Inter_end:;//中断出口}4 结论基于SST89C58的远程灯控箱系统可实现一台PC上位机最多控制256个灯控箱,传输距离最远可达1.2km,每台灯控箱可对16路灯进行控制.实现了集中管理,分散控制的功能。该系统通过软硬件提高抗干扰性,并具有较好的扩展性,结构简单、投资少,实际应用表明具有较强的实用性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675353
  • RS485
    +关注

    关注

    40

    文章

    1363

    浏览量

    86369
  • 上位机
    +关注

    关注

    28

    文章

    1050

    浏览量

    57427
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于单片机的额温枪设计

    电子发烧友网站提供《基于单片机的额温枪设计.docx》资料免费下载
    发表于 03-01 15:36 0次下载

    32位单片机PY32F003的特性概述

    PY32F003是一款极具性价比的国产入门级32位单片机,基于ARM Cortex-M0+内核,主频最高32MHz。提供最大64KB的Flash存储器和8KB的SRAM,这个容量对于大多数简单的控制
    的头像 发表于 11-07 16:02 1574次阅读
    32位<b class='flag-5'>单片机</b>PY32F003的特性<b class='flag-5'>概述</b>

    51单片机RS485编程实例资料

    详细介绍51单片机RS485通信接线和编程代码
    发表于 10-20 14:57 8次下载

    单片机原理及应用详解

    单片机(Microcontroller Unit, MCC)  是一种集成计算机核心功能(CPU、存储器、I/O接口等)的微型芯片,广泛应用于嵌入式系统中。以下是其原理及应用的详细介绍: 一、单片机
    的头像 发表于 08-11 13:57 2989次阅读

    单片机用什么封装

    单片机封装是将芯片内部电路与外部引脚连接并包裹保护的结构,不仅影响单片机的安装方式、适用场景,还与电路设计的紧凑性、散热性能密切相关。不同封装类型各有特点,适配从简单电路到复杂系统的多样化需求
    的头像 发表于 08-01 13:47 1723次阅读

    什么单片机比较耐用

            在工业控制、户外设备、医疗仪器等场景中,单片机的耐用性直接决定了设备的稳定运行与维护成本。耐用的单片机通常具备宽温工作范围、强抗干扰能力、稳定的电源适应性和长寿命的硬件设计。深圳市安
    的头像 发表于 07-31 13:48 976次阅读

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要意义。测量
    的头像 发表于 07-25 11:39 1199次阅读

    单片机怎么驱动电机?

    在各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而是要根据电机类型和功率,搭配合适的驱动电路,才能实现稳定
    的头像 发表于 07-25 09:31 1459次阅读

    单片机怎么烧程序

    单片机烧程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是单片机应用开发中不可或缺的环节。无论是简单的灯光控
    的头像 发表于 07-23 11:47 2233次阅读

    怎样学会单片机

    想学会单片机其实没那么复杂,先把心态放平稳,别被那些五花八门的名词吓住。一开始就得把 C 语言基础打扎实,位操作、指针、函数这些概念必须吃透,尤其是指针,单片机里操作寄存器、外设经常要用到,搞不懂
    的头像 发表于 07-23 10:23 862次阅读
    怎样学会<b class='flag-5'>单片机</b>?

    KF32A136系列单片机产品介绍

    F32A136 系列单片机是基于 KF32 内核架构开发的单片机
    的头像 发表于 06-27 11:42 2983次阅读
    KF32A136系列<b class='flag-5'>单片机</b>产品介绍

    AT89C51 单片机中文资料

    电子发烧友网站提供《AT89C51 单片机中文资料.pdf》资料免费下载
    发表于 06-24 15:29 1次下载

    单片机项目实例:有人无线WIFI模块资料

    单片机项目实例:有人无线WIFI模块资料,推荐下载!
    发表于 06-09 22:32

    STC单片机范例程序

    电子发烧友网站提供《STC单片机范例程序.zip》资料免费下载
    发表于 06-04 16:27 10次下载

    单片机实例项目:MQ系列模块资料

    单片机实例项目:MQ系列模块资料,推荐下载!
    发表于 06-03 21:11