您的位置 首页 嵌入式

使用PC的RS232口操控LED灯

通过本实验学习PC机串口与AVR单片机串口之间相互通讯的基本硬件接口电路和软件编程方法,并且达到使用PC机来控制LED的简单应用。PC机串口大

经过本试验学习PC机串口与AVR单片机串口之间彼此通讯的根本硬件接口电路和软件编程办法,而且到达运用PC机来操控LED的简略运用。

PC机串口咱们都不会生疏了吧!咱们能够运用串口电缆直接衔接两台PC机的串口,完结两台PC机的串口通讯。可是PC机和单片机的通讯却不能够用电缆直接进行衔接,原因是PC机RS232串口的电平规范和单片机的TTL电平不一致,因而单片机和PC机之间的串口通讯有必要要有一个RS232/TTL电平转化电路。一般这个电路都挑选专用的RS232接口电平转化%&&&&&%进行规划,如MAX232、HIN232等。本试验选用NIH232CP芯片来完结串口接口电路,NIH232和MAX232能够直接交换。

当然,咱们也能够运用分立元件来建立RS232电平转化电路以供咱们试验运用,下图给出了一个常见电路,只需器材无缺,电路焊接结束后即可正常作业,经实际运用,作用杰出。

AVR单片机串口程序的编写

Atmega8单片机的串口具支撑多种数据帧结构、有三个彻底独立的中止(接纳完结、发送完结、发送数据寄存器空)等特色,一起也支撑多机通讯形式。本试验就以Atmega8为例来介绍AVR单片机串口的编程。

单片机串口在运用前有必要对其进行初始化。初始化内容如下:

1.串口接纳器和发送器的使能设置:首要咱们要根据需求,使能M8串口的接纳器或许发射器,这样I/O口(PD1:TXD,PD2:RXD)才能为USART作业。

2.串口中止作业方法的设置:假如需求串口作业于中止方法,则要根据需求设置USART的中止设置,假如作业于查询方法,那么中止设置就没有必要了。本试验中串口设置为呼应接纳完结中止,即接纳器接纳到一个完好的数据帧后,将触发一次接纳完结中止。

3.波特率设置:也便是设置串口的数据传输速率,两个串口之间要正常通讯就有必要要确保波特率相同。本试验设置的波特率为9600,体系运用内置8MHZ时钟源,能够直接查表(《Atmega8原理及运用手册》129页)得到UBRR=51。

4.数据帧结构设置:本试验设置为8位数据位+1位中止位。

因而,本试验的串口初始化程序如下:

void UART_init(void)
{
UCSRB = BIT(RXCIE)| BIT(RXEN) |BIT(TXEN); //答应串口发送和接纳,并呼应接纳完结中止
UBRR = 51; //设置串口波特率为9600
UCSRC = BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0); //帧结构为8位数据+1位stop位
}

假如你对AVR单片机串口的设置还不是太了解的话,也能够运用ICC编译器中的运用导游直接生成串口的相关代码。操作办法如下:

1.在ICC中新建一个文件;

2.点击Tools菜单中的Application Builder子菜单,将弹出以下界面,然后根据需求挑选CPU为M8,晶振频率为8MHZ。

3.点击上面界面中的UART菜单,呈现下面界面。然后按下图选项挑选使能接纳和发送、波特率9600、数据位8位、接纳完结中止。

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和单片机的通讯。界面如下:

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;
}

咱们看看运用%&&&&&%C主动生成的代码和咱们自己编写的代码中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机宣布的每一个操控指令,而回来成果框将显现试验板回来的履行成果。

最下面的软件晋级按钮是履行试验板的在线晋级操控。假如需求对单片机进行软件晋级,咱们这儿就没有必要再运用ISP下载程序了。点击软件晋级,单片机取得晋级指令后将会回来晋级预备好的指令,程序就会主动封闭串口,然后提示你运用SL的下载软件下载程序。

当软件晋级结束后,CPU是不会主动进入运用程序区的,这是你能够复位单片机或许点击前台复位按键让CUP主动复位进入运用程序区。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/261725.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部