霍尔传感器信号采集与显示系统设计
时间:04-09
来源:21IC
点击:
3 软件实现部分
3.1 单片机部分
AT89C51系列单片机的串行口可工作于4种不同的方式。在该程序中,单片机串行口工作设定为方式1,即数据经TxD端发送,RxD端接收,波特率2 400 b/s,10位构成一帧,l位起始位,8位数据位,1位停止位,初值0F3H,SMOD=1。
由于单片机多应用于实时性较强的控制场合,为了尽量少占用CPU的时间,充分发挥CPU的功能。该系统在单片机程序设计中采用中断方式与PC机进行通信。主程序只进行串行通信、数码管实时显示、模/数转换结果的初始化和循环等待串行中断工作,当接收到PC机发来的信号时,就转人中断服务程序,进行A/D转换,并向Pc机发送数据。中断服务子程序流程图如图6所示。
以下仅给出串行通信初始化和中断服务子程序代码:
串行通信初始化程序为:
3.2 PC机部分
在Windows中,串行口的硬件设备通过通信驱动程序comm.drv与windows进行连接,通过使用标准的windows API函数发送和接收数据。而MSComm控件通信功能的实现,是调用windows API函数,并通过设置其属性和事件,来定义windows通信驱动程序的API函数接口,为应用程序提供了通过串行接口收发数据的简便方法。
MSCOmm控件提供了2种处理通信的方法:一是事件驱动方法,也就是利用OnComm事件,这是一种处理串行端口活动非常有效的方法,不仅能够利用MSCOmm控件来侦测并处理通信事件和错误,而且还具有程序响应及时、可靠性高等优点;另一种方法是查询法,MSComm控件的C0mmEvent属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。因此可以直接读取CommEvent属性的值来检测通信中产生的事件和错误类型,这种方法比较简单,常用在小的自含程序中。
该设计程序即采用查询法读取InBufferCount的属性值来接收单片机发来的数据。实验主程序对串口初始化并画出坐标系;每单击‘绘点’键程序向单片机发送一个任意数,告诉单片机将模数转换结果发送过来,然后采用查询方式接收该数据,进行相应的转化后把该点绘在坐标系上,一次数据采集结束。
MSComm控件的常用属性:CommPort:设置并返回通信端口号;Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;Pott()pen:设置并返回通信端口的状态也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区写1个字符串。
该实验的Coml口串行通信初始化程序如下:
End Sub
从图7中PC机界面显示位移一电压坐标图,表1记录的数据以及图8在示波器上显示的霍尔线性电路理想电压一位移曲线图相比较,可以发现由于传感器实验台受外界干扰等原因使得输出信号输出误差在所难免,而且没有电平转换,使得VB绘图中得到的数值存在负值;但是可以在图中看到传感器输出的电压值在正负之间有明显的对称性,与要求输出的理想输出信号波形相符合,证明本系统运行良好,设计的非常成功。
4 结 语
对于目前广泛应用的WindOWs环境下实现PC机与单片机之间的通信问题具有重要的参考价值。
3.1 单片机部分
AT89C51系列单片机的串行口可工作于4种不同的方式。在该程序中,单片机串行口工作设定为方式1,即数据经TxD端发送,RxD端接收,波特率2 400 b/s,10位构成一帧,l位起始位,8位数据位,1位停止位,初值0F3H,SMOD=1。
由于单片机多应用于实时性较强的控制场合,为了尽量少占用CPU的时间,充分发挥CPU的功能。该系统在单片机程序设计中采用中断方式与PC机进行通信。主程序只进行串行通信、数码管实时显示、模/数转换结果的初始化和循环等待串行中断工作,当接收到PC机发来的信号时,就转人中断服务程序,进行A/D转换,并向Pc机发送数据。中断服务子程序流程图如图6所示。
以下仅给出串行通信初始化和中断服务子程序代码:
串行通信初始化程序为:
3.2 PC机部分
在Windows中,串行口的硬件设备通过通信驱动程序comm.drv与windows进行连接,通过使用标准的windows API函数发送和接收数据。而MSComm控件通信功能的实现,是调用windows API函数,并通过设置其属性和事件,来定义windows通信驱动程序的API函数接口,为应用程序提供了通过串行接口收发数据的简便方法。
MSCOmm控件提供了2种处理通信的方法:一是事件驱动方法,也就是利用OnComm事件,这是一种处理串行端口活动非常有效的方法,不仅能够利用MSCOmm控件来侦测并处理通信事件和错误,而且还具有程序响应及时、可靠性高等优点;另一种方法是查询法,MSComm控件的C0mmEvent属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。因此可以直接读取CommEvent属性的值来检测通信中产生的事件和错误类型,这种方法比较简单,常用在小的自含程序中。
该设计程序即采用查询法读取InBufferCount的属性值来接收单片机发来的数据。实验主程序对串口初始化并画出坐标系;每单击‘绘点’键程序向单片机发送一个任意数,告诉单片机将模数转换结果发送过来,然后采用查询方式接收该数据,进行相应的转化后把该点绘在坐标系上,一次数据采集结束。
MSComm控件的常用属性:CommPort:设置并返回通信端口号;Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;Pott()pen:设置并返回通信端口的状态也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区写1个字符串。
该实验的Coml口串行通信初始化程序如下:
End Sub
从图7中PC机界面显示位移一电压坐标图,表1记录的数据以及图8在示波器上显示的霍尔线性电路理想电压一位移曲线图相比较,可以发现由于传感器实验台受外界干扰等原因使得输出信号输出误差在所难免,而且没有电平转换,使得VB绘图中得到的数值存在负值;但是可以在图中看到传感器输出的电压值在正负之间有明显的对称性,与要求输出的理想输出信号波形相符合,证明本系统运行良好,设计的非常成功。
4 结 语
对于目前广泛应用的WindOWs环境下实现PC机与单片机之间的通信问题具有重要的参考价值。
- ams推出专为物联网应用优化的传感器技术(03-21)
- 触控之声:致终将消失的HOME键(05-23)
- 特斯拉自动驾驶水分大?那就来个量身定制传感器技术(10-29)
- LED灯与传感器技术(06-14)
- 个头小作用大,机器人制造必备七款传感器(01-19)
- 汽车工控需求大,霍尔传感器高速增长(05-20)