RS-232接口与单片机串行通信程序
RS-232串口通信测试软件界面开发 | ||
图 4 |
第二步:VB软件编写
当软件的界面设计完成后,我们就可以给程序添加代码了,在程序中实现的主要功能如下:RS-232端口初始化、检测PC键盘按压的按键、发送按键编码、在数据发送窗显示当前按键编码、在接收数据窗中接收显示单片机发送来的数据,检测继电器控制按钮的操作,发送继电器控制命令。。。如下图5所示:
RS-232串口通信测试软件程序代码编写 | ||
图 5 |
完成了单片机通信程序及PC上我VB程序开发后,我们编译工程,得到单片机芯片烧写的HEX格式目标文件rs232test.hex和串口测试程序可以执行文件RS232test.exe,然后我们就可以拿出实验板,马上进行串口通信实验了,检测一下我们的实际通信效果。
1、使用ISP编程器将目标文件rs232test.hex烧写到AT89S51单片机中(见下图6)
2、如前面的图2所示:我们将烧写好了通信程序的AT89S51芯片锁紧到S51单片机实验板上,然后把1602字符型液晶模块插到实验板的1602接口上,用RS232串口通信电缆和USB电缆将实验板和电脑连接好,按压实验板的电源开关,开启电源,此时实验板上的电源指示灯亮起来,实验板准备就绪,随时可以接收电脑发送的数据了。
3、双击我们编写的串口测试程序RS232test.exe,启动RS-232串行通信测试软件,在软件上设置好和实验板连接的通信端口,然后点击“PC发送数据发送窗”,即可激活输入窗口,然后我们按压电脑键盘上的按键,按压PS2键盘的按键将会被显示在软件中,同时发送到单片机上通过1602液晶模块进行显示,当接收到正确数据时候,实验板上的蜂鸣器也会发出短促的声音,使你按压键盘的感觉从声音上体现出来。从单片机发送回来的数据被软件接收后,会还原显示在发送数据窗中,如果我们在电脑上按压的键盘上的按键,在软件的发送窗、接收窗及实验板上1602液晶模块上显示的按键都相同,则说明我们电脑的RS-232串口良好,单片机的串口也是良好的,通信正常。然后,我们可以点击软件中的“继电器”按钮,实验板上的单片机接收到电脑的控制指令后,就会控制继电器产生相应的开关动作,实现电脑软件对实验板上继电器的控制。
通过实验加深对51单片机串口的认识:
下面我们通过这套串口测试程序来做个额外实验。理论上,当我们按压键盘上的按键,所有按键都会发送到单片机,然后再返回计算机上的,在串口测试软件上的PC发送数据窗和接收数据窗中显示的字符数目、字符应该是完全相同的,如上面图1中显示。但是,当我们连续快速按压PC键盘(注意:连续速度要足够快哦,才能看到实验现象)时,会发现接收数据窗中有时候会漏掉字符,累积下来,接收窗中的字符就会比发送窗中的字符少了。
发生这种现象的原因是什么 ?!
其实这是由于计算机发送过来的数据太快,而单片机的串口中断一次只能接收处理一个数据,前一个数据还没有处理完,后面又有数据发送过来,单片机来不及处理漏掉了。这是由51单片机的串口特性决定的,AT89S51单片机的串口只有一个字节的发送和接收缓冲区SBUF,也就是说每次只能发送或接收一个字节数据,如果在接收的数据没有及时处理完,而又有新的数据进来,会造成数据丢失,不像计算机中VB6的MSCOMM串行通信控件,默认的接收缓冲区为1024字节,而默认的发送缓冲区也有512字节,而且还可以改变缓冲区大小,计算机有了收发数据缓冲区,通信当中就不容易出现缓冲区溢出而通信错误的现象。
在测控系统中,如果出现这种错误的话则有可能系统失控,数据出错,误报警等。当然,我们在通信中也可以加入校验机制来检查错误,但这种现象也使系统稳定性降低,出现莫名其妙的故障,而且这种属于软件故障,我们往往不容易想到,会走弯路。为了减少这种问题的出现,在这里站长提醒大家,在开发的单片机串口中断服务子程序中,要尽量加快数据处理速度,在接收完成数据后,要及时打开串口中断,以便接收新的数据,而其他占用时间的运算程序尽量不要在串口中断里面处理,这是每一个单片机开发人员值得注意的问题,希望大家能够从我们这个实验中得到启发,开发出更完美的程序来,少走弯路。
好了,这个实验到此结束了,希望大家通过对这个软件的学习,掌握单片机实时温度监控的开发、串口通信程序的开发及计算机串口实时控制开发原理及PC监控软件的开发,为开发其他功能更加完善的单片机综合应用系统打好基础。
- 解决RS-232接口通讯速率不足办法(12-12)
- RS-232接口定义及连线(09-12)
- 变频器在流量控制中的使用(02-26)
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)