欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年接口技术课程方案设计书.docx

    • 资源ID:12852435       资源大小:181.22KB        全文页数:22页
    • 资源格式: DOCX        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年接口技术课程方案设计书.docx

    精品学习资源湖北轻工职业技术学院接口技术 课程设计报告基于 RS232串口的数据采集系统设计与实现姓名:何松班级: 06 电信 1 班欢迎下载精品学习资源一系统结构:设计思路 :本课程设计通过使用带有 AD 的单片机 STC12C5616AD 进行实时的AD 采样,并将采样到的值通过RS232串口传输到 PC 机,由 VC 上位机接收,显示当前的电压值,并描画电压变化实时波形;系统框图 :单片机系统电平转换PC 机参考电压信号输入通道二. 系统设计:(一) 硬件电路设计:硬件部分由 STC12C5416AD 和晶振构成 的单片机最小电路和MAX232 构成的电平转换电路用于和 PC机串口进行电压匹配;电路原理图如下:欢迎下载精品学习资源(二)软件电路设计:( 1)单片机 C51 程序设计1.1 设计思路C51 程序由 RS232 串口发送程序和 AD 采样程序组成; AD 采样采纳查询方式,为了提高采样的进度,我们应用的 2.5V 的参考电压,但是由于此单片机没有直接的参考电压输入端,不能直接输入参考电压;基于电源电压 VCC 瞬时变换不大,因此我做了变通的方法;每次测量时,先测量2.5V 参考电压,得到 10 位参考 AD 值ref,再采集需要测量的通道的电压值,得到另一个10 位 AD 值Vad,那么所测电压的运算公式就是: V=2.5*Vad/ref ;考虑到 51 单片机进行乘法、除法指令时速度较慢,故将10 位ref,Vad 直接传输到 PC 机,由上位机 VC 软件进行处理;考虑到数据传输时可能会显现错位,缺少数据等情形,导致最终显示的电压值错误;因此在单片机传输有效数据的时候,加上了起始字符和终止字符用于尽量削减错误;欢迎下载精品学习资源1.2 软件流程图初始化采集 2.5V 参考电压 AD 值采集测量通道电压AD 值发送起始字符“ A ”发送参考值高位发送参考值低位发送测量值高位发送测量值低位发送停止字符“ z”1.3 程序代码欢迎下载精品学习资源见附录一;2 VC 程序设计2.1 设计思路VC 上位机以 Microsoft供应的 MSComm控件来与单片机的串口进行通信,猎取采集数据;程序将接收到的数据放入缓冲区,经过起始字符和终止字符校验后的数据被处理运算成实际的电压值05V,并显示在静态文本框控件中;同时,当每次接收到一个有效数据时,调用 CDC类的成员函数 LintTo ();画出数据连续的曲线;2.2 MSComm控件介绍Microsoft供应的用于串口操作的控件 MSCom共m有 27 个属性;CommPort:设置并返回通信口号,缺省值为 COM;1Settings:设置并返回波特率、奇偶校验、数据位、停止位的字符串;其中波特率的范畴为 300b/s 19200b/s ;PortOpen:设置并返回通信口的状态,同时用来打开和关闭通信口;InputLen :打算每次 Input读入的字符个数,缺省为 0,表示读取接收缓冲区的全部内容;Input :读入并清除接收缓冲区的字符;欢迎下载精品学习资源InBufferCount:返回接收缓冲区已接收的字符数,通过置0 可清初接受缓冲区;Output :将发送的字符串或数组写到发送缓冲区;InputMode :定义 Input属性获得数据的方式;Rthreshold :设置、返回在通信控件置 ComEvRecieve并激发OnComm大事前要接收的字符数;SThreshold:设置、返回在通信控件置 ComEvSend并激发OnComm 大事前发送缓冲区中的最少字符数;2.3 界面设计如上图所示,添加相应的控件;2.4 主要函数说明添加“打开串口”响应函数:void CWangfei311Dlg:OnBtnOpen/ TODO: Add your control notification handler code here InitComm ;/设置串口;波特率停止位 端口挑选欢迎下载精品学习资源pictureinit ;/画图界面初始化画背景 X、 Y 轴坐标,标尺MSComm 控件相应函数(画图、显示电压值功能在此大事中)void CWangfei311Dlg:OnOnCommMscomm/ TODO: Add your control notification handler code here int nEvent ;/Mscomm 控件的大事序号int k ;VARIANT m_input;char *str ;long temp,tempref ;/储备接收到的 2 个 10 位 AD 值,分别为测量值,参考值int Y ;/画图纵坐标值double v;/运算出的电压值CString reslut ;CString Ccount ;CPen pen1;/ 数据曲线画笔pen1.CreatePenPS_SOLID,1,RGB255,255,255 ;/实线 线宽 1 白色pDC1->SelectObjectpen1 ;nEvent = m_Comm.GetCommEvent ;/ 得到大事ifnEvent = 2/ 只对接收数据大事进行处理k = m_Comm.GetInBufferCount; / 接收缓冲区的字符数目ifk > 0/ 如得到接收数据m_input = m_Comm.GetInput ;str = char*unsigned char*m_input.parray->pvData;if*str ='A' && *str+5 = 'z'/开头字符和停止字符的检测tempref = *str+1*256+*str+2;temp = *str+3*256+*str+4; v = double2.5*temp/tempref ;Y = int 300-60*v ;ifY<0 Y =0 ;/防止画出界限ifY>300 Y = 300 ;/ 防止画出界限reslut.Format"%f",v ;reslut.TrimLeft ;CWnd *pWnddata = GetDlgItemIDC_RECDATA ;pWnddata->SetWindowTextreslut ;/在静态文本框中显示电压值pDC->LineToX,Y;/画线X+=5 ;count+;/ 接收数据个数值加1欢迎下载精品学习资源Ccount.Format"%16d",count ;Ccount.TrimLeft ;CWnd *pWndcount = GetDlgItemIDC_COUNT;pWndcount->SetWindowTextCcount;ifX>500/ 如画到 X 轴最右边X=10 ;pictureinit ;/清除之前画的图pDC1->MoveTo10,Y ;/ 平移起始点到最左端Else/如没有通过校验,显示“NO Data ”CWnd *pWnddata = GetDlgItemIDC_RECDATA ;pWnddata->SetWindowText"NO Data";三. 系统测试 (最终测试的是 2.5V 标准电压)欢迎下载精品学习资源附录一:单片机程序代码/rs232.c 源文件代码: #include<reg51.h> #include"RS232.h" #include<intrins.h>/*+RS232 mode+*/*/* void delayusuchar countuint i ;uchar j;forj=0 ; j<count ;j+fori=0 ; i<10 ;i+ ;/波特率设置初始化 / void rs232_initTMOD=0x20 ;TL1=0xFD ;/9600 比特 /秒 for 11.0592M TH1=0xFD ;PCON=0x00 ;TR1=1 ;SCON=0x50 ;ES=1;/答应串行口中断EA=1 ;/ 开总中断/发送字符 /void senduchar iSBUF=i ;欢迎下载精品学习资源while.TI ;TI=0 ;void rs232_isr interrupt 4 using 1ifRIrbuf = SBUF ;RI = 0 ;ifrbuf = 0xF0 start=0 ;ifrbuf = 0x80 start=1 ;/*=*/main.c 源代码#include<reg51.h> #include<intrins.h>#include "rs232.h"#define uchar unsigned char #define uint unsigned intsfr P1M0=0x91 ;sfr P1M1 =0x92 ;sfr ADC_CONTR =0XC5;sfr AUXR = 0x8e ;sfr ADC_DATA =0xC6 ;sfr ADC_LOW =0xBE;uchar rbuf ;uchar start;uint V ;uint Vref ;delayuchar countuchar m,n;form=0 ;m<=count ;m+ forn=0 ;n<240;n+ ;/*ADC 初始化 */ void adc_initP1M0=0xff ;P1M1=0x00 ;ADC_DATA = 0 ;/数据清零ADC_LOW = 0 ;欢迎下载精品学习资源ADC_CONTR = 0xe0 ; / 开 ADC 电源 ,采集速度挑选最高delay200 ;void get_adcuchar chADC_CONTR = 0xe8 | ch ;/开启转换while.ADC_CONTR&0x10;/ 等待转换完成ADC_CONTR&=0xe7;/清除 start,flag 标志void mainrs232_init ;adc_init ;while1get_adc0x00 ;/ 通道 0 参考Vref = uintADC_DATA<<2|ADC_LOW;get_adc0x01 ;V = uintADC_DATA<<2|ADC_LOW;send'A';/send'A' ;sendVref>>8 ;sendVref ;sendV>>8 ;sendV;send'z';delay250 ;delay250 ;delay250 ;delay250 ;delay250 ;欢迎下载精品学习资源附录二: VC程序代码定义的成员变量:public:int X ;CDC* pDC1 ;int m_BaundRate ;int count ;CWnd* pWndpicture ;void pictureinitvoid ;CDC* pDC ;int m_port ;CWangfei311DlgCWnd* pParent = NULL;/ standard constructor void InitComm ;添加的成员函数:void CWangfei311Dlg:InitCommm_Comm.SetCommPortm_port ;m_Comm.SetInputMode1 ;ifm_BaundRate = 1200m_Comm.SetSettings"1200,n,8,1" ;else ifm_BaundRate = 2400 m_Comm.SetSettings"2400,n,8,1" ;else ifm_BaundRate = 4800m_Comm.SetSettings"4800,n,8,1" ;else ifm_BaundRate = 9600 m_Comm.SetSettings"19600,n,8,1" ;else ifm_BaundRate = 19200m_Comm.SetSettings"19200,n,8,1" ;else ifm_BaundRate = 28800 m_Comm.SetSettings"28800,n,8,1" ;else ifm_BaundRate = 38400欢迎下载精品学习资源m_Comm.SetSettings"38400,n,8,1" ;else ifm_BaundRate = 57600 m_Comm.SetSettings"57600,n,8,1" ;else ifm_BaundRate = 115200m_Comm.SetSettings"115200,n,8,1" ;m_Comm.SetRThreshold1 ;m_Comm.SetInBufferSize1024 ;m_Comm.SetOutBufferSize1024 ;m_Comm.SetInBufferCount0 ;if.m_Comm.GetPortOpenm_Comm.SetPortOpenTRUE ;void CWangfei311Dlg:OnBtnOpen/ TODO: Add your control notification handler code here InitComm ;pictureinit ;void CWangfei311Dlg:OnBtnClose/ TODO: Add your control notification handler code here if m_Comm.GetPortOpen m_Comm.SetPortOpen0 ;void CWangfei311Dlg:OnOnCommMscomm/ TODO: Add your control notification handler code here int nEvent ;int k ;VARIANT m_input;char *str ;long temp,tempref ;int Y ;double v;static int i=10 ;CString reslut ;CString Ccount ;CPen pen1;pen1.CreatePenPS_SOLID,1,RGB255,255,255 ;欢迎下载精品学习资源pDC1->SelectObjectpen1 ;nEvent = m_Comm.GetCommEvent ;ifnEvent = 2k = m_Comm.GetInBufferCount;ifk > 0m_input = m_Comm.GetInput ;str = char*unsigned char*m_input.parray->pvData;if*str ='A' && *str+5 = 'z'欢迎下载精品学习资源ifY<0 Y =0 ;tempref = *str+1*256+*str+2;temp = *str+3*256+*str+4; v = double2.5*temp/tempref ;Y = int 300-60*v ;ifY>300 Y = 300 ;reslut.Format"%f",v ;reslut.TrimLeft ;CWnd *pWnddata = GetDlgItemIDC_RECDATA ;欢迎下载精品学习资源pWnddata->SetWindowTextreslut ;pDC->LineToX,Y;欢迎下载精品学习资源X+=5 ;count+;Ccount.Format"%16d",count ;Ccount.TrimLeft ;CWnd *pWndcount = GetDlgItemIDC_COUNT;pWndcount->SetWindowTextCcount;ifX>500欢迎下载精品学习资源elseX=10 ;pictureinit ;pDC1->MoveTo10,Y ;欢迎下载精品学习资源CWnd *pWnddata = GetDlgItemIDC_RECDATA ;pWnddata->SetWindowText"NO Data";欢迎下载精品学习资源void CWangfei311Dlg:OnSelchangeCombo1/ TODO: Add your control notification handler code here m_port = m_Comboboxsel.GetCurSel+1 ;void CWangfei311Dlg:pictureinitpWndpicture = GetDlgItemIDC_PICTURE;pDC = pWndpicture->GetDC;pDC1 = pDC ;CPen pen;pen.CreatePenPS_SOLID,1,RGB255,0,0 ;pDC->SelectObjectpen ;CRgn pRgn ;CBrush pBrush ;pRgn.CreateRectRgn0,0,510,310 ;pBrush.CreateSolidBrushRGB0,0,0 ;pDC->FillRgn&pRgn,&pBrush;pDC->MoveTo10,300 ;pDC->LineTo500,300 ;pDC->LineTo490,290 ;pDC->MoveTo500,300 ;pDC->LineTo490,310 ;pDC->MoveTo10,300 ;pDC->LineTo10,10 ;pDC->LineTo0,20 ;pDC->MoveTo10,10 ;pDC->LineTo20,20 ;pDC->TextOut0,300,"0" ;pDC->TextOut0,240,"1" ;pDC->TextOut0,180,"2" ;pDC->TextOut0,120,"3" ;pDC->TextOut0,60,"4" ;pDC->TextOut0,0,"5" ;pDC->MoveTo10,300 ;pDC->LineTo500,300 ;欢迎下载精品学习资源pDC->MoveTo10,240 ;pDC->LineTo500,240 ;pDC->MoveTo10,180 ;pDC->LineTo500,180 ;pDC->MoveTo10,120 ;pDC->LineTo500,120 ;pDC->MoveTo10,60 ;pDC->LineTo500,60 ;pDC1->MoveTo10,300 ;void CWangfei311Dlg:OnBtnClearcount/ TODO: Add your control notification handler code here count = 0 ;CString Ccount ;Ccount.Format"%16d",count ;Ccount.TrimLeft ;CWnd *pWndcount = GetDlgItemIDC_COUNT;pWndcount->SetWindowTextCcount;void CWangfei311Dlg:OnSelchangeCombo2/ TODO: Add your control notification handler code here unsigned long i ;i = m_Comboboxbtl.GetCurSel ;ifi = 0m_BaundRate = 1200 ;else ifi = 1m_BaundRate = 2400 ;else ifi = 2m_BaundRate = 4800 ;else ifi = 3m_BaundRate = 9600 ;else ifi = 4m_BaundRate = 19200 ;else ifi = 5m_BaundRate = 28800 ;else ifi = 6m_BaundRate = 38400 ;else ifi = 7m_BaundRate = 57600 ;欢迎下载精品学习资源else ifi = 8m_BaundRate = 115200;elsem_BaundRate = 19200 ;void CWangfei311Dlg:OnBtnClearpicture/ TODO: Add your control notification handler code here pictureinit ;X = 10 ;欢迎下载

    注意事项

    本文(2022年接口技术课程方案设计书.docx)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开