利用PC的RS232口控制LED灯
进制数据中,每一位对应一个继电器的状态,如果为1表示继电器吸合,为0表示继电器释放。
3.通讯检测。当后台程序启动后,PC机先发送“s00t”命令,如果PC机在6秒以内能够收到单片机返回的继电器状态(该状态是读取控制继电器的I/O口的电平获得的),则PC机判断通讯正常,可以正常使用,否则PC机提示串口通讯不正常。
此后,PC机还会每隔5秒钟自动请求一次继电器状态,并且按键对继电器进行操作以后,控制板也会主动向PC机发送状态字。
4.软件升级指令。当需要升级单片机软件时,PC机发送该指令让单片机进入BOOT load程序区,准备更新软件版本。该指令格式为“su”+S0+“p”,S0为单片机地址码。
当单片机进入BOOT区后,向PC机发送S0+“upd”指令,S0为单片机地址码,通知PC机软件升级已经准备好。然后PC机关闭串口,提示您打开ISP下载软件进行升级。
5.单片机复位指令。当单片机在线升级完成以后,PC机可以通过发送复位指令让单片机复位重新进入应用程序区。
Atmega8的IAP应用我们将在后面进行阐述。
后台PC程序及使用介绍
后台程序使用VB6.0编写,其中利用VB的MSComm控件完成PC和单片机的通讯。界面如下:
4.点击OK后,在刚才新建的文件中即生成了完整代码,其中串口初始化的代码如下:
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x33; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
}大家看看使用ICC自动生成的代码和我们自己编写的代码中UCSRC、UBRR、UCSRB是不是一样的呢?
通讯协议及命令(2004-10-29)
为了保证单片机和PC机的正常可靠的通讯,避免系统出现误动作,我们需要制订一个简单的通讯协议,同时还要定义能够让PC和单片机理解的命令。这里我们简单定义如下:
1.PC机发送的继电器控制指令采用4个字符组成的字符串格式“s”+S1S0+“p”,如“s00p”。
其中s和p字符用于数据的简单校验,也就是说当单片机收到的串口数据中如果第一位是“s”第四位是“p”,则单片机接收到的命令有效,否则指令无效。
S1是单片机地址识别,如果单片机接收到的S1字符等于自己的地址码,则单片机执行命令,否则无效。通过这个字符我们就可以通过一个PC机串口和多个单片机进行通讯,这种通讯方式的设置我们会在后面阐述。S0对应继电器编码,指定相应继电器的吸合或者释放,如果S0=“a”,则该板的所有继电器全部吸合,如果是“b”则全部释放。
2.单片机返回给PC机的指令也同样采用4个字符串格式S2S1S0+“t”,如“000t”。
其中“t”为校验码。S2为单片机地址码,S1、S0对应继电器编码。返回指令用于PC机判断单片机是否执行了发出的指令。S1S0的二进制数据中,每一位对应一个继电器的状态,如果为1表示继电器吸合,为0表示继电器释放。
3.通讯检测。当后台程序启动后,PC机先发送“s00t”命令,如果PC机在6秒以内能够收到单片机返回的继电器状态(该状态是读取控制继电器的I/O口的电平获得的),则PC机判断通讯正常,可以正常使用,否则PC机提示串口通讯不正常。
此后,PC机还会每隔5秒钟自动请求一次继电器状态,并且按键对继电器进行操作以后,控制板也会主动向PC机发送状态字。
4.软件升级指令。当需要升级单片机软件时,PC机发送该指令让单片机进入BOOT load程序区,准备更新软件版本。该指令格式为“su”+S0+“p”,S0为单片机地址码。
当单片机进入BOOT区后,向PC机发送S0+“upd”指令,S0为单片机地址码,通知PC机软件升级已经准备好。然后PC机关闭串口,提示您打开ISP下载软件进行升级。
5.单片机复位指令。当单片机在线升级完成以后,PC机可以通过发送复位指令让单片机复位重新进入应用程序区。
Atmega8的IAP应用我们将在后面进行阐述。
后台PC程序及使用介绍
后台程序使用VB6.0编写,其中利用VB的MSComm控件完成PC和单片机的通讯。界面如下:
界面中的每一个小按钮控制实验板上的每一个LED和继电器。如果串口通讯正常的话,按一下,实验板上对应的LED将点亮继电器吸合,再按一下,LED又被关闭继电器释放。而全开按则控制实验板上所有的LED和继电器开或者关。
下面的PC指令框是显示PC
PCRS232口LED 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)