基于PIC单片机通信适配卡设计
便可实现TTL电平与RS-232电平转换。RS-232模块的原理图见图3。
1.3 A/D转换模块
PIC16F877A单片机自带有8路模拟通道,转换精度为10位。本适配卡选择RA0为模拟通道。板卡将A/D转换后的数据通过CAN总线上传给上位机。
1.4 数据流
CAN-RS-232的数据流图见图4。
2 系统软件设计
软件设计分为两大块:板卡底层软件设计和PC机上串口操作软件设计。板卡底层软件设计主要是对PIC16F877A编程,用于把从PC机通过串口输人给单片机的数据按照CAN协议帧结构进行打包处理,并操作CAN控制器把数据发送到CAN总线;把从CAN总线上输入的数据转换成串行数据输出给PC机:PC机上串口操作软件设计主要是对串口的操作和通过串口收发数据。
2.1单片机编程
开发工具使用的是MPLAB集成开发环境(IDE),它是综合的编辑器、项目管理器和设计平台,适用于使用Microchip的PICmicro系列单片机进行嵌入式设计的应用开发;编程语言用的是C语言,将HITECH 公司的PICC编译器直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。
CAN控制器SJA1000T片内有模式寄存器MOD、命令寄存器CMR、状态寄存器SR、中断寄存器IR、中断使能寄存器IER、接收缓冲器RXB、发送缓冲器TXB、仲裁丢失捕捉寄存器ALC、错误代码捕捉寄存器ECC、错误报警限额寄存器EWLR、错误计数寄存器ERR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线时序寄存器BTR、输出控制寄存器OCR和时钟分频寄存器CDR等,单片机就是通过读写这些寄存器来实现对SJA1000T的控制,从而实现CAN报文的接收和发送。文后给出CAN控制器SJA1000T初始化和接收子程序的流程图。下面给出CAN初始化程序,其中WRCAN是自定义的一段对SJAIO00T写数据的子程序。
2.2 串口操作程序设计
在各种开发工具中间,VC由于功能强大和灵活,所以本实验系统使用VC作为开发工具。串口通讯目前流行的方法主要有3种:一是利用Microsoft提供的CMSCOMM控件进行通讯,通过插入ActiveX控件的方式实现;二是利用WIN API函数进行编程,这种编程的难度较高,要掌握较多的API函数;三是利用现在网络上面提供的一些串口通讯控件进行编写,比如CSerial类等。本程序采用WINAPI函数进行串口的开发,程序在PC机上用来收发串口数据运行正确稳定。
3 结束语
本系统在PC机上使用串口通信程序收发RS-232总线上的数据,并通过PIC单片机和CAN通信模块连人CAN网络。板卡可进行双向通信:一方面可以把从CAN总线接收的数据流转换成标准的RS-232格式的数据流上传给PC机;另一方面可以把接收的RS-232格式的数据流转换成符合CAN协议的报文结构传送到CAN总线上。充分利用了CAN总线组网的优势,构成的总线型通讯网络具有通讯波特率高、通讯距离长、节点容量大、可靠性高等特点。利用VC编程的串口通信程序接收显示和发送数据,实现了多主机基于CAN网络的数据通讯。
- 基于PIC单片机的智能型漏电断路器设计(11-25)
- 基于PIC单片机的无线实时监控防盗系统的设计与实现(11-18)
- PIC单片机键盘矩阵扫描C语言程序(12-02)
- PIC单片机控制第一个发光管闪动程序(12-02)
- PIC单片机驱动LCD12864液晶显示闪动字体程序(12-02)
- PIC单片机控制8位流水灯C语言程序(12-02)