系统源于毕业设计,系统设计分为两部分下位机设计,和上位机设计。
下位机采用ZigBee CC2530开发板作为开发平台,一个节点为移动节点(外接DHT11温湿度传感器),另外一个节点是协调器通过串口线连PC。
上位机使用VC6.0开发工具设计了一个监控界面,能实时监控无线接收的温湿度数据并且绘图显示。并且将温湿度数据保存到数据库以便历史查询。
下位机运行图:(夏天6月,南方)
上位机运行图:
欢迎交流QQ1977140744
经过这两天的调试,基本上搞定了dsp和机器人上位机界面,先记录下我的上位机。
实验室是做机器人控制的,经常会用到上位机,我只搞过简单的上位机的编写,是基于mfc的对话框的,很多原理性的东西现在也是懵懵懂懂的,但好歹是功能也实现了。回顾自己的上位机主要涉及过的东西为一些基本控件的使用(编辑框,按钮等等),1.串口发送和接收数据,2.手柄扫描(因为实验室用手柄来遥控机器人,扫描到手柄上不同的按钮发送不同的指令和数据,这样来实现对机器人的遥控),3.usb摄像的显示(不过这东西只是一个象征性的视频回显,似乎还没真正有什么作用)。
接下来这个实验先实现串口发送和接收数据,后面实验加上手柄,至于usb摄像头的显示不是很想加上去。到时候在看看吧。开始vc6.0实现串口发送和接收数据吧!!(已实现一个串口收发为例)
指导书参考:http://download.csdn.net/detail/xzyfeixiang/6601493,自己按照自己的要求修改就行了。
1新建工程
选择对话框
一路next和finish即可。
删除确定,取消,TODO。
2.在项目中插入MSComm控件
选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项
选择MicrosoftCommunications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
在ClassView视窗中就可以看到CMSComm类了,你在控件中可以看到多了一个跟电话一样的东西。拖入到对话框中,程序运行时,他不会出现的。
3.利用ClassWizard定义CMSComm类控制对象
打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,(自己取好,前后一致)这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES()#include "mscomm.h" //}}AFX_INCLUDES。
4.打开串口和设置串口参数
拖入一个按钮,命名为打开串口,双击,编辑函数
if(m_ctrlComm.GetPortOpen()) m_ctrlComm.SetPortOpen(FALSE); m_ctrlComm.SetCommPort(1); //选择com1 if( !m_ctrlComm.GetPortOpen()) { m_ctrlComm.SetPortOpen(TRUE);//打开串口 AfxMessageBox(" open serial port successfully"); } else AfxMessageBox("cannot open serial port"); m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位 m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据 m_ctrlComm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0 m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据
5添加串口事件消息处理函数OnComm()
打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm。
这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:
VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符 { 以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrlComm.GetInput(); //读缓冲区 safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k<len;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k<len;k++) //将数组转换为Cstring型变量 { BYTE bt=*(char*)(rxdata+k); //字符型 strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放 } } UpdateData(FALSE); //更新编辑框内容
6最后的测试
需要一跟串口线,一个usb转串口(这样一台电脑就可以测试了),我们要实现的功能是串口助手发送一个字节到上位机,上位机显示这个字节,并把它发送出去,串口助手接收这个字节,这里我们还需要做一些工作。我们首先要在上位机中接收的字节显示出来,添加一个编辑框就可以了,我们显示在编辑框中。
SetDlgItemTextA(IDC_EDIT1,strtemp);
m_ctrlComm.SetOutput(COleVariant(strtemp));//发送数据在OnComm()添加上面两行就可以了,
编译,运行,测试结果:
串口助手发送3F,在上位机显示?(呵呵,你可以去查找一下ASCLL码表就知道了),串口收到了来自上位机发送过来的数据,实验就是这么简单。下一篇博客写手柄和串口的联合使用。
本文介绍了一种基于单片机的心率体温检测系统。此次设计的电路部分主要包括:传感测量电路、放大电路、滤波整形电路、AD转换电路、控制电路、电源供电电路等。上位机为通过VC编程界面。通过上位机按键控制,将PT100及TCRT5000输入的微弱信号进行放大整形,最后AD采集转换传送给单片机,在上位机界面上显示相关体温及心率信息。
01 硬件总框图设计
此次设计的是基于STC89C52的心率和体温采集计,因此需要温度传感器以及测量人体心率信号的红外传感器。温度传感器使用PT100并通过放大电路对抓取的电压进行放大,并通过ADC0804进行AD转换最后送给52单片机。
经过实验论证TCRT5000如果采用反射式接法其获取的人体心率信号的变化比较微弱,波形难以捕捉,因此在设计中采用2个TCRT5000使用对接的方式进行获取人体的心率信号。TCRT5000接收端所获取的微弱的心率信号通过二级模拟放大电路进行放大,接着通过滤波电路改善波形的质量,最后通过比较电路将波形改变为方波电路,并将其幅值变成可被单片机识别的5V标准的数字电平,输出给单片机进行采集。
设计中上位机设计使用了3个按键,通过按键完成测试的开始和停止以及推出系统的控制。并通过上位机界面来显示所获取的心率值以及体温值。具体电路图详见附录,总框架图如图所示:
硬件设计总框图
02 体温采集电路设计体温采集电路主要由PT100传感器电路,信号放大采样电路,AD转换电路3个部分组成,并最终将信号送给单片机进行处理。
2.1 PT100传感器电路
PT100传感器电路主要实现将PT100随温度变化而产生的阻值变换转换为电压的变化,方便后续电路的采集,由于PT100在0度时阻值为100欧姆,因此可以通过与电阻100欧进行比较来获取相应的电压,其部分电路如图所示:
PT100传感器电路
2.2 信号放大电路
由于PT100的随温度变化阻值变化较小,因此通过5V和100欧电阻串联电路所获取的电压值变化较小,如果直接获取将存在很大的误差,因此需要进行信号放大。放大电路采用差分法过滤掉电路本身的误差,通过与标准的100欧分出的参考电压2.5V进行相减,并通过可调电阻将变动的电压进行放大,最后通过减法电路将放大后的电压值传给AD转换芯片,其相关电路如图:
信号放大电路
2.3 AD转换电路
AD0804将信号放大电路输出的放大的模拟电压值转换为8位的二进制数据传送给单片机。AD0804的参考电源取输入信号电压的最大值的二分之一。例如输入信号电压范围是0-5V时,则参考电源选取2.5V。ADC0804内部有时钟发生电路,只要在外部clk1引脚和clkr两端外接一对电阻电容即可产生AD转换所要求的时钟,其振荡频率为fclk=1/1.1RC。典型的应用参数为:R=10K,C=150PF,fCLK=640KHZ,转换速度为100us。具体接法如下图:
AD转换电路
03 心率信号采集电路设计心率采集电路包括红外发射电路,红外接收电路,信号放大电路,滤波电路以及波形变换电路等几个部分。
3.1 红外发射电路
红外发射电路主要是将红外反射式TCRT5000的发射端接相应电源,产生红外信号,具体电路如下:
红外发射电路
3.2 红外接收电路
红外接收电路接收来自发射端发出的红外信号,通过获取接收端C和E端的电压获取相应的红外信号值,因为人体的心率信号是交流信号,因此在接收端通过一电容将直流信号进行隔离,其电路如下:
红外接收电路
3.3 二级信号放大电路
从接收电路获取的心率信号十分微小,因此需要通过放大电路进行信号放大,此次通过运放的负反馈反向比例放大电路将信号放大,其电路如图所示:
二级信号放大电路
3.4 滤波电路
放大电路将需要的心率信号进行了放大,同样也将输入端的一些杂波信号进行了放大,产生了一些尖脉冲,因此需要通过滤波电路将这些杂信滤除,此次设计使用了2级RC电路进行滤波,具体电路如下:
滤波电路
3.5 波形变换电路
从滤波电路所获取的波形是模拟的,类似于正弦信号的,其上升沿和下降沿比较平缓,不能被单片机直接获取,而需要将这种平缓的波形变换为方波形式的波形比较陡峭的脉冲信号,并且幅值为单片机可识别的5V电平,因此可通过比较器LM393实现波形的变换,通过再输入端设定一个比较的参考电压值,当超过此参考电压时输出5V高电平,低于此参考电压时输出0V低电平,在输出端接上拉电阻提高LM393的输出驱动能力,具体电路如下:
波形变换电路
04 报警电路设计报警电路主要实现当处于测试时,如果测试所获取的值超过了所设定的范围,则单片机控制蜂鸣器的开关进行报警。其电路如图所示:
报警电路
05 软件程序设计上电时,程序在初始化各参数后,定时器2工作模式开始运行。当接受到外部中断0的按键输入时,保存按下的键值并判定是哪个键被按下,上位机按键控制测试的开始和停止。在测试状态下,通过延迟一定时间进行体温和心率的采集,然后进行采集值的显示和报警的判定,如果不在范围内就进行报警。
【获取完整论文首页发送心率体温】
光学心率传感器可以测量什么?
掌握焊接基础,入手硬件设计
51单片机视频教程资源
--- 乐在分享 · 点点在看---
我的毕业设计的题目是:VC编程实现与usb设备通信:计算机向单片机发送~!真的不知道该从哪里下手~闹心了~!希望哪个高人能给小女指点一下~!小女不胜感激~!!
主要实现的功能:1利用vc变成实现上位机的界面;
2通过usb接口实现单片机与计算机的通信;
3通过usb接口将程序下载到单片机中并实现单片机对蜂鸣和液晶现实的控制
4当有数据传输时,发光二极管不段闪烁
量化的技术指标:1 有完整的上位机操作界面,提供相应的按键操作
2 当计算机通过usb接口向单片机发送数据成功后蜂鸣器发出警示音
3 通过液晶显示器所传输的内容和当有数据传输时,发光二极管不断闪烁
小女子跪谢啦~!实在是头疼~!!
系统源于毕业设计,系统设计分为两部分下位机设计,和上位机设计。
下位机采用ZigBee CC2530开发板作为开发平台,一个节点为移动节点(外接DHT11温湿度传感器),另外一个节点是协调器通过串口线连PC。
上位机使用VC6.0开发工具设计了一个监控界面,能实时监控无线接收的温湿度数据并且绘图显示。并且将温湿度数据保存到数据库以便历史查询。
下位机运行图:(夏天6月,南方)
上位机运行图:
欢迎交流QQ1977140744
转载于:https://www.cnblogs.com/wobuqinfen/archive/2013/02/18/2916155.html