基于单片机的高精度称重系统的技术研究
![]() 读取重力量程序功能。启动A/D转换,将称重传感器测量的重量值转换成数字信号并读取到单片机内部。 串口发送和接收子程序功能。完成下位机和上位机的通信。单片机读取的温度和湿度值通过发送子程序发送给上位机并等待命令,收到命令后再继续进行测量。接收子程序通过接收上位机传输的命令进行系统自检、参数修正等。上位机的命令发送采用间隔10ms反复发送的方式,直到单片机将接收到的命令返回为止。如在 1s内单片机没有响应,则设置超时,系统复位单片机。 2.2 上位机软件编程 本系统采用MSComm控件实现VB与单片机之间的数据交换,具有程序实现简便,程序模块化,工作可靠等优点,并能满足多数情况下的工控要求。使用MSComm控件主要是通过事件来处理串行口的交互。控件的OnComm事件负责捕获或处理这些通讯事件和通讯错误。 2.2.1 MSCOMM属性设置 MSComml.CommPort=1 '设置端口1 MSComml.Settings="2400,N,8,1" '2400 b/s,无校验,8位数据位,1位停止位 MSComml.InputLen=1 '一次从缓冲区中接收一个字节 MSComml.InBufferSize=1024 '接口收缓冲区大小 MSComml.PortOpen=Ture '打开端口 MSComml.Rthreshold=1 '接收一个字节触发一次ONCOMM事件 2.2.2 ONCOMM事件响应程序 Private Sub MSComml_OnComm() Dim buffer As Variant '由缓冲区接收到的数据用Variant格式接收 Dim arr()As Byte '定义二进制数组 Dim i As Integer Dim receivester As string '定义输出到接收文本框中的字符变量 '下段程序是comEvReceive事件触发后,将数据存入相应的数组,并在接收文本框中显示 Select Case MSComml.CommEvent CasecomEvReceive buffer=MSComml.Inpute arr=buffer接收缓冲区内数据variant变量内 arr=buffer '转换为二进制数并送入相应数组 For i=1to8 receivester arr(i) Text1.Text=Text1.Text&receiverstr&"." '在接收框中显示文本 Next i End Select End Sub 3 结束语 本重量测量系统,充分发挥了AT89S52单片机强大的控制能力和计算机的数据处理能力,通过称重传感器和24位分辨率的A/D转换器实现了对重量的高精度测量。系统在电子秤的实际应用中收到了满意的效果。 |
查看所有评论





世纪芯是一支由众多技术研发专家和科研企业结盟组成了技术服务型团队,自组建以来一直帮助政府、知名科研机构以及国内众多抄板企业攻克技术难题,10年来,我们专注反向技术研究并不断挑战大型疑难项目,目前已经成为国内抄板企业的中流砥柱。