求毕业设计参考:单片机与上位机(PC)通信电路与软件设计

求毕业设计参考:单片机与上位机(PC)通信电路与软件设计,第1张

我帮你写了个程序:

/*

硬件环境:AT89C51

P1口接LED8个灯

*/

#include "reg52.h"

#define uchar unsigned char

#define uint unsigned int

bit R_MOVING_LIGHT=0,L_MOVING_LIGHT=0

uchar DATA_1,DATA_2

/*

--初始化AT89C52 串行端口--

T1 方式2 (8位重装载) 波特率9600,启动T1

T0 方式1 (16位定时器),未初始化,未启动

串行口设置为方式1(8 bit UART)

*/

void delay_1ms(uint _1ms)

{

uint i

while (_1ms--)

{

i=1000

while(i--)

}

}

void init_serial_port(void)

{

SM2=0

SM0=0SM1=1//串口工作在方式1

TMOD=0x20//定时器1工作在方式2

TH1=253

TL1=253//波特率9600b/s

EA=1//总中断允许

ES=1//允许串口中断

REN=1

TR1=1

}

void  serial_port_init()  interrupt 4

{

uchar i

RI=0

i=SBUF

if(i=='R')

{

R_MOVING_LIGHT=1

L_MOVING_LIGHT=0

DATA_1=0x80

}

if(i=='L')

{

L_MOVING_LIGHT=1

R_MOVING_LIGHT=0

DATA_2=0x01

}

}

void main()

{

init_serial_port()

P1=0x00

while(1)

{

if(R_MOVING_LIGHT)

{

P1=DATA_1

delay_1ms(100)  //100MS   调节改变流水灯速度

DATA_1>>=1

if(!DATA_1)

DATA_1=0x80

}

if(L_MOVING_LIGHT)

{

P1=DATA_2

delay_1ms(100)

DATA_2<<=1

if(!DATA_2)

DATA_2=0x01

}

}

}

因为我这边硬件不方便搭,没有看最终效果,有什么问题可以找我!

下图为单片机P1口与8个LED灯的连接方法,为高电平亮低电平灭。

上位管理机采用PC机,主要完成整个监测网络系统的参数设置、粮库的状态查询、数据处理、粮情分析、超限实时报警和报表打印等功能。下位智能节点由单片机、数据采集电路和CAN通控制驱动电路构成。

下位机不仅要实时监测本粮库内各个测试点的温度、湿度和粮虫发生情况,并保存和显示结果,还要负责接收上位管理机的命令,根据上位机的要求上传数据。

USB/CAN转换器负责将上位机通过USB口输出的命令转换成CAN总线数据格式后,再下传到CAN总线;或者将下位机通过CAN总线上传的数据转换成USB数据格式后,再送到PC机。

2 下位机硬件电路结构

下位机以单片机AT89S52为核心,通过扩展显示电路、数据采集电路和CAN通信模块构成一个完整硬件体系,如图2所示。

2.1 数据采集电路

数据采集电路由温度采集电路、湿度采集电路和粮虫检测电路构成。温度检测采用Dallas公司生产的单总线数字温度传感器DS18B20,它不仅能直接输出串行数字信号,而且具有微型化、低功耗、高性能、易于微处理器连接和抗干扰能力强等优点。DS18B20数字温度传感器对于实测的温度提供了9-12位的数据和报警温度寄存器,它的测温范围为-55℃~+125℃,其中在-10℃~+85℃的范围内的测量精度为±0.5℃。由于每个DS18B20有唯一的一个连续64位的产品号,所以允许在一根电缆上连接多个传感器,以构成大型温度测控网络。图2电路中,设计了两条测温单总线,每条单总线用一只场效应管提供电源,每条总线上可并联十几只数字温度传感器DS18B20。

湿度检测采用湿度传感器HIH3610和DS2438组合模块。HIH-3610是美国Honeywell公司生产的相对湿度传感器,该传感器具有精度高、响应快速、高稳定性、低温漂、抗化学腐蚀性能强及互换性好等优点。HIH-3610采用热固聚酯电容式传感头,在芯片内部集成了信号处理功能电路,可以完成将相对湿度值变换成电容值,再将电容传转换成线性的电压输出。因此它输出的模拟湿度信号,不能直接送单片机处理,必须经过A/D转换。DS2438也是Dallas公司的单总线器件,具有A/D功能。HIH3610和DS2438可以组合在一起,构成单总线数字湿度传感器模块。

粮虫检测器,当检测到粮食虫害发生时,粮虫检测器输出负脉冲,送微处理器记数和处理。系统采用一个8输入与非门,可带8台粮虫检测器。

2.2 显示电路

显示电路和微控制器的连接采用I2C总线,由于AT89S52单片机内部没有集成I2C总线模块,故采用软件模拟的方法实现I2C通讯。显示驱动器采用具有I2C总线的器件SAA1064,可动态驱动4位8段LED显示器。它内部具有显存和自动刷新功能,可免去微控制器的频繁刷新任务,腾出大量时间做其他事情。

2.3 CAN通信模块

CAN是现场总线中唯一被批准为国际标准的现场总线。其信号传输介质为双绞线。通信速率最高可达1Mbps/40m,直接传输距离最远可达10Km/5Kbps。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。当节点严重错误时,具有自动关闭的功能,以切断该节点于总线的联系,使总线上的其它节点及其通信不受影响,具有较强的抗干扰能力。

图2中的CAN控制驱动模块由CAN控制器SJA1000、光耦6N137模块和CAN驱动器82C50构成。SJA1000负责与微控制器进行状态、控制和命令等信息交换,并承担网络通信任务;82C50为CAN控制器和总线接口,提供对总线的差动发送和对CAN控制器的差动接收功能。光耦6N137起隔离作用。

3 系统软件设计

系统软件由上位机主程序和下位监控程序构成,上位机主程序用VB语言开发,采用模块化设计,具体的功能模块如图3所示。利用VB编写的应用软件人机界面友好,便于维护和管理。

下位机的软件由下位机主程序、温度采集程序、湿度采集程序、粮虫检测中断程序和CAN收发中断服务程序等构成。由于篇幅所限这里仅给出了下位机主程序和CAN通信中断服务程序的流程图,分别如图4和图5所示。在下位机主程序里,系统要首先进行单片机的初始化、CAN的初始化、开外部中断、开启计数器和使能CAN接收中断的过程,是系统处于就绪状态,然后调用数据采集程序和数据处理程序,实时采集粮库现场的参数并予以处理,处理后的数据要保存起来供上位机随时查询,同时送显示器显示。

粮虫检测中断程序主要完成粮库发生粮虫后的处理,一方面要判断粮虫计数器是否计满,计满清零并保存数据;一方面设置粮库发生虫害标志,并供上位机查询和显示。

CAN收发中断服务程序负责上下位机的命令和数据传送。当上位机发送命令时,CAN接收一个报文,CAN的中断使能标志置1,产生接收中断,CPU立即响应,进入中断服务程序,然后系统再根据上位机的具体命令,向上位机传送该节点工作状态或采集的数据。

http://www.ic37.com/htm_tech/2008-1/5753_761425.htm

由于SAA1064的动态扫描显示是依靠片内的多路开关数据锁存器及时钏控制电路,以主器件不必介入,因此使用动态工作方式最能发挥SAA1064的功能潜力,是最常用的工作方式。图中LED的位号与数据 *** 作格式中的段选数据顺序对应。CEXT为时钟振荡电容,它保证动态驱动用的工作信号。MX1、MX2为显示器人公共极驱动信号输出端。动态扫描时MX1、MX2的定时波形见图所示。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8031630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存